kwikid-forms 0.0.7 → 0.0.8
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/bundles/kwikid-forms.umd.js +10 -8
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +9 -7
- package/esm2015/lib/renderer/renderer.config-converter.helper.js +3 -3
- package/fesm2015/kwikid-forms.js +10 -8
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kwikid-forms.js","sources":["../../../projects/kwikid-forms/src/lib/builder/builder.component.ts","../../../projects/kwikid-forms/src/lib/builder/builder.component.html","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.decorators.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.common.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.condition.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.actions.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/rules/form-view.rules.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/sources/form-view.sources.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.sources.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.rules.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.defaults.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.fields.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.validations.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.service.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.apis.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.component.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.component.html","../../../projects/kwikid-forms/src/lib/renderer/forms-list/forms-list.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/forms-list/forms-list.component.ts","../../../projects/kwikid-forms/src/lib/renderer/forms-list/forms-list.component.html","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.sources.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.condition.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.actions.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.rules.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.validations.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.config-converter.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.service.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.component.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.component.html","../../../projects/kwikid-forms/src/lib/builder/builder.module.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.module.ts","../../../projects/kwikid-forms/src/lib/renderer/forms-list/forms-list.module.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.module.ts","../../../projects/kwikid-forms/src/lib/kwikid-forms.module.ts","../../../projects/kwikid-forms/src/public_api.ts","../../../projects/kwikid-forms/src/kwikid-forms.ts"],"sourcesContent":["import { copyArrayItem, moveItemInArray } from \"@angular/cdk/drag-drop\";\r\nimport { Component, OnInit, VERSION } from \"@angular/core\";\r\nimport { FormControl, FormGroup } from \"@angular/forms\";\r\nimport {\r\n KwikUIButtonComponent,\r\n KwikUIInputComponent,\r\n KwikUIProgressSegmentedComponent\r\n} from \"kwikui\";\r\nimport { cloneDeep } from \"lodash\";\r\n\r\ntype IMenu = {\r\n title: string;\r\n id?: string;\r\n key?: string;\r\n temp?: string;\r\n component?: any;\r\n props?: any;\r\n};\r\n\r\n@Component({\r\n selector: \"kwikid-forms-builder\",\r\n templateUrl: \"./builder.component.html\",\r\n styleUrls: [\"./builder.component.scss\"]\r\n})\r\nexport class KwikIDFormsBuilderComponent implements OnInit {\r\n buttonComponent = {\r\n disabled: false,\r\n id: \"\",\r\n label: \"Button\",\r\n showLoader: false,\r\n styles: \"\",\r\n class: \"tui-space_right-3 tui-space_bottom-3\",\r\n type: \"button\",\r\n appearance: \"primary\",\r\n icon: \"\",\r\n iconRight: \"\",\r\n shape: null,\r\n size: \"m\"\r\n };\r\n\r\n progressSegmentedComponent = {\r\n colors: \"tui(--tui-primary)\",\r\n max: \"5\",\r\n size: \"m\",\r\n value: \"2\"\r\n };\r\n\r\n inputComponent = {\r\n case: \"default\",\r\n disabled: false,\r\n focus: false,\r\n id: \"id\",\r\n invalid: false,\r\n label: \"label\",\r\n placeholder: \"placeholder\",\r\n type: \"text\",\r\n validators: {\r\n required: true\r\n }\r\n };\r\n\r\n formGroup = new FormGroup({});\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n for (let m of this.menu) {\r\n m.id = this.revisedRandId();\r\n }\r\n }\r\n\r\n revisedRandId() {\r\n return Math.random()\r\n .toString(36)\r\n .replace(/[^a-z]+/g, \"\");\r\n }\r\n\r\n handleOnChange(\r\n event: { target: { value: any } },\r\n id: string | number,\r\n key: string | number,\r\n idx: any\r\n ) {\r\n const _value = event.target.value;\r\n this.formGroup.controls[id][\"controls\"][key].patchValue(_value);\r\n }\r\n\r\n toggleShow(id: any) {\r\n console.log(id);\r\n }\r\n\r\n name = \"Angular \" + VERSION.major;\r\n menu: Array<IMenu> = [\r\n {\r\n title: \"button\",\r\n key: \"button\",\r\n component: KwikUIButtonComponent,\r\n props: this.buttonComponent\r\n },\r\n {\r\n title: \"progress-segmented\",\r\n key: \"progress_segmented\",\r\n component: KwikUIProgressSegmentedComponent,\r\n props: this.progressSegmentedComponent\r\n },\r\n {\r\n title: \"input\",\r\n key: \"input\",\r\n component: KwikUIInputComponent,\r\n props: this.inputComponent\r\n }\r\n ];\r\n table: Array<IMenu> = [];\r\n\r\n drop(event: any) {\r\n // let item = JSON.parse(JSON.stringify(event));\r\n if (event.previousContainer !== event.container) {\r\n console.log(\"copying\");\r\n\r\n // Clone the item that was dropped.\r\n let clone = cloneDeep(event.previousContainer.data[event.previousIndex]);\r\n clone.id = clone.key + \"__\" + this.revisedRandId();\r\n event.previousContainer.data[event.previousIndex] = clone;\r\n\r\n let newFormGroup = new FormGroup({});\r\n\r\n const props = clone.props;\r\n\r\n Object.keys(props).forEach((key) => {\r\n newFormGroup.addControl(\r\n key,\r\n new FormControl({ value: props[key], disabled: false })\r\n );\r\n });\r\n\r\n this.formGroup.addControl(clone.id, newFormGroup);\r\n\r\n copyArrayItem(\r\n event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n } else {\r\n console.log(\"moving\");\r\n moveItemInArray(\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n if (event.previousContainer.data) {\r\n this.menu = this.menu.filter((f) => !f.temp);\r\n }\r\n }\r\n\r\n exited(event: any) {\r\n const currentIdx = event.container.data.findIndex(\r\n (f: { id: any }) => f.id === event.item.data.id\r\n );\r\n this.menu.splice(currentIdx + 1, 0, {\r\n ...event.item.data,\r\n temp: true\r\n });\r\n }\r\n\r\n entered() {\r\n this.menu = this.menu.filter((f) => !f.temp);\r\n }\r\n\r\n isNumber(val: any) {\r\n return typeof val;\r\n }\r\n\r\n removeElement(idx: number, id: string) {\r\n this.formGroup.removeControl(id);\r\n this.table.splice(idx, 1);\r\n }\r\n\r\n getJSON() {\r\n for (let t of this.table) {\r\n t.props = this.formGroup.getRawValue()[t.id];\r\n }\r\n console.log(this.table);\r\n }\r\n}\r\n","<!-- <div>{{ name }}</div>\r\n<p>Start editing to see some magic happen :)</p>\r\n\r\n<button (click)=\"getJSON()\">Get JSON</button>\r\n\r\n<div class=\"drap-copy\">\r\n <div>\r\n <ul\r\n class=\"menu\"\r\n cdkDropList\r\n #menuList=\"cdkDropList\"\r\n [cdkDropListData]=\"menu\"\r\n cdkDropListSortingDisabled\r\n [cdkDropListConnectedTo]=\"[tableList]\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (cdkDropListExited)=\"exited($event)\"\r\n (cdkDropListEntered)=\"entered()\"\r\n >\r\n <li class=\"item\" *ngFor=\"let item of menu\" cdkDrag [cdkDragData]=\"item\">\r\n <div class=\"item\" *cdkDragPlaceholder>\r\n <a>{{ item.title }}</a>\r\n </div>\r\n <ng-container *ngComponentOutlet=\"item.component\"> </ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div\r\n class=\"table\"\r\n cdkDropList\r\n #tableList=\"cdkDropList\"\r\n [cdkDropListData]=\"table\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n >\r\n <div class=\"content\">\r\n <div>\r\n <div class=\"item\" *ngFor=\"let item of table; let idx = index\" cdkDrag>\r\n <ng-container *ngComponentOutlet=\"item.component\"> </ng-container>\r\n <div class=\"item-header\">\r\n <p>{{ idx }}--{{ item.title }}</p>\r\n <button (click)=\"removeElement(idx, item.id)\">Remove</button>\r\n </div>\r\n <div class=\"desc\">\r\n <div>id - {{ item.id }}</div>\r\n <div>key - {{ item.key }}</div>\r\n </div>\r\n <ng-container\r\n *ngTemplateOutlet=\"formModal; context: item\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #formModal let-component=\"component\" let-props=\"props\" let-id=\"id\">\r\n <div class=\"field_editor\">\r\n <div *ngFor=\"let i of props | keyvalue; let idx = index\">\r\n <div class=\"formModalInputGroup\">\r\n <label>{{ i.key }}</label>\r\n <input\r\n value=\"{{ i.value }}\"\r\n (keyup)=\"handleOnChange($event, id, i.key, idx)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->\r\n","export enum EActionKey {\r\n SET_VALUE = \"SET_VALUE\",\r\n FIELD_MESSAGE_SHOW = \"FIELD_MESSAGE_SHOW\",\r\n FIELD_MESSAGES_HIDE = \"FIELD_MESSAGES_HIDE\",\r\n FIELD_ERROR_SHOW = \"FIELD_ERROR_SHOW\",\r\n FIELD_ERROR_HIDE = \"FIELD_ERROR_HIDE\",\r\n FIELD_SHOW = \"FIELD_SHOW\",\r\n FIELD_HIDE = \"FIELD_HIDE\",\r\n FIELD_ENABLE = \"FIELD_ENABLE\",\r\n FIELD_DISABLE = \"FIELD_DISABLE\",\r\n FIELD_RESET = \"FIELD_RESET\",\r\n HANDLE_CONNECTED_ELEMENTS = \"HANDLE_CONNECTED_ELEMENTS\",\r\n CUSTOM = \"CUSTOM\"\r\n}\r\n","export enum EApiStatusType {\r\n DEFAULT = \"default\",\r\n LOADING = \"loading\",\r\n SUCCESS = \"success\",\r\n FAILED = \"failed\"\r\n}\r\n","export enum EPatternKey {\r\n CUSTOM = \"CUSTOM\",\r\n IS_ADDRESS = \"IS_ADDRESS\",\r\n IS_ALPHA = \"IS_ALPHA\",\r\n IS_ALPHANUMERIC = \"IS_ALPHANUMERIC\",\r\n IS_BOOLEAN = \"IS_BOOLEAN\",\r\n IS_EMAIL = \"IS_EMAIL\",\r\n IS_EMPTY = \"IS_EMPTY\",\r\n IS_FALSE = \"IS_FALSE\",\r\n IS_HTML = \"IS_HTML\",\r\n IS_INTEGER = \"IS_INTEGER\",\r\n IS_IP_ADDRESS = \"IS_IP_ADDRESS\",\r\n IS_JSON = \"IS_JSON\",\r\n IS_LOWERCASE = \"IS_LOWERCASE\",\r\n IS_NOT_EMPTY = \"IS_NOT_EMPTY\",\r\n IS_NUMBER = \"IS_NUMBER\",\r\n IS_TRUE = \"IS_TRUE\",\r\n IS_UPPERCASE = \"IS_UPPERCASE\",\r\n IS_URL = \"IS_URL\",\r\n IS_AADHAAR_NUMBER = \"IS_AADHAAR_NUMBER\",\r\n IS_BANK_ACCOUNT_NO = \"IS_BANK_ACCOUNT_NO\",\r\n IS_BANK_SWIFT_CODE = \"IS_BANK_SWIFT_CODE\",\r\n IS_BIRTH_CERTIFICATE_NO = \"IS_BIRTH_CERTIFICATE_NO\",\r\n IS_CHEQUE_NO = \"IS_CHEQUE_NO\",\r\n IS_CIN = \"IS_CIN\",\r\n IS_CREDIT_CARD_NO = \"IS_CREDIT_CARD_NO\",\r\n IS_DRIVING_LICENSE = \"IS_DRIVING_LICENSE\",\r\n IS_GSTIN = \"IS_GSTIN\",\r\n IS_IFSC_NO = \"IS_IFSC_NO\",\r\n IS_MICR_CODE = \"IS_MICR_CODE\",\r\n IS_MOBILE_NO = \"IS_MOBILE_NO\",\r\n IS_MOBILE_NO_IN = \"IS_MOBILE_NO_IN\",\r\n IS_NEFT_OR_RTGS_NO = \"IS_NEFT_OR_RTGS_NO\",\r\n IS_PAN_NUMBER = \"IS_PAN_NUMBER\",\r\n IS_PASSPORT = \"IS_PASSPORT\",\r\n IS_PHONE_NO = \"IS_PHONE_NO\",\r\n IS_PINCODE = \"IS_PINCODE\",\r\n IS_PURCHASE_ORDER_NO = \"IS_PURCHASE_ORDER_NO\",\r\n IS_RATION_CARD_NO = \"IS_RATION_CARD_NO\",\r\n IS_SERVICE_TAX_NO = \"IS_SERVICE_TAX_NO\",\r\n IS_SOCIAL_SECURITY_NO = \"IS_SOCIAL_SECURITY_NO\",\r\n IS_UPI_TRANSACTION_REFERENCE_NO = \"IS_UPI_TRANSACTION_REFERENCE_NO\",\r\n IS_VAT_TIN_NO = \"IS_VAT_TIN_NO\",\r\n IS_VEHICLE_REGISTRATION_NO = \"IS_VEHICLE_REGISTRATION_NO\",\r\n IS_VOTER_ID = \"IS_VOTER_ID\"\r\n}\r\n\r\nexport enum EPattern {\r\n IS_ALPHA = \"^[a-zA-Z]+$\",\r\n IS_ADDRESS = \"^(\\\\w*\\\\s*[#-,/.()&]*)+\",\r\n IS_ALPHANUMERIC = \"^[a-zA-Z0-9]+$\",\r\n IS_BOOLEAN = \"(true|false)\",\r\n IS_EMAIL = \"^\\\\w+([\\\\.-]?\\\\w+)*@\\\\w+([\\\\.-]?\\\\w+)*(\\\\.\\\\w{2,3})+$\",\r\n IS_EMPTY = \"^$\",\r\n IS_FALSE = \"false\",\r\n IS_HTML = \"^<([a-z]+)([^<]+)(?:>(.)</\\\\1>|\\\\s+/>)$\",\r\n IS_INTEGER = \"^[+-]?d+$\",\r\n IS_IP_ADDRESS = \"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$\",\r\n IS_JSON = \"^\\\\s*({(.|\\\\s)}|[(.|\\\\s)])\\\\s*$\",\r\n IS_LOWERCASE = \"^[a-z]+$\",\r\n IS_NOT_EMPTY = \"^.+$\",\r\n IS_NUMBER = \"^[+-]?d+(.d+)?$\",\r\n IS_TRUE = \"true\",\r\n IS_UPPERCASE = \"^[A-Z]+$\",\r\n IS_URL = \"^(?:http(s)?://)?[w.-]+(?:.[w.-]+)+[w-._~:/?#[]@!$&'()*+,;=.]+$\",\r\n IS_AADHAAR_NUMBER = \"^[0-9]{12}$\",\r\n IS_BANK_ACCOUNT_NO = \"^[0-9]{9,18}$\",\r\n IS_BANK_SWIFT_CODE = \"^[A-Z]{4}[A-Z]{2}[0-9A-Z]{2}[0-9A-Z]{3}$\",\r\n IS_BIRTH_CERTIFICATE_NO = \"^[A-Z]{2}[0-9]{6}[A-Z]{1}[0-9]{2}$\",\r\n IS_CHEQUE_NO = \"^[0-9]{6,14}$\",\r\n IS_CIN = \"^[A-Z]{3}[0-9]{5}[0-9A-Z]{3}$\",\r\n IS_CREDIT_CARD_NO = \"^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}$\",\r\n IS_DRIVING_LICENSE = \"^[A-Z]{2}[0-9]{2}((19|20)[0-9][0-9])[0-9]{7}$\",\r\n IS_GSTIN = \"^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$\",\r\n IS_IFSC_NO = \"^[A-Z]{4}[0][A-Z0-9]{6}$\",\r\n IS_MICR_CODE = \"^[0-9]{9}$\",\r\n IS_MOBILE_NO = \"^[6-9]\\\\d{9}$\",\r\n IS_MOBILE_NO_IN = \"^(\\\\+91)[6-9]\\\\d{9}$\",\r\n IS_NEFT_OR_RTGS_NO = \"^[A-Z]{4}[0-9]{7}$\",\r\n IS_PAN_NUMBER = \"^[A-Z]{5}[[0-9]{4}[A-Z]{1}$\",\r\n IS_PASSPORT = \"^[A-PR-WYa-pr-wy][1-9]\\\\d\\\\s?\\\\d{4}[1-9]$\",\r\n IS_PHONE_NO = \"^[6-9]\\\\d{9}$\",\r\n IS_PINCODE = \"^[1-9][0-9]{5}$\",\r\n IS_PURCHASE_ORDER_NO = \"^[0-9]{1,5}$\",\r\n IS_RATION_CARD_NO = \"^[A-Z]{3}[0-9]{7}$\",\r\n IS_SERVICE_TAX_NO = \"^[A-Z]{5}[0-9]{4}[A-Z]{1}$\",\r\n IS_SOCIAL_SECURITY_NO = \"^[0-9]{3}-[0-9]{2}-[0-9]{4}$\",\r\n IS_UPI_TRANSACTION_REFERENCE_NO = \"^[a-zA-Z0-9]{3,128}@[a-z]{3,9}$\",\r\n IS_VAT_TIN_NO = \"^[0-9]{11}$\",\r\n IS_VEHICLE_REGISTRATION_NO = \"^[A-Z]{2}[0-9]{2}((19|20)[0-9][0-9])[0-9]{6}$\",\r\n IS_VOTER_ID = \"^[A-Z]{3}[0-9]{7}$\"\r\n}\r\n\r\nexport enum EMessageType {\r\n DEFAULT = \"default\",\r\n ERROR = \"error\",\r\n SUCCESS = \"success\",\r\n WARNING = \"warning\"\r\n}\r\n","export enum EFieldType {\r\n TITLE = \"title\",\r\n TEXT = \"text\",\r\n CHECKBOX = \"checkbox\",\r\n NUMBER = \"number\",\r\n DATE = \"date\",\r\n PHONE = \"phone\",\r\n RADIO = \"radio\",\r\n DROPDOWN_WITH_SEARCH = \"dropdown-with-search\",\r\n API_CALL = \"api-call\",\r\n OTP = \"otp\",\r\n AADHAAR_NUMBER = \"aadhaar-number\"\r\n}\r\n","/**\r\n * A function that logs the execution of a method.\r\n * @param {any} target - The object the method belongs to.\r\n * @param {string} propertyKey - The name of the method.\r\n * @param {PropertyDescriptor} descriptor - The property descriptor for the method.\r\n */\r\nexport function log(\r\n target: any,\r\n propertyKey: string,\r\n descriptor: PropertyDescriptor\r\n) {\r\n // save a reference to the original method\r\n const originalMethod = descriptor.value;\r\n // update the descriptor value with a new function that will log and execute the original method\r\n descriptor.value = function (...args: any[]) {\r\n console.group(\"Logging Method\"); // start a new logging group\r\n console.time(\"Execution Time:\"); // start a timer\r\n\r\n let result; // declare result variable\r\n try {\r\n // execute the original method and save the result\r\n result = originalMethod.apply(this, args);\r\n } catch (error) {\r\n // if an error is thrown, log the error and throw it again\r\n logSyncMethodError(target.constructor.name, propertyKey, args, error);\r\n console.timeEnd(`Execution Time:`); // stop the timer\r\n console.groupEnd(); // end the logging group\r\n throw error;\r\n }\r\n\r\n // if the result is a Promise, handle it as an async method\r\n if (result instanceof Promise) {\r\n result = result\r\n .then((resolvedValue) => {\r\n // on success, log the resolved value and return it\r\n logAsyncMethod(\r\n target.constructor.name,\r\n propertyKey,\r\n args,\r\n resolvedValue\r\n );\r\n console.timeEnd(`Execution Time:`); // stop the timer\r\n console.groupEnd(); // end the logging group\r\n return resolvedValue;\r\n })\r\n .catch((error) => {\r\n // on error, log the error and throw it again\r\n logAsyncMethodError(\r\n target.constructor.name,\r\n propertyKey,\r\n args,\r\n error\r\n );\r\n console.timeEnd(`Execution Time:`); // stop the timer\r\n console.groupEnd(); // end the logging group\r\n throw error;\r\n });\r\n } else {\r\n // if the result is not a Promise, handle it as a sync method\r\n logSyncMethod(target.constructor.name, propertyKey, args, result);\r\n console.timeEnd(\"Execution Time:\");\r\n console.groupEnd();\r\n }\r\n return result;\r\n };\r\n}\r\n\r\n/**\r\n * This function logs a sync method's information to the console.\r\n * @param {string} className - The name of the class where the method belongs.\r\n * @param {string} methodName - The name of the method being called.\r\n * @param {any[]} args - An array of arguments passed to the method.\r\n * @param {any} result - The result of the method.\r\n */\r\nfunction logSyncMethod(className, methodName, args, result) {\r\n console.log(\r\n \"%cType: Sync Method -\",\r\n \"color: #0d47a1; font-weight: bold;\",\r\n \"\\nClass:\",\r\n className,\r\n \"\\nMethod:\",\r\n methodName,\r\n \"\\nArgs:\",\r\n args,\r\n \"\\nReturn:\",\r\n result\r\n );\r\n}\r\n\r\n/**\r\n * Logs an error that occurred during the execution of a synchronous method.\r\n * @param {string} className - The name of the class the method belongs to.\r\n * @param {string} methodName - The name of the method.\r\n * @param {any[]} args - The arguments passed to the method.\r\n * @param {Error} error - The error that occurred.\r\n */\r\nfunction logSyncMethodError(className, methodName, args, error) {\r\n console.log(\r\n \"%cType: Sync Method -\",\r\n \"color: #0d47a1; font-weight: bold;\",\r\n \"\\nClass:\",\r\n className,\r\n \"\\nMethod:\",\r\n methodName,\r\n \"\\nArgs:\",\r\n args,\r\n \"\\nError:\",\r\n error\r\n );\r\n}\r\n\r\n/**\r\n * Logs the result of the execution of an asynchronous method.\r\n * @param {string} className - The name of the class the method belongs to.\r\n * @param {string} methodName - The name of the method.\r\n * @param {any[]} args - The arguments passed to the method.\r\n * @param {any} result - The result of the method execution.\r\n */\r\nfunction logAsyncMethod(className, methodName, args, result) {\r\n console.log(\r\n \"%cType: Async Method -\",\r\n \"color: #1565c0; font-weight: bold;\",\r\n \"\\nClass:\",\r\n className,\r\n \"\\nMethod:\",\r\n methodName,\r\n \"\\nArgs:\",\r\n args,\r\n \"\\nReturn:\",\r\n result\r\n );\r\n}\r\n\r\n/**\r\n * Logs an error that occurred during the execution of an asynchronous method.\r\n * @param {string} className - The name of the class the method belongs to.\r\n * @param {string} methodName - The name of the method.\r\n * @param {any[]} args - The arguments passed to the method.\r\n * @param {Error} error - The error that occurred.\r\n */\r\nfunction logAsyncMethodError(className, methodName, args, error) {\r\n console.log(\r\n \"%cType: Async Method -\",\r\n \"color: #1565c0; font-weight: bold;\",\r\n \"\\nClass:\",\r\n className,\r\n \"\\nMethod:\",\r\n methodName,\r\n \"\\nArgs:\",\r\n args,\r\n \"\\nError:\",\r\n error\r\n );\r\n}\r\n","import { TuiDay } from \"@taiga-ui/cdk\";\r\nimport jp from \"jsonpath\";\r\n\r\nexport const hasKey = (object: any, key: string): boolean => {\r\n return object.hasOwnProperty(key);\r\n};\r\n\r\nexport const isEmpty = (value: any): boolean => {\r\n if (value === \"\" || value === undefined || value === null) {\r\n return true;\r\n } else if (\r\n value &&\r\n Object.keys(value).length === 0 &&\r\n Object.getPrototypeOf(value) === Object.prototype\r\n ) {\r\n return true;\r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const isNotEmpty = (value: any) => {\r\n return !isEmpty(value);\r\n};\r\n\r\nexport const handleJPQueryResponse = (value: any): any => {\r\n /**\r\n * jp.query doesn't always return an array with one element\r\n * so directly can't access with [0], need to check conditionally\r\n */\r\n if (Array.isArray(value)) {\r\n if (value.length > 0) {\r\n value = value[0];\r\n } else if (value.length === 0) {\r\n value = \"\";\r\n }\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const jpQueryWrapper = (obj: any, key: string): boolean => {\r\n return handleJPQueryResponse(jp.query(obj, key));\r\n};\r\n\r\nexport const isSingleForm = (formsList: any[]): boolean => {\r\n return formsList.length === 1;\r\n};\r\n","import { TuiDay } from \"@taiga-ui/cdk\";\r\nimport jp from \"jsonpath\";\r\nimport _ from \"lodash\";\r\nimport { EFieldType } from \"../definitions/fields/form-view.fields.enum.definitions\";\r\nimport {\r\n TField,\r\n TFieldRadio,\r\n TFieldType\r\n} from \"../definitions/fields/form-view.fields.type.definitions\";\r\n\r\nexport const hasKey = (object: any, key: string): boolean => {\r\n return object.hasOwnProperty(key);\r\n};\r\n\r\nexport const hasPath = (object: any, path: string): boolean => {\r\n return _.has(object, path);\r\n};\r\n\r\nexport const isEmptyString = (value: string): boolean => {\r\n return value === \"\";\r\n};\r\nexport const isUndefined = (value: any): boolean => {\r\n return value === undefined;\r\n};\r\nexport const isNull = (value: any): boolean => {\r\n return value === null;\r\n};\r\nexport const isEmptyObject = (object: any): boolean => {\r\n return (\r\n object &&\r\n Object.keys(object).length === 0 &&\r\n Object.getPrototypeOf(object) === Object.prototype\r\n );\r\n};\r\nexport const isEmptyArray = (arr: any[]): boolean => {\r\n return arr.length === 0;\r\n};\r\n\r\nexport const isEmpty = (value: any): boolean => {\r\n if (isEmptyString(value) || isUndefined(value) || isNull(value)) {\r\n return true;\r\n } else if (isEmptyObject(value)) {\r\n return true;\r\n } else if (Array.isArray(value)) {\r\n if (isEmptyArray(value)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const isNotEmpty = (value: any) => {\r\n return !isEmpty(value);\r\n};\r\n\r\nexport const isEmptyBrowserStorageValue = (value: any) => {\r\n return isNull(value) && isUndefined(value);\r\n};\r\n\r\nexport const isNotEmptyBrowserStorageValue = (value: any) => {\r\n return !isEmptyBrowserStorageValue(value);\r\n};\r\n\r\nexport const handleJPQueryResponse = (value: any): any => {\r\n /**\r\n * jp.query doesn't always return an array with one element\r\n * so directly can't access with [0], need to check conditionally\r\n */\r\n if (Array.isArray(value)) {\r\n if (value.length > 0) {\r\n value = value[0];\r\n } else if (value.length === 0) {\r\n value = \"\";\r\n }\r\n } else {\r\n value = \"\";\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const jpQueryWrapper = (obj: any, key: string) => {\r\n return handleJPQueryResponse(jp.query(obj, key));\r\n};\r\n\r\nexport const replaceString = (\r\n str: string,\r\n find: string,\r\n replace: string\r\n): string => {\r\n return str.replace(new RegExp(find, \"g\"), replace);\r\n};\r\n\r\nexport const setFieldKeyValue = (field: any, path: string, value: any): any => {\r\n return _.set(field, path, value);\r\n};\r\n\r\nexport const setValueToObject = (\r\n object: any,\r\n path: string,\r\n value: any\r\n): any => {\r\n return _.set(object, path, value);\r\n};\r\n\r\nexport const formatValue = (field: TField, fieldValue: any): any => {\r\n const fieldType: TFieldType = field.type;\r\n let value: any;\r\n\r\n if (isNotEmpty(fieldValue)) {\r\n switch (fieldType) {\r\n case EFieldType.DATE:\r\n const splitDate = fieldValue.split(\"-\");\r\n value = new TuiDay(\r\n Number(splitDate[2]), // Year\r\n Number(splitDate[1]) - 1, // Month, Why '-1' => Because Taiga-UI Required It, So...\r\n Number(splitDate[0]) // Day\r\n );\r\n break;\r\n case EFieldType.RADIO:\r\n const fieldRadio = field as TFieldRadio;\r\n value = fieldRadio.options.find((item: any) => {\r\n return item.label === fieldValue;\r\n });\r\n break;\r\n case EFieldType.CHECKBOX:\r\n value = Boolean(fieldValue);\r\n break;\r\n default:\r\n value = fieldValue;\r\n break;\r\n }\r\n } else {\r\n value = fieldValue;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const setEmptyValue = (field: TField): any => {\r\n const fieldType: TFieldType = field.type;\r\n let value: any;\r\n\r\n switch (fieldType) {\r\n case EFieldType.CHECKBOX:\r\n value = false;\r\n break;\r\n case EFieldType.NUMBER:\r\n value = null;\r\n break;\r\n case EFieldType.DATE:\r\n value = null;\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n\r\n return value;\r\n};\r\n","import { log } from \"../form-view.decorators\";\r\nimport { replaceString } from \"./form-view.common.helper\";\r\n\r\nexport class Condition {\r\n private _condition: string;\r\n private _rulesMapping: any;\r\n\r\n constructor(condition: string, rulesMapping: any) {\r\n this._condition = condition;\r\n this._rulesMapping = rulesMapping;\r\n }\r\n\r\n private parseKeys(condition: string, rulesEvaluationMapping: object): string {\r\n Object.keys(rulesEvaluationMapping).forEach((key) => {\r\n condition = replaceString(condition, key, rulesEvaluationMapping[key]);\r\n });\r\n\r\n return condition;\r\n }\r\n\r\n private parseOperators(condition: string): string {\r\n return condition.replace(/AND|OR|NOT|XOR|NAND|NOR|XNOR/g, (match) => {\r\n switch (match) {\r\n case \"AND\":\r\n return \"&&\";\r\n case \"OR\":\r\n return \"||\";\r\n case \"NOT\":\r\n return \"!\";\r\n case \"XOR\":\r\n return \"^\";\r\n case \"NAND\":\r\n return \"!&\";\r\n case \"NOR\":\r\n return \"!|\";\r\n case \"XNOR\":\r\n return \"!^\";\r\n default:\r\n return match;\r\n }\r\n });\r\n }\r\n\r\n @log\r\n evaluate(): boolean {\r\n this._condition = this.parseKeys(this._condition, this._rulesMapping);\r\n this._condition = this.parseOperators(this._condition);\r\n\r\n return eval(this._condition);\r\n }\r\n}\r\n","import { TAction } from \"../definitions/actions/form-view.actions.type.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { Condition } from \"./form-view.condition.helper\";\r\n\r\nexport class Actions {\r\n private _action: TAction;\r\n private _allFormsData: any;\r\n private _field: TField;\r\n private _formData: any;\r\n private _previousFormData: any;\r\n private _ruleMapping: any;\r\n private _takeAction: Function;\r\n\r\n constructor(\r\n action: TAction,\r\n field: TField,\r\n ruleMapping: any,\r\n allFormsData: any,\r\n formData: any,\r\n previousFormData: any,\r\n takeAction: Function\r\n ) {\r\n this._action = action;\r\n this._field = field;\r\n this._ruleMapping = ruleMapping;\r\n this._allFormsData = allFormsData;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n @log\r\n async execute() {\r\n const condition = new Condition(this._action.condition, this._ruleMapping);\r\n const actionSuccess = condition.evaluate();\r\n\r\n if (actionSuccess) {\r\n return this._takeAction(\r\n this._action,\r\n this._field,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData\r\n );\r\n }\r\n }\r\n}\r\n","export enum ERuleKey {\r\n OBJECT_PATH_EXISTS = \"OBJECT_PATH_EXISTS\",\r\n VALUE_CHECK = \"VALUE_CHECK\",\r\n VALUE_CHANGE = \"VALUE_CHANGE\"\r\n}\r\n","export enum ESourceKey {\r\n FIELD_CONFIG = \"FIELD_CONFIG\",\r\n FORM_DATA = \"FORM_DATA\",\r\n PREVIOUS_FORM_DATA = \"PREVIOUS_FORM_DATA\",\r\n ALL_FORMS_DATA = \"ALL_FORMS_DATA\",\r\n BROWSER_STORAGE = \"BROWSER_STORAGE\",\r\n PREDEFINED = \"PREDEFINED\",\r\n USER_CONFIG = \"USER_CONFIG\",\r\n CUSTOM = \"CUSTOM\"\r\n}\r\n\r\nexport enum EBrowserStorageType {\r\n LOCAL_STORAGE = \"LOCAL_STORAGE\",\r\n SESSION_STORAGE = \"SESSION_STORAGE\"\r\n}\r\n","import { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport {\r\n EBrowserStorageType,\r\n ESourceKey\r\n} from \"../definitions/sources/form-view.sources.enum.definitions\";\r\nimport {\r\n TBrowserStorageType,\r\n TSource\r\n} from \"../definitions/sources/form-view.sources.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport {\r\n isNotEmpty,\r\n isNotEmptyBrowserStorageValue,\r\n jpQueryWrapper,\r\n setEmptyValue,\r\n setValueToObject\r\n} from \"./form-view.common.helper\";\r\n\r\nexport class Sources {\r\n private _formData: any;\r\n get formData(): any {\r\n return this._formData;\r\n }\r\n set formData(value: any) {\r\n this._formData = value;\r\n }\r\n\r\n private _previousFormData: any;\r\n get previousFormData(): any {\r\n return this._previousFormData;\r\n }\r\n set previousFormData(value: any) {\r\n this._previousFormData = value;\r\n }\r\n\r\n private _allFormsData: any;\r\n get allFormsData(): any {\r\n return this._allFormsData;\r\n }\r\n set allFormsData(value: any) {\r\n this._allFormsData = value;\r\n }\r\n\r\n private _field: TField;\r\n get field(): TField {\r\n return this._field;\r\n }\r\n set field(value: TField) {\r\n this._field = value;\r\n }\r\n\r\n constructor(\r\n field: TField,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any\r\n ) {\r\n this._field = field;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._allFormsData = allFormsData;\r\n }\r\n\r\n private getValueFromFieldConfig(path: string): any {\r\n let value: any = \"\";\r\n if (isNotEmpty(path)) {\r\n value = jpQueryWrapper(this._field, path);\r\n } else {\r\n value = setEmptyValue(this._field);\r\n }\r\n return value;\r\n }\r\n\r\n private getValueFromFormData(path: string): any {\r\n let value: any;\r\n value = jpQueryWrapper(this._formData, path);\r\n return value;\r\n }\r\n private getValueFromPreviousFormData(path: string): any {\r\n let value: any;\r\n value = jpQueryWrapper(this._previousFormData, path);\r\n return value;\r\n }\r\n private getValueFromAllFormsData(path: string): any {\r\n let value: any;\r\n value = jpQueryWrapper(this._allFormsData, path);\r\n return value;\r\n }\r\n private getValueFromBrowserStorage(\r\n type: TBrowserStorageType,\r\n key: string\r\n ): any {\r\n let value: any = \"\";\r\n switch (type) {\r\n case EBrowserStorageType.LOCAL_STORAGE:\r\n value = isNotEmptyBrowserStorageValue(localStorage.getItem(key))\r\n ? localStorage.getItem(key)\r\n : \"\";\r\n break;\r\n case EBrowserStorageType.SESSION_STORAGE:\r\n value = isNotEmptyBrowserStorageValue(sessionStorage.getItem(key))\r\n ? sessionStorage.getItem(key)\r\n : \"\";\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n return value;\r\n }\r\n\r\n @log\r\n getValueFromSource(source: TSource): any {\r\n let value: any = \"\";\r\n\r\n switch (source.key) {\r\n case ESourceKey.FIELD_CONFIG:\r\n value = this.getValueFromFieldConfig(source.props.path);\r\n break;\r\n case ESourceKey.FORM_DATA:\r\n value = this.getValueFromFormData(source.props.path);\r\n break;\r\n case ESourceKey.ALL_FORMS_DATA:\r\n value = this.getValueFromAllFormsData(source.props.path);\r\n break;\r\n case ESourceKey.PREVIOUS_FORM_DATA:\r\n value = this.getValueFromPreviousFormData(source.props.path);\r\n break;\r\n case ESourceKey.BROWSER_STORAGE:\r\n value = this.getValueFromBrowserStorage(\r\n source.props.browserStorage.type,\r\n source.props.browserStorage.key\r\n );\r\n break;\r\n case ESourceKey.PREDEFINED:\r\n value = source.value;\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private setValueToFieldConfig(path: string, value: any): any {\r\n this._field = setValueToObject(this._field, path, value);\r\n }\r\n private setValueToFormData(path: string, value: any): any {\r\n this._formData = setValueToObject(this._formData, path, value);\r\n }\r\n private setValueToAllFormsData(path: string, value: any): any {\r\n this._allFormsData = setValueToObject(this._allFormsData, path, value);\r\n }\r\n private setValueToPreviousFromData(path: string, value: any): any {\r\n this._previousFormData = setValueToObject(\r\n this._previousFormData,\r\n path,\r\n value\r\n );\r\n }\r\n private setValueToBrowserStorage(type: string, key: string, value: any): any {\r\n switch (type) {\r\n case EBrowserStorageType.LOCAL_STORAGE:\r\n localStorage.setItem(key, value);\r\n break;\r\n case EBrowserStorageType.SESSION_STORAGE:\r\n sessionStorage.setItem(key, value);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n @log\r\n async setValueToSource(source: TSource, value: any) {\r\n switch (source.key) {\r\n case ESourceKey.FIELD_CONFIG:\r\n this._field = this.setValueToFieldConfig(source.props.path, value);\r\n break;\r\n case ESourceKey.FORM_DATA:\r\n this._formData = this.setValueToFormData(source.props.path, value);\r\n break;\r\n case ESourceKey.ALL_FORMS_DATA:\r\n this._allFormsData = this.setValueToAllFormsData(\r\n source.props.path,\r\n value\r\n );\r\n break;\r\n case ESourceKey.PREVIOUS_FORM_DATA:\r\n this._previousFormData = this.setValueToPreviousFromData(\r\n source.props.path,\r\n value\r\n );\r\n break;\r\n case ESourceKey.BROWSER_STORAGE:\r\n await this.setValueToBrowserStorage(\r\n source.props.browserStorage.type,\r\n source.props.browserStorage.key,\r\n value\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import {\r\n EPattern,\r\n EPatternKey\r\n} from \"../definitions/common/form-view.common.enum.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { ERuleKey } from \"../definitions/rules/form-view.rules.enum.definitions\";\r\nimport {\r\n TRule,\r\n TRuleObjectPathExists,\r\n TRuleType,\r\n TRuleValueChange,\r\n TRuleValueCheck\r\n} from \"../definitions/rules/form-view.rules.type.definitions\";\r\nimport { ESourceKey } from \"../definitions/sources/form-view.sources.enum.definitions\";\r\nimport { TSource } from \"../definitions/sources/form-view.sources.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { hasPath } from \"./form-view.common.helper\";\r\nimport { Sources } from \"./form-view.sources.helper\";\r\n\r\nexport class Rules {\r\n private _formData: any;\r\n private _previousFormData: any;\r\n private _allFormsData: any;\r\n private _field: TField;\r\n private _rules: Array<TRule>;\r\n\r\n constructor(\r\n rules: Array<TRule>,\r\n field: TField,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any\r\n ) {\r\n this._field = field;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._allFormsData = allFormsData;\r\n this._rules = rules;\r\n }\r\n\r\n @log\r\n private evaluate(rule: TRule): boolean {\r\n let ruleType: TRuleType = rule.key;\r\n let ruleEvaluationStatus: boolean = false;\r\n\r\n if (this._field.type === \"radio\") {\r\n this._formData[this._field.key] = this._formData[this._field.key].label;\r\n }\r\n\r\n const source = new Sources(\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n );\r\n\r\n switch (ruleType) {\r\n case ERuleKey.OBJECT_PATH_EXISTS:\r\n const ruleObjectPathExists = rule as TRuleObjectPathExists;\r\n const ruleObjectPathExistsObject = ruleObjectPathExists.props.object;\r\n const ruleObjectPathExistsPath = ruleObjectPathExists.props.path;\r\n\r\n switch (ruleObjectPathExistsObject) {\r\n case ESourceKey.ALL_FORMS_DATA:\r\n ruleEvaluationStatus = hasPath(\r\n this._allFormsData,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n case ESourceKey.FORM_DATA:\r\n ruleEvaluationStatus = hasPath(\r\n this._formData,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n case ESourceKey.PREVIOUS_FORM_DATA:\r\n ruleEvaluationStatus = hasPath(\r\n this._previousFormData,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n case ESourceKey.FIELD_CONFIG:\r\n ruleEvaluationStatus = hasPath(\r\n this._field,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n default:\r\n ruleEvaluationStatus = false;\r\n break;\r\n }\r\n break;\r\n case ERuleKey.VALUE_CHECK:\r\n const ruleValueCheck = rule as TRuleValueCheck;\r\n const ruleValueCheckSource: TSource = ruleValueCheck.props.value.source;\r\n const ruleValueCheckValue =\r\n source.getValueFromSource(ruleValueCheckSource);\r\n\r\n if (ruleValueCheck.props.pattern.key === EPatternKey.CUSTOM) {\r\n var re = new RegExp(ruleValueCheck.props.pattern.pattern);\r\n } else {\r\n var re = new RegExp(EPattern[ruleValueCheck.props.pattern.key]);\r\n }\r\n\r\n ruleEvaluationStatus = re.test(ruleValueCheckValue);\r\n break;\r\n case ERuleKey.VALUE_CHANGE:\r\n const ruleValueChange = rule as TRuleValueChange;\r\n const ruleValueChangeCurrentSource: TSource =\r\n ruleValueChange.props.value.current.source;\r\n const ruleValueChangePreviousSource: TSource =\r\n ruleValueChange.props.value.previous.source;\r\n\r\n const previousValue = source.getValueFromSource(\r\n ruleValueChangePreviousSource\r\n );\r\n const currentValue = source.getValueFromSource(\r\n ruleValueChangeCurrentSource\r\n );\r\n\r\n ruleEvaluationStatus = previousValue === currentValue;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return ruleEvaluationStatus;\r\n }\r\n\r\n @log\r\n public mapping(): any {\r\n let rulesEvaluationMapping = {};\r\n\r\n for (const rule of this._rules) {\r\n const ruleEvaluationStatus = this.evaluate(rule);\r\n\r\n rulesEvaluationMapping = {\r\n ...rulesEvaluationMapping,\r\n [rule.id]: ruleEvaluationStatus\r\n };\r\n }\r\n\r\n return rulesEvaluationMapping;\r\n }\r\n}\r\n","import { isEmpty } from \"../../renderer.helper\";\r\nimport { TAction } from \"../definitions/actions/form-view.actions.type.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { TRule } from \"../definitions/rules/form-view.rules.type.definitions\";\r\nimport { TTrigger } from \"../definitions/triggers/form-view.triggers.type.definitions\";\r\nimport { TValidation } from \"../definitions/validations/form-view.validations.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { Actions } from \"./form-view.actions.helper\";\r\nimport { setEmptyValue, setValueToObject } from \"./form-view.common.helper\";\r\nimport { Condition } from \"./form-view.condition.helper\";\r\nimport { Rules } from \"./form-view.rules.helper\";\r\nimport { Sources } from \"./form-view.sources.helper\";\r\n\r\nexport class Defaults {\r\n private _allFormsData: any;\r\n private _field: TField;\r\n private _formData: any;\r\n private _previousFormData: any;\r\n private _takeAction: Function;\r\n\r\n constructor(\r\n field: TField,\r\n allFormsData: any,\r\n formData: any,\r\n previousFormData: any,\r\n takeAction: Function\r\n ) {\r\n this._field = field;\r\n this._allFormsData = allFormsData;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n @log\r\n async getDefaultValue() {\r\n let defaultValue: any;\r\n\r\n const sources = this._field.default.value.sources;\r\n\r\n let sourceIndex = 0;\r\n for (let source of sources) {\r\n const sources = new Sources(\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n );\r\n const value = sources.getValueFromSource(source);\r\n // Set the Value of current source.\r\n this._field = setValueToObject(\r\n this._field,\r\n `default.value.sources.[${sourceIndex}].value`,\r\n value\r\n );\r\n\r\n const validation: TValidation = source.validation;\r\n\r\n const triggers: Array<TTrigger> = validation.triggers;\r\n const rules: Array<TRule> = validation.rules;\r\n const actions: Array<TAction> = validation.actions;\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionEvaluation = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionEvaluation) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n\r\n sourceIndex++;\r\n }\r\n\r\n defaultValue = this._field.default.value.value;\r\n\r\n if (isEmpty(defaultValue)) {\r\n defaultValue = setEmptyValue(this._field);\r\n }\r\n\r\n return defaultValue;\r\n }\r\n}\r\n","import { TuiDay } from \"@taiga-ui/cdk\";\r\nimport { EFieldType } from \"../definitions/fields/form-view.fields.enum.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { hasKey, isNotEmpty } from \"./form-view.common.helper\";\r\n\r\nexport const findFieldFromKey = (fields: any[], key: string) => {\r\n const field = fields.find((field) => {\r\n if (field.key === key) {\r\n return field;\r\n }\r\n });\r\n\r\n return field;\r\n};\r\n\r\nexport const findFieldIndexFromKey = (fields: any[], key: string) => {\r\n let fieldIndex: number;\r\n\r\n fieldIndex = fields.findIndex((_: any) => {\r\n return key === _.key;\r\n });\r\n\r\n return fieldIndex;\r\n};\r\n\r\nexport const getSearchTextOptionsFromRemoteFile = async (\r\n field: any,\r\n childField: any,\r\n formGroup: any\r\n): Promise<any> => {\r\n const parentFieldValue = formGroup.controls[field.key].value;\r\n\r\n // Determine the URL of the remote file to fetch\r\n let fileUrl: string | undefined;\r\n if (childField.regexToGetJsonRemoteUrlKey) {\r\n const fileKey = parentFieldValue.match(\r\n childField.regexToGetJsonRemoteUrlKey\r\n )[0];\r\n fileUrl = childField.jsonRemoteUrlMapping[fileKey];\r\n } else {\r\n fileUrl = childField.fileUrl;\r\n }\r\n\r\n // Return early if there is no file URL\r\n if (!fileUrl) return;\r\n\r\n // Fetch the remote file and parse its JSON data\r\n const response = await fetch(fileUrl);\r\n const data = await response.json();\r\n\r\n // Return the data for the given parent field value\r\n return data[parentFieldValue];\r\n};\r\n\r\nexport const getSearchTextOptionsFromFieldConfig = (\r\n field: any,\r\n childField: any,\r\n formGroup: any\r\n): any => {\r\n let options: any;\r\n\r\n const fieldValue = formGroup.controls[field.key].value;\r\n\r\n if (isNotEmpty(childField[\"json\"])) {\r\n options = childField[\"json\"][fieldValue];\r\n }\r\n\r\n return options;\r\n};\r\n\r\nexport const formatSearchTextOptions = (\r\n options: { title: string; value: string }[]\r\n): string[] => {\r\n return options.map(({ title }) => title);\r\n};\r\n\r\nexport function highlightFieldError(field: any, error: any): any {\r\n field.invalid = error;\r\n field.focus = error;\r\n\r\n // if (!error) {\r\n // field[\"messages\"] = field[\"messages\"].filter(function (fieldMessage: {\r\n // type: string;\r\n // message: string;\r\n // }) {\r\n // return fieldMessage.type === \"error\";\r\n // });\r\n // }\r\n\r\n return field;\r\n}\r\n\r\nexport const addMessage = (\r\n field: any,\r\n message: { type: string; message: string }\r\n): any => {\r\n const isDuplicateMessage = (\r\n messages: { type: string; message: string }[],\r\n message: { type: string; message: string }\r\n ) => {\r\n return messages.some((fieldMessage: { type: string; message: string }) => {\r\n return (\r\n fieldMessage.type === message.type &&\r\n fieldMessage.message === message.message\r\n );\r\n });\r\n };\r\n\r\n field[\"messages\"] = [];\r\n\r\n if (hasKey(field, \"messages\")) {\r\n if (!isDuplicateMessage(field[\"messages\"], message)) {\r\n field[\"messages\"].push({\r\n type: message.type,\r\n message: message.message\r\n });\r\n }\r\n } else {\r\n field[\"messages\"] = [{ type: message.type, message: message.message }];\r\n }\r\n\r\n return field;\r\n};\r\nexport const removeMessage = (\r\n field: any,\r\n message: { type: string; message: string }\r\n): any => {\r\n field[\"messages\"] = field[\"messages\"].filter(function (fieldMessage) {\r\n return fieldMessage.type !== message.type;\r\n });\r\n\r\n return field;\r\n};\r\n\r\nexport function setFieldError(\r\n fields: any,\r\n errors: any,\r\n key: string,\r\n error: boolean\r\n) {\r\n const fieldIndex = fields.findIndex((field: any) => {\r\n return field.key === key;\r\n });\r\n\r\n const setErrorMessages = (field: any, errors: any) => {\r\n const getErrorMessage = (fieldLabel: string, errorType: string) => {\r\n let errorMessage: string = \"\";\r\n\r\n switch (errorType) {\r\n case \"required\":\r\n errorMessage = `${fieldLabel} is required!`;\r\n break;\r\n case \"email\":\r\n errorMessage = `${fieldLabel} has wrong email format!`;\r\n break;\r\n case \"min\":\r\n errorMessage = `${fieldLabel} has wrong value! Minimum value: ${field.validators.min}`;\r\n break;\r\n case \"minlength\":\r\n errorMessage = `${fieldLabel} has wrong length! Required minimum length: ${field.validators.minLength}`;\r\n break;\r\n case \"max\":\r\n errorMessage = `${fieldLabel} has wrong value! Maximum value: ${field.validators.maxLength}`;\r\n break;\r\n case \"maxlength\":\r\n errorMessage = `${fieldLabel} has wrong length! Required maximum length: ${field.validators.maxLength}`;\r\n break;\r\n case \"areEqual\":\r\n errorMessage = `${fieldLabel} must be equal!`;\r\n break;\r\n case \"pattern\":\r\n errorMessage = `${fieldLabel} is in incorrect format!`;\r\n break;\r\n default:\r\n errorMessage = `${fieldLabel}: ${errorType}`;\r\n break;\r\n }\r\n\r\n return errorMessage;\r\n };\r\n\r\n Object.keys(errors).forEach((error) => {\r\n field = addMessage(field, {\r\n type: \"error\",\r\n message: getErrorMessage(field.label, error)\r\n });\r\n });\r\n\r\n return field;\r\n };\r\n\r\n if (error) {\r\n fields[fieldIndex] = setErrorMessages(fields[fieldIndex], errors);\r\n } else {\r\n fields[fieldIndex][\"messages\"] = [];\r\n }\r\n\r\n fields[fieldIndex] = highlightFieldError(fields[fieldIndex], error);\r\n\r\n return fields;\r\n}\r\n\r\nexport const convertDateStringToTuiDayFormat = (date: string): TuiDay => {\r\n const splitDate = date.split(\"-\");\r\n const tuiDay = new TuiDay(\r\n Number(splitDate[2]), // Year\r\n Number(splitDate[1]) - 1, // Month, Why '-1' => Because Taiga-UI Required It, So...\r\n Number(splitDate[0]) // Day\r\n );\r\n\r\n return tuiDay;\r\n};\r\n\r\nexport const convertTuiDayFormatToDateString = (date: TuiDay): string => {\r\n let formattedDate: string;\r\n let year = date.year;\r\n let month = date.month;\r\n let day = date.day;\r\n\r\n formattedDate = `${day.toString().padStart(2, \"0\")}-${(month + 1)\r\n .toString()\r\n .padStart(2, \"0\")}-${year}`;\r\n\r\n return formattedDate;\r\n};\r\n\r\nexport const convertValueFromKwikUIFormatToBasicFormat = (\r\n field: TField,\r\n value: any\r\n) => {\r\n let convertedValue: any = value;\r\n\r\n switch (field.type) {\r\n case EFieldType.DATE:\r\n convertedValue = convertTuiDayFormatToDateString(value);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return convertedValue;\r\n};\r\n\r\nexport const convertValueFromBasicFormatToKwikUIFormat = (\r\n field: TField,\r\n value: any\r\n) => {\r\n let convertedValue: any = value;\r\n\r\n if (isNotEmpty(value)) {\r\n switch (field.type) {\r\n case EFieldType.RADIO:\r\n if (hasKey(value, \"label\")) {\r\n convertedValue = value.label;\r\n }\r\n break;\r\n case EFieldType.DATE:\r\n convertedValue = convertDateStringToTuiDayFormat(value);\r\n break;\r\n case EFieldType.TITLE:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return convertedValue;\r\n};\r\n","import {\r\n FormArray,\r\n FormGroup,\r\n ValidationErrors,\r\n Validators\r\n} from \"@angular/forms\";\r\nimport {\r\n EPattern,\r\n EPatternKey\r\n} from \"../definitions/common/form-view.common.enum.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { Actions } from \"./form-view.actions.helper\";\r\nimport { hasKey, isNotEmpty } from \"./form-view.common.helper\";\r\nimport { Condition } from \"./form-view.condition.helper\";\r\nimport { Rules } from \"./form-view.rules.helper\";\r\n\r\nexport class Validations {\r\n private _formData: any;\r\n get formData(): any {\r\n return this._formData;\r\n }\r\n set formData(value: any) {\r\n this._formData = value;\r\n }\r\n\r\n private _previousFormData: any;\r\n get previousFormData(): any {\r\n return this._previousFormData;\r\n }\r\n set previousFormData(value: any) {\r\n this._previousFormData = value;\r\n }\r\n\r\n private _allFormsData: any;\r\n get allFormsData(): any {\r\n return this._allFormsData;\r\n }\r\n set allFormsData(value: any) {\r\n this._allFormsData = value;\r\n }\r\n\r\n private _field: TField;\r\n get field(): TField {\r\n return this._field;\r\n }\r\n set field(value: TField) {\r\n this._field = value;\r\n }\r\n\r\n private _takeAction: Function;\r\n\r\n constructor(\r\n field: TField,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any,\r\n takeAction: any\r\n ) {\r\n this._field = field;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._allFormsData = allFormsData;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n @log\r\n getFieldValidators(field: any) {\r\n let validators = [];\r\n\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"min\") &&\r\n isNotEmpty(field.validators.min)\r\n ) {\r\n validators.push(Validators.min(field.validators.min));\r\n }\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"max\") &&\r\n isNotEmpty(field.validators.max)\r\n ) {\r\n validators.push(Validators.max(field.validators.max));\r\n }\r\n if (\r\n hasKey(field, \"required\") ||\r\n (hasKey(field, \"validators\") && hasKey(field.validators, \"required\"))\r\n ) {\r\n validators.push(Validators.required);\r\n }\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"minLength\") &&\r\n isNotEmpty(field.validators.minLength)\r\n ) {\r\n validators.push(Validators.minLength(field.validators.minLength));\r\n }\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"maxLength\") &&\r\n isNotEmpty(field.validators.maxLength)\r\n ) {\r\n validators.push(Validators.maxLength(field.validators.maxLength));\r\n }\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"pattern\") &&\r\n isNotEmpty(field.validators.pattern)\r\n ) {\r\n if (hasKey(field.validators.pattern, \"key\")) {\r\n if (field.validators.pattern.key === EPatternKey.CUSTOM) {\r\n validators.push(Validators.pattern(field.validators.pattern.pattern));\r\n } else {\r\n validators.push(\r\n Validators.pattern(EPattern[field.validators.pattern.key])\r\n );\r\n }\r\n }\r\n }\r\n\r\n return validators;\r\n }\r\n\r\n @log\r\n getFormValidationErrors(\r\n control: FormGroup\r\n ): { name: string; value: string }[] {\r\n let errors: { name: string; value: string }[] = [];\r\n\r\n for (const key in control.controls) {\r\n const controlErrors: ValidationErrors = control.controls[key].errors;\r\n if (controlErrors !== null && controlErrors !== undefined) {\r\n Object.keys(controlErrors).forEach((keyError) => {\r\n errors.push({\r\n name: keyError,\r\n value: controlErrors[keyError]\r\n });\r\n });\r\n }\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n @log\r\n findInvalidControlsRecursive(formToInvestigate: FormGroup | FormArray) {\r\n var controls: any[] = [];\r\n\r\n let recursiveFunc = (form: FormGroup | FormArray) => {\r\n Object.keys(form.controls).forEach((field: any) => {\r\n const control = form.get(field);\r\n if (control.invalid) {\r\n controls.push({\r\n key: field,\r\n invalid: true\r\n });\r\n } else {\r\n controls.push({\r\n key: field,\r\n invalid: false\r\n });\r\n }\r\n if (control instanceof FormGroup) {\r\n recursiveFunc(control);\r\n } else if (control instanceof FormArray) {\r\n recursiveFunc(control);\r\n }\r\n });\r\n };\r\n\r\n recursiveFunc(formToInvestigate);\r\n\r\n return controls;\r\n }\r\n\r\n @log\r\n async validateField(): Promise<any> {\r\n const validations = this._field.validation;\r\n\r\n const triggers = validations.triggers;\r\n const rules = validations.rules;\r\n const actions = validations.actions;\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionEvaluation = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionEvaluation) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n }\r\n}\r\n","import { FormControl, FormGroup } from \"@angular/forms\";\r\nimport { log } from \"./form-view.decorators\";\r\nimport { Defaults } from \"./helpers/form-view.defaults.helper\";\r\nimport { convertValueFromBasicFormatToKwikUIFormat } from \"./helpers/form-view.fields.helper\";\r\nimport { Validations } from \"./helpers/form-view.validations.helper\";\r\n\r\nexport class KwikIDFormViewService {\r\n constructor() {}\r\n\r\n // 'init' stage of the form\r\n @log\r\n async createFormGroup(\r\n fields: any,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any,\r\n takeAction: Function\r\n ) {\r\n let formGroup = new FormGroup({});\r\n\r\n for (let field of fields) {\r\n if (field.type !== \"title\") {\r\n const defaults = new Defaults(\r\n field,\r\n allFormsData,\r\n formData,\r\n previousFormData,\r\n takeAction\r\n );\r\n let value = await defaults.getDefaultValue();\r\n value = convertValueFromBasicFormatToKwikUIFormat(field, value);\r\n\r\n const validators = new Validations(\r\n field,\r\n formData,\r\n previousFormData,\r\n allFormsData,\r\n takeAction\r\n ).getFieldValidators(field);\r\n\r\n formGroup.addControl(\r\n field.key,\r\n new FormControl(\r\n { value: value, disabled: field.disabled },\r\n { validators: validators }\r\n )\r\n );\r\n }\r\n }\r\n\r\n return formGroup;\r\n }\r\n}\r\n","import { TAction } from \"../definitions/actions/form-view.actions.type.definitions\";\r\nimport {\r\n TApi,\r\n TApiRequest,\r\n TApiRequestBody,\r\n TApiRequestBodyParam,\r\n TApiResponse,\r\n TApiStatus\r\n} from \"../definitions/apis/form-view.apis.type.definitions\";\r\nimport { TFieldApiCall } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { TRule } from \"../definitions/rules/form-view.rules.type.definitions\";\r\nimport { TSource } from \"../definitions/sources/form-view.sources.type.definitions\";\r\nimport { TTrigger } from \"../definitions/triggers/form-view.triggers.type.definitions\";\r\nimport { TValidation } from \"../definitions/validations/form-view.validations.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { Actions } from \"./form-view.actions.helper\";\r\nimport { setValueToObject } from \"./form-view.common.helper\";\r\nimport { Condition } from \"./form-view.condition.helper\";\r\nimport { Rules } from \"./form-view.rules.helper\";\r\nimport { Sources } from \"./form-view.sources.helper\";\r\n\r\nexport class Apis {\r\n private _formData: any;\r\n private _previousFormData: any;\r\n private _allFormsData: any;\r\n private _field: TFieldApiCall;\r\n private _takeAction: Function;\r\n\r\n private _api: TApi;\r\n private _request: TApiRequest;\r\n private _response: TApiResponse;\r\n private _status: TApiStatus;\r\n\r\n constructor(\r\n field: TFieldApiCall,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any,\r\n takeAction: Function\r\n ) {\r\n this._field = field;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._allFormsData = allFormsData;\r\n this._takeAction = takeAction;\r\n\r\n this._api = field.api;\r\n this._request = field.api.request;\r\n this._response = field.api.response;\r\n this._status = field.api.status;\r\n }\r\n\r\n @log\r\n public async setRequestBodyParams(): Promise<TFieldApiCall> {\r\n let params: Array<TApiRequestBodyParam> = this._request.body.params;\r\n\r\n let paramIndex = 0;\r\n for (let param of params) {\r\n let sources: Array<TSource> = param.sources;\r\n\r\n let sourceIndex = 0;\r\n for (let source of sources) {\r\n const sources = new Sources(\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n );\r\n const value = sources.getValueFromSource(source);\r\n // Set the Value of current source.\r\n this._field = setValueToObject(\r\n this._field,\r\n `api.request.body.params[${paramIndex}].sources[${sourceIndex}].value`,\r\n value\r\n );\r\n\r\n const validation: TValidation = source.validation;\r\n\r\n const triggers: Array<TTrigger> = validation?.triggers ?? [];\r\n const rules: Array<TRule> = validation?.rules ?? [];\r\n const actions: Array<TAction> = validation?.actions ?? [];\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionEvaluation = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionEvaluation) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n\r\n sourceIndex++;\r\n }\r\n\r\n paramIndex++;\r\n }\r\n\r\n return this._field;\r\n }\r\n\r\n @log\r\n public async validateRequestBody(): Promise<TFieldApiCall> {\r\n const body: TApiRequestBody = this._request.body;\r\n\r\n const validation: TValidation = body.validation;\r\n\r\n const triggers: Array<TTrigger> = validation.triggers;\r\n const rules: Array<TRule> = validation.rules;\r\n const actions: Array<TAction> = validation.actions;\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionSuccess = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionSuccess) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n\r\n return this._field;\r\n }\r\n\r\n @log\r\n public async validateApiCallResponse(): Promise<TFieldApiCall> {\r\n const validation: TValidation = this._response.validation;\r\n\r\n const triggers: Array<TTrigger> = validation.triggers;\r\n const rules: Array<TRule> = validation.rules;\r\n const actions: Array<TAction> = validation.actions;\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionSuccess = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionSuccess) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n\r\n return this._field;\r\n }\r\n\r\n getPropsValues(): any {\r\n return {\r\n field: this._field,\r\n formData: this._formData,\r\n previousFormData: this._previousFormData,\r\n allFormsData: this._allFormsData\r\n };\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { TuiAlertService } from \"@taiga-ui/core\";\r\nimport { TuiPushService } from \"@taiga-ui/kit\";\r\nimport { pairwise } from \"rxjs/operators\";\r\nimport { EActionKey } from \"./definitions/actions/form-view.actions.enum.definitions\";\r\nimport { TAction } from \"./definitions/actions/form-view.actions.type.definitions\";\r\nimport { EApiStatusType } from \"./definitions/apis/form-view.apis.enum.definitions\";\r\nimport { EMessageType } from \"./definitions/common/form-view.common.enum.definitions\";\r\nimport { TMessage } from \"./definitions/common/form-view.common.type.definitions\";\r\nimport { EFieldType } from \"./definitions/fields/form-view.fields.enum.definitions\";\r\nimport {\r\n TField,\r\n TFieldApiCall,\r\n TFieldTitle\r\n} from \"./definitions/fields/form-view.fields.type.definitions\";\r\nimport { log } from \"./form-view.decorators\";\r\nimport { KwikIDFormViewService } from \"./form-view.service\";\r\nimport { Actions } from \"./helpers/form-view.actions.helper\";\r\nimport { Apis } from \"./helpers/form-view.apis.helper\";\r\nimport {\r\n hasKey,\r\n isEmpty,\r\n isNotEmpty,\r\n setEmptyValue\r\n} from \"./helpers/form-view.common.helper\";\r\nimport { Condition } from \"./helpers/form-view.condition.helper\";\r\nimport {\r\n addMessage,\r\n convertValueFromKwikUIFormatToBasicFormat,\r\n findFieldFromKey,\r\n findFieldIndexFromKey,\r\n getSearchTextOptionsFromFieldConfig,\r\n getSearchTextOptionsFromRemoteFile,\r\n highlightFieldError,\r\n removeMessage,\r\n setFieldError\r\n} from \"./helpers/form-view.fields.helper\";\r\nimport { Rules } from \"./helpers/form-view.rules.helper\";\r\nimport { Sources } from \"./helpers/form-view.sources.helper\";\r\nimport { Validations } from \"./helpers/form-view.validations.helper\";\r\n\r\n@Component({\r\n selector: \"kwikid-form-view\",\r\n templateUrl: \"./form-view.component.html\",\r\n styleUrls: [\"./form-view.component.scss\"],\r\n providers: [KwikIDFormViewService]\r\n})\r\nexport class KwikIDFormViewComponent implements OnInit, AfterViewInit {\r\n @Input()\r\n formConfig: any;\r\n\r\n @Input()\r\n formData: any;\r\n\r\n @Input()\r\n apiCallResponse: any = {};\r\n\r\n @Input()\r\n isMobileView: boolean = false;\r\n\r\n @Input()\r\n allFormsData: any;\r\n\r\n @Input()\r\n formsList: any[];\r\n\r\n @Output()\r\n onClickViewForms: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickSaveForm: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickApiCall: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n getActiveFormData: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n formFields: any[] = [];\r\n previousFormData: any = {};\r\n\r\n loading: boolean = true;\r\n viewFormsButton = {\r\n disabled: false,\r\n showLoader: false\r\n };\r\n saveFormButton = {\r\n disabled: false,\r\n showLoader: false\r\n };\r\n\r\n formGroup: FormGroup = new FormGroup({});\r\n\r\n constructor(\r\n @Inject(TuiPushService) protected readonly push: TuiPushService,\r\n @Inject(TuiAlertService) protected readonly alert: TuiAlertService,\r\n private formViewService: KwikIDFormViewService\r\n ) {}\r\n\r\n @log\r\n ngOnInit(): void {\r\n (async () => {\r\n await this.initFormConfig(this.formConfig);\r\n\r\n this.loading = false;\r\n })();\r\n }\r\n\r\n @log\r\n ngAfterViewInit(): void {}\r\n\r\n @log\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const verifyChange = (key: string) => {\r\n return hasKey(changes, key) && !changes[key].firstChange;\r\n };\r\n if (verifyChange(\"formData\")) {\r\n this.formData = {\r\n ...this.formData,\r\n ...changes.formData.currentValue\r\n };\r\n }\r\n if (verifyChange(\"apiCallResponse\")) {\r\n this.apiCallResponse = changes.apiCallResponse.currentValue;\r\n\r\n this.formData = {\r\n ...this.formData,\r\n [this.apiCallResponse.key]: this.apiCallResponse.response\r\n };\r\n\r\n this.formGroup.patchValue(\r\n {\r\n [this.apiCallResponse.key]: this.apiCallResponse.response\r\n },\r\n { emitEvent: false }\r\n );\r\n\r\n let field: TFieldApiCall = findFieldFromKey(\r\n this.formFields,\r\n this.apiCallResponse.key\r\n );\r\n\r\n const apis = new Apis(\r\n field,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n (async () => {\r\n field = await apis.validateApiCallResponse();\r\n })();\r\n }\r\n if (verifyChange(\"isMobileView\")) {\r\n this.isMobileView = changes.isMobileView.currentValue;\r\n }\r\n if (verifyChange(\"allFormsData\")) {\r\n this.allFormsData = changes.allFormsData.currentValue;\r\n }\r\n if (verifyChange(\"formsList\")) {\r\n this.formsList = changes.formsList.currentValue;\r\n }\r\n if (verifyChange(\"formConfig\")) {\r\n this.formConfig = changes.formConfig.currentValue;\r\n\r\n (async () => {\r\n await this.initFormConfig(this.formConfig);\r\n })();\r\n }\r\n }\r\n\r\n @log\r\n async initFormConfig(formConfig: any) {\r\n this.setFormFieldsFromFormConfig(formConfig);\r\n\r\n this.setFormDataFromAllFormsData();\r\n\r\n this.formGroup = await this.formViewService.createFormGroup(\r\n this.formFields,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n for (let field of this.formFields) {\r\n if (field.type !== \"title\") {\r\n this.previousFormData = {\r\n ...this.previousFormData,\r\n [field.key]: this.formGroup.controls[field.key].value\r\n };\r\n\r\n this.formGroup.controls[field.key].valueChanges\r\n .pipe(pairwise())\r\n .subscribe(([previousValue, currentValue]) => {\r\n this.previousFormData = {\r\n ...this.previousFormData,\r\n [field.key]: previousValue\r\n };\r\n\r\n this.formData = {\r\n ...this.formData,\r\n [field.key]: currentValue\r\n };\r\n });\r\n }\r\n }\r\n for (let field of this.formFields) {\r\n if (field.type !== \"title\") {\r\n (async () => {\r\n field = await this.handleConnectedElements(\r\n {\r\n key: field.key,\r\n value: this.formGroup.controls[field.key].value\r\n },\r\n \"ON_INIT\"\r\n );\r\n })();\r\n }\r\n }\r\n }\r\n\r\n @log\r\n setFormFieldsFromFormConfig(formConfig: any) {\r\n if (hasKey(formConfig, \"fields\")) {\r\n this.formFields = formConfig.fields;\r\n } else if (\r\n hasKey(formConfig, \"multiForm\") &&\r\n hasKey(formConfig.multiForm, \"fields\")\r\n ) {\r\n this.formFields = formConfig.multiForm.fields;\r\n }\r\n }\r\n\r\n @log\r\n setFormDataFromAllFormsData() {\r\n if (hasKey(this.allFormsData, this.formConfig.key)) {\r\n this.formData = this.allFormsData[this.formConfig.key];\r\n } else {\r\n this.formData = {};\r\n }\r\n }\r\n\r\n @log\r\n async handleConnectedElementFieldActions(\r\n connectedFieldConfig: any,\r\n connectedField: any\r\n ) {\r\n if (hasKey(connectedFieldConfig, \"rules\")) {\r\n const rulesMapping = new Rules(\r\n connectedFieldConfig.rules,\r\n connectedField,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData\r\n ).mapping();\r\n\r\n for (let action of connectedFieldConfig.actions) {\r\n const conditionSuccess = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionSuccess) {\r\n const actions = new Actions(\r\n action,\r\n connectedField,\r\n rulesMapping,\r\n this.allFormsData,\r\n this.formData,\r\n this.previousFormData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n }\r\n\r\n return connectedField;\r\n }\r\n\r\n @log\r\n async handleConnectedElementFields(\r\n currentField: any,\r\n connectedFieldConfig: any,\r\n eventType: string\r\n ) {\r\n let connectedField = findFieldFromKey(\r\n this.formFields,\r\n connectedFieldConfig[\"key\"]\r\n );\r\n\r\n switch (eventType) {\r\n case \"INIT\":\r\n if (\r\n hasKey(connectedField, \"triggers\") &&\r\n connectedField.triggers.includes(\"INIT\")\r\n ) {\r\n if (this.isFieldEnabled(connectedField.key)) {\r\n if (hasKey(connectedFieldConfig, \"connectedParentFields\")) {\r\n switch (connectedFieldConfig.type) {\r\n case \"dropdown-with-search\":\r\n connectedField = await this.handleFieldTypeSearchText(\r\n currentField,\r\n connectedField\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n connectedField = await this.handleConnectedElementFieldActions(\r\n connectedFieldConfig,\r\n connectedField\r\n );\r\n }\r\n break;\r\n case \"VALUE_CHANGE\":\r\n if (\r\n hasKey(connectedFieldConfig, \"triggers\") &&\r\n connectedFieldConfig.triggers.includes(\"VALUE_CHANGE\")\r\n ) {\r\n switch (connectedField.type) {\r\n case \"dropdown-with-search\":\r\n connectedField = await this.handleFieldTypeSearchText(\r\n currentField,\r\n connectedField\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n connectedField = await this.handleConnectedElementFieldActions(\r\n connectedFieldConfig,\r\n connectedField\r\n );\r\n }\r\n break;\r\n case \"NESTED_LINK\":\r\n if (\r\n hasKey(connectedFieldConfig, \"triggers\") &&\r\n connectedFieldConfig.triggers.includes(\"NESTED_LINK\")\r\n ) {\r\n connectedField = await this.handleConnectedElementFieldActions(\r\n connectedFieldConfig,\r\n connectedField\r\n );\r\n }\r\n default:\r\n if (hasKey(connectedFieldConfig, \"triggers\")) {\r\n connectedField = await this.handleConnectedElementFieldActions(\r\n connectedFieldConfig,\r\n connectedField\r\n );\r\n }\r\n break;\r\n }\r\n\r\n if (hasKey(connectedField, \"connectedElements\")) {\r\n for (const connectedFieldConfig of connectedField.connectedElements\r\n .fields) {\r\n connectedField = this.handleConnectedElementFields(\r\n connectedField,\r\n connectedFieldConfig,\r\n \"NESTED_LINK\"\r\n );\r\n }\r\n }\r\n\r\n return currentField;\r\n }\r\n\r\n @log\r\n handleConnectedElements(e: any, eventType: string) {\r\n let currentField = findFieldFromKey(this.formFields, e.key);\r\n\r\n if (hasKey(currentField, \"connectedElements\")) {\r\n let connectedFields = currentField.connectedElements.connectedFields;\r\n for (let connectedFieldConfig of connectedFields) {\r\n currentField = this.handleConnectedElementFields(\r\n currentField,\r\n connectedFieldConfig,\r\n eventType\r\n );\r\n }\r\n }\r\n }\r\n\r\n // DOM Event Handlers\r\n @log\r\n handleGetKeyValue(e: any) {\r\n this.formGroup.patchValue(\r\n {\r\n [e.key]: e.value\r\n },\r\n { emitEvent: false }\r\n );\r\n\r\n // Currently set only for dropdown-with-search connected fields\r\n let field = findFieldFromKey(this.formFields, e.key);\r\n\r\n if (\r\n field.type !== \"title\" &&\r\n field.validation.triggers.includes(\"ON_CHANGE\")\r\n ) {\r\n const validations = new Validations(\r\n field,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n (async () => {\r\n await validations.validateField();\r\n })();\r\n\r\n this.handleConnectedElements(\r\n {\r\n key: field.key,\r\n value: this.formGroup.controls[field.key].value\r\n },\r\n \"ON_CHANGE\"\r\n );\r\n }\r\n }\r\n\r\n @log\r\n async handleOnClickResetFormFields(e: any, field: TFieldTitle) {\r\n for (let f of field.reset.fields) {\r\n for (let a of f.actions) {\r\n const resetField = findFieldFromKey(this.formFields, a.props.fieldKey);\r\n const actions = new Actions(\r\n a,\r\n resetField,\r\n {},\r\n this.allFormsData,\r\n this.formData,\r\n this.previousFormData,\r\n this.takeAction.bind(this)\r\n );\r\n await actions.execute();\r\n }\r\n }\r\n }\r\n\r\n @log\r\n async handleOnClickApiCall(e: any) {\r\n let field: TFieldApiCall = findFieldFromKey(this.formFields, e.key);\r\n\r\n if (field.type === \"api-call\") {\r\n // set button status to loading\r\n field[\"api\"][\"status\"][\"value\"] = EApiStatusType.LOADING;\r\n field[\"showLoader\"] = true;\r\n this.viewFormsButton[\"disabled\"] = true;\r\n this.viewFormsButton[\"showLoader\"] = true;\r\n this.saveFormButton[\"disabled\"] = true;\r\n this.saveFormButton[\"showLoader\"] = true;\r\n\r\n const apis = new Apis(\r\n field,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n field = await apis.setRequestBodyParams();\r\n\r\n field = await apis.validateRequestBody();\r\n\r\n if (field.api.request.body.validation.is_valid) {\r\n // Call API Here\r\n this.onClickApiCall.emit({\r\n key: e.key,\r\n request: {\r\n mode: \"POST\",\r\n body: field.api.request.body.value,\r\n headers: {},\r\n url: field.api.request.url\r\n }\r\n });\r\n } else {\r\n // Request Body Validation Failed\r\n // Highlight Error in UI to User to Retry After Sometime.\r\n // Take Actions based on Validation\r\n setTimeout(() => {\r\n field[\"api\"][\"status\"][\"value\"] = EApiStatusType.FAILED;\r\n field[\"showLoader\"] = false;\r\n }, 500);\r\n }\r\n\r\n this.viewFormsButton[\"disabled\"] = false;\r\n this.viewFormsButton[\"showLoader\"] = false;\r\n this.saveFormButton[\"disabled\"] = false;\r\n this.saveFormButton[\"showLoader\"] = false;\r\n }\r\n }\r\n\r\n @log\r\n handleOnClickViewForms(e: any) {\r\n this.onClickViewForms.emit({\r\n clicked: true\r\n });\r\n }\r\n\r\n @log\r\n handleOnClickSaveForm(e: any) {\r\n let formData = this.formGroup.getRawValue();\r\n\r\n for (let field of this.formFields) {\r\n if (field.type !== EFieldType.TITLE) {\r\n if (field.hidden) {\r\n delete formData[field.key];\r\n } else {\r\n formData[field.key] = convertValueFromKwikUIFormatToBasicFormat(\r\n field,\r\n formData[field.key]\r\n );\r\n }\r\n }\r\n }\r\n\r\n for (let field of this.formFields) {\r\n if (\r\n field.type !== EFieldType.TITLE &&\r\n field.validation.triggers.includes(\"ON_SAVE\")\r\n ) {\r\n const validations = new Validations(\r\n field,\r\n formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n (async () => {\r\n await validations.validateField();\r\n })();\r\n }\r\n }\r\n\r\n if (this.formGroup.invalid) {\r\n const controls = new Validations(\r\n undefined,\r\n formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n ).findInvalidControlsRecursive(this.formGroup);\r\n\r\n let firstFieldWithError: string = \"\";\r\n\r\n for (let control of controls) {\r\n if (control.invalid && isEmpty(firstFieldWithError)) {\r\n firstFieldWithError = control.key;\r\n }\r\n this.formFields = setFieldError(\r\n this.formFields,\r\n this.formGroup.controls[control.key].errors,\r\n control.key,\r\n control.invalid\r\n );\r\n }\r\n\r\n this.toggleErrorNotification(true);\r\n\r\n return;\r\n }\r\n\r\n Object.keys(formData).map((key) => {\r\n if (isEmpty(formData[key])) {\r\n formData[key] = \"\";\r\n }\r\n });\r\n\r\n this.onClickSaveForm.emit({ formConfig: this.formConfig, data: formData });\r\n }\r\n\r\n showErrorNotification: boolean = false;\r\n @log\r\n toggleErrorNotification(show) {\r\n this.showErrorNotification = show;\r\n }\r\n\r\n // Component Helpers\r\n @log\r\n fieldHide(fieldKey: string) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n this.formFields[fieldIndex][\"hidden\"] = true;\r\n }\r\n\r\n @log\r\n fieldShow(fieldKey: string) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n this.formFields[fieldIndex][\"hidden\"] = false;\r\n this.formGroup.updateValueAndValidity();\r\n }\r\n\r\n @log\r\n fieldDisable(fieldKey: string) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n this.formFields[fieldIndex][\"disabled\"] = true;\r\n\r\n if (isNotEmpty(this.formGroup.controls)) {\r\n this.formGroup.controls[field.key].disable({\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n @log\r\n fieldEnable(fieldKey: string) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n this.formFields[fieldIndex][\"disabled\"] = false;\r\n\r\n if (isNotEmpty(this.formGroup.controls)) {\r\n this.formGroup.controls[field.key].enable({\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n @log\r\n fieldReset(fieldKey: string) {\r\n // Find the field and its index in the formFields array\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = findFieldIndexFromKey(this.formFields, fieldKey);\r\n\r\n // Delete the field from the formData object\r\n delete this.formData[fieldKey];\r\n\r\n // Reset the value of the field in the formGroup\r\n this.formGroup.controls[field.key].reset(setEmptyValue(field), {\r\n emitEvent: false\r\n });\r\n\r\n // Reset the messages and errors for the field\r\n field = removeMessage(field, {\r\n type: EMessageType.WARNING,\r\n message: \"\"\r\n });\r\n field = removeMessage(field, {\r\n type: EMessageType.SUCCESS,\r\n message: \"\"\r\n });\r\n this.fieldErrorHide(fieldKey, {\r\n type: EMessageType.ERROR,\r\n message: \"\"\r\n });\r\n\r\n // Reset the value of the field in the formFields array\r\n switch (field.type) {\r\n case \"api-call\":\r\n const fieldApiCall = field as TFieldApiCall;\r\n fieldApiCall.api.status.value = EApiStatusType.DEFAULT;\r\n this.formFields[fieldIndex] = fieldApiCall;\r\n break;\r\n default:\r\n field.focus = false;\r\n field.invalid = false;\r\n this.formFields[fieldIndex] = field;\r\n break;\r\n }\r\n }\r\n\r\n @log\r\n fieldErrorShow(fieldKey: string, message: TMessage) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n field = highlightFieldError(field, true);\r\n field = addMessage(field, message);\r\n\r\n this.formFields[fieldIndex] = field;\r\n }\r\n\r\n @log\r\n fieldErrorHide(fieldKey: string, message: TMessage) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n field = highlightFieldError(field, false);\r\n field = removeMessage(field, message);\r\n\r\n this.formFields[fieldIndex] = field;\r\n }\r\n\r\n @log\r\n fieldMessageShow(fieldKey: string, message: TMessage) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n field = addMessage(field, message);\r\n\r\n this.formFields[fieldIndex] = field;\r\n }\r\n\r\n @log\r\n fieldMessageHide(fieldKey: string, message: TMessage) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n field = removeMessage(field, message);\r\n\r\n this.formFields[fieldIndex] = field;\r\n }\r\n\r\n @log\r\n setObjectValue(field: any, path: string, value: any) {}\r\n\r\n @log\r\n patchFieldControlValue(key: string, value: any) {\r\n this.formGroup.patchValue(\r\n {\r\n [key]: value\r\n },\r\n { emitEvent: false }\r\n );\r\n }\r\n\r\n @log\r\n isFieldValid(fieldKey: string) {\r\n return this.formGroup.controls[fieldKey].valid;\r\n }\r\n\r\n @log\r\n isFieldEnabled(fieldKey: string) {\r\n return this.formGroup.controls[fieldKey].enabled;\r\n }\r\n\r\n @log\r\n getFormGroupRawValues() {\r\n return this.formGroup.getRawValue();\r\n }\r\n\r\n @log\r\n async handleFieldTypeSearchText(field: any, childField: any) {\r\n if (hasKey(childField, \"json\")) {\r\n childField.options = getSearchTextOptionsFromFieldConfig(\r\n field,\r\n childField,\r\n this.formGroup\r\n );\r\n }\r\n if (hasKey(childField, \"fetchJsonFromRemote\")) {\r\n childField.options = await getSearchTextOptionsFromRemoteFile(\r\n field,\r\n childField,\r\n this.formGroup\r\n );\r\n }\r\n\r\n return childField;\r\n }\r\n\r\n @log\r\n async takeAction(\r\n action: TAction,\r\n field: TField,\r\n allFormsData: any,\r\n formData: any,\r\n previousFormData: any\r\n ) {\r\n switch (action.key) {\r\n case EActionKey.FIELD_HIDE:\r\n this.fieldHide(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_SHOW:\r\n this.fieldShow(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_DISABLE:\r\n this.fieldDisable(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_ENABLE:\r\n this.fieldEnable(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_RESET:\r\n this.fieldReset(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_ERROR_SHOW:\r\n this.fieldErrorShow(action.props.fieldKey, action.props.message);\r\n break;\r\n case EActionKey.FIELD_ERROR_HIDE:\r\n this.fieldErrorHide(action.props.fieldKey, action.props.message);\r\n break;\r\n case EActionKey.FIELD_MESSAGE_SHOW:\r\n this.fieldMessageShow(action.props.fieldKey, action.props.message);\r\n break;\r\n case EActionKey.FIELD_MESSAGES_HIDE:\r\n this.fieldMessageHide(action.props.fieldKey, action.props.message);\r\n break;\r\n case EActionKey.SET_VALUE:\r\n const sources = new Sources(\r\n field,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData\r\n );\r\n\r\n const sourceValue = await sources.getValueFromSource(\r\n action.props.value.source\r\n );\r\n sources.setValueToSource(action.props.value.destination, sourceValue);\r\n\r\n field = sources.field;\r\n this.formData = sources.formData;\r\n this.allFormsData = sources.allFormsData;\r\n this.previousFormData = sources.previousFormData;\r\n\r\n break;\r\n case EActionKey.HANDLE_CONNECTED_ELEMENTS:\r\n this.handleConnectedElements({ key: field.key }, \"ACTION\");\r\n break;\r\n case EActionKey.CUSTOM:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"kwikid-form-container\"\r\n *ngIf=\"!this.loading\"\r\n>\r\n <div id=\"uf-form-fields-header-container\">\r\n <div id=\"uf-form-fields-title\">\r\n {{ this.formConfig.title }}\r\n </div>\r\n <div id=\"uf-form-fields-steps\">\r\n Step {{ this.formConfig.sequenceNo }} of {{ this.formsList.length }}\r\n </div>\r\n <hr />\r\n </div>\r\n <form\r\n class=\"kwikid-form show\"\r\n [formGroup]=\"this.formGroup\"\r\n >\r\n <ng-container *ngFor=\"let field of this.formFields; let i = index\">\r\n <ng-container [ngSwitch]=\"field.type\">\r\n <!-- Form Title -->\r\n <ng-container *ngSwitchCase=\"'title'\">\r\n <div\r\n class=\"title\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <div>\r\n {{ field.label }}\r\n </div>\r\n <kwikui-button\r\n *ngIf=\"field?.reset\"\r\n appearance=\"whiteblock\"\r\n size=\"s\"\r\n label=\"Reset\"\r\n (onClick)=\"this.handleOnClickResetFormFields($event, field)\"\r\n ></kwikui-button>\r\n </div>\r\n </ng-container>\r\n <!-- Input Text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input\r\n [case]=\"field?.properties?.case\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [type]=\"'text'\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-checkbox-block\r\n [contentAlign]=\"field?.properties?.contentAlign ?? 'left'\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.properties?.placeholder\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [size]=\"field?.properties?.size ?? 'l'\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-checkbox-block\r\n ><kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-number\r\n [decimal]=\"field?.properties?.decimal\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [max]=\"field?.properties?.max\"\r\n [min]=\"field?.properties?.min\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [postfix]=\"field?.properties?.postfix ?? ''\"\r\n [precision]=\"field?.properties?.precision\"\r\n [prefix]=\"field?.properties?.prefix ?? ''\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-number\r\n ><kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-date\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [max]=\"field?.properties?.max\"\r\n [min]=\"field?.properties?.min\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-date>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Phone -->\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-phone\r\n [countryCode]=\"field?.properties?.countryCode\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [phoneMaskAfterCountryCode]=\"\r\n field?.properties?.phoneMaskAfterCountryCode\r\n \"\r\n [placeholder]=\"field?.placeholder\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-phone>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <label\r\n [tuiLabel]=\"labelTemplate\"\r\n style=\"min-height: auto\"\r\n >\r\n <kwikui-radio-list\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [items]=\"field?.options\"\r\n [label]=\"field?.label\"\r\n [orientation]=\"field?.properties?.orientation\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [size]=\"field?.properties?.size\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-radio-list>\r\n </label>\r\n <ng-template #labelTemplate>\r\n <p\r\n class=\"tui-space_bottom-2\"\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <b>\r\n {{ field.label }}\r\n <span *ngIf=\"field.validators?.required\"></span>\r\n </b>\r\n </p>\r\n </ng-template>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Dropdown -->\r\n <ng-container *ngSwitchCase=\"'dropdown-with-search'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-select-combobox\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [options]=\"field.options\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-select-combobox>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- API Call -->\r\n <ng-container *ngSwitchCase=\"'api-call'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-button-api-call\r\n [apiStatus]=\"field?.api?.status?.value\"\r\n [class]=\"field?.class\"\r\n [disabled]=\"field?.disabled\"\r\n [id]=\"field.key\"\r\n [label]=\"field?.api?.status?.labels[field?.api?.status?.value]\"\r\n [showLoader]=\"field?.disabled === 'loading'\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: fit-content\"\r\n (onClick)=\"this.handleOnClickApiCall($event)\"\r\n ></kwikui-button-api-call>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Mobile OTP -->\r\n <ng-container *ngSwitchCase=\"'otp'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-otp\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [mask]=\"field?.properties?.mask\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-otp>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Aadhaar Number -->\r\n <ng-container *ngSwitchCase=\"'aadhaar-number'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-aadhaar\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-aadhaar>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </form>\r\n <div class=\"kwikid-form-buttons\">\r\n <kwikui-button\r\n *ngIf=\"this.isMobileView\"\r\n [disabled]=\"viewFormsButton.disabled\"\r\n id=\"\"\r\n label=\"View Forms\"\r\n [showLoader]=\"viewFormsButton.showLoader\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"secondary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"this.handleOnClickViewForms($event)\"\r\n ></kwikui-button>\r\n <kwikui-button\r\n [disabled]=\"saveFormButton.disabled\"\r\n id=\"\"\r\n label=\"Save\"\r\n [showLoader]=\"saveFormButton.showLoader\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"primary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"this.handleOnClickSaveForm($event)\"\r\n ></kwikui-button>\r\n </div>\r\n</div>\r\n<div\r\n class=\"kwikid-form-container-loading\"\r\n *ngIf=\"this.loading\"\r\n>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n</div>\r\n<tui-push\r\n id=\"field-error-notification\"\r\n *tuiPush=\"showErrorNotification\"\r\n heading=\"Missing/Incorrect Fields!\"\r\n type=\"Error\"\r\n (close)=\"toggleErrorNotification(false)\"\r\n>\r\n <tui-svg\r\n src=\"tuiIconCancel\"\r\n style=\"color: #fff !important\"\r\n >\r\n </tui-svg>\r\n</tui-push>\r\n","export const hasKey = (object: any, key: string) => {\r\n return object.hasOwnProperty(key);\r\n};\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport { hasKey } from \"./forms-list.helper\";\r\n\r\n@Component({\r\n selector: \"kwikid-forms-list\",\r\n templateUrl: \"./forms-list.component.html\",\r\n styleUrls: [\"./forms-list.component.scss\"]\r\n})\r\nexport class KwikIDFormsListComponent implements OnInit, OnChanges {\r\n @Input()\r\n showFormFields: any = {};\r\n\r\n @Input()\r\n userConfig: any = {};\r\n\r\n @Input()\r\n formsList: any[] = [];\r\n\r\n @Input()\r\n formsListCompleted: any[] = [];\r\n\r\n @Input()\r\n isMobileView: boolean = false;\r\n\r\n @Output()\r\n onClickSetActiveForm: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickHideFormsList: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickSubmitForms = new EventEmitter<any>();\r\n\r\n selectedForm: string = \"\";\r\n\r\n isAllFormsCompleted: boolean = true;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.isAllFormsCompleted = this.checkIsAllFormsCompleted(this.formsList);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const verifyChange = (key: string) => {\r\n return hasKey(changes, key) && !changes[key].firstChange;\r\n };\r\n if (verifyChange(\"showFormFields\")) {\r\n this.showFormFields = changes.showFormFields.currentValue;\r\n }\r\n if (verifyChange(\"formsList\")) {\r\n this.formsList = changes.formsList.currentValue;\r\n this.isAllFormsCompleted = this.checkIsAllFormsCompleted(this.formsList);\r\n }\r\n if (verifyChange(\"isMobileView\")) {\r\n this.isMobileView = changes.isMobileView.currentValue;\r\n }\r\n }\r\n\r\n checkIsAllFormsCompleted(formsList: any[]): boolean {\r\n let isAllFormsCompleted: boolean = true;\r\n\r\n for (let forms of formsList) {\r\n if (forms.status !== \"completed\") {\r\n isAllFormsCompleted = false;\r\n break;\r\n }\r\n }\r\n\r\n return isAllFormsCompleted;\r\n }\r\n\r\n handleOnClickSetActiveForm(selectedForm: string) {\r\n if (\r\n this.selectedForm !== selectedForm ||\r\n (this.isAllFormsCompleted && !this.showFormFields)\r\n ) {\r\n this.selectedForm = selectedForm;\r\n this.onClickSetActiveForm.emit(selectedForm);\r\n }\r\n }\r\n\r\n handleOnSubmitForms(e: any) {\r\n this.onClickSubmitForms.emit(e);\r\n }\r\n}\r\n","<div id=\"sidebar-container\">\r\n <div id=\"sidebar\">\r\n <div ngClass=\"kwikid-form-header\">\r\n <div id=\"uf-header\">\r\n <div id=\"uf-header-logo-container\">\r\n <img\r\n id=\"uf-header-logo\"\r\n src=\"{{ this.userConfig.theme.clientLogo }}\"\r\n [ngClass]=\"'large-icon'\"\r\n />\r\n </div>\r\n </div>\r\n <hr />\r\n </div>\r\n <div id=\"uf-progress\">\r\n <div id=\"uf-progress-steps\">\r\n {{ this.formsListCompleted.length }} / {{ this.formsList.length }} Steps\r\n Completed\r\n </div>\r\n <kwikui-progress-segmented\r\n [max]=\"this.formsList.length\"\r\n size=\"m\"\r\n [value]=\"this.formsListCompleted.length\"\r\n ></kwikui-progress-segmented>\r\n </div>\r\n <div id=\"uf-sections-container\">\r\n <div\r\n *ngFor=\"let form of formsList; let i = index\"\r\n [class]=\"'uf-section-item'\"\r\n [class.completed]=\"form.status === 'completed' && !form.disabled\"\r\n [class.edit]=\"form.status === 'editable' && !form.disabled\"\r\n [class.locked]=\"form.status === 'locked' && form.disabled\"\r\n (click)=\"\r\n form.status === 'locked' && form.disabled\r\n ? undefined\r\n : handleOnClickSetActiveForm(form.key)\r\n \"\r\n >\r\n <div class=\"uf-form-section-card-title\">\r\n {{ form.title }}\r\n </div>\r\n <div class=\"uf-form-section-card-action\">\r\n <div\r\n *ngIf=\"form.status === 'completed' && !form.disabled\"\r\n class=\"uf-form-section-card-action-img completed\"\r\n >\r\n <tui-svg src=\"tuiIconCheckLarge\"></tui-svg>\r\n </div>\r\n <div\r\n *ngIf=\"form.status !== 'completed' && !form.disabled\"\r\n class=\"uf-form-section-card-action-img edit\"\r\n >\r\n <tui-svg src=\"tuiIconEdit\"></tui-svg>\r\n </div>\r\n <div\r\n *ngIf=\"form.status !== 'completed' && form.disabled\"\r\n class=\"uf-form-section-card-action-img locked\"\r\n >\r\n <tui-svg src=\"tuiIconLock\"></tui-svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"submit-sidebar-btn-container\">\r\n <kwikui-button\r\n [disabled]=\"false\"\r\n id=\"\"\r\n label=\"Submit\"\r\n [showLoader]=\"false\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"primary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"handleOnSubmitForms($event)\"\r\n ></kwikui-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n EBrowserStorageType,\r\n ESourceKey\r\n} from \"../form-view/definitions/sources/form-view.sources.enum.definitions\";\r\nimport {\r\n TBrowserStorageType,\r\n TSource\r\n} from \"../form-view/definitions/sources/form-view.sources.type.definitions\";\r\nimport {\r\n isNotEmpty,\r\n isNotEmptyBrowserStorageValue,\r\n jpQueryWrapper,\r\n setEmptyValue,\r\n setValueToObject\r\n} from \"../form-view/helpers/form-view.common.helper\";\r\n\r\nexport class Sources {\r\n private _userConfig: any;\r\n get userConfig(): any {\r\n return this._userConfig;\r\n }\r\n set userConfig(value: any) {\r\n this._userConfig = value;\r\n }\r\n\r\n constructor(userConfig: any) {\r\n this._userConfig = userConfig;\r\n }\r\n\r\n private getValueFromUserConfig(path: string): any {\r\n let value: any = \"\";\r\n if (isNotEmpty(path)) {\r\n value = jpQueryWrapper(this._userConfig, path);\r\n } else {\r\n value = setEmptyValue(this._userConfig);\r\n }\r\n return value;\r\n }\r\n\r\n private getValueFromBrowserStorage(\r\n type: TBrowserStorageType,\r\n key: string\r\n ): any {\r\n let value: any = \"\";\r\n switch (type) {\r\n case EBrowserStorageType.LOCAL_STORAGE:\r\n value = isNotEmptyBrowserStorageValue(localStorage.getItem(key))\r\n ? localStorage.getItem(key)\r\n : \"\";\r\n break;\r\n case EBrowserStorageType.SESSION_STORAGE:\r\n value = isNotEmptyBrowserStorageValue(sessionStorage.getItem(key))\r\n ? sessionStorage.getItem(key)\r\n : \"\";\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n return value;\r\n }\r\n\r\n getValueFromSource(source: TSource): any {\r\n let value: any = \"\";\r\n\r\n switch (source.key) {\r\n case ESourceKey.USER_CONFIG:\r\n value = this.getValueFromUserConfig(source.props.path);\r\n break;\r\n case ESourceKey.BROWSER_STORAGE:\r\n value = this.getValueFromBrowserStorage(\r\n source.props.browserStorage.type,\r\n source.props.browserStorage.key\r\n );\r\n break;\r\n case ESourceKey.PREDEFINED:\r\n value = source.value;\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private setValueToUserConfig(path: string, value: any): any {\r\n this._userConfig = setValueToObject(this._userConfig, path, value);\r\n }\r\n private setValueToBrowserStorage(type: string, key: string, value: any): any {\r\n switch (type) {\r\n case EBrowserStorageType.LOCAL_STORAGE:\r\n localStorage.setItem(key, value);\r\n break;\r\n case EBrowserStorageType.SESSION_STORAGE:\r\n sessionStorage.setItem(key, value);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n async setValueToSource(source: TSource, value: any) {\r\n switch (source.key) {\r\n case ESourceKey.USER_CONFIG:\r\n this.setValueToUserConfig(source.props.path, value);\r\n break;\r\n case ESourceKey.BROWSER_STORAGE:\r\n await this.setValueToBrowserStorage(\r\n source.props.browserStorage.type,\r\n source.props.browserStorage.key,\r\n value\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import { replaceString } from \"../form-view/helpers/form-view.common.helper\";\r\n\r\nexport class Condition {\r\n private _condition: string;\r\n private _rulesMapping: any;\r\n\r\n constructor(condition: string, rulesMapping: any) {\r\n this._condition = condition;\r\n this._rulesMapping = rulesMapping;\r\n }\r\n\r\n private parseKeys(condition: string, rulesEvaluationMapping: object): string {\r\n Object.keys(rulesEvaluationMapping).forEach((key) => {\r\n condition = replaceString(condition, key, rulesEvaluationMapping[key]);\r\n });\r\n\r\n return condition;\r\n }\r\n\r\n private parseOperators(condition: string): string {\r\n return condition.replace(/AND|OR|NOT|XOR|NAND|NOR|XNOR/g, (match) => {\r\n switch (match) {\r\n case \"AND\":\r\n return \"&&\";\r\n case \"OR\":\r\n return \"||\";\r\n case \"NOT\":\r\n return \"!\";\r\n case \"XOR\":\r\n return \"^\";\r\n case \"NAND\":\r\n return \"!&\";\r\n case \"NOR\":\r\n return \"!|\";\r\n case \"XNOR\":\r\n return \"!^\";\r\n default:\r\n return match;\r\n }\r\n });\r\n }\r\n\r\n evaluate(): boolean {\r\n this._condition = this.parseKeys(this._condition, this._rulesMapping);\r\n this._condition = this.parseOperators(this._condition);\r\n\r\n return eval(this._condition);\r\n }\r\n}\r\n","import { Condition } from \"./renderer.condition.helper\";\r\n\r\nexport class Actions {\r\n private _action: any;\r\n private _userConfig: any;\r\n private _ruleMapping: any;\r\n private _takeAction: Function;\r\n\r\n constructor(\r\n action: any,\r\n ruleMapping: any,\r\n userConfig: any,\r\n takeAction: Function\r\n ) {\r\n this._action = action;\r\n this._userConfig = userConfig;\r\n this._ruleMapping = ruleMapping;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n async execute() {\r\n const condition = new Condition(this._action.condition, this._ruleMapping);\r\n const actionSuccess = condition.evaluate();\r\n\r\n if (actionSuccess) {\r\n return this._takeAction(this._action, this._userConfig);\r\n }\r\n }\r\n}\r\n","import {\r\n EPattern,\r\n EPatternKey\r\n} from \"../form-view/definitions/common/form-view.common.enum.definitions\";\r\nimport { ERuleKey } from \"../form-view/definitions/rules/form-view.rules.enum.definitions\";\r\nimport {\r\n TRule,\r\n TRuleObjectPathExists,\r\n TRuleType,\r\n TRuleValueChange,\r\n TRuleValueCheck\r\n} from \"../form-view/definitions/rules/form-view.rules.type.definitions\";\r\nimport { ESourceKey } from \"../form-view/definitions/sources/form-view.sources.enum.definitions\";\r\nimport { TSource } from \"../form-view/definitions/sources/form-view.sources.type.definitions\";\r\nimport { hasPath } from \"../form-view/helpers/form-view.common.helper\";\r\nimport { Sources } from \"./renderer.sources.helper\";\r\n\r\nexport class Rules {\r\n private _userConfig: any;\r\n private _rules: Array<TRule>;\r\n\r\n constructor(rules: Array<TRule>, userConfig: any) {\r\n this._userConfig = userConfig;\r\n this._rules = rules;\r\n }\r\n\r\n private evaluate(rule: TRule): boolean {\r\n let ruleType: TRuleType = rule.key;\r\n let ruleEvaluationStatus: boolean = false;\r\n\r\n const source = new Sources(this._userConfig);\r\n\r\n switch (ruleType) {\r\n case ERuleKey.OBJECT_PATH_EXISTS:\r\n const ruleObjectPathExists = rule as TRuleObjectPathExists;\r\n const ruleObjectPathExistsObject = ruleObjectPathExists.props.object;\r\n const ruleObjectPathExistsPath = ruleObjectPathExists.props.path;\r\n\r\n switch (ruleObjectPathExistsObject) {\r\n case ESourceKey.USER_CONFIG:\r\n ruleEvaluationStatus = hasPath(\r\n this._userConfig,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n default:\r\n ruleEvaluationStatus = false;\r\n break;\r\n }\r\n break;\r\n case ERuleKey.VALUE_CHECK:\r\n const ruleValueCheck = rule as TRuleValueCheck;\r\n const ruleValueCheckSource: TSource = ruleValueCheck.props.value.source;\r\n const ruleValueCheckValue =\r\n source.getValueFromSource(ruleValueCheckSource);\r\n\r\n if (ruleValueCheck.props.pattern.key === EPatternKey.CUSTOM) {\r\n var re = new RegExp(ruleValueCheck.props.pattern.pattern);\r\n } else {\r\n var re = new RegExp(EPattern[ruleValueCheck.props.pattern.key]);\r\n }\r\n\r\n ruleEvaluationStatus = re.test(ruleValueCheckValue);\r\n break;\r\n case ERuleKey.VALUE_CHANGE:\r\n const ruleValueChange = rule as TRuleValueChange;\r\n const ruleValueChangeCurrentSource: TSource =\r\n ruleValueChange.props.value.current.source;\r\n const ruleValueChangePreviousSource: TSource =\r\n ruleValueChange.props.value.previous.source;\r\n\r\n const previousValue = source.getValueFromSource(\r\n ruleValueChangePreviousSource\r\n );\r\n const currentValue = source.getValueFromSource(\r\n ruleValueChangeCurrentSource\r\n );\r\n\r\n ruleEvaluationStatus = previousValue === currentValue;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return ruleEvaluationStatus;\r\n }\r\n\r\n public mapping(): any {\r\n let rulesEvaluationMapping = {};\r\n\r\n for (const rule of this._rules) {\r\n const ruleEvaluationStatus = this.evaluate(rule);\r\n\r\n rulesEvaluationMapping = {\r\n ...rulesEvaluationMapping,\r\n [rule.id]: ruleEvaluationStatus\r\n };\r\n }\r\n\r\n return rulesEvaluationMapping;\r\n }\r\n}\r\n","import { Actions } from \"./renderer.actions.helper\";\r\nimport { Condition } from \"./renderer.condition.helper\";\r\nimport { Rules } from \"./renderer.rules.helper\";\r\n\r\nexport class Validations {\r\n private _userConfig: any;\r\n get userConfig(): any {\r\n return this._userConfig;\r\n }\r\n set userConfig(value: any) {\r\n this._userConfig = value;\r\n }\r\n\r\n private _takeAction: Function;\r\n\r\n constructor(userConfig, takeAction: any) {\r\n this._userConfig = userConfig;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n async validateField(): Promise<any> {\r\n const validations = this._userConfig.userFormFieldsConfig.validation;\r\n\r\n const triggers = validations?.triggers;\r\n const rules = validations.rules;\r\n const actions = validations.actions;\r\n\r\n const rulesMapping = new Rules(rules, this._userConfig).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionEvaluation = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionEvaluation) {\r\n const actions = new Actions(\r\n action,\r\n rulesMapping,\r\n this._userConfig,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n }\r\n}\r\n","import { TuiDay } from \"@taiga-ui/cdk\";\r\nimport { log } from \"./form-view/form-view.decorators\";\r\nimport { convertDateStringToTuiDayFormat } from \"./form-view/helpers/form-view.fields.helper\";\r\nimport { hasKey, isEmpty, isNotEmpty } from \"./renderer.helper\";\r\n\r\nexport class Converter {\r\n getFormFields = (formConfig: any): any[] => {\r\n let fields: any[];\r\n\r\n if (hasKey(formConfig, \"multiForm\")) {\r\n fields = formConfig.multiForm.fields;\r\n } else {\r\n fields = formConfig.fields;\r\n }\r\n\r\n return fields;\r\n };\r\n\r\n setMissingFieldKeyValue = (field: any, key: string, value: any): any => {\r\n if (!hasKey(field, key)) {\r\n field[key] = value;\r\n }\r\n return field;\r\n };\r\n\r\n setFieldKeyValue = (field: any, key: string, value: any): any => {\r\n field[key] = value;\r\n\r\n return field;\r\n };\r\n\r\n removeFieldKey = (field: any, key: string): any => {\r\n if (hasKey(field, key)) {\r\n delete field[key];\r\n }\r\n\r\n return field;\r\n };\r\n\r\n @log\r\n convertFormConfig(formConfig: any): any {\r\n const updateOnFieldType = (field: any): any => {\r\n const formatFieldTypeTitle = (field: any): any => {\r\n const fieldKey: string = `${field.type}_${field.label\r\n .split(\" \")\r\n .join(\"_\")\r\n .toLocaleLowerCase()}`;\r\n field = this.setFieldKeyValue(field, \"key\", fieldKey);\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n return field;\r\n };\r\n const formatFieldTypeRadio = (field: any): any => {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"size\",\r\n \"m\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"orientation\",\r\n \"vertical\"\r\n );\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n field.options = field.options.map((x: any): any => {\r\n return { label: x, disabled: false };\r\n });\r\n\r\n return field;\r\n };\r\n const formatFieldTypeOtp = (field: any): any => {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"mask\",\r\n new Array(field.properties.otpLength).fill(\"#\").join(\" \")\r\n );\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n return field;\r\n };\r\n const formatFieldTypeDate = (field: any): any => {\r\n if (hasKey(field, \"min\")) {\r\n const tuiDay = convertDateStringToTuiDayFormat(field[\"min\"]);\r\n field.properties = this.setFieldKeyValue(\r\n field.properties,\r\n \"min\",\r\n tuiDay\r\n );\r\n } else {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"min\",\r\n new TuiDay(0, 0, 1)\r\n ); // Year - 0000, Month - 0 (0 Indexing), Day - 1\r\n }\r\n\r\n if (hasKey(field, \"max\")) {\r\n const tuiDay = convertDateStringToTuiDayFormat(field[\"max\"]);\r\n field.properties = this.setFieldKeyValue(\r\n field.properties,\r\n \"max\",\r\n tuiDay\r\n );\r\n } else {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"max\",\r\n new TuiDay(\r\n new Date().getFullYear(), // Year - 9999\r\n new Date().getMonth(), // Month - 11 (0 Indexing)\r\n new Date().getDate() // Day - 31\r\n )\r\n );\r\n }\r\n\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n return field;\r\n };\r\n const formatFieldTypeNumber = (field: any): any => {\r\n if (hasKey(field, \"key\")) {\r\n if (field.key === \"aadhaar_number\") {\r\n field = this.setFieldKeyValue(field, \"type\", \"aadhaar_number\");\r\n }\r\n if (field.key === \"contact_number\") {\r\n field = this.setFieldKeyValue(field, \"type\", \"phone\");\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"countryCode\",\r\n \"+91\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"phoneMaskAfterCountryCode\",\r\n \"####-######\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"removeCountryCodeFromValue\",\r\n true\r\n );\r\n }\r\n\r\n if (field.type === \"phone\" || field.type === \"number\") {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"decimal\",\r\n \"never\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"prefix\",\r\n \"\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"postfix\",\r\n \"\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"min\",\r\n -Infinity\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"max\",\r\n Infinity\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"precision\",\r\n 2\r\n );\r\n }\r\n }\r\n\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n return field;\r\n };\r\n const formatFieldTypeApiCall = (field: any): any => {\r\n if (!hasKey(field.properties, \"shape\")) {\r\n field.properties = this.setFieldKeyValue(\r\n field.properties,\r\n \"shape\",\r\n null\r\n );\r\n }\r\n if (!hasKey(field, \"showLoader\")) {\r\n field = this.setFieldKeyValue(field, \"showLoader\", false);\r\n }\r\n if (!hasKey(field.properties, \"size\")) {\r\n field.properties = this.setFieldKeyValue(\r\n field.properties,\r\n \"size\",\r\n \"m\"\r\n );\r\n }\r\n if (!hasKey(field, \"api\")) {\r\n field = this.setFieldKeyValue(field, \"api\", {});\r\n\r\n field.api = this.setMissingFieldKeyValue(field.api, \"url\", \"\");\r\n field.api = this.setMissingFieldKeyValue(field.api, \"request\", \"\");\r\n field.api = this.setMissingFieldKeyValue(field.api, \"response\", \"\");\r\n field.api = this.setMissingFieldKeyValue(field.api, \"status\", \"\");\r\n\r\n field.api.status = this.setMissingFieldKeyValue(\r\n field.api.status,\r\n \"value\",\r\n \"default\"\r\n );\r\n field.api.status = this.setMissingFieldKeyValue(\r\n field.api.status,\r\n \"labels\",\r\n {\r\n default: \"Call API\",\r\n loading: \"Call API\",\r\n success: \"API Success\",\r\n failed: \"API Failed\"\r\n }\r\n );\r\n }\r\n return field;\r\n };\r\n const formatFieldTypeSearchText = (field: any): any => {\r\n if (hasKey(field, \"type\")) {\r\n if (field.type === \"search-text\") {\r\n field = this.setFieldKeyValue(\r\n field,\r\n \"type\",\r\n \"dropdown-with-search\"\r\n );\r\n }\r\n }\r\n\r\n return field;\r\n };\r\n const formatFieldTypeText = (field: any): any => {\r\n return field;\r\n };\r\n\r\n switch (field.type) {\r\n case \"title\":\r\n field = formatFieldTypeTitle(field);\r\n break;\r\n case \"radio\":\r\n field = formatFieldTypeRadio(field);\r\n break;\r\n case \"otp\":\r\n field = formatFieldTypeOtp(field);\r\n break;\r\n case \"date\":\r\n field = formatFieldTypeDate(field);\r\n break;\r\n case \"number\":\r\n field = formatFieldTypeNumber(field);\r\n break;\r\n case \"api-call\":\r\n field = formatFieldTypeApiCall(field);\r\n break;\r\n case \"search-text\":\r\n field = formatFieldTypeSearchText(field);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const getConnectedElementKeyValueObject = (key: any): any => {\r\n const object = {\r\n key: key,\r\n conditions: { formula: \"\", rules: [] },\r\n actions: { success: [], failure: [] }\r\n };\r\n return object;\r\n };\r\n\r\n const formatFieldKeys = (field: any): any => {\r\n if (hasKey(field, \"connectedTo\")) {\r\n if (typeof field[\"connectedTo\"] === \"string\") {\r\n field[\"connectedElements\"] = [\r\n getConnectedElementKeyValueObject(field[\"connectedTo\"])\r\n ];\r\n } else {\r\n field[\"connectedTo\"] = field[\"connectedTo\"].map((key: string) => {\r\n return getConnectedElementKeyValueObject(key);\r\n });\r\n field[\"connectedElements\"] = field[\"connectedTo\"];\r\n }\r\n }\r\n this.removeFieldKey(field, \"connectedTo\");\r\n\r\n if (hasKey(field, \"connectedToParent\")) {\r\n if (typeof field[\"connectedToParent\"] === \"string\") {\r\n field[\"connectedParentFields\"] = [\r\n getConnectedElementKeyValueObject(field[\"connectedToParent\"])\r\n ];\r\n } else {\r\n field[\"connectedParentFields\"] = getConnectedElementKeyValueObject(\r\n field[\"connectedToParent\"]\r\n );\r\n }\r\n }\r\n this.removeFieldKey(field, \"connectedToParent\");\r\n\r\n this.removeFieldKey(field, \"sideEffect\");\r\n\r\n return field;\r\n };\r\n\r\n const getConnectedElementFieldMapping = (\r\n field: any,\r\n connectedFieldMapping: any\r\n ): any => {\r\n const getConnectedElementChildFieldMapping = (\r\n field: any,\r\n connectedFieldMapping: any\r\n ): any => {\r\n if (hasKey(field, \"connectedElements\")) {\r\n connectedFieldMapping[\"child\"][field.key] = field.connectedElements;\r\n } else if (hasKey(connectedFieldMapping[\"child\"], field.key)) {\r\n field[\"connectedElements\"] =\r\n connectedFieldMapping[\"child\"][field.key];\r\n }\r\n\r\n return { field: field, connectedFieldMapping: connectedFieldMapping };\r\n };\r\n\r\n const getConnectedElementParentFieldMapping = (\r\n field: any,\r\n connectedFieldMapping: any\r\n ): any => {\r\n if (hasKey(connectedFieldMapping[\"child\"], field.key)) {\r\n for (let connectedParentKey of connectedFieldMapping[\"child\"][\r\n field.key\r\n ]) {\r\n if (\r\n hasKey(connectedFieldMapping[\"parent\"], connectedParentKey[\"key\"])\r\n ) {\r\n connectedFieldMapping[\"parent\"][connectedParentKey[\"key\"]].push(\r\n field.key\r\n );\r\n } else {\r\n connectedFieldMapping[\"parent\"][connectedParentKey[\"key\"]] = [\r\n field.key\r\n ];\r\n }\r\n }\r\n }\r\n\r\n return { field: field, connectedFieldMapping: connectedFieldMapping };\r\n };\r\n\r\n const connectedChildFieldMapping = getConnectedElementChildFieldMapping(\r\n field,\r\n connectedFieldMapping\r\n );\r\n field = connectedChildFieldMapping[\"field\"];\r\n connectedFieldMapping =\r\n connectedChildFieldMapping[\"connectedFieldMapping\"];\r\n\r\n const connectedParentFieldMapping = getConnectedElementParentFieldMapping(\r\n field,\r\n connectedFieldMapping\r\n );\r\n field = connectedParentFieldMapping[\"field\"];\r\n connectedFieldMapping =\r\n connectedParentFieldMapping[\"connectedFieldMapping\"];\r\n\r\n return connectedFieldMapping;\r\n };\r\n\r\n const updateConnectedElementsKeyValue = (\r\n field: any,\r\n connectedFieldMapping: any\r\n ): any => {\r\n if (hasKey(connectedFieldMapping[\"child\"], field.key)) {\r\n field[\"connectedElements\"] = connectedFieldMapping[\"child\"][field.key];\r\n }\r\n\r\n if (hasKey(connectedFieldMapping[\"parent\"], field.key)) {\r\n field[\"connectedParentFields\"] =\r\n connectedFieldMapping[\"parent\"][field.key];\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const updateFieldValidatorConfig = (field: any): any => {\r\n if (field.type !== \"title\") {\r\n const validators = hasKey(field, \"validators\") ? field.validators : {};\r\n\r\n field = this.setMissingFieldKeyValue(field, \"validators\", {});\r\n field = this.setFieldKeyValue(field, \"validators\", {\r\n ...field[\"validators\"],\r\n min: hasKey(validators, \"min\")\r\n ? isNotEmpty(validators.min)\r\n ? Number(validators.min)\r\n : null\r\n : hasKey(field, \"min\")\r\n ? Number(field.min)\r\n : null,\r\n max: hasKey(validators, \"max\")\r\n ? isNotEmpty(validators.max)\r\n ? Number(validators.max)\r\n : null\r\n : hasKey(field, \"max\")\r\n ? Number(field.max)\r\n : null,\r\n required: hasKey(validators, \"required\")\r\n ? Boolean(validators.required)\r\n : hasKey(field, \"required\")\r\n ? Boolean(field.required)\r\n : false,\r\n minLength: hasKey(validators, \"minLength\")\r\n ? isNotEmpty(validators.minLength)\r\n ? Number(validators.minLength)\r\n : null\r\n : hasKey(field, \"minLength\")\r\n ? Number(field.minLength)\r\n : null,\r\n maxLength: hasKey(validators, \"maxLength\")\r\n ? isNotEmpty(validators.maxLength)\r\n ? Number(validators.maxLength)\r\n : null\r\n : hasKey(field, \"length\")\r\n ? Number(field.length)\r\n : hasKey(field, \"maxLength\")\r\n ? Number(field.maxLength)\r\n : null,\r\n pattern: hasKey(validators, \"pattern\")\r\n ? isNotEmpty(validators.pattern)\r\n ? validators.pattern\r\n : undefined\r\n : hasKey(field, \"pattern\")\r\n ? { key: \"CUSTOM\", pattern: String(field.pattern) }\r\n : hasKey(field, \"regex\")\r\n ? { key: \"CUSTOM\", pattern: String(field.regex) }\r\n : undefined\r\n });\r\n\r\n delete field.min;\r\n delete field.max;\r\n delete field.required;\r\n delete field.minLength;\r\n delete field.length;\r\n delete field.maxLength;\r\n delete field.pattern;\r\n delete field.regex;\r\n\r\n switch (field.type) {\r\n case \"text\":\r\n delete field.validators.min;\r\n delete field.validators.max;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (isEmpty(field.validators?.min)) {\r\n delete field.validators.min;\r\n }\r\n if (isEmpty(field.validators?.max)) {\r\n delete field.validators.min;\r\n }\r\n if (isEmpty(field.validators?.minLength)) {\r\n delete field.validators.minLength;\r\n }\r\n if (isEmpty(field.validators?.maxLength)) {\r\n delete field.validators.maxLength;\r\n }\r\n if (isEmpty(field.validators?.pattern)) {\r\n delete field.validators.pattern;\r\n }\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const updateFieldDefaultValueConfig = (field: any): any => {\r\n if (field.type !== \"title\") {\r\n if (hasKey(field, \"defaultValue\")) {\r\n return field;\r\n } else if (hasKey(field, \"default\")) {\r\n return field;\r\n } else {\r\n if (hasKey(field, \"defaultVal\")) {\r\n // Currently below line is commented because it caused issues in setting Default Value.\r\n // field[\"defaultValue\"] = field[\"defaultVal\"];\r\n // delete field[\"defaultVal\"];\r\n }\r\n\r\n // TODO: Condition for all_forms_data is not considered yet.\r\n if (field.autoPopulateFromSummaryData) {\r\n field[\"defaultValue\"] = {\r\n is_found: false,\r\n value: \"\",\r\n sources: [\r\n {\r\n source: \"summary_data\",\r\n summary_data: {\r\n path: `$.${field.key}`,\r\n validation: {\r\n rules: [\r\n {\r\n key: \"1\",\r\n type: \"is_not_empty\",\r\n is_not_empty: {\r\n value: true\r\n }\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: \"set_default_value_found\",\r\n condition: \"1\",\r\n set_default_value_found: {\r\n value: true\r\n }\r\n },\r\n {\r\n type: \"enable_field\",\r\n condition: \"1 OR NOT(1)\",\r\n enable_field: { value: true }\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n } else if (hasKey(field, \"autofill\")) {\r\n if (hasKey(field.autofill, \"type\")) {\r\n if (field.autofill.type === \"storage\") {\r\n field[\"defaultValue\"] = {\r\n is_found: false,\r\n value: \"\",\r\n sources: [\r\n {\r\n source: \"browser_storage\",\r\n browser_storage: {\r\n path: `$.${field.key}`,\r\n validation: {\r\n rules: [\r\n {\r\n key: \"1\",\r\n type: \"is_not_empty\",\r\n is_not_empty: {\r\n value: true\r\n }\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: \"set_default_value_found\",\r\n condition: \"1\",\r\n set_default_value_found: {\r\n value: true\r\n }\r\n },\r\n {\r\n type: \"enable_field\",\r\n condition: \"1 OR NOT(1)\",\r\n enable_field: { value: true }\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n } else if (field.autofill.type === \"config\") {\r\n field[\"defaultValue\"] = {\r\n is_found: false,\r\n value: \"\",\r\n sources: [\r\n {\r\n source: \"field_config\",\r\n field_config: {\r\n path: `$.${field.key}`,\r\n validation: {\r\n rules: [\r\n {\r\n key: \"1\",\r\n type: \"is_not_empty\",\r\n is_not_empty: {\r\n value: true\r\n }\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: \"set_default_value_found\",\r\n condition: \"1\",\r\n set_default_value_found: {\r\n value: true\r\n }\r\n },\r\n {\r\n type: \"enable_field\",\r\n condition: \"1 OR NOT(1)\",\r\n enable_field: { value: true }\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }\r\n }\r\n } else {\r\n field[\"defaultValue\"] = {\r\n is_found: false,\r\n value: \"\",\r\n sources: [\r\n {\r\n source: \"form_data\",\r\n form_data: {\r\n path: `$.${field.key}`,\r\n validation: {\r\n rules: [\r\n {\r\n key: \"1\",\r\n type: \"is_not_empty\",\r\n is_not_empty: {\r\n value: true\r\n }\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: \"set_default_value_found\",\r\n condition: \"1\",\r\n set_default_value_found: {\r\n value: true\r\n }\r\n },\r\n {\r\n type: \"enable_field\",\r\n condition: \"1 OR NOT(1)\",\r\n enable_field: { value: true }\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }\r\n }\r\n\r\n delete field[\"defaultVal\"];\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const updateFieldMessages = (field: any): any => {\r\n if (field.type !== \"title\") {\r\n field = this.setMissingFieldKeyValue(field, \"messages\", []);\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const updateFieldResetButton = (field: any): any => {\r\n if (field.type === \"title\") {\r\n if (\r\n hasKey(field, \"action\") &&\r\n field.action === \"reset\" &&\r\n hasKey(field, \"fields\")\r\n ) {\r\n field = this.setFieldKeyValue(field, \"reset\", {\r\n fields: field.fields\r\n });\r\n }\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const setFormFields = (formConfig: any, fields: any[]): any => {\r\n if (hasKey(formConfig, \"multiForm\")) {\r\n formConfig.multiForm[\"fields\"] = fields;\r\n } else {\r\n formConfig[\"fields\"] = fields;\r\n }\r\n\r\n return formConfig;\r\n };\r\n\r\n let connectedFieldMapping: any = {\r\n parent: {},\r\n child: {}\r\n };\r\n\r\n let fields: any[] = this.getFormFields(formConfig);\r\n\r\n for (let field of fields) {\r\n field = updateOnFieldType(field);\r\n\r\n field = formatFieldKeys(field);\r\n\r\n // connectedFieldMapping = getConnectedElementFieldMapping(\r\n // field,\r\n // connectedFieldMapping\r\n // );\r\n // field = updateConnectedElementsKeyValue(field, connectedFieldMapping);\r\n\r\n field = updateFieldDefaultValueConfig(field);\r\n\r\n field = updateFieldValidatorConfig(field);\r\n\r\n field = updateFieldResetButton(field);\r\n\r\n field = updateFieldMessages(field);\r\n }\r\n\r\n formConfig = setFormFields(formConfig, fields);\r\n\r\n return formConfig;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { setValueToObject } from \"./form-view/helpers/form-view.common.helper\";\r\nimport { hasKey } from \"./renderer.helper\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class KwikIDRendererService {\r\n isMobileView = false;\r\n setIsMobileView(isMobileView: boolean) {\r\n this.isMobileView = isMobileView;\r\n }\r\n\r\n formsList: any[];\r\n setFormsList(formsList: any[]) {\r\n this.formsList = formsList;\r\n }\r\n\r\n formsListCompleted: string[];\r\n setFormsListCompleted(formsListCompleted: any[]) {\r\n this.formsListCompleted = formsListCompleted;\r\n }\r\n\r\n allFormsData: any = {};\r\n setAllFormsData(allFormsData: any[]) {\r\n this.allFormsData = allFormsData;\r\n }\r\n\r\n activeFormConfig: any;\r\n setActiveFormConfig(activeFormConfig: any) {\r\n this.activeFormConfig = activeFormConfig;\r\n }\r\n\r\n activeFormFields: any[];\r\n setActiveFormFields(activeFormFields: any[]) {\r\n this.activeFormFields = activeFormFields;\r\n }\r\n\r\n activeFormData: any;\r\n setActiveFormData(activeFormData: any) {\r\n this.activeFormData = activeFormData;\r\n }\r\n\r\n constructor() {}\r\n\r\n async fetchFormConfig(url: string) {\r\n const response = await fetch(url, { method: \"GET\" });\r\n const data = await response.json();\r\n return data;\r\n }\r\n\r\n findActiveFormConfig(formsList: any[]): any {\r\n const activeFormConfig = formsList.find((form) => {\r\n return form.status === \"editable\" && !form.disabled;\r\n });\r\n return activeFormConfig;\r\n }\r\n\r\n findCompletedFormsList(allFormsData: any): string[] {\r\n let formsListCompleted: string[] = [];\r\n\r\n Object.keys(allFormsData).map((formKey) => {\r\n formsListCompleted.push(formKey);\r\n });\r\n\r\n return formsListCompleted;\r\n }\r\n\r\n markFormInFormsListAsCompleted(\r\n formsList: any[],\r\n formsListCompleted: string[]\r\n ): any[] {\r\n for (let form of formsList) {\r\n if (formsListCompleted.includes(form.key)) {\r\n form = setValueToObject(form, \"status\", \"completed\");\r\n form = setValueToObject(form, \"disabled\", false);\r\n }\r\n }\r\n\r\n return formsList;\r\n }\r\n\r\n markFormInFormsListAsDisabled(\r\n formsList: any[],\r\n formsListCompleted: string[]\r\n ): any[] {\r\n for (let form of formsList) {\r\n if (form.status !== \"completed\") {\r\n if (hasKey(form, \"dependentOn\")) {\r\n const isDependent = form.dependentOn.every((r: string) =>\r\n formsListCompleted.includes(r)\r\n );\r\n if (isDependent) {\r\n form = setValueToObject(form, \"status\", \"editable\");\r\n form = setValueToObject(form, \"disabled\", false);\r\n } else {\r\n form = setValueToObject(form, \"status\", \"locked\");\r\n form = setValueToObject(form, \"disabled\", true);\r\n }\r\n } else {\r\n form = setValueToObject(form, \"dependentOn\", []);\r\n form = setValueToObject(form, \"status\", \"editable\");\r\n form = setValueToObject(form, \"disabled\", false);\r\n }\r\n }\r\n }\r\n\r\n return formsList;\r\n }\r\n\r\n assignSequenceNoToForm(formsList: any[]): any[] {\r\n let sequenceNo = 1;\r\n for (let form of formsList) {\r\n form.sequenceNo = sequenceNo++;\r\n }\r\n\r\n return formsList;\r\n }\r\n\r\n updateFormsList() {\r\n let formsList: any[] = this.formsList;\r\n let formsListCompleted: string[];\r\n let activeFormConfig: any;\r\n\r\n formsList = this.assignSequenceNoToForm(formsList);\r\n\r\n formsListCompleted = this.findCompletedFormsList(this.allFormsData);\r\n\r\n formsList = this.markFormInFormsListAsCompleted(\r\n formsList,\r\n formsListCompleted\r\n );\r\n\r\n formsList = this.markFormInFormsListAsDisabled(\r\n formsList,\r\n formsListCompleted\r\n );\r\n\r\n if (formsList.length !== formsListCompleted.length) {\r\n activeFormConfig = this.findActiveFormConfig(formsList);\r\n\r\n this.setActiveFormConfig(activeFormConfig);\r\n }\r\n\r\n this.setFormsList(formsList);\r\n this.setFormsListCompleted(formsListCompleted);\r\n }\r\n}\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport { EActionKey } from \"./form-view/definitions/actions/form-view.actions.enum.definitions\";\r\nimport { Sources } from \"./helpers/renderer.sources.helper\";\r\nimport { Validations } from \"./helpers/renderer.validations.helper\";\r\nimport { Converter } from \"./renderer.config-converter.helper\";\r\nimport { isSingleForm } from \"./renderer.helper\";\r\nimport { KwikIDRendererService } from \"./renderer.service\";\r\n\r\n@Component({\r\n selector: \"kwikid-forms-renderer\",\r\n templateUrl: \"./renderer.component.html\",\r\n styleUrls: [\"./renderer.component.scss\"],\r\n animations: [\r\n trigger(\"panelInOut\", [\r\n transition(\":enter\", [\r\n style({ transform: \"translateY(100%)\" }),\r\n animate(150)\r\n ]),\r\n transition(\":leave\", [\r\n animate(100, style({ transform: \"translateY(100%)\" }))\r\n ])\r\n ])\r\n ],\r\n providers: [KwikIDRendererService]\r\n})\r\nexport class KwikIDFormsRendererComponent implements OnInit, OnChanges {\r\n // The final value should be provided to service, so that it can be used in all components\r\n @HostListener(\"window:resize\", [\"$event\"])\r\n windowResizeWatcher() {\r\n if (this.hostElement.nativeElement.offsetWidth < 600) {\r\n if (this.showForm) {\r\n this.showFormSections = false;\r\n this.showFormFields = true;\r\n } else {\r\n this.showFormSections = true;\r\n this.showFormFields = false;\r\n }\r\n this.rendererService.isMobileView = true;\r\n } else {\r\n if (this.showForm) {\r\n this.showFormSections = true;\r\n this.showFormFields = true;\r\n } else {\r\n this.showFormSections = true;\r\n this.showFormFields = false;\r\n }\r\n this.rendererService.isMobileView = false;\r\n }\r\n }\r\n\r\n @Input()\r\n userConfig: any;\r\n\r\n @Input()\r\n formsData: any = {};\r\n\r\n @Input()\r\n apiCallResponse: any = {};\r\n\r\n @Output()\r\n onClickSubmit: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n getFormData: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickApiCall: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n loading: boolean = false;\r\n loader: boolean = false;\r\n\r\n // display forms and list conditionally\r\n showForm: boolean = false;\r\n showFormFields: boolean = true;\r\n showFormSections: boolean = true;\r\n\r\n constructor(\r\n public rendererService: KwikIDRendererService,\r\n private hostElement: ElementRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.loader = true;\r\n this.loading = true;\r\n\r\n this.rendererService.setFormsList(this.userConfig.userFormFields);\r\n\r\n this.initializeForms();\r\n this.loader = false;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const verifyChange = (prop: string) => {\r\n return changes.hasOwnProperty(prop) && !changes[prop].firstChange;\r\n };\r\n if (verifyChange(\"userConfig\")) {\r\n this.userConfig = changes.userConfig.currentValue;\r\n this.loader = false;\r\n }\r\n if (verifyChange(\"formsData\")) {\r\n this.formsData = changes.formsData.currentValue;\r\n\r\n this.initializeForms();\r\n }\r\n if (verifyChange(\"apiCallResponse\")) {\r\n this.apiCallResponse = changes.apiCallResponse.currentValue;\r\n this.loader = false;\r\n }\r\n }\r\n\r\n async initializeForms() {\r\n this.loader = true;\r\n\r\n this.rendererService.setAllFormsData(this.formsData);\r\n\r\n this.rendererService.updateFormsList();\r\n\r\n this.handleResize(this.rendererService.formsList);\r\n\r\n if (\r\n this.rendererService.formsList.length !==\r\n this.rendererService.formsListCompleted.length\r\n ) {\r\n await this.handleOnClickSetActiveForm(\r\n this.rendererService.activeFormConfig.key\r\n );\r\n } else {\r\n this.showForm = false;\r\n this.showFormFields = false;\r\n }\r\n\r\n this.loader = false;\r\n this.loading = false;\r\n }\r\n\r\n handleResize(formsList: any[]) {\r\n if (this.hostElement.nativeElement.offsetWidth < 600) {\r\n if (!isSingleForm(formsList)) {\r\n this.showFormSections = true;\r\n this.showFormFields = false;\r\n this.showForm = false;\r\n } else {\r\n this.showFormSections = true;\r\n this.showFormFields = false;\r\n this.showForm = false;\r\n }\r\n this.rendererService.isMobileView = true;\r\n } else {\r\n this.rendererService.isMobileView = false;\r\n }\r\n }\r\n\r\n // forms-list listener\r\n async handleOnClickSetActiveForm(selectedForm: string) {\r\n this.showForm = false;\r\n this.loader = true;\r\n\r\n const activeFormConfig = this.rendererService.formsList.find((form) => {\r\n if (form.key === selectedForm) {\r\n return form;\r\n }\r\n });\r\n\r\n let formConfig = await this.rendererService.fetchFormConfig(\r\n activeFormConfig.formContent.url\r\n );\r\n\r\n formConfig = new Converter().convertFormConfig(formConfig);\r\n\r\n const activeFormData =\r\n this.rendererService.allFormsData[formConfig.key] ?? {};\r\n this.rendererService.setActiveFormData(activeFormData);\r\n\r\n this.rendererService.setActiveFormConfig({\r\n ...activeFormConfig,\r\n ...formConfig\r\n });\r\n\r\n if (this.hostElement.nativeElement.offsetWidth < 600) {\r\n this.showFormSections = false;\r\n this.showFormFields = true;\r\n } else if (this.hostElement.nativeElement.offsetWidth >= 600) {\r\n this.showFormSections = true;\r\n this.showFormFields = true;\r\n }\r\n\r\n this.showForm = true;\r\n this.loader = false;\r\n }\r\n\r\n // forms-list listener\r\n handleOnClickSubmitForms(e: any) {\r\n console.log(e);\r\n\r\n if (this.userConfig.userFormFieldsConfig.validation) {\r\n const validations = new Validations(\r\n this.userConfig,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n (async () => {\r\n await validations.validateField();\r\n\r\n if (this.userConfig.userFormFieldsConfig.status === \"completed\") {\r\n this.onClickSubmit.emit(e);\r\n } else {\r\n this.toggleErrorNotification(true);\r\n }\r\n })();\r\n }\r\n }\r\n\r\n // form-view listener\r\n handleOnClickApiCall(e: any) {\r\n this.loader = true;\r\n this.onClickApiCall.emit(e);\r\n }\r\n\r\n // form-view listener\r\n handleGetActiveFormData(e: any) {\r\n this.loader = true;\r\n this.getFormData.emit({\r\n [this.rendererService.activeFormConfig.key]: e[\"data\"]\r\n });\r\n }\r\n\r\n // form-view listener\r\n handleOnClickSaveForm(e: any) {\r\n this.loader = true;\r\n\r\n this.rendererService.setActiveFormData({});\r\n\r\n this.getFormData.emit({\r\n [this.rendererService.activeFormConfig.key]: e[\"data\"]\r\n });\r\n }\r\n\r\n // form-view listener\r\n handleOnClickViewForms(e: any) {\r\n this.showFormSections = true;\r\n this.showForm = false;\r\n this.showFormFields = false;\r\n }\r\n\r\n showErrorNotification: boolean = false;\r\n toggleErrorNotification(show) {\r\n this.showErrorNotification = show;\r\n }\r\n\r\n async takeAction(action: any, userConfig: any) {\r\n switch (action.key) {\r\n case EActionKey.SET_VALUE:\r\n const sources = new Sources(userConfig);\r\n\r\n const sourceValue = await sources.getValueFromSource(\r\n action.props.value.source\r\n );\r\n sources.setValueToSource(action.props.value.destination, sourceValue);\r\n\r\n this.userConfig = sources.userConfig;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<div ngClass=\"kwikid-renderer\">\r\n <div\r\n ngClass=\"kwikid-layout-container\"\r\n *ngIf=\"!loading\"\r\n >\r\n <div\r\n ngClass=\"kwikid-sections-container\"\r\n *ngIf=\"showFormSections\"\r\n class=\"active\"\r\n [class.active]=\"showFormSections\"\r\n [class.mobile]=\"rendererService.isMobileView\"\r\n >\r\n <kwikid-forms-list\r\n [showFormFields]=\"this.showFormFields\"\r\n [userConfig]=\"this.userConfig\"\r\n [formsList]=\"this.rendererService.formsList\"\r\n [formsListCompleted]=\"this.rendererService.formsListCompleted\"\r\n [isMobileView]=\"this.rendererService.isMobileView\"\r\n (onClickSetActiveForm)=\"this.handleOnClickSetActiveForm($event)\"\r\n (onClickSubmitForms)=\"this.handleOnClickSubmitForms($event)\"\r\n ></kwikid-forms-list>\r\n </div>\r\n <div\r\n ngClass=\"kwikid-forms-container\"\r\n *ngIf=\"this.showForm && this.showFormFields\"\r\n [class.active]=\"showFormFields\"\r\n [class.mobile]=\"rendererService.isMobileView\"\r\n [@panelInOut]\r\n >\r\n <kwikid-form-view\r\n [formConfig]=\"this.rendererService.activeFormConfig\"\r\n [formData]=\"this.rendererService.activeFormData\"\r\n [apiCallResponse]=\"this.apiCallResponse\"\r\n [formsList]=\"this.rendererService.formsList\"\r\n [allFormsData]=\"this.rendererService.allFormsData\"\r\n [isMobileView]=\"this.rendererService.isMobileView\"\r\n (onClickApiCall)=\"this.handleOnClickApiCall($event)\"\r\n (onClickViewForms)=\"this.handleOnClickViewForms($event)\"\r\n (onClickSaveForm)=\"this.handleOnClickSaveForm($event)\"\r\n (getActiveFormData)=\"this.handleGetActiveFormData($event)\"\r\n ></kwikid-form-view>\r\n </div>\r\n </div>\r\n</div>\r\n<div\r\n ngClass=\"kwikid-forms-renderer-loader\"\r\n *ngIf=\"loader\"\r\n>\r\n <span class=\"loader\"></span>\r\n</div>\r\n<tui-push\r\n id=\"error-notification\"\r\n *tuiPush=\"showErrorNotification\"\r\n heading=\"Please complete the required Forms!\"\r\n type=\"Error\"\r\n (close)=\"toggleErrorNotification(false)\"\r\n>\r\n <tui-svg\r\n src=\"tuiIconCancel\"\r\n style=\"color: #fff !important\"\r\n >\r\n </tui-svg>\r\n</tui-push>\r\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { KwikIDFormsBuilderComponent } from \"./builder.component\";\r\n\r\n@NgModule({\r\n declarations: [KwikIDFormsBuilderComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule],\r\n providers: [],\r\n exports: [KwikIDFormsBuilderComponent]\r\n})\r\nexport class KwikIDFormBuilderModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { TuiLabelModule, TuiSvgModule } from \"@taiga-ui/core\";\r\nimport { TuiPushModule } from \"@taiga-ui/kit\";\r\nimport { KwikUIModule } from \"kwikui\";\r\nimport { KwikIDFormViewComponent } from \"./form-view.component\";\r\n\r\n@NgModule({\r\n declarations: [KwikIDFormViewComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TuiLabelModule,\r\n TuiPushModule,\r\n TuiSvgModule,\r\n KwikUIModule\r\n ],\r\n exports: [KwikIDFormViewComponent]\r\n})\r\nexport class KwikIDFormViewModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { TuiSvgModule } from \"@taiga-ui/core\";\r\nimport { KwikUIModule } from \"kwikui\";\r\nimport { KwikIDFormsListComponent } from \"./forms-list.component\";\r\n\r\n@NgModule({\r\n declarations: [KwikIDFormsListComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n KwikUIModule,\r\n TuiSvgModule\r\n ],\r\n exports: [KwikIDFormsListComponent]\r\n})\r\nexport class KwikIDFormsListModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TuiLoaderModule, TuiSvgModule } from \"@taiga-ui/core\";\r\nimport { TuiPushModule } from \"@taiga-ui/kit\";\r\nimport { KwikUIModule } from \"kwikui\";\r\nimport { KwikIDFormViewModule } from \"./form-view/form-view.module\";\r\nimport { KwikIDFormsListModule } from \"./forms-list/forms-list.module\";\r\nimport { KwikIDFormsRendererComponent } from \"./renderer.component\";\r\n\r\n@NgModule({\r\n declarations: [KwikIDFormsRendererComponent],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n KwikIDFormViewModule,\r\n KwikIDFormsListModule,\r\n KwikUIModule,\r\n TuiLoaderModule,\r\n TuiPushModule,\r\n TuiSvgModule\r\n ],\r\n providers: [],\r\n exports: [KwikIDFormsRendererComponent]\r\n})\r\nexport class KwikIDFormRendererModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { KwikIDFormBuilderModule } from \"./builder/builder.module\";\r\nimport { KwikIDFormRendererModule } from \"./renderer/renderer.module\";\r\nimport { KwikIDRendererService } from \"./renderer/renderer.service\";\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n KwikIDFormBuilderModule,\r\n KwikIDFormRendererModule\r\n ],\r\n exports: [KwikIDFormBuilderModule, KwikIDFormRendererModule],\r\n providers: [KwikIDRendererService]\r\n})\r\nexport class KwikIDFormsModule {}\r\n","/*\r\n * Public API Surface of kwikid-forms\r\n */\r\n\r\n/* Builder Components */\r\nexport * from \"./lib/builder/builder.component\";\r\n\r\n/* Renderer Components */\r\nexport * from \"./lib/renderer/form-view/form-view.component\";\r\nexport * from \"./lib/renderer/forms-list/forms-list.component\";\r\nexport * from \"./lib/renderer/renderer.component\";\r\n\r\n/* KwikID Forms Component */\r\n\r\n/* All Modules in import order from bottom to top */\r\nexport * from \"./lib/builder/builder.module\";\r\nexport * from \"./lib/renderer/form-view/form-view.module\";\r\nexport * from \"./lib/renderer/forms-list/forms-list.module\";\r\nexport * from \"./lib/renderer/renderer.module\";\r\nexport * from \"./lib/kwikid-forms.module\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["hasKey","isEmpty","isNotEmpty","handleJPQueryResponse","jpQueryWrapper","Condition","Actions","Sources","Rules","Validations","i1.KwikIDFormViewService","i1","i2","i3","i1.KwikIDRendererService","i2.KwikIDFormsListComponent","i3.KwikIDFormViewComponent","i5","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kwikid-forms.js","sources":["../../../projects/kwikid-forms/src/lib/builder/builder.component.ts","../../../projects/kwikid-forms/src/lib/builder/builder.component.html","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.decorators.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.common.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.condition.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.actions.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/rules/form-view.rules.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/definitions/sources/form-view.sources.enum.definitions.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.sources.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.rules.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.defaults.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.fields.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.validations.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.service.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/helpers/form-view.apis.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.component.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.component.html","../../../projects/kwikid-forms/src/lib/renderer/forms-list/forms-list.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/forms-list/forms-list.component.ts","../../../projects/kwikid-forms/src/lib/renderer/forms-list/forms-list.component.html","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.sources.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.condition.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.actions.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.rules.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/helpers/renderer.validations.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.config-converter.helper.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.service.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.component.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.component.html","../../../projects/kwikid-forms/src/lib/builder/builder.module.ts","../../../projects/kwikid-forms/src/lib/renderer/form-view/form-view.module.ts","../../../projects/kwikid-forms/src/lib/renderer/forms-list/forms-list.module.ts","../../../projects/kwikid-forms/src/lib/renderer/renderer.module.ts","../../../projects/kwikid-forms/src/lib/kwikid-forms.module.ts","../../../projects/kwikid-forms/src/public_api.ts","../../../projects/kwikid-forms/src/kwikid-forms.ts"],"sourcesContent":["import { copyArrayItem, moveItemInArray } from \"@angular/cdk/drag-drop\";\r\nimport { Component, OnInit, VERSION } from \"@angular/core\";\r\nimport { FormControl, FormGroup } from \"@angular/forms\";\r\nimport {\r\n KwikUIButtonComponent,\r\n KwikUIInputComponent,\r\n KwikUIProgressSegmentedComponent\r\n} from \"kwikui\";\r\nimport { cloneDeep } from \"lodash\";\r\n\r\ntype IMenu = {\r\n title: string;\r\n id?: string;\r\n key?: string;\r\n temp?: string;\r\n component?: any;\r\n props?: any;\r\n};\r\n\r\n@Component({\r\n selector: \"kwikid-forms-builder\",\r\n templateUrl: \"./builder.component.html\",\r\n styleUrls: [\"./builder.component.scss\"]\r\n})\r\nexport class KwikIDFormsBuilderComponent implements OnInit {\r\n buttonComponent = {\r\n disabled: false,\r\n id: \"\",\r\n label: \"Button\",\r\n showLoader: false,\r\n styles: \"\",\r\n class: \"tui-space_right-3 tui-space_bottom-3\",\r\n type: \"button\",\r\n appearance: \"primary\",\r\n icon: \"\",\r\n iconRight: \"\",\r\n shape: null,\r\n size: \"m\"\r\n };\r\n\r\n progressSegmentedComponent = {\r\n colors: \"tui(--tui-primary)\",\r\n max: \"5\",\r\n size: \"m\",\r\n value: \"2\"\r\n };\r\n\r\n inputComponent = {\r\n case: \"default\",\r\n disabled: false,\r\n focus: false,\r\n id: \"id\",\r\n invalid: false,\r\n label: \"label\",\r\n placeholder: \"placeholder\",\r\n type: \"text\",\r\n validators: {\r\n required: true\r\n }\r\n };\r\n\r\n formGroup = new FormGroup({});\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n for (let m of this.menu) {\r\n m.id = this.revisedRandId();\r\n }\r\n }\r\n\r\n revisedRandId() {\r\n return Math.random()\r\n .toString(36)\r\n .replace(/[^a-z]+/g, \"\");\r\n }\r\n\r\n handleOnChange(\r\n event: { target: { value: any } },\r\n id: string | number,\r\n key: string | number,\r\n idx: any\r\n ) {\r\n const _value = event.target.value;\r\n this.formGroup.controls[id][\"controls\"][key].patchValue(_value);\r\n }\r\n\r\n toggleShow(id: any) {\r\n console.log(id);\r\n }\r\n\r\n name = \"Angular \" + VERSION.major;\r\n menu: Array<IMenu> = [\r\n {\r\n title: \"button\",\r\n key: \"button\",\r\n component: KwikUIButtonComponent,\r\n props: this.buttonComponent\r\n },\r\n {\r\n title: \"progress-segmented\",\r\n key: \"progress_segmented\",\r\n component: KwikUIProgressSegmentedComponent,\r\n props: this.progressSegmentedComponent\r\n },\r\n {\r\n title: \"input\",\r\n key: \"input\",\r\n component: KwikUIInputComponent,\r\n props: this.inputComponent\r\n }\r\n ];\r\n table: Array<IMenu> = [];\r\n\r\n drop(event: any) {\r\n // let item = JSON.parse(JSON.stringify(event));\r\n if (event.previousContainer !== event.container) {\r\n console.log(\"copying\");\r\n\r\n // Clone the item that was dropped.\r\n let clone = cloneDeep(event.previousContainer.data[event.previousIndex]);\r\n clone.id = clone.key + \"__\" + this.revisedRandId();\r\n event.previousContainer.data[event.previousIndex] = clone;\r\n\r\n let newFormGroup = new FormGroup({});\r\n\r\n const props = clone.props;\r\n\r\n Object.keys(props).forEach((key) => {\r\n newFormGroup.addControl(\r\n key,\r\n new FormControl({ value: props[key], disabled: false })\r\n );\r\n });\r\n\r\n this.formGroup.addControl(clone.id, newFormGroup);\r\n\r\n copyArrayItem(\r\n event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n } else {\r\n console.log(\"moving\");\r\n moveItemInArray(\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n if (event.previousContainer.data) {\r\n this.menu = this.menu.filter((f) => !f.temp);\r\n }\r\n }\r\n\r\n exited(event: any) {\r\n const currentIdx = event.container.data.findIndex(\r\n (f: { id: any }) => f.id === event.item.data.id\r\n );\r\n this.menu.splice(currentIdx + 1, 0, {\r\n ...event.item.data,\r\n temp: true\r\n });\r\n }\r\n\r\n entered() {\r\n this.menu = this.menu.filter((f) => !f.temp);\r\n }\r\n\r\n isNumber(val: any) {\r\n return typeof val;\r\n }\r\n\r\n removeElement(idx: number, id: string) {\r\n this.formGroup.removeControl(id);\r\n this.table.splice(idx, 1);\r\n }\r\n\r\n getJSON() {\r\n for (let t of this.table) {\r\n t.props = this.formGroup.getRawValue()[t.id];\r\n }\r\n console.log(this.table);\r\n }\r\n}\r\n","<!-- <div>{{ name }}</div>\r\n<p>Start editing to see some magic happen :)</p>\r\n\r\n<button (click)=\"getJSON()\">Get JSON</button>\r\n\r\n<div class=\"drap-copy\">\r\n <div>\r\n <ul\r\n class=\"menu\"\r\n cdkDropList\r\n #menuList=\"cdkDropList\"\r\n [cdkDropListData]=\"menu\"\r\n cdkDropListSortingDisabled\r\n [cdkDropListConnectedTo]=\"[tableList]\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (cdkDropListExited)=\"exited($event)\"\r\n (cdkDropListEntered)=\"entered()\"\r\n >\r\n <li class=\"item\" *ngFor=\"let item of menu\" cdkDrag [cdkDragData]=\"item\">\r\n <div class=\"item\" *cdkDragPlaceholder>\r\n <a>{{ item.title }}</a>\r\n </div>\r\n <ng-container *ngComponentOutlet=\"item.component\"> </ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div\r\n class=\"table\"\r\n cdkDropList\r\n #tableList=\"cdkDropList\"\r\n [cdkDropListData]=\"table\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n >\r\n <div class=\"content\">\r\n <div>\r\n <div class=\"item\" *ngFor=\"let item of table; let idx = index\" cdkDrag>\r\n <ng-container *ngComponentOutlet=\"item.component\"> </ng-container>\r\n <div class=\"item-header\">\r\n <p>{{ idx }}--{{ item.title }}</p>\r\n <button (click)=\"removeElement(idx, item.id)\">Remove</button>\r\n </div>\r\n <div class=\"desc\">\r\n <div>id - {{ item.id }}</div>\r\n <div>key - {{ item.key }}</div>\r\n </div>\r\n <ng-container\r\n *ngTemplateOutlet=\"formModal; context: item\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #formModal let-component=\"component\" let-props=\"props\" let-id=\"id\">\r\n <div class=\"field_editor\">\r\n <div *ngFor=\"let i of props | keyvalue; let idx = index\">\r\n <div class=\"formModalInputGroup\">\r\n <label>{{ i.key }}</label>\r\n <input\r\n value=\"{{ i.value }}\"\r\n (keyup)=\"handleOnChange($event, id, i.key, idx)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->\r\n","export enum EActionKey {\r\n SET_VALUE = \"SET_VALUE\",\r\n FIELD_MESSAGE_SHOW = \"FIELD_MESSAGE_SHOW\",\r\n FIELD_MESSAGES_HIDE = \"FIELD_MESSAGES_HIDE\",\r\n FIELD_ERROR_SHOW = \"FIELD_ERROR_SHOW\",\r\n FIELD_ERROR_HIDE = \"FIELD_ERROR_HIDE\",\r\n FIELD_SHOW = \"FIELD_SHOW\",\r\n FIELD_HIDE = \"FIELD_HIDE\",\r\n FIELD_ENABLE = \"FIELD_ENABLE\",\r\n FIELD_DISABLE = \"FIELD_DISABLE\",\r\n FIELD_RESET = \"FIELD_RESET\",\r\n HANDLE_CONNECTED_ELEMENTS = \"HANDLE_CONNECTED_ELEMENTS\",\r\n CUSTOM = \"CUSTOM\"\r\n}\r\n","export enum EApiStatusType {\r\n DEFAULT = \"default\",\r\n LOADING = \"loading\",\r\n SUCCESS = \"success\",\r\n FAILED = \"failed\"\r\n}\r\n","export enum EPatternKey {\r\n CUSTOM = \"CUSTOM\",\r\n IS_ADDRESS = \"IS_ADDRESS\",\r\n IS_ALPHA = \"IS_ALPHA\",\r\n IS_ALPHANUMERIC = \"IS_ALPHANUMERIC\",\r\n IS_BOOLEAN = \"IS_BOOLEAN\",\r\n IS_EMAIL = \"IS_EMAIL\",\r\n IS_EMPTY = \"IS_EMPTY\",\r\n IS_FALSE = \"IS_FALSE\",\r\n IS_HTML = \"IS_HTML\",\r\n IS_INTEGER = \"IS_INTEGER\",\r\n IS_IP_ADDRESS = \"IS_IP_ADDRESS\",\r\n IS_JSON = \"IS_JSON\",\r\n IS_LOWERCASE = \"IS_LOWERCASE\",\r\n IS_NOT_EMPTY = \"IS_NOT_EMPTY\",\r\n IS_NUMBER = \"IS_NUMBER\",\r\n IS_TRUE = \"IS_TRUE\",\r\n IS_UPPERCASE = \"IS_UPPERCASE\",\r\n IS_URL = \"IS_URL\",\r\n IS_AADHAAR_NUMBER = \"IS_AADHAAR_NUMBER\",\r\n IS_BANK_ACCOUNT_NO = \"IS_BANK_ACCOUNT_NO\",\r\n IS_BANK_SWIFT_CODE = \"IS_BANK_SWIFT_CODE\",\r\n IS_BIRTH_CERTIFICATE_NO = \"IS_BIRTH_CERTIFICATE_NO\",\r\n IS_CHEQUE_NO = \"IS_CHEQUE_NO\",\r\n IS_CIN = \"IS_CIN\",\r\n IS_CREDIT_CARD_NO = \"IS_CREDIT_CARD_NO\",\r\n IS_DRIVING_LICENSE = \"IS_DRIVING_LICENSE\",\r\n IS_GSTIN = \"IS_GSTIN\",\r\n IS_IFSC_NO = \"IS_IFSC_NO\",\r\n IS_MICR_CODE = \"IS_MICR_CODE\",\r\n IS_MOBILE_NO = \"IS_MOBILE_NO\",\r\n IS_MOBILE_NO_IN = \"IS_MOBILE_NO_IN\",\r\n IS_NEFT_OR_RTGS_NO = \"IS_NEFT_OR_RTGS_NO\",\r\n IS_PAN_NUMBER = \"IS_PAN_NUMBER\",\r\n IS_PASSPORT = \"IS_PASSPORT\",\r\n IS_PHONE_NO = \"IS_PHONE_NO\",\r\n IS_PINCODE = \"IS_PINCODE\",\r\n IS_PURCHASE_ORDER_NO = \"IS_PURCHASE_ORDER_NO\",\r\n IS_RATION_CARD_NO = \"IS_RATION_CARD_NO\",\r\n IS_SERVICE_TAX_NO = \"IS_SERVICE_TAX_NO\",\r\n IS_SOCIAL_SECURITY_NO = \"IS_SOCIAL_SECURITY_NO\",\r\n IS_UPI_TRANSACTION_REFERENCE_NO = \"IS_UPI_TRANSACTION_REFERENCE_NO\",\r\n IS_VAT_TIN_NO = \"IS_VAT_TIN_NO\",\r\n IS_VEHICLE_REGISTRATION_NO = \"IS_VEHICLE_REGISTRATION_NO\",\r\n IS_VOTER_ID = \"IS_VOTER_ID\"\r\n}\r\n\r\nexport enum EPattern {\r\n IS_ALPHA = \"^[a-zA-Z]+$\",\r\n IS_ADDRESS = \"^(\\\\w*\\\\s*[#-,/.()&]*)+\",\r\n IS_ALPHANUMERIC = \"^[a-zA-Z0-9]+$\",\r\n IS_BOOLEAN = \"(true|false)\",\r\n IS_EMAIL = \"^\\\\w+([\\\\.-]?\\\\w+)*@\\\\w+([\\\\.-]?\\\\w+)*(\\\\.\\\\w{2,3})+$\",\r\n IS_EMPTY = \"^$\",\r\n IS_FALSE = \"false\",\r\n IS_HTML = \"^<([a-z]+)([^<]+)(?:>(.)</\\\\1>|\\\\s+/>)$\",\r\n IS_INTEGER = \"^[+-]?d+$\",\r\n IS_IP_ADDRESS = \"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$\",\r\n IS_JSON = \"^\\\\s*({(.|\\\\s)}|[(.|\\\\s)])\\\\s*$\",\r\n IS_LOWERCASE = \"^[a-z]+$\",\r\n IS_NOT_EMPTY = \"^.+$\",\r\n IS_NUMBER = \"^[+-]?d+(.d+)?$\",\r\n IS_TRUE = \"true\",\r\n IS_UPPERCASE = \"^[A-Z]+$\",\r\n IS_URL = \"^(?:http(s)?://)?[w.-]+(?:.[w.-]+)+[w-._~:/?#[]@!$&'()*+,;=.]+$\",\r\n IS_AADHAAR_NUMBER = \"^[0-9]{12}$\",\r\n IS_BANK_ACCOUNT_NO = \"^[0-9]{9,18}$\",\r\n IS_BANK_SWIFT_CODE = \"^[A-Z]{4}[A-Z]{2}[0-9A-Z]{2}[0-9A-Z]{3}$\",\r\n IS_BIRTH_CERTIFICATE_NO = \"^[A-Z]{2}[0-9]{6}[A-Z]{1}[0-9]{2}$\",\r\n IS_CHEQUE_NO = \"^[0-9]{6,14}$\",\r\n IS_CIN = \"^[A-Z]{3}[0-9]{5}[0-9A-Z]{3}$\",\r\n IS_CREDIT_CARD_NO = \"^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}$\",\r\n IS_DRIVING_LICENSE = \"^[A-Z]{2}[0-9]{2}((19|20)[0-9][0-9])[0-9]{7}$\",\r\n IS_GSTIN = \"^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$\",\r\n IS_IFSC_NO = \"^[A-Z]{4}[0][A-Z0-9]{6}$\",\r\n IS_MICR_CODE = \"^[0-9]{9}$\",\r\n IS_MOBILE_NO = \"^[6-9]\\\\d{9}$\",\r\n IS_MOBILE_NO_IN = \"^(\\\\+91)[6-9]\\\\d{9}$\",\r\n IS_NEFT_OR_RTGS_NO = \"^[A-Z]{4}[0-9]{7}$\",\r\n IS_PAN_NUMBER = \"^[A-Z]{5}[[0-9]{4}[A-Z]{1}$\",\r\n IS_PASSPORT = \"^[A-PR-WYa-pr-wy][1-9]\\\\d\\\\s?\\\\d{4}[1-9]$\",\r\n IS_PHONE_NO = \"^[6-9]\\\\d{9}$\",\r\n IS_PINCODE = \"^[1-9][0-9]{5}$\",\r\n IS_PURCHASE_ORDER_NO = \"^[0-9]{1,5}$\",\r\n IS_RATION_CARD_NO = \"^[A-Z]{3}[0-9]{7}$\",\r\n IS_SERVICE_TAX_NO = \"^[A-Z]{5}[0-9]{4}[A-Z]{1}$\",\r\n IS_SOCIAL_SECURITY_NO = \"^[0-9]{3}-[0-9]{2}-[0-9]{4}$\",\r\n IS_UPI_TRANSACTION_REFERENCE_NO = \"^[a-zA-Z0-9]{3,128}@[a-z]{3,9}$\",\r\n IS_VAT_TIN_NO = \"^[0-9]{11}$\",\r\n IS_VEHICLE_REGISTRATION_NO = \"^[A-Z]{2}[0-9]{2}((19|20)[0-9][0-9])[0-9]{6}$\",\r\n IS_VOTER_ID = \"^[A-Z]{3}[0-9]{7}$\"\r\n}\r\n\r\nexport enum EMessageType {\r\n DEFAULT = \"default\",\r\n ERROR = \"error\",\r\n SUCCESS = \"success\",\r\n WARNING = \"warning\"\r\n}\r\n","export enum EFieldType {\r\n TITLE = \"title\",\r\n TEXT = \"text\",\r\n CHECKBOX = \"checkbox\",\r\n NUMBER = \"number\",\r\n DATE = \"date\",\r\n PHONE = \"phone\",\r\n RADIO = \"radio\",\r\n DROPDOWN_WITH_SEARCH = \"dropdown-with-search\",\r\n API_CALL = \"api-call\",\r\n OTP = \"otp\",\r\n AADHAAR_NUMBER = \"aadhaar-number\"\r\n}\r\n","/**\r\n * A function that logs the execution of a method.\r\n * @param {any} target - The object the method belongs to.\r\n * @param {string} propertyKey - The name of the method.\r\n * @param {PropertyDescriptor} descriptor - The property descriptor for the method.\r\n */\r\nexport function log(\r\n target: any,\r\n propertyKey: string,\r\n descriptor: PropertyDescriptor\r\n) {\r\n // save a reference to the original method\r\n const originalMethod = descriptor.value;\r\n // update the descriptor value with a new function that will log and execute the original method\r\n descriptor.value = function (...args: any[]) {\r\n console.group(\"Logging Method\"); // start a new logging group\r\n console.time(\"Execution Time:\"); // start a timer\r\n\r\n let result; // declare result variable\r\n try {\r\n // execute the original method and save the result\r\n result = originalMethod.apply(this, args);\r\n } catch (error) {\r\n // if an error is thrown, log the error and throw it again\r\n logSyncMethodError(target.constructor.name, propertyKey, args, error);\r\n console.timeEnd(`Execution Time:`); // stop the timer\r\n console.groupEnd(); // end the logging group\r\n throw error;\r\n }\r\n\r\n // if the result is a Promise, handle it as an async method\r\n if (result instanceof Promise) {\r\n result = result\r\n .then((resolvedValue) => {\r\n // on success, log the resolved value and return it\r\n logAsyncMethod(\r\n target.constructor.name,\r\n propertyKey,\r\n args,\r\n resolvedValue\r\n );\r\n console.timeEnd(`Execution Time:`); // stop the timer\r\n console.groupEnd(); // end the logging group\r\n return resolvedValue;\r\n })\r\n .catch((error) => {\r\n // on error, log the error and throw it again\r\n logAsyncMethodError(\r\n target.constructor.name,\r\n propertyKey,\r\n args,\r\n error\r\n );\r\n console.timeEnd(`Execution Time:`); // stop the timer\r\n console.groupEnd(); // end the logging group\r\n throw error;\r\n });\r\n } else {\r\n // if the result is not a Promise, handle it as a sync method\r\n logSyncMethod(target.constructor.name, propertyKey, args, result);\r\n console.timeEnd(\"Execution Time:\");\r\n console.groupEnd();\r\n }\r\n return result;\r\n };\r\n}\r\n\r\n/**\r\n * This function logs a sync method's information to the console.\r\n * @param {string} className - The name of the class where the method belongs.\r\n * @param {string} methodName - The name of the method being called.\r\n * @param {any[]} args - An array of arguments passed to the method.\r\n * @param {any} result - The result of the method.\r\n */\r\nfunction logSyncMethod(className, methodName, args, result) {\r\n console.log(\r\n \"%cType: Sync Method -\",\r\n \"color: #0d47a1; font-weight: bold;\",\r\n \"\\nClass:\",\r\n className,\r\n \"\\nMethod:\",\r\n methodName,\r\n \"\\nArgs:\",\r\n args,\r\n \"\\nReturn:\",\r\n result\r\n );\r\n}\r\n\r\n/**\r\n * Logs an error that occurred during the execution of a synchronous method.\r\n * @param {string} className - The name of the class the method belongs to.\r\n * @param {string} methodName - The name of the method.\r\n * @param {any[]} args - The arguments passed to the method.\r\n * @param {Error} error - The error that occurred.\r\n */\r\nfunction logSyncMethodError(className, methodName, args, error) {\r\n console.log(\r\n \"%cType: Sync Method -\",\r\n \"color: #0d47a1; font-weight: bold;\",\r\n \"\\nClass:\",\r\n className,\r\n \"\\nMethod:\",\r\n methodName,\r\n \"\\nArgs:\",\r\n args,\r\n \"\\nError:\",\r\n error\r\n );\r\n}\r\n\r\n/**\r\n * Logs the result of the execution of an asynchronous method.\r\n * @param {string} className - The name of the class the method belongs to.\r\n * @param {string} methodName - The name of the method.\r\n * @param {any[]} args - The arguments passed to the method.\r\n * @param {any} result - The result of the method execution.\r\n */\r\nfunction logAsyncMethod(className, methodName, args, result) {\r\n console.log(\r\n \"%cType: Async Method -\",\r\n \"color: #1565c0; font-weight: bold;\",\r\n \"\\nClass:\",\r\n className,\r\n \"\\nMethod:\",\r\n methodName,\r\n \"\\nArgs:\",\r\n args,\r\n \"\\nReturn:\",\r\n result\r\n );\r\n}\r\n\r\n/**\r\n * Logs an error that occurred during the execution of an asynchronous method.\r\n * @param {string} className - The name of the class the method belongs to.\r\n * @param {string} methodName - The name of the method.\r\n * @param {any[]} args - The arguments passed to the method.\r\n * @param {Error} error - The error that occurred.\r\n */\r\nfunction logAsyncMethodError(className, methodName, args, error) {\r\n console.log(\r\n \"%cType: Async Method -\",\r\n \"color: #1565c0; font-weight: bold;\",\r\n \"\\nClass:\",\r\n className,\r\n \"\\nMethod:\",\r\n methodName,\r\n \"\\nArgs:\",\r\n args,\r\n \"\\nError:\",\r\n error\r\n );\r\n}\r\n","import { TuiDay } from \"@taiga-ui/cdk\";\r\nimport jp from \"jsonpath\";\r\n\r\nexport const hasKey = (object: any, key: string): boolean => {\r\n return object.hasOwnProperty(key);\r\n};\r\n\r\nexport const isEmpty = (value: any): boolean => {\r\n if (value === \"\" || value === undefined || value === null) {\r\n return true;\r\n } else if (\r\n value &&\r\n Object.keys(value).length === 0 &&\r\n Object.getPrototypeOf(value) === Object.prototype\r\n ) {\r\n return true;\r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const isNotEmpty = (value: any) => {\r\n return !isEmpty(value);\r\n};\r\n\r\nexport const handleJPQueryResponse = (value: any): any => {\r\n /**\r\n * jp.query doesn't always return an array with one element\r\n * so directly can't access with [0], need to check conditionally\r\n */\r\n if (Array.isArray(value)) {\r\n if (value.length > 0) {\r\n value = value[0];\r\n } else if (value.length === 0) {\r\n value = \"\";\r\n }\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const jpQueryWrapper = (obj: any, key: string): boolean => {\r\n return handleJPQueryResponse(jp.query(obj, key));\r\n};\r\n\r\nexport const isSingleForm = (formsList: any[]): boolean => {\r\n return formsList.length === 1;\r\n};\r\n","import { TuiDay } from \"@taiga-ui/cdk\";\r\nimport jp from \"jsonpath\";\r\nimport _ from \"lodash\";\r\nimport { EFieldType } from \"../definitions/fields/form-view.fields.enum.definitions\";\r\nimport {\r\n TField,\r\n TFieldRadio,\r\n TFieldType\r\n} from \"../definitions/fields/form-view.fields.type.definitions\";\r\n\r\nexport const hasKey = (object: any, key: string): boolean => {\r\n return object.hasOwnProperty(key);\r\n};\r\n\r\nexport const hasPath = (object: any, path: string): boolean => {\r\n return _.has(object, path);\r\n};\r\n\r\nexport const isEmptyString = (value: string): boolean => {\r\n return value === \"\";\r\n};\r\nexport const isUndefined = (value: any): boolean => {\r\n return value === undefined;\r\n};\r\nexport const isNull = (value: any): boolean => {\r\n return value === null;\r\n};\r\nexport const isEmptyObject = (object: any): boolean => {\r\n return (\r\n object &&\r\n Object.keys(object).length === 0 &&\r\n Object.getPrototypeOf(object) === Object.prototype\r\n );\r\n};\r\nexport const isEmptyArray = (arr: any[]): boolean => {\r\n return arr.length === 0;\r\n};\r\n\r\nexport const isEmpty = (value: any): boolean => {\r\n if (isEmptyString(value) || isUndefined(value) || isNull(value)) {\r\n return true;\r\n } else if (isEmptyObject(value)) {\r\n return true;\r\n } else if (Array.isArray(value)) {\r\n if (isEmptyArray(value)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const isNotEmpty = (value: any) => {\r\n return !isEmpty(value);\r\n};\r\n\r\nexport const isEmptyBrowserStorageValue = (value: any) => {\r\n return isNull(value) && isUndefined(value);\r\n};\r\n\r\nexport const isNotEmptyBrowserStorageValue = (value: any) => {\r\n return !isEmptyBrowserStorageValue(value);\r\n};\r\n\r\nexport const handleJPQueryResponse = (value: any): any => {\r\n /**\r\n * jp.query doesn't always return an array with one element\r\n * so directly can't access with [0], need to check conditionally\r\n */\r\n if (Array.isArray(value)) {\r\n if (value.length > 0) {\r\n value = value[0];\r\n } else if (value.length === 0) {\r\n value = \"\";\r\n }\r\n } else {\r\n value = \"\";\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const jpQueryWrapper = (obj: any, key: string) => {\r\n return handleJPQueryResponse(jp.query(obj, key));\r\n};\r\n\r\nexport const replaceString = (\r\n str: string,\r\n find: string,\r\n replace: string\r\n): string => {\r\n return str.replace(new RegExp(find, \"g\"), replace);\r\n};\r\n\r\nexport const setFieldKeyValue = (field: any, path: string, value: any): any => {\r\n return _.set(field, path, value);\r\n};\r\n\r\nexport const setValueToObject = (\r\n object: any,\r\n path: string,\r\n value: any\r\n): any => {\r\n return _.set(object, path, value);\r\n};\r\n\r\nexport const formatValue = (field: TField, fieldValue: any): any => {\r\n const fieldType: TFieldType = field.type;\r\n let value: any;\r\n\r\n if (isNotEmpty(fieldValue)) {\r\n switch (fieldType) {\r\n case EFieldType.DATE:\r\n const splitDate = fieldValue.split(\"-\");\r\n value = new TuiDay(\r\n Number(splitDate[2]), // Year\r\n Number(splitDate[1]) - 1, // Month, Why '-1' => Because Taiga-UI Required It, So...\r\n Number(splitDate[0]) // Day\r\n );\r\n break;\r\n case EFieldType.RADIO:\r\n const fieldRadio = field as TFieldRadio;\r\n value = fieldRadio.options.find((item: any) => {\r\n return item.label === fieldValue;\r\n });\r\n break;\r\n case EFieldType.CHECKBOX:\r\n value = Boolean(fieldValue);\r\n break;\r\n default:\r\n value = fieldValue;\r\n break;\r\n }\r\n } else {\r\n value = fieldValue;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport const setEmptyValue = (field: TField): any => {\r\n const fieldType: TFieldType = field.type;\r\n let value: any;\r\n\r\n switch (fieldType) {\r\n case EFieldType.CHECKBOX:\r\n value = false;\r\n break;\r\n case EFieldType.NUMBER:\r\n value = null;\r\n break;\r\n case EFieldType.DATE:\r\n value = null;\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n\r\n return value;\r\n};\r\n","import { log } from \"../form-view.decorators\";\r\nimport { replaceString } from \"./form-view.common.helper\";\r\n\r\nexport class Condition {\r\n private _condition: string;\r\n private _rulesMapping: any;\r\n\r\n constructor(condition: string, rulesMapping: any) {\r\n this._condition = condition;\r\n this._rulesMapping = rulesMapping;\r\n }\r\n\r\n private parseKeys(condition: string, rulesEvaluationMapping: object): string {\r\n Object.keys(rulesEvaluationMapping).forEach((key) => {\r\n condition = replaceString(condition, key, rulesEvaluationMapping[key]);\r\n });\r\n\r\n return condition;\r\n }\r\n\r\n private parseOperators(condition: string): string {\r\n return condition.replace(/AND|OR|NOT|XOR|NAND|NOR|XNOR/g, (match) => {\r\n switch (match) {\r\n case \"AND\":\r\n return \"&&\";\r\n case \"OR\":\r\n return \"||\";\r\n case \"NOT\":\r\n return \"!\";\r\n case \"XOR\":\r\n return \"^\";\r\n case \"NAND\":\r\n return \"!&\";\r\n case \"NOR\":\r\n return \"!|\";\r\n case \"XNOR\":\r\n return \"!^\";\r\n default:\r\n return match;\r\n }\r\n });\r\n }\r\n\r\n @log\r\n evaluate(): boolean {\r\n this._condition = this.parseKeys(this._condition, this._rulesMapping);\r\n this._condition = this.parseOperators(this._condition);\r\n\r\n return eval(this._condition);\r\n }\r\n}\r\n","import { TAction } from \"../definitions/actions/form-view.actions.type.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { Condition } from \"./form-view.condition.helper\";\r\n\r\nexport class Actions {\r\n private _action: TAction;\r\n private _allFormsData: any;\r\n private _field: TField;\r\n private _formData: any;\r\n private _previousFormData: any;\r\n private _ruleMapping: any;\r\n private _takeAction: Function;\r\n\r\n constructor(\r\n action: TAction,\r\n field: TField,\r\n ruleMapping: any,\r\n allFormsData: any,\r\n formData: any,\r\n previousFormData: any,\r\n takeAction: Function\r\n ) {\r\n this._action = action;\r\n this._field = field;\r\n this._ruleMapping = ruleMapping;\r\n this._allFormsData = allFormsData;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n @log\r\n async execute() {\r\n const condition = new Condition(this._action.condition, this._ruleMapping);\r\n const actionSuccess = condition.evaluate();\r\n\r\n if (actionSuccess) {\r\n return this._takeAction(\r\n this._action,\r\n this._field,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData\r\n );\r\n }\r\n }\r\n}\r\n","export enum ERuleKey {\r\n OBJECT_PATH_EXISTS = \"OBJECT_PATH_EXISTS\",\r\n VALUE_CHECK = \"VALUE_CHECK\",\r\n VALUE_CHANGE = \"VALUE_CHANGE\"\r\n}\r\n","export enum ESourceKey {\r\n FIELD_CONFIG = \"FIELD_CONFIG\",\r\n FORM_DATA = \"FORM_DATA\",\r\n PREVIOUS_FORM_DATA = \"PREVIOUS_FORM_DATA\",\r\n ALL_FORMS_DATA = \"ALL_FORMS_DATA\",\r\n BROWSER_STORAGE = \"BROWSER_STORAGE\",\r\n PREDEFINED = \"PREDEFINED\",\r\n USER_CONFIG = \"USER_CONFIG\",\r\n CUSTOM = \"CUSTOM\"\r\n}\r\n\r\nexport enum EBrowserStorageType {\r\n LOCAL_STORAGE = \"LOCAL_STORAGE\",\r\n SESSION_STORAGE = \"SESSION_STORAGE\"\r\n}\r\n","import { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport {\r\n EBrowserStorageType,\r\n ESourceKey\r\n} from \"../definitions/sources/form-view.sources.enum.definitions\";\r\nimport {\r\n TBrowserStorageType,\r\n TSource\r\n} from \"../definitions/sources/form-view.sources.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport {\r\n isNotEmpty,\r\n isNotEmptyBrowserStorageValue,\r\n jpQueryWrapper,\r\n setEmptyValue,\r\n setValueToObject\r\n} from \"./form-view.common.helper\";\r\n\r\nexport class Sources {\r\n private _formData: any;\r\n get formData(): any {\r\n return this._formData;\r\n }\r\n set formData(value: any) {\r\n this._formData = value;\r\n }\r\n\r\n private _previousFormData: any;\r\n get previousFormData(): any {\r\n return this._previousFormData;\r\n }\r\n set previousFormData(value: any) {\r\n this._previousFormData = value;\r\n }\r\n\r\n private _allFormsData: any;\r\n get allFormsData(): any {\r\n return this._allFormsData;\r\n }\r\n set allFormsData(value: any) {\r\n this._allFormsData = value;\r\n }\r\n\r\n private _field: TField;\r\n get field(): TField {\r\n return this._field;\r\n }\r\n set field(value: TField) {\r\n this._field = value;\r\n }\r\n\r\n constructor(\r\n field: TField,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any\r\n ) {\r\n this._field = field;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._allFormsData = allFormsData;\r\n }\r\n\r\n private getValueFromFieldConfig(path: string): any {\r\n let value: any = \"\";\r\n if (isNotEmpty(path)) {\r\n value = jpQueryWrapper(this._field, path);\r\n } else {\r\n value = setEmptyValue(this._field);\r\n }\r\n return value;\r\n }\r\n\r\n private getValueFromFormData(path: string): any {\r\n let value: any;\r\n value = jpQueryWrapper(this._formData, path);\r\n return value;\r\n }\r\n private getValueFromPreviousFormData(path: string): any {\r\n let value: any;\r\n value = jpQueryWrapper(this._previousFormData, path);\r\n return value;\r\n }\r\n private getValueFromAllFormsData(path: string): any {\r\n let value: any;\r\n value = jpQueryWrapper(this._allFormsData, path);\r\n return value;\r\n }\r\n private getValueFromBrowserStorage(\r\n type: TBrowserStorageType,\r\n key: string\r\n ): any {\r\n let value: any = \"\";\r\n switch (type) {\r\n case EBrowserStorageType.LOCAL_STORAGE:\r\n value = isNotEmptyBrowserStorageValue(localStorage.getItem(key))\r\n ? localStorage.getItem(key)\r\n : \"\";\r\n break;\r\n case EBrowserStorageType.SESSION_STORAGE:\r\n value = isNotEmptyBrowserStorageValue(sessionStorage.getItem(key))\r\n ? sessionStorage.getItem(key)\r\n : \"\";\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n return value;\r\n }\r\n\r\n @log\r\n getValueFromSource(source: TSource): any {\r\n let value: any = \"\";\r\n\r\n switch (source.key) {\r\n case ESourceKey.FIELD_CONFIG:\r\n value = this.getValueFromFieldConfig(source.props.path);\r\n break;\r\n case ESourceKey.FORM_DATA:\r\n value = this.getValueFromFormData(source.props.path);\r\n break;\r\n case ESourceKey.ALL_FORMS_DATA:\r\n value = this.getValueFromAllFormsData(source.props.path);\r\n break;\r\n case ESourceKey.PREVIOUS_FORM_DATA:\r\n value = this.getValueFromPreviousFormData(source.props.path);\r\n break;\r\n case ESourceKey.BROWSER_STORAGE:\r\n value = this.getValueFromBrowserStorage(\r\n source.props.browserStorage.type,\r\n source.props.browserStorage.key\r\n );\r\n break;\r\n case ESourceKey.PREDEFINED:\r\n value = source.value;\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private setValueToFieldConfig(path: string, value: any): any {\r\n this._field = setValueToObject(this._field, path, value);\r\n }\r\n private setValueToFormData(path: string, value: any): any {\r\n this._formData = setValueToObject(this._formData, path, value);\r\n }\r\n private setValueToAllFormsData(path: string, value: any): any {\r\n this._allFormsData = setValueToObject(this._allFormsData, path, value);\r\n }\r\n private setValueToPreviousFromData(path: string, value: any): any {\r\n this._previousFormData = setValueToObject(\r\n this._previousFormData,\r\n path,\r\n value\r\n );\r\n }\r\n private setValueToBrowserStorage(type: string, key: string, value: any): any {\r\n switch (type) {\r\n case EBrowserStorageType.LOCAL_STORAGE:\r\n localStorage.setItem(key, value);\r\n break;\r\n case EBrowserStorageType.SESSION_STORAGE:\r\n sessionStorage.setItem(key, value);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n @log\r\n async setValueToSource(source: TSource, value: any) {\r\n switch (source.key) {\r\n case ESourceKey.FIELD_CONFIG:\r\n this._field = this.setValueToFieldConfig(source.props.path, value);\r\n break;\r\n case ESourceKey.FORM_DATA:\r\n this._formData = this.setValueToFormData(source.props.path, value);\r\n break;\r\n case ESourceKey.ALL_FORMS_DATA:\r\n this._allFormsData = this.setValueToAllFormsData(\r\n source.props.path,\r\n value\r\n );\r\n break;\r\n case ESourceKey.PREVIOUS_FORM_DATA:\r\n this._previousFormData = this.setValueToPreviousFromData(\r\n source.props.path,\r\n value\r\n );\r\n break;\r\n case ESourceKey.BROWSER_STORAGE:\r\n await this.setValueToBrowserStorage(\r\n source.props.browserStorage.type,\r\n source.props.browserStorage.key,\r\n value\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import {\r\n EPattern,\r\n EPatternKey\r\n} from \"../definitions/common/form-view.common.enum.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { ERuleKey } from \"../definitions/rules/form-view.rules.enum.definitions\";\r\nimport {\r\n TRule,\r\n TRuleObjectPathExists,\r\n TRuleType,\r\n TRuleValueChange,\r\n TRuleValueCheck\r\n} from \"../definitions/rules/form-view.rules.type.definitions\";\r\nimport { ESourceKey } from \"../definitions/sources/form-view.sources.enum.definitions\";\r\nimport { TSource } from \"../definitions/sources/form-view.sources.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { hasPath } from \"./form-view.common.helper\";\r\nimport { Sources } from \"./form-view.sources.helper\";\r\n\r\nexport class Rules {\r\n private _formData: any;\r\n private _previousFormData: any;\r\n private _allFormsData: any;\r\n private _field: TField;\r\n private _rules: Array<TRule>;\r\n\r\n constructor(\r\n rules: Array<TRule>,\r\n field: TField,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any\r\n ) {\r\n this._field = field;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._allFormsData = allFormsData;\r\n this._rules = rules;\r\n }\r\n\r\n @log\r\n private evaluate(rule: TRule): boolean {\r\n let ruleType: TRuleType = rule.key;\r\n let ruleEvaluationStatus: boolean = false;\r\n\r\n if (this._field.type === \"radio\") {\r\n this._formData[this._field.key] = this._formData[this._field.key].label;\r\n }\r\n\r\n const source = new Sources(\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n );\r\n\r\n switch (ruleType) {\r\n case ERuleKey.OBJECT_PATH_EXISTS:\r\n const ruleObjectPathExists = rule as TRuleObjectPathExists;\r\n const ruleObjectPathExistsObject = ruleObjectPathExists.props.object;\r\n const ruleObjectPathExistsPath = ruleObjectPathExists.props.path;\r\n\r\n switch (ruleObjectPathExistsObject) {\r\n case ESourceKey.ALL_FORMS_DATA:\r\n ruleEvaluationStatus = hasPath(\r\n this._allFormsData,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n case ESourceKey.FORM_DATA:\r\n ruleEvaluationStatus = hasPath(\r\n this._formData,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n case ESourceKey.PREVIOUS_FORM_DATA:\r\n ruleEvaluationStatus = hasPath(\r\n this._previousFormData,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n case ESourceKey.FIELD_CONFIG:\r\n ruleEvaluationStatus = hasPath(\r\n this._field,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n default:\r\n ruleEvaluationStatus = false;\r\n break;\r\n }\r\n break;\r\n case ERuleKey.VALUE_CHECK:\r\n const ruleValueCheck = rule as TRuleValueCheck;\r\n const ruleValueCheckSource: TSource = ruleValueCheck.props.value.source;\r\n const ruleValueCheckValue =\r\n source.getValueFromSource(ruleValueCheckSource);\r\n\r\n if (ruleValueCheck.props.pattern.key === EPatternKey.CUSTOM) {\r\n var re = new RegExp(ruleValueCheck.props.pattern.pattern);\r\n } else {\r\n var re = new RegExp(EPattern[ruleValueCheck.props.pattern.key]);\r\n }\r\n\r\n ruleEvaluationStatus = re.test(ruleValueCheckValue);\r\n break;\r\n case ERuleKey.VALUE_CHANGE:\r\n const ruleValueChange = rule as TRuleValueChange;\r\n const ruleValueChangeCurrentSource: TSource =\r\n ruleValueChange.props.value.current.source;\r\n const ruleValueChangePreviousSource: TSource =\r\n ruleValueChange.props.value.previous.source;\r\n\r\n const previousValue = source.getValueFromSource(\r\n ruleValueChangePreviousSource\r\n );\r\n const currentValue = source.getValueFromSource(\r\n ruleValueChangeCurrentSource\r\n );\r\n\r\n ruleEvaluationStatus = previousValue === currentValue;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return ruleEvaluationStatus;\r\n }\r\n\r\n @log\r\n public mapping(): any {\r\n let rulesEvaluationMapping = {};\r\n\r\n for (const rule of this._rules) {\r\n const ruleEvaluationStatus = this.evaluate(rule);\r\n\r\n rulesEvaluationMapping = {\r\n ...rulesEvaluationMapping,\r\n [rule.id]: ruleEvaluationStatus\r\n };\r\n }\r\n\r\n return rulesEvaluationMapping;\r\n }\r\n}\r\n","import { isEmpty } from \"../../renderer.helper\";\r\nimport { TAction } from \"../definitions/actions/form-view.actions.type.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { TRule } from \"../definitions/rules/form-view.rules.type.definitions\";\r\nimport { TTrigger } from \"../definitions/triggers/form-view.triggers.type.definitions\";\r\nimport { TValidation } from \"../definitions/validations/form-view.validations.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { Actions } from \"./form-view.actions.helper\";\r\nimport { setEmptyValue, setValueToObject } from \"./form-view.common.helper\";\r\nimport { Condition } from \"./form-view.condition.helper\";\r\nimport { Rules } from \"./form-view.rules.helper\";\r\nimport { Sources } from \"./form-view.sources.helper\";\r\n\r\nexport class Defaults {\r\n private _allFormsData: any;\r\n private _field: TField;\r\n private _formData: any;\r\n private _previousFormData: any;\r\n private _takeAction: Function;\r\n\r\n constructor(\r\n field: TField,\r\n allFormsData: any,\r\n formData: any,\r\n previousFormData: any,\r\n takeAction: Function\r\n ) {\r\n this._field = field;\r\n this._allFormsData = allFormsData;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n @log\r\n async getDefaultValue() {\r\n let defaultValue: any;\r\n\r\n const sources = this._field.default.value.sources;\r\n\r\n let sourceIndex = 0;\r\n for (let source of sources) {\r\n const sources = new Sources(\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n );\r\n const value = sources.getValueFromSource(source);\r\n // Set the Value of current source.\r\n this._field = setValueToObject(\r\n this._field,\r\n `default.value.sources.[${sourceIndex}].value`,\r\n value\r\n );\r\n\r\n const validation: TValidation = source.validation;\r\n\r\n const triggers: Array<TTrigger> = validation.triggers;\r\n const rules: Array<TRule> = validation.rules;\r\n const actions: Array<TAction> = validation.actions;\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionEvaluation = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionEvaluation) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n\r\n sourceIndex++;\r\n }\r\n\r\n defaultValue = this._field.default.value.value;\r\n\r\n if (isEmpty(defaultValue)) {\r\n defaultValue = setEmptyValue(this._field);\r\n }\r\n\r\n return defaultValue;\r\n }\r\n}\r\n","import { TuiDay } from \"@taiga-ui/cdk\";\r\nimport { EFieldType } from \"../definitions/fields/form-view.fields.enum.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { hasKey, isNotEmpty } from \"./form-view.common.helper\";\r\n\r\nexport const findFieldFromKey = (fields: any[], key: string) => {\r\n const field = fields.find((field) => {\r\n if (field.key === key) {\r\n return field;\r\n }\r\n });\r\n\r\n return field;\r\n};\r\n\r\nexport const findFieldIndexFromKey = (fields: any[], key: string) => {\r\n let fieldIndex: number;\r\n\r\n fieldIndex = fields.findIndex((_: any) => {\r\n return key === _.key;\r\n });\r\n\r\n return fieldIndex;\r\n};\r\n\r\nexport const getSearchTextOptionsFromRemoteFile = async (\r\n field: any,\r\n childField: any,\r\n formGroup: any\r\n): Promise<any> => {\r\n const parentFieldValue = formGroup.controls[field.key].value;\r\n\r\n // Determine the URL of the remote file to fetch\r\n let fileUrl: string | undefined;\r\n if (childField.regexToGetJsonRemoteUrlKey) {\r\n const fileKey = parentFieldValue.match(\r\n childField.regexToGetJsonRemoteUrlKey\r\n )[0];\r\n fileUrl = childField.jsonRemoteUrlMapping[fileKey];\r\n } else {\r\n fileUrl = childField.fileUrl;\r\n }\r\n\r\n // Return early if there is no file URL\r\n if (!fileUrl) return;\r\n\r\n // Fetch the remote file and parse its JSON data\r\n const response = await fetch(fileUrl);\r\n const data = await response.json();\r\n\r\n // Return the data for the given parent field value\r\n return data[parentFieldValue];\r\n};\r\n\r\nexport const getSearchTextOptionsFromFieldConfig = (\r\n field: any,\r\n childField: any,\r\n formGroup: any\r\n): any => {\r\n let options: any;\r\n\r\n const fieldValue = formGroup.controls[field.key].value;\r\n\r\n if (isNotEmpty(childField[\"json\"])) {\r\n options = childField[\"json\"][fieldValue];\r\n }\r\n\r\n return options;\r\n};\r\n\r\nexport const formatSearchTextOptions = (\r\n options: { title: string; value: string }[]\r\n): string[] => {\r\n return options.map(({ title }) => title);\r\n};\r\n\r\nexport function highlightFieldError(field: any, error: any): any {\r\n field.invalid = error;\r\n field.focus = error;\r\n\r\n // if (!error) {\r\n // field[\"messages\"] = field[\"messages\"].filter(function (fieldMessage: {\r\n // type: string;\r\n // message: string;\r\n // }) {\r\n // return fieldMessage.type === \"error\";\r\n // });\r\n // }\r\n\r\n return field;\r\n}\r\n\r\nexport const addMessage = (\r\n field: any,\r\n message: { type: string; message: string }\r\n): any => {\r\n const isDuplicateMessage = (\r\n messages: { type: string; message: string }[],\r\n message: { type: string; message: string }\r\n ) => {\r\n return messages.some((fieldMessage: { type: string; message: string }) => {\r\n return (\r\n fieldMessage.type === message.type &&\r\n fieldMessage.message === message.message\r\n );\r\n });\r\n };\r\n\r\n field[\"messages\"] = [];\r\n\r\n if (hasKey(field, \"messages\")) {\r\n if (!isDuplicateMessage(field[\"messages\"], message)) {\r\n field[\"messages\"].push({\r\n type: message.type,\r\n message: message.message\r\n });\r\n }\r\n } else {\r\n field[\"messages\"] = [{ type: message.type, message: message.message }];\r\n }\r\n\r\n return field;\r\n};\r\nexport const removeMessage = (\r\n field: any,\r\n message: { type: string; message: string }\r\n): any => {\r\n field[\"messages\"] = field[\"messages\"].filter(function (fieldMessage) {\r\n return fieldMessage.type !== message.type;\r\n });\r\n\r\n return field;\r\n};\r\n\r\nexport function setFieldError(\r\n fields: any,\r\n errors: any,\r\n key: string,\r\n error: boolean\r\n) {\r\n const fieldIndex = fields.findIndex((field: any) => {\r\n return field.key === key;\r\n });\r\n\r\n const setErrorMessages = (field: any, errors: any) => {\r\n const getErrorMessage = (fieldLabel: string, errorType: string) => {\r\n let errorMessage: string = \"\";\r\n\r\n switch (errorType) {\r\n case \"required\":\r\n errorMessage = `${fieldLabel} is required!`;\r\n break;\r\n case \"email\":\r\n errorMessage = `${fieldLabel} has wrong email format!`;\r\n break;\r\n case \"min\":\r\n errorMessage = `${fieldLabel} has wrong value! Minimum value: ${field.validators.min}`;\r\n break;\r\n case \"minlength\":\r\n errorMessage = `${fieldLabel} has wrong length! Required minimum length: ${field.validators.minLength}`;\r\n break;\r\n case \"max\":\r\n errorMessage = `${fieldLabel} has wrong value! Maximum value: ${field.validators.maxLength}`;\r\n break;\r\n case \"maxlength\":\r\n errorMessage = `${fieldLabel} has wrong length! Required maximum length: ${field.validators.maxLength}`;\r\n break;\r\n case \"areEqual\":\r\n errorMessage = `${fieldLabel} must be equal!`;\r\n break;\r\n case \"pattern\":\r\n errorMessage = `${fieldLabel} is in incorrect format!`;\r\n break;\r\n default:\r\n errorMessage = `${fieldLabel}: ${errorType}`;\r\n break;\r\n }\r\n\r\n return errorMessage;\r\n };\r\n\r\n Object.keys(errors).forEach((error) => {\r\n field = addMessage(field, {\r\n type: \"error\",\r\n message: getErrorMessage(field.label, error)\r\n });\r\n });\r\n\r\n return field;\r\n };\r\n\r\n if (error) {\r\n fields[fieldIndex] = setErrorMessages(fields[fieldIndex], errors);\r\n } else {\r\n fields[fieldIndex][\"messages\"] = [];\r\n }\r\n\r\n fields[fieldIndex] = highlightFieldError(fields[fieldIndex], error);\r\n\r\n return fields;\r\n}\r\n\r\nexport const convertDateStringToTuiDayFormat = (date: string): TuiDay => {\r\n const splitDate = date.split(\"-\");\r\n const tuiDay = new TuiDay(\r\n Number(splitDate[2]), // Year\r\n Number(splitDate[1]) - 1, // Month, Why '-1' => Because Taiga-UI Required It, So...\r\n Number(splitDate[0]) // Day\r\n );\r\n\r\n return tuiDay;\r\n};\r\n\r\nexport const convertTuiDayFormatToDateString = (date: TuiDay): string => {\r\n let formattedDate: string;\r\n let year = date.year;\r\n let month = date.month;\r\n let day = date.day;\r\n\r\n formattedDate = `${day.toString().padStart(2, \"0\")}-${(month + 1)\r\n .toString()\r\n .padStart(2, \"0\")}-${year}`;\r\n\r\n return formattedDate;\r\n};\r\n\r\nexport const convertValueFromKwikUIFormatToBasicFormat = (\r\n field: TField,\r\n value: any\r\n) => {\r\n let convertedValue: any = value;\r\n\r\n if (isNotEmpty(value)) {\r\n switch (field.type) {\r\n case EFieldType.DATE:\r\n convertedValue = convertTuiDayFormatToDateString(value);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return convertedValue;\r\n};\r\n\r\nexport const convertValueFromBasicFormatToKwikUIFormat = (\r\n field: TField,\r\n value: any\r\n) => {\r\n let convertedValue: any = value;\r\n\r\n if (isNotEmpty(value)) {\r\n switch (field.type) {\r\n case EFieldType.RADIO:\r\n if (hasKey(value, \"label\")) {\r\n convertedValue = value.label;\r\n }\r\n break;\r\n case EFieldType.DATE:\r\n convertedValue = convertDateStringToTuiDayFormat(value);\r\n break;\r\n case EFieldType.TITLE:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return convertedValue;\r\n};\r\n","import {\r\n FormArray,\r\n FormGroup,\r\n ValidationErrors,\r\n Validators\r\n} from \"@angular/forms\";\r\nimport {\r\n EPattern,\r\n EPatternKey\r\n} from \"../definitions/common/form-view.common.enum.definitions\";\r\nimport { TField } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { Actions } from \"./form-view.actions.helper\";\r\nimport { hasKey, isNotEmpty } from \"./form-view.common.helper\";\r\nimport { Condition } from \"./form-view.condition.helper\";\r\nimport { Rules } from \"./form-view.rules.helper\";\r\n\r\nexport class Validations {\r\n private _formData: any;\r\n get formData(): any {\r\n return this._formData;\r\n }\r\n set formData(value: any) {\r\n this._formData = value;\r\n }\r\n\r\n private _previousFormData: any;\r\n get previousFormData(): any {\r\n return this._previousFormData;\r\n }\r\n set previousFormData(value: any) {\r\n this._previousFormData = value;\r\n }\r\n\r\n private _allFormsData: any;\r\n get allFormsData(): any {\r\n return this._allFormsData;\r\n }\r\n set allFormsData(value: any) {\r\n this._allFormsData = value;\r\n }\r\n\r\n private _field: TField;\r\n get field(): TField {\r\n return this._field;\r\n }\r\n set field(value: TField) {\r\n this._field = value;\r\n }\r\n\r\n private _takeAction: Function;\r\n\r\n constructor(\r\n field: TField,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any,\r\n takeAction: any\r\n ) {\r\n this._field = field;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._allFormsData = allFormsData;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n @log\r\n getFieldValidators(field: any) {\r\n let validators = [];\r\n\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"min\") &&\r\n isNotEmpty(field.validators.min)\r\n ) {\r\n validators.push(Validators.min(field.validators.min));\r\n }\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"max\") &&\r\n isNotEmpty(field.validators.max)\r\n ) {\r\n validators.push(Validators.max(field.validators.max));\r\n }\r\n if (\r\n hasKey(field, \"required\") ||\r\n (hasKey(field, \"validators\") && hasKey(field.validators, \"required\"))\r\n ) {\r\n validators.push(Validators.required);\r\n }\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"minLength\") &&\r\n isNotEmpty(field.validators.minLength)\r\n ) {\r\n validators.push(Validators.minLength(field.validators.minLength));\r\n }\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"maxLength\") &&\r\n isNotEmpty(field.validators.maxLength)\r\n ) {\r\n validators.push(Validators.maxLength(field.validators.maxLength));\r\n }\r\n if (\r\n hasKey(field, \"validators\") &&\r\n hasKey(field.validators, \"pattern\") &&\r\n isNotEmpty(field.validators.pattern)\r\n ) {\r\n if (hasKey(field.validators.pattern, \"key\")) {\r\n if (field.validators.pattern.key === EPatternKey.CUSTOM) {\r\n validators.push(Validators.pattern(field.validators.pattern.pattern));\r\n } else {\r\n validators.push(\r\n Validators.pattern(EPattern[field.validators.pattern.key])\r\n );\r\n }\r\n }\r\n }\r\n\r\n return validators;\r\n }\r\n\r\n @log\r\n getFormValidationErrors(\r\n control: FormGroup\r\n ): { name: string; value: string }[] {\r\n let errors: { name: string; value: string }[] = [];\r\n\r\n for (const key in control.controls) {\r\n const controlErrors: ValidationErrors = control.controls[key].errors;\r\n if (controlErrors !== null && controlErrors !== undefined) {\r\n Object.keys(controlErrors).forEach((keyError) => {\r\n errors.push({\r\n name: keyError,\r\n value: controlErrors[keyError]\r\n });\r\n });\r\n }\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n @log\r\n findInvalidControlsRecursive(formToInvestigate: FormGroup | FormArray) {\r\n var controls: any[] = [];\r\n\r\n let recursiveFunc = (form: FormGroup | FormArray) => {\r\n Object.keys(form.controls).forEach((field: any) => {\r\n const control = form.get(field);\r\n if (control.invalid) {\r\n controls.push({\r\n key: field,\r\n invalid: true\r\n });\r\n } else {\r\n controls.push({\r\n key: field,\r\n invalid: false\r\n });\r\n }\r\n if (control instanceof FormGroup) {\r\n recursiveFunc(control);\r\n } else if (control instanceof FormArray) {\r\n recursiveFunc(control);\r\n }\r\n });\r\n };\r\n\r\n recursiveFunc(formToInvestigate);\r\n\r\n return controls;\r\n }\r\n\r\n @log\r\n async validateField(): Promise<any> {\r\n const validations = this._field.validation;\r\n\r\n const triggers = validations.triggers;\r\n const rules = validations.rules;\r\n const actions = validations.actions;\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionEvaluation = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionEvaluation) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n }\r\n}\r\n","import { FormControl, FormGroup } from \"@angular/forms\";\r\nimport { log } from \"./form-view.decorators\";\r\nimport { Defaults } from \"./helpers/form-view.defaults.helper\";\r\nimport { convertValueFromBasicFormatToKwikUIFormat } from \"./helpers/form-view.fields.helper\";\r\nimport { Validations } from \"./helpers/form-view.validations.helper\";\r\n\r\nexport class KwikIDFormViewService {\r\n constructor() {}\r\n\r\n // 'init' stage of the form\r\n @log\r\n async createFormGroup(\r\n fields: any,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any,\r\n takeAction: Function\r\n ) {\r\n let formGroup = new FormGroup({});\r\n\r\n for (let field of fields) {\r\n if (field.type !== \"title\") {\r\n const defaults = new Defaults(\r\n field,\r\n allFormsData,\r\n formData,\r\n previousFormData,\r\n takeAction\r\n );\r\n let value = await defaults.getDefaultValue();\r\n value = convertValueFromBasicFormatToKwikUIFormat(field, value);\r\n\r\n const validators = new Validations(\r\n field,\r\n formData,\r\n previousFormData,\r\n allFormsData,\r\n takeAction\r\n ).getFieldValidators(field);\r\n\r\n formGroup.addControl(\r\n field.key,\r\n new FormControl(\r\n { value: value, disabled: field.disabled },\r\n { validators: validators }\r\n )\r\n );\r\n }\r\n }\r\n\r\n return formGroup;\r\n }\r\n}\r\n","import { TAction } from \"../definitions/actions/form-view.actions.type.definitions\";\r\nimport {\r\n TApi,\r\n TApiRequest,\r\n TApiRequestBody,\r\n TApiRequestBodyParam,\r\n TApiResponse,\r\n TApiStatus\r\n} from \"../definitions/apis/form-view.apis.type.definitions\";\r\nimport { TFieldApiCall } from \"../definitions/fields/form-view.fields.type.definitions\";\r\nimport { TRule } from \"../definitions/rules/form-view.rules.type.definitions\";\r\nimport { TSource } from \"../definitions/sources/form-view.sources.type.definitions\";\r\nimport { TTrigger } from \"../definitions/triggers/form-view.triggers.type.definitions\";\r\nimport { TValidation } from \"../definitions/validations/form-view.validations.type.definitions\";\r\nimport { log } from \"../form-view.decorators\";\r\nimport { Actions } from \"./form-view.actions.helper\";\r\nimport { setValueToObject } from \"./form-view.common.helper\";\r\nimport { Condition } from \"./form-view.condition.helper\";\r\nimport { Rules } from \"./form-view.rules.helper\";\r\nimport { Sources } from \"./form-view.sources.helper\";\r\n\r\nexport class Apis {\r\n private _formData: any;\r\n private _previousFormData: any;\r\n private _allFormsData: any;\r\n private _field: TFieldApiCall;\r\n private _takeAction: Function;\r\n\r\n private _api: TApi;\r\n private _request: TApiRequest;\r\n private _response: TApiResponse;\r\n private _status: TApiStatus;\r\n\r\n constructor(\r\n field: TFieldApiCall,\r\n formData: any,\r\n previousFormData: any,\r\n allFormsData: any,\r\n takeAction: Function\r\n ) {\r\n this._field = field;\r\n this._formData = formData;\r\n this._previousFormData = previousFormData;\r\n this._allFormsData = allFormsData;\r\n this._takeAction = takeAction;\r\n\r\n this._api = field.api;\r\n this._request = field.api.request;\r\n this._response = field.api.response;\r\n this._status = field.api.status;\r\n }\r\n\r\n @log\r\n public async setRequestBodyParams(): Promise<TFieldApiCall> {\r\n let params: Array<TApiRequestBodyParam> = this._request.body.params;\r\n\r\n let paramIndex = 0;\r\n for (let param of params) {\r\n let sources: Array<TSource> = param.sources;\r\n\r\n let sourceIndex = 0;\r\n for (let source of sources) {\r\n const sources = new Sources(\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n );\r\n const value = sources.getValueFromSource(source);\r\n // Set the Value of current source.\r\n this._field = setValueToObject(\r\n this._field,\r\n `api.request.body.params[${paramIndex}].sources[${sourceIndex}].value`,\r\n value\r\n );\r\n\r\n const validation: TValidation = source.validation;\r\n\r\n const triggers: Array<TTrigger> = validation?.triggers ?? [];\r\n const rules: Array<TRule> = validation?.rules ?? [];\r\n const actions: Array<TAction> = validation?.actions ?? [];\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionEvaluation = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionEvaluation) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n\r\n sourceIndex++;\r\n }\r\n\r\n paramIndex++;\r\n }\r\n\r\n return this._field;\r\n }\r\n\r\n @log\r\n public async validateRequestBody(): Promise<TFieldApiCall> {\r\n const body: TApiRequestBody = this._request.body;\r\n\r\n const validation: TValidation = body.validation;\r\n\r\n const triggers: Array<TTrigger> = validation.triggers;\r\n const rules: Array<TRule> = validation.rules;\r\n const actions: Array<TAction> = validation.actions;\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionSuccess = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionSuccess) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n\r\n return this._field;\r\n }\r\n\r\n @log\r\n public async validateApiCallResponse(): Promise<TFieldApiCall> {\r\n const validation: TValidation = this._response.validation;\r\n\r\n const triggers: Array<TTrigger> = validation.triggers;\r\n const rules: Array<TRule> = validation.rules;\r\n const actions: Array<TAction> = validation.actions;\r\n\r\n const rulesMapping = new Rules(\r\n rules,\r\n this._field,\r\n this._formData,\r\n this._previousFormData,\r\n this._allFormsData\r\n ).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionSuccess = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionSuccess) {\r\n const actions = new Actions(\r\n action,\r\n this._field,\r\n rulesMapping,\r\n this._allFormsData,\r\n this._formData,\r\n this._previousFormData,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n\r\n return this._field;\r\n }\r\n\r\n getPropsValues(): any {\r\n return {\r\n field: this._field,\r\n formData: this._formData,\r\n previousFormData: this._previousFormData,\r\n allFormsData: this._allFormsData\r\n };\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { TuiAlertService } from \"@taiga-ui/core\";\r\nimport { TuiPushService } from \"@taiga-ui/kit\";\r\nimport { pairwise } from \"rxjs/operators\";\r\nimport { EActionKey } from \"./definitions/actions/form-view.actions.enum.definitions\";\r\nimport { TAction } from \"./definitions/actions/form-view.actions.type.definitions\";\r\nimport { EApiStatusType } from \"./definitions/apis/form-view.apis.enum.definitions\";\r\nimport { EMessageType } from \"./definitions/common/form-view.common.enum.definitions\";\r\nimport { TMessage } from \"./definitions/common/form-view.common.type.definitions\";\r\nimport { EFieldType } from \"./definitions/fields/form-view.fields.enum.definitions\";\r\nimport {\r\n TField,\r\n TFieldApiCall,\r\n TFieldTitle\r\n} from \"./definitions/fields/form-view.fields.type.definitions\";\r\nimport { log } from \"./form-view.decorators\";\r\nimport { KwikIDFormViewService } from \"./form-view.service\";\r\nimport { Actions } from \"./helpers/form-view.actions.helper\";\r\nimport { Apis } from \"./helpers/form-view.apis.helper\";\r\nimport {\r\n hasKey,\r\n isEmpty,\r\n isNotEmpty,\r\n setEmptyValue\r\n} from \"./helpers/form-view.common.helper\";\r\nimport { Condition } from \"./helpers/form-view.condition.helper\";\r\nimport {\r\n addMessage,\r\n convertValueFromKwikUIFormatToBasicFormat,\r\n findFieldFromKey,\r\n findFieldIndexFromKey,\r\n getSearchTextOptionsFromFieldConfig,\r\n getSearchTextOptionsFromRemoteFile,\r\n highlightFieldError,\r\n removeMessage,\r\n setFieldError\r\n} from \"./helpers/form-view.fields.helper\";\r\nimport { Rules } from \"./helpers/form-view.rules.helper\";\r\nimport { Sources } from \"./helpers/form-view.sources.helper\";\r\nimport { Validations } from \"./helpers/form-view.validations.helper\";\r\n\r\n@Component({\r\n selector: \"kwikid-form-view\",\r\n templateUrl: \"./form-view.component.html\",\r\n styleUrls: [\"./form-view.component.scss\"],\r\n providers: [KwikIDFormViewService]\r\n})\r\nexport class KwikIDFormViewComponent implements OnInit, AfterViewInit {\r\n @Input()\r\n formConfig: any;\r\n\r\n @Input()\r\n formData: any;\r\n\r\n @Input()\r\n apiCallResponse: any = {};\r\n\r\n @Input()\r\n isMobileView: boolean = false;\r\n\r\n @Input()\r\n allFormsData: any;\r\n\r\n @Input()\r\n formsList: any[];\r\n\r\n @Output()\r\n onClickViewForms: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickSaveForm: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickApiCall: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n getActiveFormData: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n formFields: any[] = [];\r\n previousFormData: any = {};\r\n\r\n loading: boolean = true;\r\n viewFormsButton = {\r\n disabled: false,\r\n showLoader: false\r\n };\r\n saveFormButton = {\r\n disabled: false,\r\n showLoader: false\r\n };\r\n\r\n formGroup: FormGroup = new FormGroup({});\r\n\r\n constructor(\r\n @Inject(TuiPushService) protected readonly push: TuiPushService,\r\n @Inject(TuiAlertService) protected readonly alert: TuiAlertService,\r\n private formViewService: KwikIDFormViewService\r\n ) {}\r\n\r\n @log\r\n ngOnInit(): void {\r\n (async () => {\r\n await this.initFormConfig(this.formConfig);\r\n\r\n this.loading = false;\r\n })();\r\n }\r\n\r\n @log\r\n ngAfterViewInit(): void {}\r\n\r\n @log\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const verifyChange = (key: string) => {\r\n return hasKey(changes, key) && !changes[key].firstChange;\r\n };\r\n if (verifyChange(\"formData\")) {\r\n this.formData = {\r\n ...this.formData,\r\n ...changes.formData.currentValue\r\n };\r\n }\r\n if (verifyChange(\"apiCallResponse\")) {\r\n this.apiCallResponse = changes.apiCallResponse.currentValue;\r\n\r\n this.formData = {\r\n ...this.formData,\r\n [this.apiCallResponse.key]: this.apiCallResponse.response\r\n };\r\n\r\n this.formGroup.patchValue(\r\n {\r\n [this.apiCallResponse.key]: this.apiCallResponse.response\r\n },\r\n { emitEvent: false }\r\n );\r\n\r\n let field: TFieldApiCall = findFieldFromKey(\r\n this.formFields,\r\n this.apiCallResponse.key\r\n );\r\n\r\n const apis = new Apis(\r\n field,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n (async () => {\r\n field = await apis.validateApiCallResponse();\r\n })();\r\n }\r\n if (verifyChange(\"isMobileView\")) {\r\n this.isMobileView = changes.isMobileView.currentValue;\r\n }\r\n if (verifyChange(\"allFormsData\")) {\r\n this.allFormsData = changes.allFormsData.currentValue;\r\n }\r\n if (verifyChange(\"formsList\")) {\r\n this.formsList = changes.formsList.currentValue;\r\n }\r\n if (verifyChange(\"formConfig\")) {\r\n this.formConfig = changes.formConfig.currentValue;\r\n\r\n (async () => {\r\n await this.initFormConfig(this.formConfig);\r\n })();\r\n }\r\n }\r\n\r\n @log\r\n async initFormConfig(formConfig: any) {\r\n this.setFormFieldsFromFormConfig(formConfig);\r\n\r\n this.setFormDataFromAllFormsData();\r\n\r\n this.formGroup = await this.formViewService.createFormGroup(\r\n this.formFields,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n for (let field of this.formFields) {\r\n if (field.type !== \"title\") {\r\n this.previousFormData = {\r\n ...this.previousFormData,\r\n [field.key]: this.formGroup.controls[field.key].value\r\n };\r\n\r\n this.formGroup.controls[field.key].valueChanges\r\n .pipe(pairwise())\r\n .subscribe(([previousValue, currentValue]) => {\r\n this.previousFormData = {\r\n ...this.previousFormData,\r\n [field.key]: previousValue\r\n };\r\n\r\n this.formData = {\r\n ...this.formData,\r\n [field.key]: currentValue\r\n };\r\n });\r\n }\r\n }\r\n for (let field of this.formFields) {\r\n if (field.type !== \"title\") {\r\n (async () => {\r\n field = await this.handleConnectedElements(\r\n {\r\n key: field.key,\r\n value: this.formGroup.controls[field.key].value\r\n },\r\n \"ON_INIT\"\r\n );\r\n })();\r\n }\r\n }\r\n }\r\n\r\n @log\r\n setFormFieldsFromFormConfig(formConfig: any) {\r\n if (hasKey(formConfig, \"fields\")) {\r\n this.formFields = formConfig.fields;\r\n } else if (\r\n hasKey(formConfig, \"multiForm\") &&\r\n hasKey(formConfig.multiForm, \"fields\")\r\n ) {\r\n this.formFields = formConfig.multiForm.fields;\r\n }\r\n }\r\n\r\n @log\r\n setFormDataFromAllFormsData() {\r\n if (hasKey(this.allFormsData, this.formConfig.key)) {\r\n this.formData = this.allFormsData[this.formConfig.key];\r\n } else {\r\n this.formData = {};\r\n }\r\n }\r\n\r\n @log\r\n async handleConnectedElementFieldActions(\r\n connectedFieldConfig: any,\r\n connectedField: any\r\n ) {\r\n if (hasKey(connectedFieldConfig, \"rules\")) {\r\n const rulesMapping = new Rules(\r\n connectedFieldConfig.rules,\r\n connectedField,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData\r\n ).mapping();\r\n\r\n for (let action of connectedFieldConfig.actions) {\r\n const conditionSuccess = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionSuccess) {\r\n const actions = new Actions(\r\n action,\r\n connectedField,\r\n rulesMapping,\r\n this.allFormsData,\r\n this.formData,\r\n this.previousFormData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n }\r\n\r\n return connectedField;\r\n }\r\n\r\n @log\r\n async handleConnectedElementFields(\r\n currentField: any,\r\n connectedFieldConfig: any,\r\n eventType: string\r\n ) {\r\n let connectedField = findFieldFromKey(\r\n this.formFields,\r\n connectedFieldConfig[\"key\"]\r\n );\r\n\r\n switch (eventType) {\r\n case \"INIT\":\r\n if (\r\n hasKey(connectedField, \"triggers\") &&\r\n connectedField.triggers.includes(\"INIT\")\r\n ) {\r\n if (this.isFieldEnabled(connectedField.key)) {\r\n if (hasKey(connectedFieldConfig, \"connectedParentFields\")) {\r\n switch (connectedFieldConfig.type) {\r\n case \"dropdown-with-search\":\r\n connectedField = await this.handleFieldTypeSearchText(\r\n currentField,\r\n connectedField\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n connectedField = await this.handleConnectedElementFieldActions(\r\n connectedFieldConfig,\r\n connectedField\r\n );\r\n }\r\n break;\r\n case \"VALUE_CHANGE\":\r\n if (\r\n hasKey(connectedFieldConfig, \"triggers\") &&\r\n connectedFieldConfig.triggers.includes(\"VALUE_CHANGE\")\r\n ) {\r\n switch (connectedField.type) {\r\n case \"dropdown-with-search\":\r\n connectedField = await this.handleFieldTypeSearchText(\r\n currentField,\r\n connectedField\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n connectedField = await this.handleConnectedElementFieldActions(\r\n connectedFieldConfig,\r\n connectedField\r\n );\r\n }\r\n break;\r\n case \"NESTED_LINK\":\r\n if (\r\n hasKey(connectedFieldConfig, \"triggers\") &&\r\n connectedFieldConfig.triggers.includes(\"NESTED_LINK\")\r\n ) {\r\n connectedField = await this.handleConnectedElementFieldActions(\r\n connectedFieldConfig,\r\n connectedField\r\n );\r\n }\r\n default:\r\n if (hasKey(connectedFieldConfig, \"triggers\")) {\r\n connectedField = await this.handleConnectedElementFieldActions(\r\n connectedFieldConfig,\r\n connectedField\r\n );\r\n }\r\n break;\r\n }\r\n\r\n if (hasKey(connectedField, \"connectedElements\")) {\r\n for (const connectedFieldConfig of connectedField.connectedElements\r\n .fields) {\r\n connectedField = this.handleConnectedElementFields(\r\n connectedField,\r\n connectedFieldConfig,\r\n \"NESTED_LINK\"\r\n );\r\n }\r\n }\r\n\r\n return currentField;\r\n }\r\n\r\n @log\r\n handleConnectedElements(e: any, eventType: string) {\r\n let currentField = findFieldFromKey(this.formFields, e.key);\r\n\r\n if (hasKey(currentField, \"connectedElements\")) {\r\n let connectedFields = currentField.connectedElements.connectedFields;\r\n for (let connectedFieldConfig of connectedFields) {\r\n currentField = this.handleConnectedElementFields(\r\n currentField,\r\n connectedFieldConfig,\r\n eventType\r\n );\r\n }\r\n }\r\n }\r\n\r\n // DOM Event Handlers\r\n @log\r\n handleGetKeyValue(e: any) {\r\n this.formGroup.patchValue(\r\n {\r\n [e.key]: e.value\r\n },\r\n { emitEvent: false }\r\n );\r\n\r\n // Currently set only for dropdown-with-search connected fields\r\n let field = findFieldFromKey(this.formFields, e.key);\r\n\r\n if (\r\n field.type !== \"title\" &&\r\n field.validation.triggers.includes(\"ON_CHANGE\")\r\n ) {\r\n const validations = new Validations(\r\n field,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n (async () => {\r\n await validations.validateField();\r\n })();\r\n\r\n this.handleConnectedElements(\r\n {\r\n key: field.key,\r\n value: this.formGroup.controls[field.key].value\r\n },\r\n \"ON_CHANGE\"\r\n );\r\n }\r\n }\r\n\r\n @log\r\n async handleOnClickResetFormFields(e: any, field: TFieldTitle) {\r\n for (let f of field.reset.fields) {\r\n for (let a of f.actions) {\r\n const resetField = findFieldFromKey(this.formFields, a.props.fieldKey);\r\n const actions = new Actions(\r\n a,\r\n resetField,\r\n {},\r\n this.allFormsData,\r\n this.formData,\r\n this.previousFormData,\r\n this.takeAction.bind(this)\r\n );\r\n await actions.execute();\r\n }\r\n }\r\n }\r\n\r\n @log\r\n async handleOnClickApiCall(e: any) {\r\n let field: TFieldApiCall = findFieldFromKey(this.formFields, e.key);\r\n\r\n if (field.type === \"api-call\") {\r\n // set button status to loading\r\n field[\"api\"][\"status\"][\"value\"] = EApiStatusType.LOADING;\r\n field[\"showLoader\"] = true;\r\n this.viewFormsButton[\"disabled\"] = true;\r\n this.viewFormsButton[\"showLoader\"] = true;\r\n this.saveFormButton[\"disabled\"] = true;\r\n this.saveFormButton[\"showLoader\"] = true;\r\n\r\n const apis = new Apis(\r\n field,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n field = await apis.setRequestBodyParams();\r\n\r\n field = await apis.validateRequestBody();\r\n\r\n if (field.api.request.body.validation.is_valid) {\r\n // Call API Here\r\n this.onClickApiCall.emit({\r\n key: e.key,\r\n request: {\r\n mode: \"POST\",\r\n body: field.api.request.body.value,\r\n headers: {},\r\n url: field.api.request.url\r\n }\r\n });\r\n } else {\r\n // Request Body Validation Failed\r\n // Highlight Error in UI to User to Retry After Sometime.\r\n // Take Actions based on Validation\r\n setTimeout(() => {\r\n field[\"api\"][\"status\"][\"value\"] = EApiStatusType.FAILED;\r\n field[\"showLoader\"] = false;\r\n }, 500);\r\n }\r\n\r\n this.viewFormsButton[\"disabled\"] = false;\r\n this.viewFormsButton[\"showLoader\"] = false;\r\n this.saveFormButton[\"disabled\"] = false;\r\n this.saveFormButton[\"showLoader\"] = false;\r\n }\r\n }\r\n\r\n @log\r\n handleOnClickViewForms(e: any) {\r\n this.onClickViewForms.emit({\r\n clicked: true\r\n });\r\n }\r\n\r\n @log\r\n handleOnClickSaveForm(e: any) {\r\n let formData = this.formGroup.getRawValue();\r\n\r\n for (let field of this.formFields) {\r\n if (field.type !== EFieldType.TITLE) {\r\n if (field.hidden) {\r\n delete formData[field.key];\r\n } else {\r\n formData[field.key] = convertValueFromKwikUIFormatToBasicFormat(\r\n field,\r\n formData[field.key]\r\n );\r\n }\r\n }\r\n }\r\n\r\n for (let field of this.formFields) {\r\n if (\r\n field.type !== EFieldType.TITLE &&\r\n field.validation.triggers.includes(\"ON_SAVE\")\r\n ) {\r\n const validations = new Validations(\r\n field,\r\n formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n (async () => {\r\n await validations.validateField();\r\n })();\r\n }\r\n }\r\n\r\n if (this.formGroup.invalid) {\r\n const controls = new Validations(\r\n undefined,\r\n formData,\r\n this.previousFormData,\r\n this.allFormsData,\r\n this.takeAction.bind(this)\r\n ).findInvalidControlsRecursive(this.formGroup);\r\n\r\n let firstFieldWithError: string = \"\";\r\n\r\n for (let control of controls) {\r\n if (control.invalid && isEmpty(firstFieldWithError)) {\r\n firstFieldWithError = control.key;\r\n }\r\n this.formFields = setFieldError(\r\n this.formFields,\r\n this.formGroup.controls[control.key].errors,\r\n control.key,\r\n control.invalid\r\n );\r\n }\r\n\r\n this.toggleErrorNotification(true);\r\n\r\n return;\r\n }\r\n\r\n Object.keys(formData).map((key) => {\r\n if (isEmpty(formData[key])) {\r\n formData[key] = \"\";\r\n }\r\n });\r\n\r\n this.onClickSaveForm.emit({ formConfig: this.formConfig, data: formData });\r\n }\r\n\r\n showErrorNotification: boolean = false;\r\n @log\r\n toggleErrorNotification(show) {\r\n this.showErrorNotification = show;\r\n }\r\n\r\n // Component Helpers\r\n @log\r\n fieldHide(fieldKey: string) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n this.formFields[fieldIndex][\"hidden\"] = true;\r\n }\r\n\r\n @log\r\n fieldShow(fieldKey: string) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n this.formFields[fieldIndex][\"hidden\"] = false;\r\n this.formGroup.updateValueAndValidity();\r\n }\r\n\r\n @log\r\n fieldDisable(fieldKey: string) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n this.formFields[fieldIndex][\"disabled\"] = true;\r\n\r\n if (isNotEmpty(this.formGroup.controls)) {\r\n this.formGroup.controls[field.key].disable({\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n @log\r\n fieldEnable(fieldKey: string) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n this.formFields[fieldIndex][\"disabled\"] = false;\r\n\r\n if (isNotEmpty(this.formGroup.controls)) {\r\n this.formGroup.controls[field.key].enable({\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n @log\r\n fieldReset(fieldKey: string) {\r\n // Find the field and its index in the formFields array\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = findFieldIndexFromKey(this.formFields, fieldKey);\r\n\r\n // Delete the field from the formData object\r\n delete this.formData[fieldKey];\r\n\r\n // Reset the value of the field in the formGroup\r\n this.formGroup.controls[field.key].reset(setEmptyValue(field), {\r\n emitEvent: false\r\n });\r\n\r\n // Reset the messages and errors for the field\r\n field = removeMessage(field, {\r\n type: EMessageType.WARNING,\r\n message: \"\"\r\n });\r\n field = removeMessage(field, {\r\n type: EMessageType.SUCCESS,\r\n message: \"\"\r\n });\r\n this.fieldErrorHide(fieldKey, {\r\n type: EMessageType.ERROR,\r\n message: \"\"\r\n });\r\n\r\n // Reset the value of the field in the formFields array\r\n switch (field.type) {\r\n case \"api-call\":\r\n const fieldApiCall = field as TFieldApiCall;\r\n fieldApiCall.api.status.value = EApiStatusType.DEFAULT;\r\n this.formFields[fieldIndex] = fieldApiCall;\r\n break;\r\n default:\r\n field.focus = false;\r\n field.invalid = false;\r\n this.formFields[fieldIndex] = field;\r\n break;\r\n }\r\n }\r\n\r\n @log\r\n fieldErrorShow(fieldKey: string, message: TMessage) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n field = highlightFieldError(field, true);\r\n field = addMessage(field, message);\r\n\r\n this.formFields[fieldIndex] = field;\r\n }\r\n\r\n @log\r\n fieldErrorHide(fieldKey: string, message: TMessage) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n field = highlightFieldError(field, false);\r\n field = removeMessage(field, message);\r\n\r\n this.formFields[fieldIndex] = field;\r\n }\r\n\r\n @log\r\n fieldMessageShow(fieldKey: string, message: TMessage) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n field = addMessage(field, message);\r\n\r\n this.formFields[fieldIndex] = field;\r\n }\r\n\r\n @log\r\n fieldMessageHide(fieldKey: string, message: TMessage) {\r\n let field = findFieldFromKey(this.formFields, fieldKey);\r\n let fieldIndex = this.formFields.findIndex((_: any) => {\r\n return field.key === _.key;\r\n });\r\n\r\n field = removeMessage(field, message);\r\n\r\n this.formFields[fieldIndex] = field;\r\n }\r\n\r\n @log\r\n setObjectValue(field: any, path: string, value: any) {}\r\n\r\n @log\r\n patchFieldControlValue(key: string, value: any) {\r\n this.formGroup.patchValue(\r\n {\r\n [key]: value\r\n },\r\n { emitEvent: false }\r\n );\r\n }\r\n\r\n @log\r\n isFieldValid(fieldKey: string) {\r\n return this.formGroup.controls[fieldKey].valid;\r\n }\r\n\r\n @log\r\n isFieldEnabled(fieldKey: string) {\r\n return this.formGroup.controls[fieldKey].enabled;\r\n }\r\n\r\n @log\r\n getFormGroupRawValues() {\r\n return this.formGroup.getRawValue();\r\n }\r\n\r\n @log\r\n async handleFieldTypeSearchText(field: any, childField: any) {\r\n if (hasKey(childField, \"json\")) {\r\n childField.options = getSearchTextOptionsFromFieldConfig(\r\n field,\r\n childField,\r\n this.formGroup\r\n );\r\n }\r\n if (hasKey(childField, \"fetchJsonFromRemote\")) {\r\n childField.options = await getSearchTextOptionsFromRemoteFile(\r\n field,\r\n childField,\r\n this.formGroup\r\n );\r\n }\r\n\r\n return childField;\r\n }\r\n\r\n @log\r\n async takeAction(\r\n action: TAction,\r\n field: TField,\r\n allFormsData: any,\r\n formData: any,\r\n previousFormData: any\r\n ) {\r\n switch (action.key) {\r\n case EActionKey.FIELD_HIDE:\r\n this.fieldHide(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_SHOW:\r\n this.fieldShow(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_DISABLE:\r\n this.fieldDisable(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_ENABLE:\r\n this.fieldEnable(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_RESET:\r\n this.fieldReset(action.props.fieldKey);\r\n break;\r\n case EActionKey.FIELD_ERROR_SHOW:\r\n this.fieldErrorShow(action.props.fieldKey, action.props.message);\r\n break;\r\n case EActionKey.FIELD_ERROR_HIDE:\r\n this.fieldErrorHide(action.props.fieldKey, action.props.message);\r\n break;\r\n case EActionKey.FIELD_MESSAGE_SHOW:\r\n this.fieldMessageShow(action.props.fieldKey, action.props.message);\r\n break;\r\n case EActionKey.FIELD_MESSAGES_HIDE:\r\n this.fieldMessageHide(action.props.fieldKey, action.props.message);\r\n break;\r\n case EActionKey.SET_VALUE:\r\n const sources = new Sources(\r\n field,\r\n this.formData,\r\n this.previousFormData,\r\n this.allFormsData\r\n );\r\n\r\n const sourceValue = await sources.getValueFromSource(\r\n action.props.value.source\r\n );\r\n sources.setValueToSource(action.props.value.destination, sourceValue);\r\n\r\n field = sources.field;\r\n this.formData = sources.formData;\r\n this.allFormsData = sources.allFormsData;\r\n this.previousFormData = sources.previousFormData;\r\n\r\n break;\r\n case EActionKey.HANDLE_CONNECTED_ELEMENTS:\r\n this.handleConnectedElements({ key: field.key }, \"ACTION\");\r\n break;\r\n case EActionKey.CUSTOM:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"kwikid-form-container\"\r\n *ngIf=\"!this.loading\"\r\n>\r\n <div id=\"uf-form-fields-header-container\">\r\n <div id=\"uf-form-fields-title\">\r\n {{ this.formConfig.title }}\r\n </div>\r\n <div id=\"uf-form-fields-steps\">\r\n Step {{ this.formConfig.sequenceNo }} of {{ this.formsList.length }}\r\n </div>\r\n <hr />\r\n </div>\r\n <form\r\n class=\"kwikid-form show\"\r\n [formGroup]=\"this.formGroup\"\r\n >\r\n <ng-container *ngFor=\"let field of this.formFields; let i = index\">\r\n <ng-container [ngSwitch]=\"field.type\">\r\n <!-- Form Title -->\r\n <ng-container *ngSwitchCase=\"'title'\">\r\n <div\r\n class=\"title\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <div>\r\n {{ field.label }}\r\n </div>\r\n <kwikui-button\r\n *ngIf=\"field?.reset\"\r\n appearance=\"whiteblock\"\r\n size=\"s\"\r\n label=\"Reset\"\r\n (onClick)=\"this.handleOnClickResetFormFields($event, field)\"\r\n ></kwikui-button>\r\n </div>\r\n </ng-container>\r\n <!-- Input Text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input\r\n [case]=\"field?.properties?.case\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [type]=\"'text'\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-checkbox-block\r\n [contentAlign]=\"field?.properties?.contentAlign ?? 'left'\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.properties?.placeholder\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [size]=\"field?.properties?.size ?? 'l'\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-checkbox-block\r\n ><kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-number\r\n [decimal]=\"field?.properties?.decimal\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [max]=\"field?.properties?.max\"\r\n [min]=\"field?.properties?.min\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [postfix]=\"field?.properties?.postfix ?? ''\"\r\n [precision]=\"field?.properties?.precision\"\r\n [prefix]=\"field?.properties?.prefix ?? ''\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-number\r\n ><kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-date\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [max]=\"field?.properties?.max\"\r\n [min]=\"field?.properties?.min\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-date>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Phone -->\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-phone\r\n [countryCode]=\"field?.properties?.countryCode\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [phoneMaskAfterCountryCode]=\"\r\n field?.properties?.phoneMaskAfterCountryCode\r\n \"\r\n [placeholder]=\"field?.placeholder\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-phone>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <label\r\n [tuiLabel]=\"labelTemplate\"\r\n style=\"min-height: auto\"\r\n >\r\n <kwikui-radio-list\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [items]=\"field?.options\"\r\n [label]=\"field?.label\"\r\n [orientation]=\"field?.properties?.orientation\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [size]=\"field?.properties?.size\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-radio-list>\r\n </label>\r\n <ng-template #labelTemplate>\r\n <p\r\n class=\"tui-space_bottom-2\"\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <b>\r\n {{ field.label }}\r\n <span *ngIf=\"field.validators?.required\"></span>\r\n </b>\r\n </p>\r\n </ng-template>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Dropdown -->\r\n <ng-container *ngSwitchCase=\"'dropdown-with-search'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-select-combobox\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [options]=\"field.options\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-select-combobox>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- API Call -->\r\n <ng-container *ngSwitchCase=\"'api-call'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-button-api-call\r\n [apiStatus]=\"field?.api?.status?.value\"\r\n [class]=\"field?.class\"\r\n [disabled]=\"field?.disabled\"\r\n [id]=\"field.key\"\r\n [label]=\"field?.api?.status?.labels[field?.api?.status?.value]\"\r\n [showLoader]=\"field?.disabled === 'loading'\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: fit-content\"\r\n (onClick)=\"this.handleOnClickApiCall($event)\"\r\n ></kwikui-button-api-call>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Mobile OTP -->\r\n <ng-container *ngSwitchCase=\"'otp'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-otp\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [mask]=\"field?.properties?.mask\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-otp>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Aadhaar Number -->\r\n <ng-container *ngSwitchCase=\"'aadhaar-number'\">\r\n <div\r\n [hidden]=\"field?.hidden\"\r\n id=\"field_{{ field.key }}\"\r\n >\r\n <kwikui-input-aadhaar\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-aadhaar>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </form>\r\n <div class=\"kwikid-form-buttons\">\r\n <kwikui-button\r\n *ngIf=\"this.isMobileView\"\r\n [disabled]=\"viewFormsButton.disabled\"\r\n id=\"\"\r\n label=\"View Forms\"\r\n [showLoader]=\"viewFormsButton.showLoader\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"secondary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"this.handleOnClickViewForms($event)\"\r\n ></kwikui-button>\r\n <kwikui-button\r\n [disabled]=\"saveFormButton.disabled\"\r\n id=\"\"\r\n label=\"Save\"\r\n [showLoader]=\"saveFormButton.showLoader\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"primary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"this.handleOnClickSaveForm($event)\"\r\n ></kwikui-button>\r\n </div>\r\n</div>\r\n<div\r\n class=\"kwikid-form-container-loading\"\r\n *ngIf=\"this.loading\"\r\n>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n</div>\r\n<tui-push\r\n id=\"field-error-notification\"\r\n *tuiPush=\"showErrorNotification\"\r\n heading=\"Missing/Incorrect Fields!\"\r\n type=\"Error\"\r\n (close)=\"toggleErrorNotification(false)\"\r\n>\r\n <tui-svg\r\n src=\"tuiIconCancel\"\r\n style=\"color: #fff !important\"\r\n >\r\n </tui-svg>\r\n</tui-push>\r\n","export const hasKey = (object: any, key: string) => {\r\n return object.hasOwnProperty(key);\r\n};\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport { hasKey } from \"./forms-list.helper\";\r\n\r\n@Component({\r\n selector: \"kwikid-forms-list\",\r\n templateUrl: \"./forms-list.component.html\",\r\n styleUrls: [\"./forms-list.component.scss\"]\r\n})\r\nexport class KwikIDFormsListComponent implements OnInit, OnChanges {\r\n @Input()\r\n showFormFields: any = {};\r\n\r\n @Input()\r\n userConfig: any = {};\r\n\r\n @Input()\r\n formsList: any[] = [];\r\n\r\n @Input()\r\n formsListCompleted: any[] = [];\r\n\r\n @Input()\r\n isMobileView: boolean = false;\r\n\r\n @Output()\r\n onClickSetActiveForm: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickHideFormsList: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickSubmitForms = new EventEmitter<any>();\r\n\r\n selectedForm: string = \"\";\r\n\r\n isAllFormsCompleted: boolean = true;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.isAllFormsCompleted = this.checkIsAllFormsCompleted(this.formsList);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const verifyChange = (key: string) => {\r\n return hasKey(changes, key) && !changes[key].firstChange;\r\n };\r\n if (verifyChange(\"showFormFields\")) {\r\n this.showFormFields = changes.showFormFields.currentValue;\r\n }\r\n if (verifyChange(\"formsList\")) {\r\n this.formsList = changes.formsList.currentValue;\r\n this.isAllFormsCompleted = this.checkIsAllFormsCompleted(this.formsList);\r\n }\r\n if (verifyChange(\"isMobileView\")) {\r\n this.isMobileView = changes.isMobileView.currentValue;\r\n }\r\n }\r\n\r\n checkIsAllFormsCompleted(formsList: any[]): boolean {\r\n let isAllFormsCompleted: boolean = true;\r\n\r\n for (let forms of formsList) {\r\n if (forms.status !== \"completed\") {\r\n isAllFormsCompleted = false;\r\n break;\r\n }\r\n }\r\n\r\n return isAllFormsCompleted;\r\n }\r\n\r\n handleOnClickSetActiveForm(selectedForm: string) {\r\n if (\r\n this.selectedForm !== selectedForm ||\r\n (this.isAllFormsCompleted && !this.showFormFields)\r\n ) {\r\n this.selectedForm = selectedForm;\r\n this.onClickSetActiveForm.emit(selectedForm);\r\n }\r\n }\r\n\r\n handleOnSubmitForms(e: any) {\r\n this.onClickSubmitForms.emit(e);\r\n }\r\n}\r\n","<div id=\"sidebar-container\">\r\n <div id=\"sidebar\">\r\n <div ngClass=\"kwikid-form-header\">\r\n <div id=\"uf-header\">\r\n <div id=\"uf-header-logo-container\">\r\n <img\r\n id=\"uf-header-logo\"\r\n src=\"{{ this.userConfig.theme.clientLogo }}\"\r\n [ngClass]=\"'large-icon'\"\r\n />\r\n </div>\r\n </div>\r\n <hr />\r\n </div>\r\n <div id=\"uf-progress\">\r\n <div id=\"uf-progress-steps\">\r\n {{ this.formsListCompleted.length }} / {{ this.formsList.length }} Steps\r\n Completed\r\n </div>\r\n <kwikui-progress-segmented\r\n [max]=\"this.formsList.length\"\r\n size=\"m\"\r\n [value]=\"this.formsListCompleted.length\"\r\n ></kwikui-progress-segmented>\r\n </div>\r\n <div id=\"uf-sections-container\">\r\n <div\r\n *ngFor=\"let form of formsList; let i = index\"\r\n [class]=\"'uf-section-item'\"\r\n [class.completed]=\"form.status === 'completed' && !form.disabled\"\r\n [class.edit]=\"form.status === 'editable' && !form.disabled\"\r\n [class.locked]=\"form.status === 'locked' && form.disabled\"\r\n (click)=\"\r\n form.status === 'locked' && form.disabled\r\n ? undefined\r\n : handleOnClickSetActiveForm(form.key)\r\n \"\r\n >\r\n <div class=\"uf-form-section-card-title\">\r\n {{ form.title }}\r\n </div>\r\n <div class=\"uf-form-section-card-action\">\r\n <div\r\n *ngIf=\"form.status === 'completed' && !form.disabled\"\r\n class=\"uf-form-section-card-action-img completed\"\r\n >\r\n <tui-svg src=\"tuiIconCheckLarge\"></tui-svg>\r\n </div>\r\n <div\r\n *ngIf=\"form.status !== 'completed' && !form.disabled\"\r\n class=\"uf-form-section-card-action-img edit\"\r\n >\r\n <tui-svg src=\"tuiIconEdit\"></tui-svg>\r\n </div>\r\n <div\r\n *ngIf=\"form.status !== 'completed' && form.disabled\"\r\n class=\"uf-form-section-card-action-img locked\"\r\n >\r\n <tui-svg src=\"tuiIconLock\"></tui-svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"submit-sidebar-btn-container\">\r\n <kwikui-button\r\n [disabled]=\"false\"\r\n id=\"\"\r\n label=\"Submit\"\r\n [showLoader]=\"false\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"primary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"handleOnSubmitForms($event)\"\r\n ></kwikui-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n EBrowserStorageType,\r\n ESourceKey\r\n} from \"../form-view/definitions/sources/form-view.sources.enum.definitions\";\r\nimport {\r\n TBrowserStorageType,\r\n TSource\r\n} from \"../form-view/definitions/sources/form-view.sources.type.definitions\";\r\nimport {\r\n isNotEmpty,\r\n isNotEmptyBrowserStorageValue,\r\n jpQueryWrapper,\r\n setEmptyValue,\r\n setValueToObject\r\n} from \"../form-view/helpers/form-view.common.helper\";\r\n\r\nexport class Sources {\r\n private _userConfig: any;\r\n get userConfig(): any {\r\n return this._userConfig;\r\n }\r\n set userConfig(value: any) {\r\n this._userConfig = value;\r\n }\r\n\r\n constructor(userConfig: any) {\r\n this._userConfig = userConfig;\r\n }\r\n\r\n private getValueFromUserConfig(path: string): any {\r\n let value: any = \"\";\r\n if (isNotEmpty(path)) {\r\n value = jpQueryWrapper(this._userConfig, path);\r\n } else {\r\n value = setEmptyValue(this._userConfig);\r\n }\r\n return value;\r\n }\r\n\r\n private getValueFromBrowserStorage(\r\n type: TBrowserStorageType,\r\n key: string\r\n ): any {\r\n let value: any = \"\";\r\n switch (type) {\r\n case EBrowserStorageType.LOCAL_STORAGE:\r\n value = isNotEmptyBrowserStorageValue(localStorage.getItem(key))\r\n ? localStorage.getItem(key)\r\n : \"\";\r\n break;\r\n case EBrowserStorageType.SESSION_STORAGE:\r\n value = isNotEmptyBrowserStorageValue(sessionStorage.getItem(key))\r\n ? sessionStorage.getItem(key)\r\n : \"\";\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n return value;\r\n }\r\n\r\n getValueFromSource(source: TSource): any {\r\n let value: any = \"\";\r\n\r\n switch (source.key) {\r\n case ESourceKey.USER_CONFIG:\r\n value = this.getValueFromUserConfig(source.props.path);\r\n break;\r\n case ESourceKey.BROWSER_STORAGE:\r\n value = this.getValueFromBrowserStorage(\r\n source.props.browserStorage.type,\r\n source.props.browserStorage.key\r\n );\r\n break;\r\n case ESourceKey.PREDEFINED:\r\n value = source.value;\r\n break;\r\n default:\r\n value = \"\";\r\n break;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private setValueToUserConfig(path: string, value: any): any {\r\n this._userConfig = setValueToObject(this._userConfig, path, value);\r\n }\r\n private setValueToBrowserStorage(type: string, key: string, value: any): any {\r\n switch (type) {\r\n case EBrowserStorageType.LOCAL_STORAGE:\r\n localStorage.setItem(key, value);\r\n break;\r\n case EBrowserStorageType.SESSION_STORAGE:\r\n sessionStorage.setItem(key, value);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n async setValueToSource(source: TSource, value: any) {\r\n switch (source.key) {\r\n case ESourceKey.USER_CONFIG:\r\n this.setValueToUserConfig(source.props.path, value);\r\n break;\r\n case ESourceKey.BROWSER_STORAGE:\r\n await this.setValueToBrowserStorage(\r\n source.props.browserStorage.type,\r\n source.props.browserStorage.key,\r\n value\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","import { replaceString } from \"../form-view/helpers/form-view.common.helper\";\r\n\r\nexport class Condition {\r\n private _condition: string;\r\n private _rulesMapping: any;\r\n\r\n constructor(condition: string, rulesMapping: any) {\r\n this._condition = condition;\r\n this._rulesMapping = rulesMapping;\r\n }\r\n\r\n private parseKeys(condition: string, rulesEvaluationMapping: object): string {\r\n Object.keys(rulesEvaluationMapping).forEach((key) => {\r\n condition = replaceString(condition, key, rulesEvaluationMapping[key]);\r\n });\r\n\r\n return condition;\r\n }\r\n\r\n private parseOperators(condition: string): string {\r\n return condition.replace(/AND|OR|NOT|XOR|NAND|NOR|XNOR/g, (match) => {\r\n switch (match) {\r\n case \"AND\":\r\n return \"&&\";\r\n case \"OR\":\r\n return \"||\";\r\n case \"NOT\":\r\n return \"!\";\r\n case \"XOR\":\r\n return \"^\";\r\n case \"NAND\":\r\n return \"!&\";\r\n case \"NOR\":\r\n return \"!|\";\r\n case \"XNOR\":\r\n return \"!^\";\r\n default:\r\n return match;\r\n }\r\n });\r\n }\r\n\r\n evaluate(): boolean {\r\n this._condition = this.parseKeys(this._condition, this._rulesMapping);\r\n this._condition = this.parseOperators(this._condition);\r\n\r\n return eval(this._condition);\r\n }\r\n}\r\n","import { Condition } from \"./renderer.condition.helper\";\r\n\r\nexport class Actions {\r\n private _action: any;\r\n private _userConfig: any;\r\n private _ruleMapping: any;\r\n private _takeAction: Function;\r\n\r\n constructor(\r\n action: any,\r\n ruleMapping: any,\r\n userConfig: any,\r\n takeAction: Function\r\n ) {\r\n this._action = action;\r\n this._userConfig = userConfig;\r\n this._ruleMapping = ruleMapping;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n async execute() {\r\n const condition = new Condition(this._action.condition, this._ruleMapping);\r\n const actionSuccess = condition.evaluate();\r\n\r\n if (actionSuccess) {\r\n return this._takeAction(this._action, this._userConfig);\r\n }\r\n }\r\n}\r\n","import {\r\n EPattern,\r\n EPatternKey\r\n} from \"../form-view/definitions/common/form-view.common.enum.definitions\";\r\nimport { ERuleKey } from \"../form-view/definitions/rules/form-view.rules.enum.definitions\";\r\nimport {\r\n TRule,\r\n TRuleObjectPathExists,\r\n TRuleType,\r\n TRuleValueChange,\r\n TRuleValueCheck\r\n} from \"../form-view/definitions/rules/form-view.rules.type.definitions\";\r\nimport { ESourceKey } from \"../form-view/definitions/sources/form-view.sources.enum.definitions\";\r\nimport { TSource } from \"../form-view/definitions/sources/form-view.sources.type.definitions\";\r\nimport { hasPath } from \"../form-view/helpers/form-view.common.helper\";\r\nimport { Sources } from \"./renderer.sources.helper\";\r\n\r\nexport class Rules {\r\n private _userConfig: any;\r\n private _rules: Array<TRule>;\r\n\r\n constructor(rules: Array<TRule>, userConfig: any) {\r\n this._userConfig = userConfig;\r\n this._rules = rules;\r\n }\r\n\r\n private evaluate(rule: TRule): boolean {\r\n let ruleType: TRuleType = rule.key;\r\n let ruleEvaluationStatus: boolean = false;\r\n\r\n const source = new Sources(this._userConfig);\r\n\r\n switch (ruleType) {\r\n case ERuleKey.OBJECT_PATH_EXISTS:\r\n const ruleObjectPathExists = rule as TRuleObjectPathExists;\r\n const ruleObjectPathExistsObject = ruleObjectPathExists.props.object;\r\n const ruleObjectPathExistsPath = ruleObjectPathExists.props.path;\r\n\r\n switch (ruleObjectPathExistsObject) {\r\n case ESourceKey.USER_CONFIG:\r\n ruleEvaluationStatus = hasPath(\r\n this._userConfig,\r\n ruleObjectPathExistsPath\r\n );\r\n break;\r\n default:\r\n ruleEvaluationStatus = false;\r\n break;\r\n }\r\n break;\r\n case ERuleKey.VALUE_CHECK:\r\n const ruleValueCheck = rule as TRuleValueCheck;\r\n const ruleValueCheckSource: TSource = ruleValueCheck.props.value.source;\r\n const ruleValueCheckValue =\r\n source.getValueFromSource(ruleValueCheckSource);\r\n\r\n if (ruleValueCheck.props.pattern.key === EPatternKey.CUSTOM) {\r\n var re = new RegExp(ruleValueCheck.props.pattern.pattern);\r\n } else {\r\n var re = new RegExp(EPattern[ruleValueCheck.props.pattern.key]);\r\n }\r\n\r\n ruleEvaluationStatus = re.test(ruleValueCheckValue);\r\n break;\r\n case ERuleKey.VALUE_CHANGE:\r\n const ruleValueChange = rule as TRuleValueChange;\r\n const ruleValueChangeCurrentSource: TSource =\r\n ruleValueChange.props.value.current.source;\r\n const ruleValueChangePreviousSource: TSource =\r\n ruleValueChange.props.value.previous.source;\r\n\r\n const previousValue = source.getValueFromSource(\r\n ruleValueChangePreviousSource\r\n );\r\n const currentValue = source.getValueFromSource(\r\n ruleValueChangeCurrentSource\r\n );\r\n\r\n ruleEvaluationStatus = previousValue === currentValue;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return ruleEvaluationStatus;\r\n }\r\n\r\n public mapping(): any {\r\n let rulesEvaluationMapping = {};\r\n\r\n for (const rule of this._rules) {\r\n const ruleEvaluationStatus = this.evaluate(rule);\r\n\r\n rulesEvaluationMapping = {\r\n ...rulesEvaluationMapping,\r\n [rule.id]: ruleEvaluationStatus\r\n };\r\n }\r\n\r\n return rulesEvaluationMapping;\r\n }\r\n}\r\n","import { Actions } from \"./renderer.actions.helper\";\r\nimport { Condition } from \"./renderer.condition.helper\";\r\nimport { Rules } from \"./renderer.rules.helper\";\r\n\r\nexport class Validations {\r\n private _userConfig: any;\r\n get userConfig(): any {\r\n return this._userConfig;\r\n }\r\n set userConfig(value: any) {\r\n this._userConfig = value;\r\n }\r\n\r\n private _takeAction: Function;\r\n\r\n constructor(userConfig, takeAction: any) {\r\n this._userConfig = userConfig;\r\n this._takeAction = takeAction;\r\n }\r\n\r\n async validateField(): Promise<any> {\r\n const validations = this._userConfig.userFormFieldsConfig.validation;\r\n\r\n const triggers = validations?.triggers;\r\n const rules = validations.rules;\r\n const actions = validations.actions;\r\n\r\n const rulesMapping = new Rules(rules, this._userConfig).mapping();\r\n\r\n for (let action of actions) {\r\n const conditionEvaluation = new Condition(\r\n action.condition,\r\n rulesMapping\r\n ).evaluate();\r\n\r\n if (conditionEvaluation) {\r\n const actions = new Actions(\r\n action,\r\n rulesMapping,\r\n this._userConfig,\r\n this._takeAction\r\n );\r\n\r\n await actions.execute();\r\n }\r\n }\r\n }\r\n}\r\n","import { TuiDay } from \"@taiga-ui/cdk\";\r\nimport { log } from \"./form-view/form-view.decorators\";\r\nimport { convertDateStringToTuiDayFormat } from \"./form-view/helpers/form-view.fields.helper\";\r\nimport { hasKey, isEmpty, isNotEmpty } from \"./renderer.helper\";\r\n\r\nexport class Converter {\r\n getFormFields = (formConfig: any): any[] => {\r\n let fields: any[];\r\n\r\n if (hasKey(formConfig, \"multiForm\")) {\r\n fields = formConfig.multiForm.fields;\r\n } else {\r\n fields = formConfig.fields;\r\n }\r\n\r\n return fields;\r\n };\r\n\r\n setMissingFieldKeyValue = (field: any, key: string, value: any): any => {\r\n if (!hasKey(field, key)) {\r\n field[key] = value;\r\n }\r\n return field;\r\n };\r\n\r\n setFieldKeyValue = (field: any, key: string, value: any): any => {\r\n field[key] = value;\r\n\r\n return field;\r\n };\r\n\r\n removeFieldKey = (field: any, key: string): any => {\r\n if (hasKey(field, key)) {\r\n delete field[key];\r\n }\r\n\r\n return field;\r\n };\r\n\r\n @log\r\n convertFormConfig(formConfig: any): any {\r\n const updateOnFieldType = (field: any): any => {\r\n const formatFieldTypeTitle = (field: any): any => {\r\n const fieldKey: string = `${field.type}_${field.label\r\n .split(\" \")\r\n .join(\"_\")\r\n .toLocaleLowerCase()}`;\r\n field = this.setFieldKeyValue(field, \"key\", fieldKey);\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n return field;\r\n };\r\n const formatFieldTypeRadio = (field: any): any => {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"size\",\r\n \"m\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"orientation\",\r\n \"vertical\"\r\n );\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n field.options = field.options.map((x: any): any => {\r\n return { label: x, disabled: false };\r\n });\r\n\r\n return field;\r\n };\r\n const formatFieldTypeOtp = (field: any): any => {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"mask\",\r\n new Array(field.properties.otpLength).fill(\"#\").join(\" \")\r\n );\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n return field;\r\n };\r\n const formatFieldTypeDate = (field: any): any => {\r\n if (hasKey(field, \"min\")) {\r\n const tuiDay = convertDateStringToTuiDayFormat(field[\"min\"]);\r\n field.properties = this.setFieldKeyValue(\r\n field.properties,\r\n \"min\",\r\n tuiDay\r\n );\r\n } else {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"min\",\r\n new TuiDay(0, 0, 1)\r\n ); // Year - 0000, Month - 0 (0 Indexing), Day - 1\r\n }\r\n\r\n if (hasKey(field, \"max\")) {\r\n const tuiDay = convertDateStringToTuiDayFormat(field[\"max\"]);\r\n field.properties = this.setFieldKeyValue(\r\n field.properties,\r\n \"max\",\r\n tuiDay\r\n );\r\n } else {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"max\",\r\n new TuiDay(\r\n new Date().getFullYear(), // Year - 9999\r\n new Date().getMonth(), // Month - 11 (0 Indexing)\r\n new Date().getDate() // Day - 31\r\n )\r\n );\r\n }\r\n\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n return field;\r\n };\r\n const formatFieldTypeNumber = (field: any): any => {\r\n if (hasKey(field, \"key\")) {\r\n if (field.key === \"aadhaar_number\") {\r\n field = this.setFieldKeyValue(field, \"type\", \"aadhaar_number\");\r\n }\r\n if (field.key === \"contact_number\") {\r\n field = this.setFieldKeyValue(field, \"type\", \"phone\");\r\n }\r\n\r\n if (field.type === \"phone\" || field.type === \"number\") {\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"countryCode\",\r\n \"+91\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"phoneMaskAfterCountryCode\",\r\n \"####-######\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"removeCountryCodeFromValue\",\r\n true\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"decimal\",\r\n \"never\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"prefix\",\r\n \"\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"postfix\",\r\n \"\"\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"min\",\r\n -Infinity\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"max\",\r\n Infinity\r\n );\r\n field.properties = this.setMissingFieldKeyValue(\r\n field.properties,\r\n \"precision\",\r\n 2\r\n );\r\n }\r\n }\r\n\r\n field = this.setFieldKeyValue(field, \"hidden\", false);\r\n\r\n return field;\r\n };\r\n const formatFieldTypeApiCall = (field: any): any => {\r\n if (!hasKey(field.properties, \"shape\")) {\r\n field.properties = this.setFieldKeyValue(\r\n field.properties,\r\n \"shape\",\r\n null\r\n );\r\n }\r\n if (!hasKey(field, \"showLoader\")) {\r\n field = this.setFieldKeyValue(field, \"showLoader\", false);\r\n }\r\n if (!hasKey(field.properties, \"size\")) {\r\n field.properties = this.setFieldKeyValue(\r\n field.properties,\r\n \"size\",\r\n \"m\"\r\n );\r\n }\r\n if (!hasKey(field, \"api\")) {\r\n field = this.setFieldKeyValue(field, \"api\", {});\r\n\r\n field.api = this.setMissingFieldKeyValue(field.api, \"url\", \"\");\r\n field.api = this.setMissingFieldKeyValue(field.api, \"request\", \"\");\r\n field.api = this.setMissingFieldKeyValue(field.api, \"response\", \"\");\r\n field.api = this.setMissingFieldKeyValue(field.api, \"status\", \"\");\r\n\r\n field.api.status = this.setMissingFieldKeyValue(\r\n field.api.status,\r\n \"value\",\r\n \"default\"\r\n );\r\n field.api.status = this.setMissingFieldKeyValue(\r\n field.api.status,\r\n \"labels\",\r\n {\r\n default: \"Call API\",\r\n loading: \"Call API\",\r\n success: \"API Success\",\r\n failed: \"API Failed\"\r\n }\r\n );\r\n }\r\n return field;\r\n };\r\n const formatFieldTypeSearchText = (field: any): any => {\r\n if (hasKey(field, \"type\")) {\r\n if (field.type === \"search-text\") {\r\n field = this.setFieldKeyValue(\r\n field,\r\n \"type\",\r\n \"dropdown-with-search\"\r\n );\r\n }\r\n }\r\n\r\n return field;\r\n };\r\n const formatFieldTypeText = (field: any): any => {\r\n return field;\r\n };\r\n\r\n switch (field.type) {\r\n case \"title\":\r\n field = formatFieldTypeTitle(field);\r\n break;\r\n case \"radio\":\r\n field = formatFieldTypeRadio(field);\r\n break;\r\n case \"otp\":\r\n field = formatFieldTypeOtp(field);\r\n break;\r\n case \"date\":\r\n field = formatFieldTypeDate(field);\r\n break;\r\n case \"number\":\r\n field = formatFieldTypeNumber(field);\r\n break;\r\n case \"api-call\":\r\n field = formatFieldTypeApiCall(field);\r\n break;\r\n case \"search-text\":\r\n field = formatFieldTypeSearchText(field);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const getConnectedElementKeyValueObject = (key: any): any => {\r\n const object = {\r\n key: key,\r\n conditions: { formula: \"\", rules: [] },\r\n actions: { success: [], failure: [] }\r\n };\r\n return object;\r\n };\r\n\r\n const formatFieldKeys = (field: any): any => {\r\n if (hasKey(field, \"connectedTo\")) {\r\n if (typeof field[\"connectedTo\"] === \"string\") {\r\n field[\"connectedElements\"] = [\r\n getConnectedElementKeyValueObject(field[\"connectedTo\"])\r\n ];\r\n } else {\r\n field[\"connectedTo\"] = field[\"connectedTo\"].map((key: string) => {\r\n return getConnectedElementKeyValueObject(key);\r\n });\r\n field[\"connectedElements\"] = field[\"connectedTo\"];\r\n }\r\n }\r\n this.removeFieldKey(field, \"connectedTo\");\r\n\r\n if (hasKey(field, \"connectedToParent\")) {\r\n if (typeof field[\"connectedToParent\"] === \"string\") {\r\n field[\"connectedParentFields\"] = [\r\n getConnectedElementKeyValueObject(field[\"connectedToParent\"])\r\n ];\r\n } else {\r\n field[\"connectedParentFields\"] = getConnectedElementKeyValueObject(\r\n field[\"connectedToParent\"]\r\n );\r\n }\r\n }\r\n this.removeFieldKey(field, \"connectedToParent\");\r\n\r\n this.removeFieldKey(field, \"sideEffect\");\r\n\r\n return field;\r\n };\r\n\r\n const getConnectedElementFieldMapping = (\r\n field: any,\r\n connectedFieldMapping: any\r\n ): any => {\r\n const getConnectedElementChildFieldMapping = (\r\n field: any,\r\n connectedFieldMapping: any\r\n ): any => {\r\n if (hasKey(field, \"connectedElements\")) {\r\n connectedFieldMapping[\"child\"][field.key] = field.connectedElements;\r\n } else if (hasKey(connectedFieldMapping[\"child\"], field.key)) {\r\n field[\"connectedElements\"] =\r\n connectedFieldMapping[\"child\"][field.key];\r\n }\r\n\r\n return { field: field, connectedFieldMapping: connectedFieldMapping };\r\n };\r\n\r\n const getConnectedElementParentFieldMapping = (\r\n field: any,\r\n connectedFieldMapping: any\r\n ): any => {\r\n if (hasKey(connectedFieldMapping[\"child\"], field.key)) {\r\n for (let connectedParentKey of connectedFieldMapping[\"child\"][\r\n field.key\r\n ]) {\r\n if (\r\n hasKey(connectedFieldMapping[\"parent\"], connectedParentKey[\"key\"])\r\n ) {\r\n connectedFieldMapping[\"parent\"][connectedParentKey[\"key\"]].push(\r\n field.key\r\n );\r\n } else {\r\n connectedFieldMapping[\"parent\"][connectedParentKey[\"key\"]] = [\r\n field.key\r\n ];\r\n }\r\n }\r\n }\r\n\r\n return { field: field, connectedFieldMapping: connectedFieldMapping };\r\n };\r\n\r\n const connectedChildFieldMapping = getConnectedElementChildFieldMapping(\r\n field,\r\n connectedFieldMapping\r\n );\r\n field = connectedChildFieldMapping[\"field\"];\r\n connectedFieldMapping =\r\n connectedChildFieldMapping[\"connectedFieldMapping\"];\r\n\r\n const connectedParentFieldMapping = getConnectedElementParentFieldMapping(\r\n field,\r\n connectedFieldMapping\r\n );\r\n field = connectedParentFieldMapping[\"field\"];\r\n connectedFieldMapping =\r\n connectedParentFieldMapping[\"connectedFieldMapping\"];\r\n\r\n return connectedFieldMapping;\r\n };\r\n\r\n const updateConnectedElementsKeyValue = (\r\n field: any,\r\n connectedFieldMapping: any\r\n ): any => {\r\n if (hasKey(connectedFieldMapping[\"child\"], field.key)) {\r\n field[\"connectedElements\"] = connectedFieldMapping[\"child\"][field.key];\r\n }\r\n\r\n if (hasKey(connectedFieldMapping[\"parent\"], field.key)) {\r\n field[\"connectedParentFields\"] =\r\n connectedFieldMapping[\"parent\"][field.key];\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const updateFieldValidatorConfig = (field: any): any => {\r\n if (field.type !== \"title\") {\r\n const validators = hasKey(field, \"validators\") ? field.validators : {};\r\n\r\n field = this.setMissingFieldKeyValue(field, \"validators\", {});\r\n field = this.setFieldKeyValue(field, \"validators\", {\r\n ...field[\"validators\"],\r\n min: hasKey(validators, \"min\")\r\n ? isNotEmpty(validators.min)\r\n ? Number(validators.min)\r\n : null\r\n : hasKey(field, \"min\")\r\n ? Number(field.min)\r\n : null,\r\n max: hasKey(validators, \"max\")\r\n ? isNotEmpty(validators.max)\r\n ? Number(validators.max)\r\n : null\r\n : hasKey(field, \"max\")\r\n ? Number(field.max)\r\n : null,\r\n required: hasKey(validators, \"required\")\r\n ? Boolean(validators.required)\r\n : hasKey(field, \"required\")\r\n ? Boolean(field.required)\r\n : false,\r\n minLength: hasKey(validators, \"minLength\")\r\n ? isNotEmpty(validators.minLength)\r\n ? Number(validators.minLength)\r\n : null\r\n : hasKey(field, \"minLength\")\r\n ? Number(field.minLength)\r\n : null,\r\n maxLength: hasKey(validators, \"maxLength\")\r\n ? isNotEmpty(validators.maxLength)\r\n ? Number(validators.maxLength)\r\n : null\r\n : hasKey(field, \"length\")\r\n ? Number(field.length)\r\n : hasKey(field, \"maxLength\")\r\n ? Number(field.maxLength)\r\n : null,\r\n pattern: hasKey(validators, \"pattern\")\r\n ? isNotEmpty(validators.pattern)\r\n ? validators.pattern\r\n : undefined\r\n : hasKey(field, \"pattern\")\r\n ? { key: \"CUSTOM\", pattern: String(field.pattern) }\r\n : hasKey(field, \"regex\")\r\n ? { key: \"CUSTOM\", pattern: String(field.regex) }\r\n : undefined\r\n });\r\n\r\n delete field.min;\r\n delete field.max;\r\n delete field.required;\r\n delete field.minLength;\r\n delete field.length;\r\n delete field.maxLength;\r\n delete field.pattern;\r\n delete field.regex;\r\n\r\n switch (field.type) {\r\n case \"text\":\r\n delete field.validators.min;\r\n delete field.validators.max;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (isEmpty(field.validators?.min)) {\r\n delete field.validators.min;\r\n }\r\n if (isEmpty(field.validators?.max)) {\r\n delete field.validators.min;\r\n }\r\n if (isEmpty(field.validators?.minLength)) {\r\n delete field.validators.minLength;\r\n }\r\n if (isEmpty(field.validators?.maxLength)) {\r\n delete field.validators.maxLength;\r\n }\r\n if (isEmpty(field.validators?.pattern)) {\r\n delete field.validators.pattern;\r\n }\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const updateFieldDefaultValueConfig = (field: any): any => {\r\n if (field.type !== \"title\") {\r\n if (hasKey(field, \"defaultValue\")) {\r\n return field;\r\n } else if (hasKey(field, \"default\")) {\r\n return field;\r\n } else {\r\n if (hasKey(field, \"defaultVal\")) {\r\n // Currently below line is commented because it caused issues in setting Default Value.\r\n // field[\"defaultValue\"] = field[\"defaultVal\"];\r\n // delete field[\"defaultVal\"];\r\n }\r\n\r\n // TODO: Condition for all_forms_data is not considered yet.\r\n if (field.autoPopulateFromSummaryData) {\r\n field[\"defaultValue\"] = {\r\n is_found: false,\r\n value: \"\",\r\n sources: [\r\n {\r\n source: \"summary_data\",\r\n summary_data: {\r\n path: `$.${field.key}`,\r\n validation: {\r\n rules: [\r\n {\r\n key: \"1\",\r\n type: \"is_not_empty\",\r\n is_not_empty: {\r\n value: true\r\n }\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: \"set_default_value_found\",\r\n condition: \"1\",\r\n set_default_value_found: {\r\n value: true\r\n }\r\n },\r\n {\r\n type: \"enable_field\",\r\n condition: \"1 OR NOT(1)\",\r\n enable_field: { value: true }\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n } else if (hasKey(field, \"autofill\")) {\r\n if (hasKey(field.autofill, \"type\")) {\r\n if (field.autofill.type === \"storage\") {\r\n field[\"defaultValue\"] = {\r\n is_found: false,\r\n value: \"\",\r\n sources: [\r\n {\r\n source: \"browser_storage\",\r\n browser_storage: {\r\n path: `$.${field.key}`,\r\n validation: {\r\n rules: [\r\n {\r\n key: \"1\",\r\n type: \"is_not_empty\",\r\n is_not_empty: {\r\n value: true\r\n }\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: \"set_default_value_found\",\r\n condition: \"1\",\r\n set_default_value_found: {\r\n value: true\r\n }\r\n },\r\n {\r\n type: \"enable_field\",\r\n condition: \"1 OR NOT(1)\",\r\n enable_field: { value: true }\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n } else if (field.autofill.type === \"config\") {\r\n field[\"defaultValue\"] = {\r\n is_found: false,\r\n value: \"\",\r\n sources: [\r\n {\r\n source: \"field_config\",\r\n field_config: {\r\n path: `$.${field.key}`,\r\n validation: {\r\n rules: [\r\n {\r\n key: \"1\",\r\n type: \"is_not_empty\",\r\n is_not_empty: {\r\n value: true\r\n }\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: \"set_default_value_found\",\r\n condition: \"1\",\r\n set_default_value_found: {\r\n value: true\r\n }\r\n },\r\n {\r\n type: \"enable_field\",\r\n condition: \"1 OR NOT(1)\",\r\n enable_field: { value: true }\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }\r\n }\r\n } else {\r\n field[\"defaultValue\"] = {\r\n is_found: false,\r\n value: \"\",\r\n sources: [\r\n {\r\n source: \"form_data\",\r\n form_data: {\r\n path: `$.${field.key}`,\r\n validation: {\r\n rules: [\r\n {\r\n key: \"1\",\r\n type: \"is_not_empty\",\r\n is_not_empty: {\r\n value: true\r\n }\r\n }\r\n ],\r\n actions: [\r\n {\r\n type: \"set_default_value_found\",\r\n condition: \"1\",\r\n set_default_value_found: {\r\n value: true\r\n }\r\n },\r\n {\r\n type: \"enable_field\",\r\n condition: \"1 OR NOT(1)\",\r\n enable_field: { value: true }\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }\r\n }\r\n\r\n delete field[\"defaultVal\"];\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const updateFieldMessages = (field: any): any => {\r\n if (field.type !== \"title\") {\r\n field = this.setMissingFieldKeyValue(field, \"messages\", []);\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const updateFieldResetButton = (field: any): any => {\r\n if (field.type === \"title\") {\r\n if (\r\n hasKey(field, \"action\") &&\r\n field.action === \"reset\" &&\r\n hasKey(field, \"fields\")\r\n ) {\r\n field = this.setFieldKeyValue(field, \"reset\", {\r\n fields: field.fields\r\n });\r\n }\r\n }\r\n\r\n return field;\r\n };\r\n\r\n const setFormFields = (formConfig: any, fields: any[]): any => {\r\n if (hasKey(formConfig, \"multiForm\")) {\r\n formConfig.multiForm[\"fields\"] = fields;\r\n } else {\r\n formConfig[\"fields\"] = fields;\r\n }\r\n\r\n return formConfig;\r\n };\r\n\r\n let connectedFieldMapping: any = {\r\n parent: {},\r\n child: {}\r\n };\r\n\r\n let fields: any[] = this.getFormFields(formConfig);\r\n\r\n for (let field of fields) {\r\n field = updateOnFieldType(field);\r\n\r\n field = formatFieldKeys(field);\r\n\r\n // connectedFieldMapping = getConnectedElementFieldMapping(\r\n // field,\r\n // connectedFieldMapping\r\n // );\r\n // field = updateConnectedElementsKeyValue(field, connectedFieldMapping);\r\n\r\n field = updateFieldDefaultValueConfig(field);\r\n\r\n field = updateFieldValidatorConfig(field);\r\n\r\n field = updateFieldResetButton(field);\r\n\r\n field = updateFieldMessages(field);\r\n }\r\n\r\n formConfig = setFormFields(formConfig, fields);\r\n\r\n return formConfig;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { setValueToObject } from \"./form-view/helpers/form-view.common.helper\";\r\nimport { hasKey } from \"./renderer.helper\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class KwikIDRendererService {\r\n isMobileView = false;\r\n setIsMobileView(isMobileView: boolean) {\r\n this.isMobileView = isMobileView;\r\n }\r\n\r\n formsList: any[];\r\n setFormsList(formsList: any[]) {\r\n this.formsList = formsList;\r\n }\r\n\r\n formsListCompleted: string[];\r\n setFormsListCompleted(formsListCompleted: any[]) {\r\n this.formsListCompleted = formsListCompleted;\r\n }\r\n\r\n allFormsData: any = {};\r\n setAllFormsData(allFormsData: any[]) {\r\n this.allFormsData = allFormsData;\r\n }\r\n\r\n activeFormConfig: any;\r\n setActiveFormConfig(activeFormConfig: any) {\r\n this.activeFormConfig = activeFormConfig;\r\n }\r\n\r\n activeFormFields: any[];\r\n setActiveFormFields(activeFormFields: any[]) {\r\n this.activeFormFields = activeFormFields;\r\n }\r\n\r\n activeFormData: any;\r\n setActiveFormData(activeFormData: any) {\r\n this.activeFormData = activeFormData;\r\n }\r\n\r\n constructor() {}\r\n\r\n async fetchFormConfig(url: string) {\r\n const response = await fetch(url, { method: \"GET\" });\r\n const data = await response.json();\r\n return data;\r\n }\r\n\r\n findActiveFormConfig(formsList: any[]): any {\r\n const activeFormConfig = formsList.find((form) => {\r\n return form.status === \"editable\" && !form.disabled;\r\n });\r\n return activeFormConfig;\r\n }\r\n\r\n findCompletedFormsList(allFormsData: any): string[] {\r\n let formsListCompleted: string[] = [];\r\n\r\n Object.keys(allFormsData).map((formKey) => {\r\n formsListCompleted.push(formKey);\r\n });\r\n\r\n return formsListCompleted;\r\n }\r\n\r\n markFormInFormsListAsCompleted(\r\n formsList: any[],\r\n formsListCompleted: string[]\r\n ): any[] {\r\n for (let form of formsList) {\r\n if (formsListCompleted.includes(form.key)) {\r\n form = setValueToObject(form, \"status\", \"completed\");\r\n form = setValueToObject(form, \"disabled\", false);\r\n }\r\n }\r\n\r\n return formsList;\r\n }\r\n\r\n markFormInFormsListAsDisabled(\r\n formsList: any[],\r\n formsListCompleted: string[]\r\n ): any[] {\r\n for (let form of formsList) {\r\n if (form.status !== \"completed\") {\r\n if (hasKey(form, \"dependentOn\")) {\r\n const isDependent = form.dependentOn.every((r: string) =>\r\n formsListCompleted.includes(r)\r\n );\r\n if (isDependent) {\r\n form = setValueToObject(form, \"status\", \"editable\");\r\n form = setValueToObject(form, \"disabled\", false);\r\n } else {\r\n form = setValueToObject(form, \"status\", \"locked\");\r\n form = setValueToObject(form, \"disabled\", true);\r\n }\r\n } else {\r\n form = setValueToObject(form, \"dependentOn\", []);\r\n form = setValueToObject(form, \"status\", \"editable\");\r\n form = setValueToObject(form, \"disabled\", false);\r\n }\r\n }\r\n }\r\n\r\n return formsList;\r\n }\r\n\r\n assignSequenceNoToForm(formsList: any[]): any[] {\r\n let sequenceNo = 1;\r\n for (let form of formsList) {\r\n form.sequenceNo = sequenceNo++;\r\n }\r\n\r\n return formsList;\r\n }\r\n\r\n updateFormsList() {\r\n let formsList: any[] = this.formsList;\r\n let formsListCompleted: string[];\r\n let activeFormConfig: any;\r\n\r\n formsList = this.assignSequenceNoToForm(formsList);\r\n\r\n formsListCompleted = this.findCompletedFormsList(this.allFormsData);\r\n\r\n formsList = this.markFormInFormsListAsCompleted(\r\n formsList,\r\n formsListCompleted\r\n );\r\n\r\n formsList = this.markFormInFormsListAsDisabled(\r\n formsList,\r\n formsListCompleted\r\n );\r\n\r\n if (formsList.length !== formsListCompleted.length) {\r\n activeFormConfig = this.findActiveFormConfig(formsList);\r\n\r\n this.setActiveFormConfig(activeFormConfig);\r\n }\r\n\r\n this.setFormsList(formsList);\r\n this.setFormsListCompleted(formsListCompleted);\r\n }\r\n}\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport { EActionKey } from \"./form-view/definitions/actions/form-view.actions.enum.definitions\";\r\nimport { Sources } from \"./helpers/renderer.sources.helper\";\r\nimport { Validations } from \"./helpers/renderer.validations.helper\";\r\nimport { Converter } from \"./renderer.config-converter.helper\";\r\nimport { isSingleForm } from \"./renderer.helper\";\r\nimport { KwikIDRendererService } from \"./renderer.service\";\r\n\r\n@Component({\r\n selector: \"kwikid-forms-renderer\",\r\n templateUrl: \"./renderer.component.html\",\r\n styleUrls: [\"./renderer.component.scss\"],\r\n animations: [\r\n trigger(\"panelInOut\", [\r\n transition(\":enter\", [\r\n style({ transform: \"translateY(100%)\" }),\r\n animate(150)\r\n ]),\r\n transition(\":leave\", [\r\n animate(100, style({ transform: \"translateY(100%)\" }))\r\n ])\r\n ])\r\n ],\r\n providers: [KwikIDRendererService]\r\n})\r\nexport class KwikIDFormsRendererComponent implements OnInit, OnChanges {\r\n // The final value should be provided to service, so that it can be used in all components\r\n @HostListener(\"window:resize\", [\"$event\"])\r\n windowResizeWatcher() {\r\n if (this.hostElement.nativeElement.offsetWidth < 600) {\r\n if (this.showForm) {\r\n this.showFormSections = false;\r\n this.showFormFields = true;\r\n } else {\r\n this.showFormSections = true;\r\n this.showFormFields = false;\r\n }\r\n this.rendererService.isMobileView = true;\r\n } else {\r\n if (this.showForm) {\r\n this.showFormSections = true;\r\n this.showFormFields = true;\r\n } else {\r\n this.showFormSections = true;\r\n this.showFormFields = false;\r\n }\r\n this.rendererService.isMobileView = false;\r\n }\r\n }\r\n\r\n @Input()\r\n userConfig: any;\r\n\r\n @Input()\r\n formsData: any = {};\r\n\r\n @Input()\r\n apiCallResponse: any = {};\r\n\r\n @Output()\r\n onClickSubmit: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n getFormData: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClickApiCall: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n loading: boolean = false;\r\n loader: boolean = false;\r\n\r\n // display forms and list conditionally\r\n showForm: boolean = false;\r\n showFormFields: boolean = true;\r\n showFormSections: boolean = true;\r\n\r\n constructor(\r\n public rendererService: KwikIDRendererService,\r\n private hostElement: ElementRef\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.loader = true;\r\n this.loading = true;\r\n\r\n this.rendererService.setFormsList(this.userConfig.userFormFields);\r\n\r\n this.initializeForms();\r\n this.loader = false;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const verifyChange = (prop: string) => {\r\n return changes.hasOwnProperty(prop) && !changes[prop].firstChange;\r\n };\r\n if (verifyChange(\"userConfig\")) {\r\n this.userConfig = changes.userConfig.currentValue;\r\n this.loader = false;\r\n }\r\n if (verifyChange(\"formsData\")) {\r\n this.formsData = changes.formsData.currentValue;\r\n\r\n this.initializeForms();\r\n }\r\n if (verifyChange(\"apiCallResponse\")) {\r\n this.apiCallResponse = changes.apiCallResponse.currentValue;\r\n this.loader = false;\r\n }\r\n }\r\n\r\n async initializeForms() {\r\n this.loader = true;\r\n\r\n this.rendererService.setAllFormsData(this.formsData);\r\n\r\n this.rendererService.updateFormsList();\r\n\r\n this.handleResize(this.rendererService.formsList);\r\n\r\n if (\r\n this.rendererService.formsList.length !==\r\n this.rendererService.formsListCompleted.length\r\n ) {\r\n await this.handleOnClickSetActiveForm(\r\n this.rendererService.activeFormConfig.key\r\n );\r\n } else {\r\n this.showForm = false;\r\n this.showFormFields = false;\r\n }\r\n\r\n this.loader = false;\r\n this.loading = false;\r\n }\r\n\r\n handleResize(formsList: any[]) {\r\n if (this.hostElement.nativeElement.offsetWidth < 600) {\r\n if (!isSingleForm(formsList)) {\r\n this.showFormSections = true;\r\n this.showFormFields = false;\r\n this.showForm = false;\r\n } else {\r\n this.showFormSections = true;\r\n this.showFormFields = false;\r\n this.showForm = false;\r\n }\r\n this.rendererService.isMobileView = true;\r\n } else {\r\n this.rendererService.isMobileView = false;\r\n }\r\n }\r\n\r\n // forms-list listener\r\n async handleOnClickSetActiveForm(selectedForm: string) {\r\n this.showForm = false;\r\n this.loader = true;\r\n\r\n const activeFormConfig = this.rendererService.formsList.find((form) => {\r\n if (form.key === selectedForm) {\r\n return form;\r\n }\r\n });\r\n\r\n let formConfig = await this.rendererService.fetchFormConfig(\r\n activeFormConfig.formContent.url\r\n );\r\n\r\n formConfig = new Converter().convertFormConfig(formConfig);\r\n\r\n const activeFormData =\r\n this.rendererService.allFormsData[formConfig.key] ?? {};\r\n this.rendererService.setActiveFormData(activeFormData);\r\n\r\n this.rendererService.setActiveFormConfig({\r\n ...activeFormConfig,\r\n ...formConfig\r\n });\r\n\r\n if (this.hostElement.nativeElement.offsetWidth < 600) {\r\n this.showFormSections = false;\r\n this.showFormFields = true;\r\n } else if (this.hostElement.nativeElement.offsetWidth >= 600) {\r\n this.showFormSections = true;\r\n this.showFormFields = true;\r\n }\r\n\r\n this.showForm = true;\r\n this.loader = false;\r\n }\r\n\r\n // forms-list listener\r\n handleOnClickSubmitForms(e: any) {\r\n console.log(e);\r\n\r\n if (this.userConfig.userFormFieldsConfig.validation) {\r\n const validations = new Validations(\r\n this.userConfig,\r\n this.takeAction.bind(this)\r\n );\r\n\r\n (async () => {\r\n await validations.validateField();\r\n\r\n if (this.userConfig.userFormFieldsConfig.status === \"completed\") {\r\n this.onClickSubmit.emit(e);\r\n } else {\r\n this.toggleErrorNotification(true);\r\n }\r\n })();\r\n }\r\n }\r\n\r\n // form-view listener\r\n handleOnClickApiCall(e: any) {\r\n this.loader = true;\r\n this.onClickApiCall.emit(e);\r\n }\r\n\r\n // form-view listener\r\n handleGetActiveFormData(e: any) {\r\n this.loader = true;\r\n this.getFormData.emit({\r\n [this.rendererService.activeFormConfig.key]: e[\"data\"]\r\n });\r\n }\r\n\r\n // form-view listener\r\n handleOnClickSaveForm(e: any) {\r\n this.loader = true;\r\n\r\n this.rendererService.setActiveFormData({});\r\n\r\n this.getFormData.emit({\r\n [this.rendererService.activeFormConfig.key]: e[\"data\"]\r\n });\r\n }\r\n\r\n // form-view listener\r\n handleOnClickViewForms(e: any) {\r\n this.showFormSections = true;\r\n this.showForm = false;\r\n this.showFormFields = false;\r\n }\r\n\r\n showErrorNotification: boolean = false;\r\n toggleErrorNotification(show) {\r\n this.showErrorNotification = show;\r\n }\r\n\r\n async takeAction(action: any, userConfig: any) {\r\n switch (action.key) {\r\n case EActionKey.SET_VALUE:\r\n const sources = new Sources(userConfig);\r\n\r\n const sourceValue = await sources.getValueFromSource(\r\n action.props.value.source\r\n );\r\n sources.setValueToSource(action.props.value.destination, sourceValue);\r\n\r\n this.userConfig = sources.userConfig;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<div ngClass=\"kwikid-renderer\">\r\n <div\r\n ngClass=\"kwikid-layout-container\"\r\n *ngIf=\"!loading\"\r\n >\r\n <div\r\n ngClass=\"kwikid-sections-container\"\r\n *ngIf=\"showFormSections\"\r\n class=\"active\"\r\n [class.active]=\"showFormSections\"\r\n [class.mobile]=\"rendererService.isMobileView\"\r\n >\r\n <kwikid-forms-list\r\n [showFormFields]=\"this.showFormFields\"\r\n [userConfig]=\"this.userConfig\"\r\n [formsList]=\"this.rendererService.formsList\"\r\n [formsListCompleted]=\"this.rendererService.formsListCompleted\"\r\n [isMobileView]=\"this.rendererService.isMobileView\"\r\n (onClickSetActiveForm)=\"this.handleOnClickSetActiveForm($event)\"\r\n (onClickSubmitForms)=\"this.handleOnClickSubmitForms($event)\"\r\n ></kwikid-forms-list>\r\n </div>\r\n <div\r\n ngClass=\"kwikid-forms-container\"\r\n *ngIf=\"this.showForm && this.showFormFields\"\r\n [class.active]=\"showFormFields\"\r\n [class.mobile]=\"rendererService.isMobileView\"\r\n [@panelInOut]\r\n >\r\n <kwikid-form-view\r\n [formConfig]=\"this.rendererService.activeFormConfig\"\r\n [formData]=\"this.rendererService.activeFormData\"\r\n [apiCallResponse]=\"this.apiCallResponse\"\r\n [formsList]=\"this.rendererService.formsList\"\r\n [allFormsData]=\"this.rendererService.allFormsData\"\r\n [isMobileView]=\"this.rendererService.isMobileView\"\r\n (onClickApiCall)=\"this.handleOnClickApiCall($event)\"\r\n (onClickViewForms)=\"this.handleOnClickViewForms($event)\"\r\n (onClickSaveForm)=\"this.handleOnClickSaveForm($event)\"\r\n (getActiveFormData)=\"this.handleGetActiveFormData($event)\"\r\n ></kwikid-form-view>\r\n </div>\r\n </div>\r\n</div>\r\n<div\r\n ngClass=\"kwikid-forms-renderer-loader\"\r\n *ngIf=\"loader\"\r\n>\r\n <span class=\"loader\"></span>\r\n</div>\r\n<tui-push\r\n id=\"error-notification\"\r\n *tuiPush=\"showErrorNotification\"\r\n heading=\"Please complete the required Forms!\"\r\n type=\"Error\"\r\n (close)=\"toggleErrorNotification(false)\"\r\n>\r\n <tui-svg\r\n src=\"tuiIconCancel\"\r\n style=\"color: #fff !important\"\r\n >\r\n </tui-svg>\r\n</tui-push>\r\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { KwikIDFormsBuilderComponent } from \"./builder.component\";\r\n\r\n@NgModule({\r\n declarations: [KwikIDFormsBuilderComponent],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule],\r\n providers: [],\r\n exports: [KwikIDFormsBuilderComponent]\r\n})\r\nexport class KwikIDFormBuilderModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { TuiLabelModule, TuiSvgModule } from \"@taiga-ui/core\";\r\nimport { TuiPushModule } from \"@taiga-ui/kit\";\r\nimport { KwikUIModule } from \"kwikui\";\r\nimport { KwikIDFormViewComponent } from \"./form-view.component\";\r\n\r\n@NgModule({\r\n declarations: [KwikIDFormViewComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TuiLabelModule,\r\n TuiPushModule,\r\n TuiSvgModule,\r\n KwikUIModule\r\n ],\r\n exports: [KwikIDFormViewComponent]\r\n})\r\nexport class KwikIDFormViewModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { TuiSvgModule } from \"@taiga-ui/core\";\r\nimport { KwikUIModule } from \"kwikui\";\r\nimport { KwikIDFormsListComponent } from \"./forms-list.component\";\r\n\r\n@NgModule({\r\n declarations: [KwikIDFormsListComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n KwikUIModule,\r\n TuiSvgModule\r\n ],\r\n exports: [KwikIDFormsListComponent]\r\n})\r\nexport class KwikIDFormsListModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TuiLoaderModule, TuiSvgModule } from \"@taiga-ui/core\";\r\nimport { TuiPushModule } from \"@taiga-ui/kit\";\r\nimport { KwikUIModule } from \"kwikui\";\r\nimport { KwikIDFormViewModule } from \"./form-view/form-view.module\";\r\nimport { KwikIDFormsListModule } from \"./forms-list/forms-list.module\";\r\nimport { KwikIDFormsRendererComponent } from \"./renderer.component\";\r\n\r\n@NgModule({\r\n declarations: [KwikIDFormsRendererComponent],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n KwikIDFormViewModule,\r\n KwikIDFormsListModule,\r\n KwikUIModule,\r\n TuiLoaderModule,\r\n TuiPushModule,\r\n TuiSvgModule\r\n ],\r\n providers: [],\r\n exports: [KwikIDFormsRendererComponent]\r\n})\r\nexport class KwikIDFormRendererModule {}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { KwikIDFormBuilderModule } from \"./builder/builder.module\";\r\nimport { KwikIDFormRendererModule } from \"./renderer/renderer.module\";\r\nimport { KwikIDRendererService } from \"./renderer/renderer.service\";\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n KwikIDFormBuilderModule,\r\n KwikIDFormRendererModule\r\n ],\r\n exports: [KwikIDFormBuilderModule, KwikIDFormRendererModule],\r\n providers: [KwikIDRendererService]\r\n})\r\nexport class KwikIDFormsModule {}\r\n","/*\r\n * Public API Surface of kwikid-forms\r\n */\r\n\r\n/* Builder Components */\r\nexport * from \"./lib/builder/builder.component\";\r\n\r\n/* Renderer Components */\r\nexport * from \"./lib/renderer/form-view/form-view.component\";\r\nexport * from \"./lib/renderer/forms-list/forms-list.component\";\r\nexport * from \"./lib/renderer/renderer.component\";\r\n\r\n/* KwikID Forms Component */\r\n\r\n/* All Modules in import order from bottom to top */\r\nexport * from \"./lib/builder/builder.module\";\r\nexport * from \"./lib/renderer/form-view/form-view.module\";\r\nexport * from \"./lib/renderer/forms-list/forms-list.module\";\r\nexport * from \"./lib/renderer/renderer.module\";\r\nexport * from \"./lib/kwikid-forms.module\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["hasKey","isEmpty","isNotEmpty","handleJPQueryResponse","jpQueryWrapper","Condition","Actions","Sources","Rules","Validations","i1.KwikIDFormViewService","i1","i2","i3","i1.KwikIDRendererService","i2.KwikIDFormsListComponent","i3.KwikIDFormViewComponent","i5","i6"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAwBa,2BAA2B,CAAA;AAuCtC,IAAA,WAAA,GAAA;AAtCA,QAAA,IAAA,CAAA,eAAe,GAAG;AAChB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,sCAAsC;AAC7C,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,GAAG;SACV,CAAC;AAEF,QAAA,IAAA,CAAA,0BAA0B,GAAG;AAC3B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,KAAK,EAAE,GAAG;SACX,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG;AACf,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,WAAW,EAAE,aAAa;AAC1B,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,UAAU,EAAE;AACV,gBAAA,QAAQ,EAAE,IAAI;AACf,aAAA;SACF,CAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AA8B9B,QAAA,IAAA,CAAA,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;AAClC,QAAA,IAAA,CAAA,IAAI,GAAiB;AACnB,YAAA;AACE,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,SAAS,EAAE,qBAAqB;gBAChC,KAAK,EAAE,IAAI,CAAC,eAAe;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,GAAG,EAAE,oBAAoB;AACzB,gBAAA,SAAS,EAAE,gCAAgC;gBAC3C,KAAK,EAAE,IAAI,CAAC,0BAA0B;AACvC,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,SAAS,EAAE,oBAAoB;gBAC/B,KAAK,EAAE,IAAI,CAAC,cAAc;AAC3B,aAAA;SACF,CAAC;QACF,IAAK,CAAA,KAAA,GAAiB,EAAE,CAAC;KAjDT;IAEhB,QAAQ,GAAA;AACN,QAAA,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AACvB,YAAA,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,SAAA;KACF;IAED,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,MAAM,EAAE;aACjB,QAAQ,CAAC,EAAE,CAAC;AACZ,aAAA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;KAC5B;AAED,IAAA,cAAc,CACZ,KAAiC,EACjC,EAAmB,EACnB,GAAoB,EACpB,GAAQ,EAAA;AAER,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACjE;AAED,IAAA,UAAU,CAAC,EAAO,EAAA;AAChB,QAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACjB;AAyBD,IAAA,IAAI,CAAC,KAAU,EAAA;;AAEb,QAAA,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;AAC/C,YAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;AAGvB,YAAA,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AACzE,YAAA,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnD,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;AAE1D,YAAA,IAAI,YAAY,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AAErC,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAE1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBACjC,YAAY,CAAC,UAAU,CACrB,GAAG,EACH,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CACxD,CAAC;AACJ,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;YAElD,aAAa,CACX,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAC5B,KAAK,CAAC,SAAS,CAAC,IAAI,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACtB,YAAA,eAAe,CACb,KAAK,CAAC,SAAS,CAAC,IAAI,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB,CAAC;AACH,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAChC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAA;KACF;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;QACf,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAC/C,CAAC,CAAc,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,kCAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,KAClB,IAAI,EAAE,IAAI,EAAA,CAAA,CACV,CAAC;KACJ;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC9C;AAED,IAAA,QAAQ,CAAC,GAAQ,EAAA;QACf,OAAO,OAAO,GAAG,CAAC;KACnB;IAED,aAAa,CAAC,GAAW,EAAE,EAAU,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAC3B;IAED,OAAO,GAAA;AACL,QAAA,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,SAAA;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;;4IAhKU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,mBAAA,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,4DCxBxC,ssEAmEA,EAAA,MAAA,EAAA,CAAA,u9BAAA,CAAA,EAAA,CAAA,CAAA;4FD3Ca,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,WAAW,EAAE,0BAA0B;oBACvC,SAAS,EAAE,CAAC,0BAA0B,CAAC;AACxC,iBAAA,CAAA;;;AEvBD,IAAY,UAaX,CAAA;AAbD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,UAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD,CAAA;AACvD,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EAbW,UAAU,KAAV,UAAU,GAarB,EAAA,CAAA,CAAA;;ACbD,IAAY,cAKX,CAAA;AALD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EALW,cAAc,KAAd,cAAc,GAKzB,EAAA,CAAA,CAAA;;ACLD,IAAY,WA6CX,CAAA;AA7CD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,WAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,WAAA,CAAA,yBAAA,CAAA,GAAA,yBAAmD,CAAA;AACnD,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,WAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,WAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,WAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,WAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C,CAAA;AAC7C,IAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,WAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,WAAA,CAAA,uBAAA,CAAA,GAAA,uBAA+C,CAAA;AAC/C,IAAA,WAAA,CAAA,iCAAA,CAAA,GAAA,iCAAmE,CAAA;AACnE,IAAA,WAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,WAAA,CAAA,4BAAA,CAAA,GAAA,4BAAyD,CAAA;AACzD,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC7B,CAAC,EA7CW,WAAW,KAAX,WAAW,GA6CtB,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,QA4CX,CAAA;AA5CD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,aAAwB,CAAA;AACxB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,yBAAsC,CAAA;AACtC,IAAA,QAAA,CAAA,iBAAA,CAAA,GAAA,gBAAkC,CAAA;AAClC,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,cAA2B,CAAA;AAC3B,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,uDAAkE,CAAA;AAClE,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,IAAe,CAAA;AACf,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,OAAkB,CAAA;AAClB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,yCAAmD,CAAA;AACnD,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,WAAwB,CAAA;AACxB,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,4FAA4G,CAAA;AAC5G,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,iCAA2C,CAAA;AAC3C,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,UAAyB,CAAA;AACzB,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,MAAqB,CAAA;AACrB,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,iBAA6B,CAAA;AAC7B,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,MAAgB,CAAA;AAChB,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,UAAyB,CAAA;AACzB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,iEAA0E,CAAA;AAC1E,IAAA,QAAA,CAAA,mBAAA,CAAA,GAAA,aAAiC,CAAA;AACjC,IAAA,QAAA,CAAA,oBAAA,CAAA,GAAA,eAAoC,CAAA;AACpC,IAAA,QAAA,CAAA,oBAAA,CAAA,GAAA,0CAA+D,CAAA;AAC/D,IAAA,QAAA,CAAA,yBAAA,CAAA,GAAA,oCAA8D,CAAA;AAC9D,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAC9B,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,+BAAwC,CAAA;AACxC,IAAA,QAAA,CAAA,mBAAA,CAAA,GAAA,uCAA2D,CAAA;AAC3D,IAAA,QAAA,CAAA,oBAAA,CAAA,GAAA,+CAAoE,CAAA;AACpE,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,2DAAsE,CAAA;AACtE,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,0BAAuC,CAAA;AACvC,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,YAA2B,CAAA;AAC3B,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAC9B,IAAA,QAAA,CAAA,iBAAA,CAAA,GAAA,sBAAwC,CAAA;AACxC,IAAA,QAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,6BAA6C,CAAA;AAC7C,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,2CAAyD,CAAA;AACzD,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,eAA6B,CAAA;AAC7B,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,iBAA8B,CAAA;AAC9B,IAAA,QAAA,CAAA,sBAAA,CAAA,GAAA,cAAqC,CAAA;AACrC,IAAA,QAAA,CAAA,mBAAA,CAAA,GAAA,oBAAwC,CAAA;AACxC,IAAA,QAAA,CAAA,mBAAA,CAAA,GAAA,4BAAgD,CAAA;AAChD,IAAA,QAAA,CAAA,uBAAA,CAAA,GAAA,8BAAsD,CAAA;AACtD,IAAA,QAAA,CAAA,iCAAA,CAAA,GAAA,iCAAmE,CAAA;AACnE,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,aAA6B,CAAA;AAC7B,IAAA,QAAA,CAAA,4BAAA,CAAA,GAAA,+CAA4E,CAAA;AAC5E,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,oBAAkC,CAAA;AACpC,CAAC,EA5CW,QAAQ,KAAR,QAAQ,GA4CnB,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,YAKX,CAAA;AALD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EALW,YAAY,KAAZ,YAAY,GAKvB,EAAA,CAAA,CAAA;;AClGD,IAAY,UAYX,CAAA;AAZD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C,CAAA;AAC7C,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACnC,CAAC,EAZW,UAAU,KAAV,UAAU,GAYrB,EAAA,CAAA,CAAA;;ACZD;;;;;AAKG;SACa,GAAG,CACjB,MAAW,EACX,WAAmB,EACnB,UAA8B,EAAA;;AAG9B,IAAA,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;;AAExC,IAAA,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW,EAAA;AACzC,QAAA,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAChC,QAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEhC,IAAI,MAAM,CAAC;QACX,IAAI;;YAEF,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;;AAEd,YAAA,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACtE,YAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACnC,YAAA,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnB,YAAA,MAAM,KAAK,CAAC;AACb,SAAA;;QAGD,IAAI,MAAM,YAAY,OAAO,EAAE;AAC7B,YAAA,MAAM,GAAG,MAAM;AACZ,iBAAA,IAAI,CAAC,CAAC,aAAa,KAAI;;AAEtB,gBAAA,cAAc,CACZ,MAAM,CAAC,WAAW,CAAC,IAAI,EACvB,WAAW,EACX,IAAI,EACJ,aAAa,CACd,CAAC;AACF,gBAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACnC,gBAAA,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnB,gBAAA,OAAO,aAAa,CAAC;AACvB,aAAC,CAAC;AACD,iBAAA,KAAK,CAAC,CAAC,KAAK,KAAI;;AAEf,gBAAA,mBAAmB,CACjB,MAAM,CAAC,WAAW,CAAC,IAAI,EACvB,WAAW,EACX,IAAI,EACJ,KAAK,CACN,CAAC;AACF,gBAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACnC,gBAAA,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnB,gBAAA,MAAM,KAAK,CAAC;AACd,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;AAEL,YAAA,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClE,YAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACnC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACpB,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AACJ,CAAC;AAED;;;;;;AAMG;AACH,SAAS,aAAa,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAA;IACxD,OAAO,CAAC,GAAG,CACT,uBAAuB,EACvB,oCAAoC,EACpC,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,IAAI,EACJ,WAAW,EACX,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;;;;;AAMG;AACH,SAAS,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAA;IAC5D,OAAO,CAAC,GAAG,CACT,uBAAuB,EACvB,oCAAoC,EACpC,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,IAAI,EACJ,UAAU,EACV,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;;;AAMG;AACH,SAAS,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAA;IACzD,OAAO,CAAC,GAAG,CACT,wBAAwB,EACxB,oCAAoC,EACpC,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,IAAI,EACJ,WAAW,EACX,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;;;;;AAMG;AACH,SAAS,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAA;IAC7D,OAAO,CAAC,GAAG,CACT,wBAAwB,EACxB,oCAAoC,EACpC,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,IAAI,EACJ,UAAU,EACV,KAAK,CACN,CAAC;AACJ;;ACtJO,MAAMA,QAAM,GAAG,CAAC,MAAW,EAAE,GAAW,KAAa;AAC1D,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC,CAAC;AAEK,MAAMC,SAAO,GAAG,CAAC,KAAU,KAAa;IAC7C,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzD,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAAM,SAAA,IACL,KAAK;QACL,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,EACjD;AACA,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAAM,SAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACF,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH,CAAC,CAAC;AAEK,MAAMC,YAAU,GAAG,CAAC,KAAU,KAAI;AACvC,IAAA,OAAO,CAACD,SAAO,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAEK,MAAME,uBAAqB,GAAG,CAAC,KAAU,KAAS;AACvD;;;AAGG;AACH,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,KAAK,GAAG,EAAE,CAAC;AACZ,SAAA;AACF,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEK,MAAMC,gBAAc,GAAG,CAAC,GAAQ,EAAE,GAAW,KAAa;IAC/D,OAAOD,uBAAqB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC;AAEK,MAAM,YAAY,GAAG,CAAC,SAAgB,KAAa;AACxD,IAAA,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;AAChC,CAAC;;AC3CM,MAAMH,QAAM,GAAG,CAAC,MAAW,EAAE,GAAW,KAAa;AAC1D,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,CAAC,MAAW,EAAE,IAAY,KAAa;IAC5D,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEK,MAAM,aAAa,GAAG,CAAC,KAAa,KAAa;IACtD,OAAO,KAAK,KAAK,EAAE,CAAC;AACtB,CAAC,CAAC;AACK,MAAM,WAAW,GAAG,CAAC,KAAU,KAAa;IACjD,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC,CAAC;AACK,MAAM,MAAM,GAAG,CAAC,KAAU,KAAa;IAC5C,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC,CAAC;AACK,MAAM,aAAa,GAAG,CAAC,MAAW,KAAa;AACpD,IAAA,QACE,MAAM;QACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,SAAS,EAClD;AACJ,CAAC,CAAC;AACK,MAAM,YAAY,GAAG,CAAC,GAAU,KAAa;AAClD,IAAA,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,CAAC,KAAU,KAAa;AAC7C,IAAA,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/D,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAAM,SAAA,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAAM,SAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACF,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,CAAC,KAAU,KAAI;AACvC,IAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAEK,MAAM,0BAA0B,GAAG,CAAC,KAAU,KAAI;IACvD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEK,MAAM,6BAA6B,GAAG,CAAC,KAAU,KAAI;AAC1D,IAAA,OAAO,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CAAC,KAAU,KAAS;AACvD;;;AAGG;AACH,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,KAAK,GAAG,EAAE,CAAC;AACZ,SAAA;AACF,KAAA;AAAM,SAAA;QACL,KAAK,GAAG,EAAE,CAAC;AACZ,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,GAAW,KAAI;IACtD,OAAO,qBAAqB,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC;AAEK,MAAM,aAAa,GAAG,CAC3B,GAAW,EACX,IAAY,EACZ,OAAe,KACL;AACV,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,IAAY,EAAE,KAAU,KAAS;IAC5E,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAC9B,MAAW,EACX,IAAY,EACZ,KAAU,KACH;IACP,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,UAAe,KAAS;AACjE,IAAA,MAAM,SAAS,GAAe,KAAK,CAAC,IAAI,CAAC;AACzC,IAAA,IAAI,KAAU,CAAC;AAEf,IAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;AAC1B,QAAA,QAAQ,SAAS;YACf,KAAK,UAAU,CAAC,IAAI;gBAClB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,gBAAA,KAAK,GAAG,IAAI,MAAM,CAChB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACxB,gBAAA,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBACrB,CAAC;gBACF,MAAM;YACR,KAAK,UAAU,CAAC,KAAK;gBACnB,MAAM,UAAU,GAAG,KAAoB,CAAC;gBACxC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAS,KAAI;AAC5C,oBAAA,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;AACnC,iBAAC,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,UAAU,CAAC,QAAQ;AACtB,gBAAA,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC5B,MAAM;AACR,YAAA;gBACE,KAAK,GAAG,UAAU,CAAC;gBACnB,MAAM;AACT,SAAA;AACF,KAAA;AAAM,SAAA;QACL,KAAK,GAAG,UAAU,CAAC;AACpB,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEK,MAAM,aAAa,GAAG,CAAC,KAAa,KAAS;AAClD,IAAA,MAAM,SAAS,GAAe,KAAK,CAAC,IAAI,CAAC;AACzC,IAAA,IAAI,KAAU,CAAC;AAEf,IAAA,QAAQ,SAAS;QACf,KAAK,UAAU,CAAC,QAAQ;YACtB,KAAK,GAAG,KAAK,CAAC;YACd,MAAM;QACR,KAAK,UAAU,CAAC,MAAM;YACpB,KAAK,GAAG,IAAI,CAAC;YACb,MAAM;QACR,KAAK,UAAU,CAAC,IAAI;YAClB,KAAK,GAAG,IAAI,CAAC;YACb,MAAM;AACR,QAAA;YACE,KAAK,GAAG,EAAE,CAAC;YACX,MAAM;AACT,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;;MC/JYK,WAAS,CAAA;IAIpB,WAAY,CAAA,SAAiB,EAAE,YAAiB,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;KACnC;IAEO,SAAS,CAAC,SAAiB,EAAE,sBAA8B,EAAA;QACjE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAClD,YAAA,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,SAAS,CAAC;KAClB;AAEO,IAAA,cAAc,CAAC,SAAiB,EAAA;QACtC,OAAO,SAAS,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC,KAAK,KAAI;AAClE,YAAA,QAAQ,KAAK;AACX,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA,KAAK,IAAI;AACP,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,GAAG,CAAC;AACb,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,GAAG,CAAC;AACb,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA;AACE,oBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC9B;AACF,CAAA;AANC,UAAA,CAAA;IADC,GAAG;AAMH,CAAA,EAAAA,WAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA;;MC5CUC,SAAO,CAAA;AASlB,IAAA,WAAA,CACE,MAAe,EACf,KAAa,EACb,WAAgB,EAChB,YAAiB,EACjB,QAAa,EACb,gBAAqB,EACrB,UAAoB,EAAA;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;IAGK,OAAO,GAAA;;AACX,YAAA,MAAM,SAAS,GAAG,IAAID,WAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3E,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;AAE3C,YAAA,IAAI,aAAa,EAAE;gBACjB,OAAO,IAAI,CAAC,WAAW,CACrB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,CACvB,CAAC;AACH,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AACF,CAAA;AAdC,UAAA,CAAA;IADC,GAAG;AAcH,CAAA,EAAAC,SAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA;;AC9CH,IAAY,QAIX,CAAA;AAJD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC/B,CAAC,EAJW,QAAQ,KAAR,QAAQ,GAInB,EAAA,CAAA,CAAA;;ACJD,IAAY,UASX,CAAA;AATD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EATW,UAAU,KAAV,UAAU,GASrB,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,mBAGX,CAAA;AAHD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,mBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACrC,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,GAG9B,EAAA,CAAA,CAAA;;MCIYC,SAAO,CAAA;AAiClB,IAAA,WAAA,CACE,KAAa,EACb,QAAa,EACb,gBAAqB,EACrB,YAAiB,EAAA;AAEjB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;KACnC;AAzCD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAGD,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IACD,IAAI,gBAAgB,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;AAGD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAGD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAcO,IAAA,uBAAuB,CAAC,IAAY,EAAA;QAC1C,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;YACpB,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3C,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,oBAAoB,CAAC,IAAY,EAAA;AACvC,QAAA,IAAI,KAAU,CAAC;QACf,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7C,QAAA,OAAO,KAAK,CAAC;KACd;AACO,IAAA,4BAA4B,CAAC,IAAY,EAAA;AAC/C,QAAA,IAAI,KAAU,CAAC;QACf,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACrD,QAAA,OAAO,KAAK,CAAC;KACd;AACO,IAAA,wBAAwB,CAAC,IAAY,EAAA;AAC3C,QAAA,IAAI,KAAU,CAAC;QACf,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACjD,QAAA,OAAO,KAAK,CAAC;KACd;IACO,0BAA0B,CAChC,IAAyB,EACzB,GAAW,EAAA;QAEX,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,QAAA,QAAQ,IAAI;YACV,KAAK,mBAAmB,CAAC,aAAa;gBACpC,KAAK,GAAG,6BAA6B,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9D,sBAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;sBACzB,EAAE,CAAC;gBACP,MAAM;YACR,KAAK,mBAAmB,CAAC,eAAe;gBACtC,KAAK,GAAG,6BAA6B,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChE,sBAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;sBAC3B,EAAE,CAAC;gBACP,MAAM;AACR,YAAA;gBACE,KAAK,GAAG,EAAE,CAAC;gBACX,MAAM;AACT,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAGD,IAAA,kBAAkB,CAAC,MAAe,EAAA;QAChC,IAAI,KAAK,GAAQ,EAAE,CAAC;QAEpB,QAAQ,MAAM,CAAC,GAAG;YAChB,KAAK,UAAU,CAAC,YAAY;gBAC1B,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,UAAU,CAAC,SAAS;gBACvB,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,UAAU,CAAC,cAAc;gBAC5B,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,UAAU,CAAC,kBAAkB;gBAChC,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7D,MAAM;YACR,KAAK,UAAU,CAAC,eAAe;gBAC7B,KAAK,GAAG,IAAI,CAAC,0BAA0B,CACrC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAChC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAChC,CAAC;gBACF,MAAM;YACR,KAAK,UAAU,CAAC,UAAU;AACxB,gBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBACrB,MAAM;AACR,YAAA;gBACE,KAAK,GAAG,EAAE,CAAC;gBACX,MAAM;AACT,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,qBAAqB,CAAC,IAAY,EAAE,KAAU,EAAA;AACpD,QAAA,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1D;IACO,kBAAkB,CAAC,IAAY,EAAE,KAAU,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAChE;IACO,sBAAsB,CAAC,IAAY,EAAE,KAAU,EAAA;AACrD,QAAA,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KACxE;IACO,0BAA0B,CAAC,IAAY,EAAE,KAAU,EAAA;AACzD,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CACvC,IAAI,CAAC,iBAAiB,EACtB,IAAI,EACJ,KAAK,CACN,CAAC;KACH;AACO,IAAA,wBAAwB,CAAC,IAAY,EAAE,GAAW,EAAE,KAAU,EAAA;AACpE,QAAA,QAAQ,IAAI;YACV,KAAK,mBAAmB,CAAC,aAAa;AACpC,gBAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,mBAAmB,CAAC,eAAe;AACtC,gBAAA,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnC,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;KACF;IAGK,gBAAgB,CAAC,MAAe,EAAE,KAAU,EAAA;;YAChD,QAAQ,MAAM,CAAC,GAAG;gBAChB,KAAK,UAAU,CAAC,YAAY;AAC1B,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACnE,MAAM;gBACR,KAAK,UAAU,CAAC,SAAS;AACvB,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACnE,MAAM;gBACR,KAAK,UAAU,CAAC,cAAc;AAC5B,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,EACjB,KAAK,CACN,CAAC;oBACF,MAAM;gBACR,KAAK,UAAU,CAAC,kBAAkB;AAChC,oBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,CACtD,MAAM,CAAC,KAAK,CAAC,IAAI,EACjB,KAAK,CACN,CAAC;oBACF,MAAM;gBACR,KAAK,UAAU,CAAC,eAAe;oBAC7B,MAAM,IAAI,CAAC,wBAAwB,CACjC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAChC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAC/B,KAAK,CACN,CAAC;oBACF,MAAM;AACR,gBAAA;oBACE,MAAM;AACT,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AACF,CAAA;AA9FC,UAAA,CAAA;IADC,GAAG;AAgCH,CAAA,EAAAA,SAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAgCD,UAAA,CAAA;IADC,GAAG;AA+BH,CAAA,EAAAA,SAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;;MC1LUC,OAAK,CAAA;IAOhB,WACE,CAAA,KAAmB,EACnB,KAAa,EACb,QAAa,EACb,gBAAqB,EACrB,YAAiB,EAAA;AAEjB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAGO,IAAA,QAAQ,CAAC,IAAW,EAAA;AAC1B,QAAA,IAAI,QAAQ,GAAc,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,oBAAoB,GAAY,KAAK,CAAC;AAE1C,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACzE,SAAA;QAED,MAAM,MAAM,GAAG,IAAID,SAAO,CACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACnB,CAAC;AAEF,QAAA,QAAQ,QAAQ;YACd,KAAK,QAAQ,CAAC,kBAAkB;gBAC9B,MAAM,oBAAoB,GAAG,IAA6B,CAAC;AAC3D,gBAAA,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;AACrE,gBAAA,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;AAEjE,gBAAA,QAAQ,0BAA0B;oBAChC,KAAK,UAAU,CAAC,cAAc;wBAC5B,oBAAoB,GAAG,OAAO,CAC5B,IAAI,CAAC,aAAa,EAClB,wBAAwB,CACzB,CAAC;wBACF,MAAM;oBACR,KAAK,UAAU,CAAC,SAAS;wBACvB,oBAAoB,GAAG,OAAO,CAC5B,IAAI,CAAC,SAAS,EACd,wBAAwB,CACzB,CAAC;wBACF,MAAM;oBACR,KAAK,UAAU,CAAC,kBAAkB;wBAChC,oBAAoB,GAAG,OAAO,CAC5B,IAAI,CAAC,iBAAiB,EACtB,wBAAwB,CACzB,CAAC;wBACF,MAAM;oBACR,KAAK,UAAU,CAAC,YAAY;wBAC1B,oBAAoB,GAAG,OAAO,CAC5B,IAAI,CAAC,MAAM,EACX,wBAAwB,CACzB,CAAC;wBACF,MAAM;AACR,oBAAA;wBACE,oBAAoB,GAAG,KAAK,CAAC;wBAC7B,MAAM;AACT,iBAAA;gBACD,MAAM;YACR,KAAK,QAAQ,CAAC,WAAW;gBACvB,MAAM,cAAc,GAAG,IAAuB,CAAC;gBAC/C,MAAM,oBAAoB,GAAY,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;gBACxE,MAAM,mBAAmB,GACvB,MAAM,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;gBAElD,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,WAAW,CAAC,MAAM,EAAE;AAC3D,oBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3D,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,iBAAA;AAED,gBAAA,oBAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,QAAQ,CAAC,YAAY;gBACxB,MAAM,eAAe,GAAG,IAAwB,CAAC;gBACjD,MAAM,4BAA4B,GAChC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC7C,MAAM,6BAA6B,GACjC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAE9C,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAC7C,6BAA6B,CAC9B,CAAC;gBACF,MAAM,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAC5C,4BAA4B,CAC7B,CAAC;AAEF,gBAAA,oBAAoB,GAAG,aAAa,KAAK,YAAY,CAAC;gBACtD,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;AAED,QAAA,OAAO,oBAAoB,CAAC;KAC7B;IAGM,OAAO,GAAA;QACZ,IAAI,sBAAsB,GAAG,EAAE,CAAC;AAEhC,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9B,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEjD,sBAAsB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACjB,sBAAsB,CAAA,EAAA,EACzB,CAAC,IAAI,CAAC,EAAE,GAAG,oBAAoB,EAAA,CAChC,CAAC;AACH,SAAA;AAED,QAAA,OAAO,sBAAsB,CAAC;KAC/B;AACF,CAAA;AAvGC,UAAA,CAAA;IADC,GAAG;AAuFH,CAAA,EAAAC,OAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAcH,CAAA,EAAAA,OAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA;;MClIU,QAAQ,CAAA;IAOnB,WACE,CAAA,KAAa,EACb,YAAiB,EACjB,QAAa,EACb,gBAAqB,EACrB,UAAoB,EAAA;AAEpB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;IAGK,eAAe,GAAA;;AACnB,YAAA,IAAI,YAAiB,CAAC;YAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAElD,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,YAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,OAAO,GAAG,IAAID,SAAO,CACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACnB,CAAC;gBACF,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;;AAEjD,gBAAA,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAC5B,IAAI,CAAC,MAAM,EACX,0BAA0B,WAAW,CAAA,OAAA,CAAS,EAC9C,KAAK,CACN,CAAC;AAEF,gBAAA,MAAM,UAAU,GAAgB,MAAM,CAAC,UAAU,CAAC;AAElD,gBAAA,MAAM,QAAQ,GAAoB,UAAU,CAAC,QAAQ,CAAC;AACtD,gBAAA,MAAM,KAAK,GAAiB,UAAU,CAAC,KAAK,CAAC;AAC7C,gBAAA,MAAM,OAAO,GAAmB,UAAU,CAAC,OAAO,CAAC;gBAEnD,MAAM,YAAY,GAAG,IAAIC,OAAK,CAC5B,KAAK,EACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACnB,CAAC,OAAO,EAAE,CAAC;AAEZ,gBAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;AAC1B,oBAAA,MAAM,mBAAmB,GAAG,IAAIH,WAAS,CACvC,MAAM,CAAC,SAAS,EAChB,YAAY,CACb,CAAC,QAAQ,EAAE,CAAC;AAEb,oBAAA,IAAI,mBAAmB,EAAE;AACvB,wBAAA,MAAM,OAAO,GAAG,IAAIC,SAAO,CACzB,MAAM,EACN,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CACjB,CAAC;AAEF,wBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACzB,qBAAA;AACF,iBAAA;AAED,gBAAA,WAAW,EAAE,CAAC;AACf,aAAA;YAED,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AAE/C,YAAA,IAAIL,SAAO,CAAC,YAAY,CAAC,EAAE;AACzB,gBAAA,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,aAAA;AAED,YAAA,OAAO,YAAY,CAAC;SACrB,CAAA,CAAA;AAAA,KAAA;AACF,CAAA;AAnEC,UAAA,CAAA;IADC,GAAG;AAmEH,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA;;AChGI,MAAM,gBAAgB,GAAG,CAAC,MAAa,EAAE,GAAW,KAAI;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAClC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AACrB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACH,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CAAC,MAAa,EAAE,GAAW,KAAI;AAClE,IAAA,IAAI,UAAkB,CAAC;IAEvB,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACvC,QAAA,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AACvB,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEK,MAAM,kCAAkC,GAAG,CAChD,KAAU,EACV,UAAe,EACf,SAAc,KACE,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AAChB,IAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;;AAG7D,IAAA,IAAI,OAA2B,CAAC;IAChC,IAAI,UAAU,CAAC,0BAA0B,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CACpC,UAAU,CAAC,0BAA0B,CACtC,CAAC,CAAC,CAAC,CAAC;AACL,QAAA,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACpD,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AAC9B,KAAA;;AAGD,IAAA,IAAI,CAAC,OAAO;QAAE,OAAO;;AAGrB,IAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;AACtC,IAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;;AAGnC,IAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChC,CAAC,CAAA,CAAC;AAEK,MAAM,mCAAmC,GAAG,CACjD,KAAU,EACV,UAAe,EACf,SAAc,KACP;AACP,IAAA,IAAI,OAAY,CAAC;AAEjB,IAAA,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAEvD,IAAA,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE;QAClC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;AAC1C,KAAA;AAED,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,CACrC,OAA2C,KAC/B;AACZ,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEc,SAAA,mBAAmB,CAAC,KAAU,EAAE,KAAU,EAAA;AACxD,IAAA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,IAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;;;;;;;;;AAWpB,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,MAAM,UAAU,GAAG,CACxB,KAAU,EACV,OAA0C,KACnC;AACP,IAAA,MAAM,kBAAkB,GAAG,CACzB,QAA6C,EAC7C,OAA0C,KACxC;AACF,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,YAA+C,KAAI;AACvE,YAAA,QACE,YAAY,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;AAClC,gBAAA,YAAY,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EACxC;AACJ,SAAC,CAAC,CAAC;AACL,KAAC,CAAC;AAEF,IAAA,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAEvB,IAAA,IAAID,QAAM,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;QAC7B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE;AACnD,YAAA,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,aAAA,CAAC,CAAC;AACJ,SAAA;AACF,KAAA;AAAM,SAAA;AACL,QAAA,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACxE,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACK,MAAM,aAAa,GAAG,CAC3B,KAAU,EACV,OAA0C,KACnC;AACP,IAAA,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,YAAY,EAAA;AACjE,QAAA,OAAO,YAAY,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;AAC5C,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEI,SAAU,aAAa,CAC3B,MAAW,EACX,MAAW,EACX,GAAW,EACX,KAAc,EAAA;IAEd,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;AACjD,QAAA,OAAO,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;AAC3B,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,MAAW,KAAI;AACnD,QAAA,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,SAAiB,KAAI;YAChE,IAAI,YAAY,GAAW,EAAE,CAAC;AAE9B,YAAA,QAAQ,SAAS;AACf,gBAAA,KAAK,UAAU;AACb,oBAAA,YAAY,GAAG,CAAA,EAAG,UAAU,CAAA,aAAA,CAAe,CAAC;oBAC5C,MAAM;AACR,gBAAA,KAAK,OAAO;AACV,oBAAA,YAAY,GAAG,CAAA,EAAG,UAAU,CAAA,wBAAA,CAA0B,CAAC;oBACvD,MAAM;AACR,gBAAA,KAAK,KAAK;oBACR,YAAY,GAAG,CAAG,EAAA,UAAU,CAAoC,iCAAA,EAAA,KAAK,CAAC,UAAU,CAAC,GAAG,CAAA,CAAE,CAAC;oBACvF,MAAM;AACR,gBAAA,KAAK,WAAW;oBACd,YAAY,GAAG,CAAG,EAAA,UAAU,CAA+C,4CAAA,EAAA,KAAK,CAAC,UAAU,CAAC,SAAS,CAAA,CAAE,CAAC;oBACxG,MAAM;AACR,gBAAA,KAAK,KAAK;oBACR,YAAY,GAAG,CAAG,EAAA,UAAU,CAAoC,iCAAA,EAAA,KAAK,CAAC,UAAU,CAAC,SAAS,CAAA,CAAE,CAAC;oBAC7F,MAAM;AACR,gBAAA,KAAK,WAAW;oBACd,YAAY,GAAG,CAAG,EAAA,UAAU,CAA+C,4CAAA,EAAA,KAAK,CAAC,UAAU,CAAC,SAAS,CAAA,CAAE,CAAC;oBACxG,MAAM;AACR,gBAAA,KAAK,UAAU;AACb,oBAAA,YAAY,GAAG,CAAA,EAAG,UAAU,CAAA,eAAA,CAAiB,CAAC;oBAC9C,MAAM;AACR,gBAAA,KAAK,SAAS;AACZ,oBAAA,YAAY,GAAG,CAAA,EAAG,UAAU,CAAA,wBAAA,CAA0B,CAAC;oBACvD,MAAM;AACR,gBAAA;AACE,oBAAA,YAAY,GAAG,CAAG,EAAA,UAAU,CAAK,EAAA,EAAA,SAAS,EAAE,CAAC;oBAC7C,MAAM;AACT,aAAA;AAED,YAAA,OAAO,YAAY,CAAC;AACtB,SAAC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACpC,YAAA,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE;AACxB,gBAAA,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;AAC7C,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,CAAC;AACf,KAAC,CAAC;AAEF,IAAA,IAAI,KAAK,EAAE;AACT,QAAA,MAAM,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;AACnE,KAAA;AAAM,SAAA;QACL,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACrC,KAAA;AAED,IAAA,MAAM,CAAC,UAAU,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;AAEpE,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,MAAM,+BAA+B,GAAG,CAAC,IAAY,KAAY;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACxB,IAAA,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC;AAEF,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEK,MAAM,+BAA+B,GAAG,CAAC,IAAY,KAAY;AACtE,IAAA,IAAI,aAAqB,CAAC;AAC1B,IAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACrB,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,IAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAEnB,IAAA,aAAa,GAAG,CAAG,EAAA,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,KAAK,GAAG,CAAC;AAC7D,SAAA,QAAQ,EAAE;SACV,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAI,CAAA,EAAA,IAAI,EAAE,CAAC;AAE9B,IAAA,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEK,MAAM,yCAAyC,GAAG,CACvD,KAAa,EACb,KAAU,KACR;IACF,IAAI,cAAc,GAAQ,KAAK,CAAC;AAEhC,IAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;QACrB,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,UAAU,CAAC,IAAI;AAClB,gBAAA,cAAc,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;gBACxD,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;AACF,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEK,MAAM,yCAAyC,GAAG,CACvD,KAAa,EACb,KAAU,KACR;IACF,IAAI,cAAc,GAAQ,KAAK,CAAC;AAEhC,IAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;QACrB,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,UAAU,CAAC,KAAK;AACnB,gBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AAC1B,oBAAA,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;AAC9B,iBAAA;gBACD,MAAM;YACR,KAAK,UAAU,CAAC,IAAI;AAClB,gBAAA,cAAc,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,UAAU,CAAC,KAAK;gBACnB,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;AACF,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC;;MC5PYS,aAAW,CAAA;IAmCtB,WACE,CAAA,KAAa,EACb,QAAa,EACb,gBAAqB,EACrB,YAAiB,EACjB,UAAe,EAAA;AAEf,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;AA7CD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAGD,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IACD,IAAI,gBAAgB,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;AAGD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAGD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAmBD,IAAA,kBAAkB,CAAC,KAAU,EAAA;QAC3B,IAAI,UAAU,GAAG,EAAE,CAAC;AAEpB,QAAA,IACET,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3B,YAAAA,QAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AAC/B,YAAA,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAChC;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,SAAA;AACD,QAAA,IACEA,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3B,YAAAA,QAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AAC/B,YAAA,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAChC;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,SAAA;AACD,QAAA,IACEA,QAAM,CAAC,KAAK,EAAE,UAAU,CAAC;AACzB,aAACA,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAIA,QAAM,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EACrE;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC,SAAA;AACD,QAAA,IACEA,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3B,YAAAA,QAAM,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC;AACrC,YAAA,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EACtC;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,SAAA;AACD,QAAA,IACEA,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3B,YAAAA,QAAM,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC;AACrC,YAAA,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EACtC;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,SAAA;AACD,QAAA,IACEA,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC;AAC3B,YAAAA,QAAM,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC;AACnC,YAAA,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EACpC;YACA,IAAIA,QAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gBAC3C,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,WAAW,CAAC,MAAM,EAAE;AACvD,oBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,iBAAA;AAAM,qBAAA;AACL,oBAAA,UAAU,CAAC,IAAI,CACb,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAC3D,CAAC;AACH,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAGD,IAAA,uBAAuB,CACrB,OAAkB,EAAA;QAElB,IAAI,MAAM,GAAsC,EAAE,CAAC;AAEnD,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;YAClC,MAAM,aAAa,GAAqB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACrE,YAAA,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,EAAE;gBACzD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;oBAC9C,MAAM,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC;AAC/B,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAGD,IAAA,4BAA4B,CAAC,iBAAwC,EAAA;QACnE,IAAI,QAAQ,GAAU,EAAE,CAAC;AAEzB,QAAA,IAAI,aAAa,GAAG,CAAC,IAA2B,KAAI;AAClD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,OAAO,CAAC,OAAO,EAAE;oBACnB,QAAQ,CAAC,IAAI,CAAC;AACZ,wBAAA,GAAG,EAAE,KAAK;AACV,wBAAA,OAAO,EAAE,IAAI;AACd,qBAAA,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;oBACL,QAAQ,CAAC,IAAI,CAAC;AACZ,wBAAA,GAAG,EAAE,KAAK;AACV,wBAAA,OAAO,EAAE,KAAK;AACf,qBAAA,CAAC,CAAC;AACJ,iBAAA;gBACD,IAAI,OAAO,YAAY,SAAS,EAAE;oBAChC,aAAa,CAAC,OAAO,CAAC,CAAC;AACxB,iBAAA;qBAAM,IAAI,OAAO,YAAY,SAAS,EAAE;oBACvC,aAAa,CAAC,OAAO,CAAC,CAAC;AACxB,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC;QAEF,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAEjC,QAAA,OAAO,QAAQ,CAAC;KACjB;IAGK,aAAa,GAAA;;AACjB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAE3C,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AACtC,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;AAChC,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YAEpC,MAAM,YAAY,GAAG,IAAIQ,OAAK,CAC5B,KAAK,EACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACnB,CAAC,OAAO,EAAE,CAAC;AAEZ,YAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;AAC1B,gBAAA,MAAM,mBAAmB,GAAG,IAAIH,WAAS,CACvC,MAAM,CAAC,SAAS,EAChB,YAAY,CACb,CAAC,QAAQ,EAAE,CAAC;AAEb,gBAAA,IAAI,mBAAmB,EAAE;AACvB,oBAAA,MAAM,OAAO,GAAG,IAAIC,SAAO,CACzB,MAAM,EACN,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CACjB,CAAC;AAEF,oBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACzB,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AACF,CAAA;AAjJC,UAAA,CAAA;IADC,GAAG;AAuDH,CAAA,EAAAG,aAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAmBH,CAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AA6BH,CAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAoCH,CAAA,EAAAA,aAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;;MC7MU,qBAAqB,CAAA;AAChC,IAAA,WAAA,GAAA,GAAgB;;IAIV,eAAe,CACnB,MAAW,EACX,QAAa,EACb,gBAAqB,EACrB,YAAiB,EACjB,UAAoB,EAAA;;AAEpB,YAAA,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AAElC,YAAA,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;AACxB,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,oBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,UAAU,CACX,CAAC;AACF,oBAAA,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;AAC7C,oBAAA,KAAK,GAAG,yCAAyC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBAEhE,MAAM,UAAU,GAAG,IAAIA,aAAW,CAChC,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,UAAU,CACX,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAE5B,oBAAA,SAAS,CAAC,UAAU,CAClB,KAAK,CAAC,GAAG,EACT,IAAI,WAAW,CACb,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAC1C,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CACF,CAAC;AACH,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,SAAS,CAAC;SAClB,CAAA,CAAA;AAAA,KAAA;AACF,CAAA;AAzCC,UAAA,CAAA;IADC,GAAG;AAyCH,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA;;MC9BU,IAAI,CAAA;IAYf,WACE,CAAA,KAAoB,EACpB,QAAa,EACb,gBAAqB,EACrB,YAAiB,EACjB,UAAoB,EAAA;AAEpB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAE9B,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;KACjC;IAGY,oBAAoB,GAAA;;;YAC/B,IAAI,MAAM,GAAgC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAEpE,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,YAAA,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;AACxB,gBAAA,IAAI,OAAO,GAAmB,KAAK,CAAC,OAAO,CAAC;gBAE5C,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,gBAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;oBAC1B,MAAM,OAAO,GAAG,IAAIF,SAAO,CACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACnB,CAAC;oBACF,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;;AAEjD,oBAAA,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAC5B,IAAI,CAAC,MAAM,EACX,CAAA,wBAAA,EAA2B,UAAU,CAAa,UAAA,EAAA,WAAW,SAAS,EACtE,KAAK,CACN,CAAC;AAEF,oBAAA,MAAM,UAAU,GAAgB,MAAM,CAAC,UAAU,CAAC;AAElD,oBAAA,MAAM,QAAQ,GAAoB,CAAA,EAAA,GAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AAC7D,oBAAA,MAAM,KAAK,GAAiB,CAAA,EAAA,GAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AACpD,oBAAA,MAAM,OAAO,GAAmB,CAAA,EAAA,GAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;oBAE1D,MAAM,YAAY,GAAG,IAAIC,OAAK,CAC5B,KAAK,EACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACnB,CAAC,OAAO,EAAE,CAAC;AAEZ,oBAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;AAC1B,wBAAA,MAAM,mBAAmB,GAAG,IAAIH,WAAS,CACvC,MAAM,CAAC,SAAS,EAChB,YAAY,CACb,CAAC,QAAQ,EAAE,CAAC;AAEb,wBAAA,IAAI,mBAAmB,EAAE;AACvB,4BAAA,MAAM,OAAO,GAAG,IAAIC,SAAO,CACzB,MAAM,EACN,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CACjB,CAAC;AAEF,4BAAA,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACzB,yBAAA;AACF,qBAAA;AAED,oBAAA,WAAW,EAAE,CAAC;AACf,iBAAA;AAED,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA;YAED,OAAO,IAAI,CAAC,MAAM,CAAC;;AACpB,KAAA;IAGY,mBAAmB,GAAA;;AAC9B,YAAA,MAAM,IAAI,GAAoB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEjD,YAAA,MAAM,UAAU,GAAgB,IAAI,CAAC,UAAU,CAAC;AAEhD,YAAA,MAAM,QAAQ,GAAoB,UAAU,CAAC,QAAQ,CAAC;AACtD,YAAA,MAAM,KAAK,GAAiB,UAAU,CAAC,KAAK,CAAC;AAC7C,YAAA,MAAM,OAAO,GAAmB,UAAU,CAAC,OAAO,CAAC;YAEnD,MAAM,YAAY,GAAG,IAAIE,OAAK,CAC5B,KAAK,EACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACnB,CAAC,OAAO,EAAE,CAAC;AAEZ,YAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;AAC1B,gBAAA,MAAM,gBAAgB,GAAG,IAAIH,WAAS,CACpC,MAAM,CAAC,SAAS,EAChB,YAAY,CACb,CAAC,QAAQ,EAAE,CAAC;AAEb,gBAAA,IAAI,gBAAgB,EAAE;AACpB,oBAAA,MAAM,OAAO,GAAG,IAAIC,SAAO,CACzB,MAAM,EACN,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CACjB,CAAC;AAEF,oBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACzB,iBAAA;AACF,aAAA;YAED,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB,CAAA,CAAA;AAAA,KAAA;IAGY,uBAAuB,GAAA;;AAClC,YAAA,MAAM,UAAU,GAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAE1D,YAAA,MAAM,QAAQ,GAAoB,UAAU,CAAC,QAAQ,CAAC;AACtD,YAAA,MAAM,KAAK,GAAiB,UAAU,CAAC,KAAK,CAAC;AAC7C,YAAA,MAAM,OAAO,GAAmB,UAAU,CAAC,OAAO,CAAC;YAEnD,MAAM,YAAY,GAAG,IAAIE,OAAK,CAC5B,KAAK,EACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,CACnB,CAAC,OAAO,EAAE,CAAC;AAEZ,YAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;AAC1B,gBAAA,MAAM,gBAAgB,GAAG,IAAIH,WAAS,CACpC,MAAM,CAAC,SAAS,EAChB,YAAY,CACb,CAAC,QAAQ,EAAE,CAAC;AAEb,gBAAA,IAAI,gBAAgB,EAAE;AACpB,oBAAA,MAAM,OAAO,GAAG,IAAIC,SAAO,CACzB,MAAM,EACN,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,CACjB,CAAC;AAEF,oBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACzB,iBAAA;AACF,aAAA;YAED,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB,CAAA,CAAA;AAAA,KAAA;IAED,cAAc,GAAA;QACZ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;YACxC,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;KACH;AACF,CAAA;AA7JC,UAAA,CAAA;IADC,GAAG;AAkEH,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAwCH,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAsCH,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA;;MC/IU,uBAAuB,CAAA;AA8ClC,IAAA,WAAA,CAC6C,IAAoB,EACnB,KAAsB,EAC1D,eAAsC,EAAA;QAFH,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;QACnB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;QAC1D,IAAe,CAAA,eAAA,GAAf,eAAe,CAAuB;QAzChD,IAAe,CAAA,eAAA,GAAQ,EAAE,CAAC;QAG1B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAS9B,QAAA,IAAA,CAAA,gBAAgB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAG9D,QAAA,IAAA,CAAA,eAAe,GAAsB,IAAI,YAAY,EAAO,CAAC;AAG7D,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,YAAY,EAAO,CAAC;AAG5D,QAAA,IAAA,CAAA,iBAAiB,GAAsB,IAAI,YAAY,EAAO,CAAC;QAE/D,IAAU,CAAA,UAAA,GAAU,EAAE,CAAC;QACvB,IAAgB,CAAA,gBAAA,GAAQ,EAAE,CAAC;QAE3B,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,eAAe,GAAG;AAChB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,KAAK;SAClB,CAAC;AACF,QAAA,IAAA,CAAA,cAAc,GAAG;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,KAAK;SAClB,CAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAc,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QA2ezC,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;KArenC;IAGJ,QAAQ,GAAA;AACN,QAAA,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;YACV,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE3C,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,CAAA,GAAG,CAAC;KACN;AAGD,IAAA,eAAe,MAAW;AAG1B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,YAAY,GAAG,CAAC,GAAW,KAAI;AACnC,YAAA,OAAON,QAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;AAC3D,SAAC,CAAC;AACF,QAAA,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,GACR,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,QAAQ,CACb,EAAA,OAAO,CAAC,QAAQ,CAAC,YAAY,CACjC,CAAC;AACH,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,iBAAiB,CAAC,EAAE;YACnC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC;YAE5D,IAAI,CAAC,QAAQ,GACR,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,QAAQ,CAAA,EAAA,EAChB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAA,CAC1D,CAAC;AAEF,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB;gBACE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ;AAC1D,aAAA,EACD,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;AAEF,YAAA,IAAI,KAAK,GAAkB,gBAAgB,CACzC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,eAAe,CAAC,GAAG,CACzB,CAAC;AAEF,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,KAAK,EACL,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,YAAA,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACV,gBAAA,KAAK,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAC9C,CAAA,GAAG,CAAC;AACN,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,cAAc,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;AACvD,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,cAAc,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;AACvD,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;AAElD,YAAA,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;gBACV,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC5C,CAAA,GAAG,CAAC;AACN,SAAA;KACF;AAGK,IAAA,cAAc,CAAC,UAAe,EAAA;;AAClC,YAAA,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;YAE7C,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAEnC,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CACzD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;oBAC1B,IAAI,CAAC,gBAAgB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAChB,IAAI,CAAC,gBAAgB,CAAA,EAAA,EACxB,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAA,CACtD,CAAC;oBAEF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY;yBAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;yBAChB,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,KAAI;AAC3C,wBAAA,IAAI,CAAC,gBAAgB,GAChB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,gBAAgB,CAAA,EAAA,EACxB,CAAC,KAAK,CAAC,GAAG,GAAG,aAAa,GAC3B,CAAC;AAEF,wBAAA,IAAI,CAAC,QAAQ,GACR,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,QAAQ,CAAA,EAAA,EAChB,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,GAC1B,CAAC;AACJ,qBAAC,CAAC,CAAC;AACN,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,oBAAA,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACV,wBAAA,KAAK,GAAG,MAAM,IAAI,CAAC,uBAAuB,CACxC;4BACE,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,4BAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;yBAChD,EACD,SAAS,CACV,CAAC;qBACH,CAAA,GAAG,CAAC;AACN,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAGD,IAAA,2BAA2B,CAAC,UAAe,EAAA;AACzC,QAAA,IAAIA,QAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;AACrC,SAAA;AAAM,aAAA,IACLA,QAAM,CAAC,UAAU,EAAE,WAAW,CAAC;AAC/B,YAAAA,QAAM,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,EACtC;YACA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;AAC/C,SAAA;KACF;IAGD,2BAA2B,GAAA;AACzB,QAAA,IAAIA,QAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACpB,SAAA;KACF;IAGK,kCAAkC,CACtC,oBAAyB,EACzB,cAAmB,EAAA;;AAEnB,YAAA,IAAIA,QAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;gBACzC,MAAM,YAAY,GAAG,IAAIQ,OAAK,CAC5B,oBAAoB,CAAC,KAAK,EAC1B,cAAc,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,CAClB,CAAC,OAAO,EAAE,CAAC;AAEZ,gBAAA,KAAK,IAAI,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAC/C,oBAAA,MAAM,gBAAgB,GAAG,IAAIH,WAAS,CACpC,MAAM,CAAC,SAAS,EAChB,YAAY,CACb,CAAC,QAAQ,EAAE,CAAC;AAEb,oBAAA,IAAI,gBAAgB,EAAE;AACpB,wBAAA,MAAM,OAAO,GAAG,IAAIC,SAAO,CACzB,MAAM,EACN,cAAc,EACd,YAAY,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,wBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACzB,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,cAAc,CAAC;SACvB,CAAA,CAAA;AAAA,KAAA;AAGK,IAAA,4BAA4B,CAChC,YAAiB,EACjB,oBAAyB,EACzB,SAAiB,EAAA;;AAEjB,YAAA,IAAI,cAAc,GAAG,gBAAgB,CACnC,IAAI,CAAC,UAAU,EACf,oBAAoB,CAAC,KAAK,CAAC,CAC5B,CAAC;AAEF,YAAA,QAAQ,SAAS;AACf,gBAAA,KAAK,MAAM;AACT,oBAAA,IACEN,QAAM,CAAC,cAAc,EAAE,UAAU,CAAC;AAClC,wBAAA,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EACxC;wBACA,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC3C,4BAAA,IAAIA,QAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,EAAE;gCACzD,QAAQ,oBAAoB,CAAC,IAAI;AAC/B,oCAAA,KAAK,sBAAsB;wCACzB,cAAc,GAAG,MAAM,IAAI,CAAC,yBAAyB,CACnD,YAAY,EACZ,cAAc,CACf,CAAC;wCACF,MAAM;AACR,oCAAA;wCACE,MAAM;AACT,iCAAA;AACF,6BAAA;AACF,yBAAA;wBACD,cAAc,GAAG,MAAM,IAAI,CAAC,kCAAkC,CAC5D,oBAAoB,EACpB,cAAc,CACf,CAAC;AACH,qBAAA;oBACD,MAAM;AACR,gBAAA,KAAK,cAAc;AACjB,oBAAA,IACEA,QAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC;AACxC,wBAAA,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EACtD;wBACA,QAAQ,cAAc,CAAC,IAAI;AACzB,4BAAA,KAAK,sBAAsB;gCACzB,cAAc,GAAG,MAAM,IAAI,CAAC,yBAAyB,CACnD,YAAY,EACZ,cAAc,CACf,CAAC;gCACF,MAAM;AACR,4BAAA;gCACE,MAAM;AACT,yBAAA;wBACD,cAAc,GAAG,MAAM,IAAI,CAAC,kCAAkC,CAC5D,oBAAoB,EACpB,cAAc,CACf,CAAC;AACH,qBAAA;oBACD,MAAM;AACR,gBAAA,KAAK,aAAa;AAChB,oBAAA,IACEA,QAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC;AACxC,wBAAA,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EACrD;wBACA,cAAc,GAAG,MAAM,IAAI,CAAC,kCAAkC,CAC5D,oBAAoB,EACpB,cAAc,CACf,CAAC;AACH,qBAAA;AACH,gBAAA;AACE,oBAAA,IAAIA,QAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC,EAAE;wBAC5C,cAAc,GAAG,MAAM,IAAI,CAAC,kCAAkC,CAC5D,oBAAoB,EACpB,cAAc,CACf,CAAC;AACH,qBAAA;oBACD,MAAM;AACT,aAAA;AAED,YAAA,IAAIA,QAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE;AAC/C,gBAAA,KAAK,MAAM,oBAAoB,IAAI,cAAc,CAAC,iBAAiB;AAChE,qBAAA,MAAM,EAAE;oBACT,cAAc,GAAG,IAAI,CAAC,4BAA4B,CAChD,cAAc,EACd,oBAAoB,EACpB,aAAa,CACd,CAAC;AACH,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,YAAY,CAAC;SACrB,CAAA,CAAA;AAAA,KAAA;IAGD,uBAAuB,CAAC,CAAM,EAAE,SAAiB,EAAA;AAC/C,QAAA,IAAI,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAE5D,QAAA,IAAIA,QAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAE;AAC7C,YAAA,IAAI,eAAe,GAAG,YAAY,CAAC,iBAAiB,CAAC,eAAe,CAAC;AACrE,YAAA,KAAK,IAAI,oBAAoB,IAAI,eAAe,EAAE;gBAChD,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAC9C,YAAY,EACZ,oBAAoB,EACpB,SAAS,CACV,CAAC;AACH,aAAA;AACF,SAAA;KACF;;AAID,IAAA,iBAAiB,CAAC,CAAM,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB;AACE,YAAA,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK;AACjB,SAAA,EACD,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;;AAGF,QAAA,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAErD,QAAA,IACE,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC/C;AACA,YAAA,MAAM,WAAW,GAAG,IAAIS,aAAW,CACjC,KAAK,EACL,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,YAAA,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACV,gBAAA,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;aACnC,CAAA,GAAG,CAAC;YAEL,IAAI,CAAC,uBAAuB,CAC1B;gBACE,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,gBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;aAChD,EACD,WAAW,CACZ,CAAC;AACH,SAAA;KACF;IAGK,4BAA4B,CAAC,CAAM,EAAE,KAAkB,EAAA;;YAC3D,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AAChC,gBAAA,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,oBAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACvE,oBAAA,MAAM,OAAO,GAAG,IAAIH,SAAO,CACzB,CAAC,EACD,UAAU,EACV,EAAE,EACF,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;AACF,oBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACzB,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAGK,IAAA,oBAAoB,CAAC,CAAM,EAAA;;AAC/B,YAAA,IAAI,KAAK,GAAkB,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAEpE,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;;AAE7B,gBAAA,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;AACzD,gBAAA,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AAC3B,gBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AACxC,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AAC1C,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AACvC,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AAEzC,gBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,KAAK,EACL,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,gBAAA,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE1C,gBAAA,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAEzC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;AAE9C,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;wBACvB,GAAG,EAAE,CAAC,CAAC,GAAG;AACV,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;AAClC,4BAAA,OAAO,EAAE,EAAE;AACX,4BAAA,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AAC3B,yBAAA;AACF,qBAAA,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;;;;oBAIL,UAAU,CAAC,MAAK;AACd,wBAAA,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;AACxD,wBAAA,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;qBAC7B,EAAE,GAAG,CAAC,CAAC;AACT,iBAAA;AAED,gBAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AACzC,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;AAC3C,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AACxC,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;AAC3C,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAGD,IAAA,sBAAsB,CAAC,CAAM,EAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzB,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC,CAAC;KACJ;AAGD,IAAA,qBAAqB,CAAC,CAAM,EAAA;QAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAE5C,QAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,EAAE;gBACnC,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,oBAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,yCAAyC,CAC7D,KAAK,EACL,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CACpB,CAAC;AACH,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IACE,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK;gBAC/B,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC7C;gBACA,MAAM,WAAW,GAAG,IAAIG,aAAW,CACjC,KAAK,EACL,QAAQ,EACR,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,gBAAA,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACV,oBAAA,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;iBACnC,CAAA,GAAG,CAAC;AACN,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAIA,aAAW,CAC9B,SAAS,EACT,QAAQ,EACR,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/C,IAAI,mBAAmB,GAAW,EAAE,CAAC;AAErC,YAAA,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;gBAC5B,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;AACnD,oBAAA,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;AACnC,iBAAA;AACD,gBAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAC7B,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAC3C,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,OAAO,CAChB,CAAC;AACH,aAAA;AAED,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAEnC,OAAO;AACR,SAAA;QAED,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChC,YAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1B,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACpB,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC5E;AAID,IAAA,uBAAuB,CAAC,IAAI,EAAA;AAC1B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACnC;;AAID,IAAA,SAAS,CAAC,QAAgB,EAAA;QACxB,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpD,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;KAC9C;AAGD,IAAA,SAAS,CAAC,QAAgB,EAAA;QACxB,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpD,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;KACzC;AAGD,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpD,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAE/C,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACzC,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAGD,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC1B,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpD,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QAEhD,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACxC,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAGD,IAAA,UAAU,CAAC,QAAgB,EAAA;;QAEzB,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;;AAGlE,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;;AAG/B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7D,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC,CAAC;;AAGH,QAAA,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,YAAY,CAAC,OAAO;AAC1B,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,YAAY,CAAC,OAAO;AAC1B,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,YAAY,CAAC,KAAK;AACxB,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA,CAAC,CAAC;;QAGH,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,UAAU;gBACb,MAAM,YAAY,GAAG,KAAsB,CAAC;gBAC5C,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC;AACvD,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;gBAC3C,MAAM;AACR,YAAA;AACE,gBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB,gBAAA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;gBACpC,MAAM;AACT,SAAA;KACF;IAGD,cAAc,CAAC,QAAgB,EAAE,OAAiB,EAAA;QAChD,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpD,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzC,QAAA,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;KACrC;IAGD,cAAc,CAAC,QAAgB,EAAE,OAAiB,EAAA;QAChD,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpD,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1C,QAAA,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;KACrC;IAGD,gBAAgB,CAAC,QAAgB,EAAE,OAAiB,EAAA;QAClD,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpD,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;KACrC;IAGD,gBAAgB,CAAC,QAAgB,EAAE,OAAiB,EAAA;QAClD,IAAI,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACpD,YAAA,OAAO,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC,CAAC;AAEH,QAAA,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;KACrC;AAGD,IAAA,cAAc,CAAC,KAAU,EAAE,IAAY,EAAE,KAAU,KAAI;IAGvD,sBAAsB,CAAC,GAAW,EAAE,KAAU,EAAA;AAC5C,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB;YACE,CAAC,GAAG,GAAG,KAAK;AACb,SAAA,EACD,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB,CAAC;KACH;AAGD,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;KAChD;AAGD,IAAA,cAAc,CAAC,QAAgB,EAAA;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;KAClD;IAGD,qBAAqB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;KACrC;IAGK,yBAAyB,CAAC,KAAU,EAAE,UAAe,EAAA;;AACzD,YAAA,IAAIT,QAAM,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;AAC9B,gBAAA,UAAU,CAAC,OAAO,GAAG,mCAAmC,CACtD,KAAK,EACL,UAAU,EACV,IAAI,CAAC,SAAS,CACf,CAAC;AACH,aAAA;AACD,YAAA,IAAIA,QAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAAE;AAC7C,gBAAA,UAAU,CAAC,OAAO,GAAG,MAAM,kCAAkC,CAC3D,KAAK,EACL,UAAU,EACV,IAAI,CAAC,SAAS,CACf,CAAC;AACH,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;SACnB,CAAA,CAAA;AAAA,KAAA;IAGK,UAAU,CACd,MAAe,EACf,KAAa,EACb,YAAiB,EACjB,QAAa,EACb,gBAAqB,EAAA;;YAErB,QAAQ,MAAM,CAAC,GAAG;gBAChB,KAAK,UAAU,CAAC,UAAU;oBACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,UAAU,CAAC,UAAU;oBACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,UAAU,CAAC,aAAa;oBAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACzC,MAAM;gBACR,KAAK,UAAU,CAAC,YAAY;oBAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACxC,MAAM;gBACR,KAAK,UAAU,CAAC,WAAW;oBACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACvC,MAAM;gBACR,KAAK,UAAU,CAAC,gBAAgB;AAC9B,oBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjE,MAAM;gBACR,KAAK,UAAU,CAAC,gBAAgB;AAC9B,oBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjE,MAAM;gBACR,KAAK,UAAU,CAAC,kBAAkB;AAChC,oBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACnE,MAAM;gBACR,KAAK,UAAU,CAAC,mBAAmB;AACjC,oBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACnE,MAAM;gBACR,KAAK,UAAU,CAAC,SAAS;AACvB,oBAAA,MAAM,OAAO,GAAG,IAAIO,SAAO,CACzB,KAAK,EACL,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,YAAY,CAClB,CAAC;AAEF,oBAAA,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAC1B,CAAC;AACF,oBAAA,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAEtE,oBAAA,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AACtB,oBAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACjC,oBAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACzC,oBAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBAEjD,MAAM;gBACR,KAAK,UAAU,CAAC,yBAAyB;AACvC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;oBAC3D,MAAM;gBACR,KAAK,UAAU,CAAC,MAAM;oBACpB,MAAM;AACR,gBAAA;oBACE,MAAM;AACT,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;;wIA/xBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA+CxB,cAAc,EAAA,EAAA,EAAA,KAAA,EACd,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAG,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAhDd,mBAAA,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAFvB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,qBAAqB,CAAC,+CCvDpC,y0eA8ZA,EAAA,MAAA,EAAA,CAAA,+8DAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,OAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,OAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;ADhTE,UAAA,CAAA;IADC,GAAG;AAOH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AACsB,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAG1B,UAAA,CAAA;IADC,GAAG;AA2DH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAiDH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAUH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAOH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAqCH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,oCAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AA0FH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAcH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAID,UAAA,CAAA;IADC,GAAG;AAoCH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAiBH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAmDH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAKH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAuEH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAID,UAAA,CAAA;IADC,GAAG;AAGH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAID,UAAA,CAAA;IADC,GAAG;AAQH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AASH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAcH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAcH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAyCH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAWH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAWH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAUH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAUH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AACmD,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGvD,UAAA,CAAA;IADC,GAAG;AAQH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAGH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAGH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAGH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AAkBH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,UAAA,CAAA;IADC,GAAG;AA+DH,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;4FA/xBU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,WAAW,EAAE,4BAA4B;oBACzC,SAAS,EAAE,CAAC,4BAA4B,CAAC;oBACzC,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA,CAAA;;0BAgDI,MAAM;2BAAC,cAAc,CAAA;;0BACrB,MAAM;2BAAC,eAAe,CAAA;6EA9CzB,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,MAAM;gBAIP,eAAe,EAAA,CAAA;sBADd,MAAM;gBAIP,cAAc,EAAA,CAAA;sBADb,MAAM;gBAIP,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAyBP,QAAQ,EAAA,EAAA,EASR,eAAe,EAAA,EAAA,EAGf,WAAW,EAAA,EAAA,EA6DL,cAAc,EAAA,EAAA,EAmDpB,2BAA2B,EAAA,EAAA,EAY3B,2BAA2B,EAAA,EAAA,EASrB,kCAAkC,EAAA,EAAA,EAuClC,4BAA4B,EAAA,EAAA,EA4FlC,uBAAuB,EAAA,EAAA,EAiBvB,iBAAiB,EAAA,EAAA,EAsCX,4BAA4B,EAAA,EAAA,EAmB5B,oBAAoB,EAAA,EAAA,EAqD1B,sBAAsB,EAAA,EAAA,EAOtB,qBAAqB,EAAA,EAAA,EA0ErB,uBAAuB,EAAA,EAAA,EAMvB,SAAS,EAAA,EAAA,EAUT,SAAS,EAAA,EAAA,EAWT,YAAY,EAAA,EAAA,EAgBZ,WAAW,EAAA,EAAA,EAgBX,UAAU,EAAA,EAAA,EA2CV,cAAc,EAAA,EAAA,EAad,cAAc,EAAA,EAAA,EAad,gBAAgB,EAAA,EAAA,EAYhB,gBAAgB,EAAA,EAAA,EAYhB,cAAc,EAAA,EAAA,EAGd,sBAAsB,EAAA,EAAA,EAUtB,YAAY,EAAA,EAAA,EAKZ,cAAc,EAAA,EAAA,EAKd,qBAAqB,EAAA,EAAA,EAKf,yBAAyB,EAAA,EAAA,EAoBzB,UAAU,EAAA,EAAA,EAAA,EAAA,CAAA;;AE1xBX,MAAM,MAAM,GAAG,CAAC,MAAW,EAAE,GAAW,KAAI;AACjD,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;;MCcY,wBAAwB,CAAA;AA6BnC,IAAA,WAAA,GAAA;QA3BA,IAAc,CAAA,cAAA,GAAQ,EAAE,CAAC;QAGzB,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAC;QAGrB,IAAS,CAAA,SAAA,GAAU,EAAE,CAAC;QAGtB,IAAkB,CAAA,kBAAA,GAAU,EAAE,CAAC;QAG/B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAG9B,QAAA,IAAA,CAAA,oBAAoB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAGlE,QAAA,IAAA,CAAA,oBAAoB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAGlE,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAO,CAAC;QAE7C,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;QAE1B,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;KAEpB;IAEhB,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC1E;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,YAAY,GAAG,CAAC,GAAW,KAAI;AACnC,YAAA,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;AAC3D,SAAC,CAAC;AACF,QAAA,IAAI,YAAY,CAAC,gBAAgB,CAAC,EAAE;YAClC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC;AAC3D,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;YAChD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1E,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,cAAc,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;AACvD,SAAA;KACF;AAED,IAAA,wBAAwB,CAAC,SAAgB,EAAA;QACvC,IAAI,mBAAmB,GAAY,IAAI,CAAC;AAExC,QAAA,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE;AAC3B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE;gBAChC,mBAAmB,GAAG,KAAK,CAAC;gBAC5B,MAAM;AACP,aAAA;AACF,SAAA;AAED,QAAA,OAAO,mBAAmB,CAAC;KAC5B;AAED,IAAA,0BAA0B,CAAC,YAAoB,EAAA;AAC7C,QAAA,IACE,IAAI,CAAC,YAAY,KAAK,YAAY;aACjC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAClD;AACA,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,CAAM,EAAA;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjC;;yIA5EU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,mBAAA,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,yYChBrC,mzFAmFA,EAAA,MAAA,EAAA,CAAA,m8HAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,OAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDnEa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,WAAW,EAAE,6BAA6B;oBAC1C,SAAS,EAAE,CAAC,6BAA6B,CAAC;AAC3C,iBAAA,CAAA;0EAGC,cAAc,EAAA,CAAA;sBADb,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,kBAAkB,EAAA,CAAA;sBADjB,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAIP,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAIP,kBAAkB,EAAA,CAAA;sBADjB,MAAM;;;MEtBI,OAAO,CAAA;AASlB,IAAA,WAAA,CAAY,UAAe,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;AATD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAMO,IAAA,sBAAsB,CAAC,IAAY,EAAA;QACzC,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;YACpB,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,0BAA0B,CAChC,IAAyB,EACzB,GAAW,EAAA;QAEX,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,QAAA,QAAQ,IAAI;YACV,KAAK,mBAAmB,CAAC,aAAa;gBACpC,KAAK,GAAG,6BAA6B,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9D,sBAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;sBACzB,EAAE,CAAC;gBACP,MAAM;YACR,KAAK,mBAAmB,CAAC,eAAe;gBACtC,KAAK,GAAG,6BAA6B,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChE,sBAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;sBAC3B,EAAE,CAAC;gBACP,MAAM;AACR,YAAA;gBACE,KAAK,GAAG,EAAE,CAAC;gBACX,MAAM;AACT,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,kBAAkB,CAAC,MAAe,EAAA;QAChC,IAAI,KAAK,GAAQ,EAAE,CAAC;QAEpB,QAAQ,MAAM,CAAC,GAAG;YAChB,KAAK,UAAU,CAAC,WAAW;gBACzB,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM;YACR,KAAK,UAAU,CAAC,eAAe;gBAC7B,KAAK,GAAG,IAAI,CAAC,0BAA0B,CACrC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAChC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAChC,CAAC;gBACF,MAAM;YACR,KAAK,UAAU,CAAC,UAAU;AACxB,gBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBACrB,MAAM;AACR,YAAA;gBACE,KAAK,GAAG,EAAE,CAAC;gBACX,MAAM;AACT,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,oBAAoB,CAAC,IAAY,EAAE,KAAU,EAAA;AACnD,QAAA,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KACpE;AACO,IAAA,wBAAwB,CAAC,IAAY,EAAE,GAAW,EAAE,KAAU,EAAA;AACpE,QAAA,QAAQ,IAAI;YACV,KAAK,mBAAmB,CAAC,aAAa;AACpC,gBAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,mBAAmB,CAAC,eAAe;AACtC,gBAAA,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnC,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;KACF;IAEK,gBAAgB,CAAC,MAAe,EAAE,KAAU,EAAA;;YAChD,QAAQ,MAAM,CAAC,GAAG;gBAChB,KAAK,UAAU,CAAC,WAAW;oBACzB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,UAAU,CAAC,eAAe;oBAC7B,MAAM,IAAI,CAAC,wBAAwB,CACjC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAChC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAC/B,KAAK,CACN,CAAC;oBACF,MAAM;AACR,gBAAA;oBACE,MAAM;AACT,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AACF;;MCpHY,SAAS,CAAA;IAIpB,WAAY,CAAA,SAAiB,EAAE,YAAiB,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;KACnC;IAEO,SAAS,CAAC,SAAiB,EAAE,sBAA8B,EAAA;QACjE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAClD,YAAA,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,SAAS,CAAC;KAClB;AAEO,IAAA,cAAc,CAAC,SAAiB,EAAA;QACtC,OAAO,SAAS,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC,KAAK,KAAI;AAClE,YAAA,QAAQ,KAAK;AACX,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA,KAAK,IAAI;AACP,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,GAAG,CAAC;AACb,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,GAAG,CAAC;AACb,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA,KAAK,MAAM;AACT,oBAAA,OAAO,IAAI,CAAC;AACd,gBAAA;AACE,oBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC9B;AACF;;MC9CY,OAAO,CAAA;AAMlB,IAAA,WAAA,CACE,MAAW,EACX,WAAgB,EAChB,UAAe,EACf,UAAoB,EAAA;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;IAEK,OAAO,GAAA;;AACX,YAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3E,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;AAE3C,YAAA,IAAI,aAAa,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACzD,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AACF;;MCXY,KAAK,CAAA;IAIhB,WAAY,CAAA,KAAmB,EAAE,UAAe,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAEO,IAAA,QAAQ,CAAC,IAAW,EAAA;AAC1B,QAAA,IAAI,QAAQ,GAAc,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,oBAAoB,GAAY,KAAK,CAAC;QAE1C,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE7C,QAAA,QAAQ,QAAQ;YACd,KAAK,QAAQ,CAAC,kBAAkB;gBAC9B,MAAM,oBAAoB,GAAG,IAA6B,CAAC;AAC3D,gBAAA,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;AACrE,gBAAA,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;AAEjE,gBAAA,QAAQ,0BAA0B;oBAChC,KAAK,UAAU,CAAC,WAAW;wBACzB,oBAAoB,GAAG,OAAO,CAC5B,IAAI,CAAC,WAAW,EAChB,wBAAwB,CACzB,CAAC;wBACF,MAAM;AACR,oBAAA;wBACE,oBAAoB,GAAG,KAAK,CAAC;wBAC7B,MAAM;AACT,iBAAA;gBACD,MAAM;YACR,KAAK,QAAQ,CAAC,WAAW;gBACvB,MAAM,cAAc,GAAG,IAAuB,CAAC;gBAC/C,MAAM,oBAAoB,GAAY,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;gBACxE,MAAM,mBAAmB,GACvB,MAAM,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;gBAElD,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,WAAW,CAAC,MAAM,EAAE;AAC3D,oBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3D,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,iBAAA;AAED,gBAAA,oBAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,QAAQ,CAAC,YAAY;gBACxB,MAAM,eAAe,GAAG,IAAwB,CAAC;gBACjD,MAAM,4BAA4B,GAChC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC7C,MAAM,6BAA6B,GACjC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAE9C,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAC7C,6BAA6B,CAC9B,CAAC;gBACF,MAAM,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAC5C,4BAA4B,CAC7B,CAAC;AAEF,gBAAA,oBAAoB,GAAG,aAAa,KAAK,YAAY,CAAC;gBACtD,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;AAED,QAAA,OAAO,oBAAoB,CAAC;KAC7B;IAEM,OAAO,GAAA;QACZ,IAAI,sBAAsB,GAAG,EAAE,CAAC;AAEhC,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9B,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEjD,sBAAsB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACjB,sBAAsB,CAAA,EAAA,EACzB,CAAC,IAAI,CAAC,EAAE,GAAG,oBAAoB,EAAA,CAChC,CAAC;AACH,SAAA;AAED,QAAA,OAAO,sBAAsB,CAAC;KAC/B;AACF;;MCjGY,WAAW,CAAA;IAWtB,WAAY,CAAA,UAAU,EAAE,UAAe,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;AAZD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;IASK,aAAa,GAAA;;YACjB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC;YAErE,MAAM,QAAQ,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,QAAQ,CAAC;AACvC,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;AAChC,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAEpC,YAAA,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;AAElE,YAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;AAC1B,gBAAA,MAAM,mBAAmB,GAAG,IAAI,SAAS,CACvC,MAAM,CAAC,SAAS,EAChB,YAAY,CACb,CAAC,QAAQ,EAAE,CAAC;AAEb,gBAAA,IAAI,mBAAmB,EAAE;AACvB,oBAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,MAAM,EACN,YAAY,EACZ,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,CACjB,CAAC;AAEF,oBAAA,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACzB,iBAAA;AACF,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AACF;;MC1CY,SAAS,CAAA;AAAtB,IAAA,WAAA,GAAA;AACE,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,UAAe,KAAW;AACzC,YAAA,IAAI,MAAa,CAAC;AAElB,YAAA,IAAIb,QAAM,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;AACnC,gBAAA,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;AACtC,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AAC5B,aAAA;AAED,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;QAEF,IAAuB,CAAA,uBAAA,GAAG,CAAC,KAAU,EAAE,GAAW,EAAE,KAAU,KAAS;AACrE,YAAA,IAAI,CAACA,QAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACvB,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpB,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;QAEF,IAAgB,CAAA,gBAAA,GAAG,CAAC,KAAU,EAAE,GAAW,EAAE,KAAU,KAAS;AAC9D,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEnB,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,KAAU,EAAE,GAAW,KAAS;AAChD,YAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACtB,gBAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;KAkrBH;AA/qBC,IAAA,iBAAiB,CAAC,UAAe,EAAA;AAC/B,QAAA,MAAM,iBAAiB,GAAG,CAAC,KAAU,KAAS;AAC5C,YAAA,MAAM,oBAAoB,GAAG,CAAC,KAAU,KAAS;gBAC/C,MAAM,QAAQ,GAAW,CAAG,EAAA,KAAK,CAAC,IAAI,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK;qBAClD,KAAK,CAAC,GAAG,CAAC;qBACV,IAAI,CAAC,GAAG,CAAC;qBACT,iBAAiB,EAAE,EAAE,CAAC;gBACzB,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACtD,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEtD,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACF,YAAA,MAAM,oBAAoB,GAAG,CAAC,KAAU,KAAS;AAC/C,gBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,MAAM,EACN,GAAG,CACJ,CAAC;AACF,gBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,aAAa,EACb,UAAU,CACX,CAAC;gBACF,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEtD,gBAAA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,KAAS;oBAChD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACvC,iBAAC,CAAC,CAAC;AAEH,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACF,YAAA,MAAM,kBAAkB,GAAG,CAAC,KAAU,KAAS;AAC7C,gBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,MAAM,EACN,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC1D,CAAC;gBACF,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEtD,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACF,YAAA,MAAM,mBAAmB,GAAG,CAAC,KAAU,KAAS;AAC9C,gBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBACxB,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,oBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CACtC,KAAK,CAAC,UAAU,EAChB,KAAK,EACL,MAAM,CACP,CAAC;AACH,iBAAA;AAAM,qBAAA;oBACL,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,KAAK,EACL,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpB,CAAC;AACH,iBAAA;AAED,gBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBACxB,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,oBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CACtC,KAAK,CAAC,UAAU,EAChB,KAAK,EACL,MAAM,CACP,CAAC;AACH,iBAAA;AAAM,qBAAA;oBACL,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,KAAK,EACL,IAAI,MAAM,CACR,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACxB,oBAAA,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;AACrB,oBAAA,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AACrB,qBAAA,CACF,CAAC;AACH,iBAAA;gBAED,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEtD,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACF,YAAA,MAAM,qBAAqB,GAAG,CAAC,KAAU,KAAS;AAChD,gBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AACxB,oBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,EAAE;wBAClC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAChE,qBAAA;AACD,oBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,EAAE;wBAClC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACvD,qBAAA;oBAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AACrD,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,aAAa,EACb,KAAK,CACN,CAAC;AACF,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,2BAA2B,EAC3B,aAAa,CACd,CAAC;AACF,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,4BAA4B,EAC5B,IAAI,CACL,CAAC;AACF,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,SAAS,EACT,OAAO,CACR,CAAC;AACF,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,QAAQ,EACR,EAAE,CACH,CAAC;AACF,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,SAAS,EACT,EAAE,CACH,CAAC;AACF,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,KAAK,EACL,CAAC,QAAQ,CACV,CAAC;AACF,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,KAAK,EACL,QAAQ,CACT,CAAC;AACF,wBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,UAAU,EAChB,WAAW,EACX,CAAC,CACF,CAAC;AACH,qBAAA;AACF,iBAAA;gBAED,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEtD,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACF,YAAA,MAAM,sBAAsB,GAAG,CAAC,KAAU,KAAS;gBACjD,IAAI,CAACA,QAAM,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;AACtC,oBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CACtC,KAAK,CAAC,UAAU,EAChB,OAAO,EACP,IAAI,CACL,CAAC;AACH,iBAAA;AACD,gBAAA,IAAI,CAACA,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;oBAChC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AAC3D,iBAAA;gBACD,IAAI,CAACA,QAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;AACrC,oBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CACtC,KAAK,CAAC,UAAU,EAChB,MAAM,EACN,GAAG,CACJ,CAAC;AACH,iBAAA;AACD,gBAAA,IAAI,CAACA,QAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBACzB,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAEhD,oBAAA,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/D,oBAAA,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;AACnE,oBAAA,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;AACpE,oBAAA,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AAElE,oBAAA,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,GAAG,CAAC,MAAM,EAChB,OAAO,EACP,SAAS,CACV,CAAC;AACF,oBAAA,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAC7C,KAAK,CAAC,GAAG,CAAC,MAAM,EAChB,QAAQ,EACR;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,MAAM,EAAE,YAAY;AACrB,qBAAA,CACF,CAAC;AACH,iBAAA;AACD,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACF,YAAA,MAAM,yBAAyB,GAAG,CAAC,KAAU,KAAS;AACpD,gBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AACzB,oBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;wBAChC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAC3B,KAAK,EACL,MAAM,EACN,sBAAsB,CACvB,CAAC;AACH,qBAAA;AACF,iBAAA;AAED,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACF,YAAA,MAAM,mBAAmB,GAAG,CAAC,KAAU,KAAS;AAC9C,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;YAEF,QAAQ,KAAK,CAAC,IAAI;AAChB,gBAAA,KAAK,OAAO;AACV,oBAAA,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM;AACR,gBAAA,KAAK,OAAO;AACV,oBAAA,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM;AACR,gBAAA,KAAK,KAAK;AACR,oBAAA,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM;AACR,gBAAA,KAAK,MAAM;AACT,oBAAA,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBACnC,MAAM;AACR,gBAAA,KAAK,QAAQ;AACX,oBAAA,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;oBACrC,MAAM;AACR,gBAAA,KAAK,UAAU;AACb,oBAAA,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;oBACtC,MAAM;AACR,gBAAA,KAAK,aAAa;AAChB,oBAAA,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;oBACzC,MAAM;AACR,gBAAA;oBACE,MAAM;AACT,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,MAAM,iCAAiC,GAAG,CAAC,GAAQ,KAAS;AAC1D,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,GAAG,EAAE,GAAG;gBACR,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;gBACtC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;aACtC,CAAC;AACF,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC;AAEF,QAAA,MAAM,eAAe,GAAG,CAAC,KAAU,KAAS;AAC1C,YAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;AAChC,gBAAA,IAAI,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE;oBAC5C,KAAK,CAAC,mBAAmB,CAAC,GAAG;AAC3B,wBAAA,iCAAiC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;qBACxD,CAAC;AACH,iBAAA;AAAM,qBAAA;AACL,oBAAA,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAW,KAAI;AAC9D,wBAAA,OAAO,iCAAiC,CAAC,GAAG,CAAC,CAAC;AAChD,qBAAC,CAAC,CAAC;oBACH,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AACnD,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAE1C,YAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE;AACtC,gBAAA,IAAI,OAAO,KAAK,CAAC,mBAAmB,CAAC,KAAK,QAAQ,EAAE;oBAClD,KAAK,CAAC,uBAAuB,CAAC,GAAG;AAC/B,wBAAA,iCAAiC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;qBAC9D,CAAC;AACH,iBAAA;AAAM,qBAAA;oBACL,KAAK,CAAC,uBAAuB,CAAC,GAAG,iCAAiC,CAChE,KAAK,CAAC,mBAAmB,CAAC,CAC3B,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;AAEhD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAEzC,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,MAAM,+BAA+B,GAAG,CACtC,KAAU,EACV,qBAA0B,KACnB;AACP,YAAA,MAAM,oCAAoC,GAAG,CAC3C,KAAU,EACV,qBAA0B,KACnB;AACP,gBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE;AACtC,oBAAA,qBAAqB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC;AACrE,iBAAA;qBAAM,IAAIA,QAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;oBAC5D,KAAK,CAAC,mBAAmB,CAAC;wBACxB,qBAAqB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,iBAAA;gBAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,CAAC;AACxE,aAAC,CAAC;AAEF,YAAA,MAAM,qCAAqC,GAAG,CAC5C,KAAU,EACV,qBAA0B,KACnB;gBACP,IAAIA,QAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;AACrD,oBAAA,KAAK,IAAI,kBAAkB,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAC3D,KAAK,CAAC,GAAG,CACV,EAAE;AACD,wBAAA,IACEA,QAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAClE;AACA,4BAAA,qBAAqB,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC7D,KAAK,CAAC,GAAG,CACV,CAAC;AACH,yBAAA;AAAM,6BAAA;4BACL,qBAAqB,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG;AAC3D,gCAAA,KAAK,CAAC,GAAG;6BACV,CAAC;AACH,yBAAA;AACF,qBAAA;AACF,iBAAA;gBAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,CAAC;AACxE,aAAC,CAAC;YAEF,MAAM,0BAA0B,GAAG,oCAAoC,CACrE,KAAK,EACL,qBAAqB,CACtB,CAAC;AACF,YAAA,KAAK,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAC5C,qBAAqB;gBACnB,0BAA0B,CAAC,uBAAuB,CAAC,CAAC;YAEtD,MAAM,2BAA2B,GAAG,qCAAqC,CACvE,KAAK,EACL,qBAAqB,CACtB,CAAC;AACF,YAAA,KAAK,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YAC7C,qBAAqB;gBACnB,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;AAEvD,YAAA,OAAO,qBAAqB,CAAC;AAC/B,SAAC,CAAC;AAEF,QAAA,MAAM,+BAA+B,GAAG,CACtC,KAAU,EACV,qBAA0B,KACnB;YACP,IAAIA,QAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;AACrD,gBAAA,KAAK,CAAC,mBAAmB,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxE,aAAA;YAED,IAAIA,QAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;gBACtD,KAAK,CAAC,uBAAuB,CAAC;oBAC5B,qBAAqB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9C,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,MAAM,0BAA0B,GAAG,CAAC,KAAU,KAAS;;AACrD,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,gBAAA,MAAM,UAAU,GAAGA,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;gBAEvE,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC9D,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAC5C,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,YAAY,CAAC,KACtB,GAAG,EAAEA,QAAM,CAAC,UAAU,EAAE,KAAK,CAAC;AAC5B,0BAAEE,YAAU,CAAC,UAAU,CAAC,GAAG,CAAC;AAC1B,8BAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AACxB,8BAAE,IAAI;AACR,0BAAEF,QAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACtB,8BAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;8BACjB,IAAI,EACR,GAAG,EAAEA,QAAM,CAAC,UAAU,EAAE,KAAK,CAAC;AAC5B,0BAAEE,YAAU,CAAC,UAAU,CAAC,GAAG,CAAC;AAC1B,8BAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AACxB,8BAAE,IAAI;AACR,0BAAEF,QAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACtB,8BAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;8BACjB,IAAI,EACR,QAAQ,EAAEA,QAAM,CAAC,UAAU,EAAE,UAAU,CAAC;AACtC,0BAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9B,0BAAEA,QAAM,CAAC,KAAK,EAAE,UAAU,CAAC;AAC3B,8BAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;8BACvB,KAAK,EACT,SAAS,EAAEA,QAAM,CAAC,UAAU,EAAE,WAAW,CAAC;AACxC,0BAAEE,YAAU,CAAC,UAAU,CAAC,SAAS,CAAC;AAChC,8BAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9B,8BAAE,IAAI;AACR,0BAAEF,QAAM,CAAC,KAAK,EAAE,WAAW,CAAC;AAC5B,8BAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;8BACvB,IAAI,EACR,SAAS,EAAEA,QAAM,CAAC,UAAU,EAAE,WAAW,CAAC;AACxC,0BAAEE,YAAU,CAAC,UAAU,CAAC,SAAS,CAAC;AAChC,8BAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9B,8BAAE,IAAI;AACR,0BAAEF,QAAM,CAAC,KAAK,EAAE,QAAQ,CAAC;AACzB,8BAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AACtB,8BAAEA,QAAM,CAAC,KAAK,EAAE,WAAW,CAAC;AAC5B,kCAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;kCACvB,IAAI,EACR,OAAO,EAAEA,QAAM,CAAC,UAAU,EAAE,SAAS,CAAC;AACpC,0BAAEE,YAAU,CAAC,UAAU,CAAC,OAAO,CAAC;8BAC5B,UAAU,CAAC,OAAO;AACpB,8BAAE,SAAS;AACb,0BAAEF,QAAM,CAAC,KAAK,EAAE,SAAS,CAAC;AAC1B,8BAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACnD,8BAAEA,QAAM,CAAC,KAAK,EAAE,OAAO,CAAC;AACxB,kCAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;kCAC/C,SAAS,EAAA,CAAA,CACb,CAAC;gBAEH,OAAO,KAAK,CAAC,GAAG,CAAC;gBACjB,OAAO,KAAK,CAAC,GAAG,CAAC;gBACjB,OAAO,KAAK,CAAC,QAAQ,CAAC;gBACtB,OAAO,KAAK,CAAC,SAAS,CAAC;gBACvB,OAAO,KAAK,CAAC,MAAM,CAAC;gBACpB,OAAO,KAAK,CAAC,SAAS,CAAC;gBACvB,OAAO,KAAK,CAAC,OAAO,CAAC;gBACrB,OAAO,KAAK,CAAC,KAAK,CAAC;gBAEnB,QAAQ,KAAK,CAAC,IAAI;AAChB,oBAAA,KAAK,MAAM;AACT,wBAAA,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AAC5B,wBAAA,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;wBAC5B,MAAM;AACR,oBAAA;wBACE,MAAM;AACT,iBAAA;gBAED,IAAIC,SAAO,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,EAAE;AAClC,oBAAA,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7B,iBAAA;gBACD,IAAIA,SAAO,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,EAAE;AAClC,oBAAA,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7B,iBAAA;gBACD,IAAIA,SAAO,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,EAAE;AACxC,oBAAA,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;AACnC,iBAAA;gBACD,IAAIA,SAAO,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CAAC,EAAE;AACxC,oBAAA,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;AACnC,iBAAA;gBACD,IAAIA,SAAO,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,EAAE;AACtC,oBAAA,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;AACjC,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,MAAM,6BAA6B,GAAG,CAAC,KAAU,KAAS;AACxD,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,gBAAA,IAAID,QAAM,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE;AACjC,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AAAM,qBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;AACnC,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;;;;AAIhC,qBAAA;;oBAGD,IAAI,KAAK,CAAC,2BAA2B,EAAE;wBACrC,KAAK,CAAC,cAAc,CAAC,GAAG;AACtB,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,KAAK,EAAE,EAAE;AACT,4BAAA,OAAO,EAAE;AACP,gCAAA;AACE,oCAAA,MAAM,EAAE,cAAc;AACtB,oCAAA,YAAY,EAAE;AACZ,wCAAA,IAAI,EAAE,CAAA,EAAA,EAAK,KAAK,CAAC,GAAG,CAAE,CAAA;AACtB,wCAAA,UAAU,EAAE;AACV,4CAAA,KAAK,EAAE;AACL,gDAAA;AACE,oDAAA,GAAG,EAAE,GAAG;AACR,oDAAA,IAAI,EAAE,cAAc;AACpB,oDAAA,YAAY,EAAE;AACZ,wDAAA,KAAK,EAAE,IAAI;AACZ,qDAAA;AACF,iDAAA;AACF,6CAAA;AACD,4CAAA,OAAO,EAAE;AACP,gDAAA;AACE,oDAAA,IAAI,EAAE,yBAAyB;AAC/B,oDAAA,SAAS,EAAE,GAAG;AACd,oDAAA,uBAAuB,EAAE;AACvB,wDAAA,KAAK,EAAE,IAAI;AACZ,qDAAA;AACF,iDAAA;AACD,gDAAA;AACE,oDAAA,IAAI,EAAE,cAAc;AACpB,oDAAA,SAAS,EAAE,aAAa;AACxB,oDAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9B,iDAAA;AACF,6CAAA;AACF,yCAAA;AACF,qCAAA;AACF,iCAAA;AACF,6BAAA;yBACF,CAAC;AACH,qBAAA;AAAM,yBAAA,IAAIA,QAAM,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;wBACpC,IAAIA,QAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AAClC,4BAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;gCACrC,KAAK,CAAC,cAAc,CAAC,GAAG;AACtB,oCAAA,QAAQ,EAAE,KAAK;AACf,oCAAA,KAAK,EAAE,EAAE;AACT,oCAAA,OAAO,EAAE;AACP,wCAAA;AACE,4CAAA,MAAM,EAAE,iBAAiB;AACzB,4CAAA,eAAe,EAAE;AACf,gDAAA,IAAI,EAAE,CAAA,EAAA,EAAK,KAAK,CAAC,GAAG,CAAE,CAAA;AACtB,gDAAA,UAAU,EAAE;AACV,oDAAA,KAAK,EAAE;AACL,wDAAA;AACE,4DAAA,GAAG,EAAE,GAAG;AACR,4DAAA,IAAI,EAAE,cAAc;AACpB,4DAAA,YAAY,EAAE;AACZ,gEAAA,KAAK,EAAE,IAAI;AACZ,6DAAA;AACF,yDAAA;AACF,qDAAA;AACD,oDAAA,OAAO,EAAE;AACP,wDAAA;AACE,4DAAA,IAAI,EAAE,yBAAyB;AAC/B,4DAAA,SAAS,EAAE,GAAG;AACd,4DAAA,uBAAuB,EAAE;AACvB,gEAAA,KAAK,EAAE,IAAI;AACZ,6DAAA;AACF,yDAAA;AACD,wDAAA;AACE,4DAAA,IAAI,EAAE,cAAc;AACpB,4DAAA,SAAS,EAAE,aAAa;AACxB,4DAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9B,yDAAA;AACF,qDAAA;AACF,iDAAA;AACF,6CAAA;AACF,yCAAA;AACF,qCAAA;iCACF,CAAC;AACH,6BAAA;AAAM,iCAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;gCAC3C,KAAK,CAAC,cAAc,CAAC,GAAG;AACtB,oCAAA,QAAQ,EAAE,KAAK;AACf,oCAAA,KAAK,EAAE,EAAE;AACT,oCAAA,OAAO,EAAE;AACP,wCAAA;AACE,4CAAA,MAAM,EAAE,cAAc;AACtB,4CAAA,YAAY,EAAE;AACZ,gDAAA,IAAI,EAAE,CAAA,EAAA,EAAK,KAAK,CAAC,GAAG,CAAE,CAAA;AACtB,gDAAA,UAAU,EAAE;AACV,oDAAA,KAAK,EAAE;AACL,wDAAA;AACE,4DAAA,GAAG,EAAE,GAAG;AACR,4DAAA,IAAI,EAAE,cAAc;AACpB,4DAAA,YAAY,EAAE;AACZ,gEAAA,KAAK,EAAE,IAAI;AACZ,6DAAA;AACF,yDAAA;AACF,qDAAA;AACD,oDAAA,OAAO,EAAE;AACP,wDAAA;AACE,4DAAA,IAAI,EAAE,yBAAyB;AAC/B,4DAAA,SAAS,EAAE,GAAG;AACd,4DAAA,uBAAuB,EAAE;AACvB,gEAAA,KAAK,EAAE,IAAI;AACZ,6DAAA;AACF,yDAAA;AACD,wDAAA;AACE,4DAAA,IAAI,EAAE,cAAc;AACpB,4DAAA,SAAS,EAAE,aAAa;AACxB,4DAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9B,yDAAA;AACF,qDAAA;AACF,iDAAA;AACF,6CAAA;AACF,yCAAA;AACF,qCAAA;iCACF,CAAC;AACH,6BAAA;AACF,yBAAA;AACF,qBAAA;AAAM,yBAAA;wBACL,KAAK,CAAC,cAAc,CAAC,GAAG;AACtB,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,KAAK,EAAE,EAAE;AACT,4BAAA,OAAO,EAAE;AACP,gCAAA;AACE,oCAAA,MAAM,EAAE,WAAW;AACnB,oCAAA,SAAS,EAAE;AACT,wCAAA,IAAI,EAAE,CAAA,EAAA,EAAK,KAAK,CAAC,GAAG,CAAE,CAAA;AACtB,wCAAA,UAAU,EAAE;AACV,4CAAA,KAAK,EAAE;AACL,gDAAA;AACE,oDAAA,GAAG,EAAE,GAAG;AACR,oDAAA,IAAI,EAAE,cAAc;AACpB,oDAAA,YAAY,EAAE;AACZ,wDAAA,KAAK,EAAE,IAAI;AACZ,qDAAA;AACF,iDAAA;AACF,6CAAA;AACD,4CAAA,OAAO,EAAE;AACP,gDAAA;AACE,oDAAA,IAAI,EAAE,yBAAyB;AAC/B,oDAAA,SAAS,EAAE,GAAG;AACd,oDAAA,uBAAuB,EAAE;AACvB,wDAAA,KAAK,EAAE,IAAI;AACZ,qDAAA;AACF,iDAAA;AACD,gDAAA;AACE,oDAAA,IAAI,EAAE,cAAc;AACpB,oDAAA,SAAS,EAAE,aAAa;AACxB,oDAAA,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9B,iDAAA;AACF,6CAAA;AACF,yCAAA;AACF,qCAAA;AACF,iCAAA;AACF,6BAAA;yBACF,CAAC;AACH,qBAAA;AACF,iBAAA;AAED,gBAAA,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;AAC5B,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAG,CAAC,KAAU,KAAS;AAC9C,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC1B,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7D,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,MAAM,sBAAsB,GAAG,CAAC,KAAU,KAAS;AACjD,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,gBAAA,IACEA,QAAM,CAAC,KAAK,EAAE,QAAQ,CAAC;oBACvB,KAAK,CAAC,MAAM,KAAK,OAAO;AACxB,oBAAAA,QAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EACvB;oBACA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;wBAC5C,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;AAEF,QAAA,MAAM,aAAa,GAAG,CAAC,UAAe,EAAE,MAAa,KAAS;AAC5D,YAAA,IAAIA,QAAM,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;AACnC,gBAAA,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AACzC,aAAA;AAAM,iBAAA;AACL,gBAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAC/B,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;AACpB,SAAC,CAAC;AAEF,QAAA,IAAI,qBAAqB,GAAQ;AAC/B,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,IAAI,MAAM,GAAU,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAEnD,QAAA,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAEjC,YAAA,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;;;;;;AAQ/B,YAAA,KAAK,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAE7C,YAAA,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;AAE1C,YAAA,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAEtC,YAAA,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,SAAA;AAED,QAAA,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE/C,QAAA,OAAO,UAAU,CAAC;KACnB;AACF,CAAA;AA/qBC,UAAA,CAAA;IADC,GAAG;AA+qBH,CAAA,EAAA,SAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;;MC/sBU,qBAAqB,CAAA;AAoChC,IAAA,WAAA,GAAA;QAnCA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAerB,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;KAoBP;AAlChB,IAAA,eAAe,CAAC,YAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KAClC;AAGD,IAAA,YAAY,CAAC,SAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;AAGD,IAAA,qBAAqB,CAAC,kBAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;KAC9C;AAGD,IAAA,eAAe,CAAC,YAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KAClC;AAGD,IAAA,mBAAmB,CAAC,gBAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KAC1C;AAGD,IAAA,mBAAmB,CAAC,gBAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KAC1C;AAGD,IAAA,iBAAiB,CAAC,cAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACtC;AAIK,IAAA,eAAe,CAAC,GAAW,EAAA;;AAC/B,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,YAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,YAAA,OAAO,IAAI,CAAC;SACb,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,oBAAoB,CAAC,SAAgB,EAAA;QACnC,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;YAC/C,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtD,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,gBAAgB,CAAC;KACzB;AAED,IAAA,sBAAsB,CAAC,YAAiB,EAAA;QACtC,IAAI,kBAAkB,GAAa,EAAE,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AACxC,YAAA,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,kBAAkB,CAAC;KAC3B;IAED,8BAA8B,CAC5B,SAAgB,EAChB,kBAA4B,EAAA;AAE5B,QAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;YAC1B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzC,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACrD,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAClD,aAAA;AACF,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;IAED,6BAA6B,CAC3B,SAAgB,EAChB,kBAA4B,EAAA;AAE5B,QAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;AAC/B,gBAAA,IAAIA,QAAM,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE;oBAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAS,KACnD,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC/B,CAAC;AACF,oBAAA,IAAI,WAAW,EAAE;wBACf,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;wBACpD,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAClD,qBAAA;AAAM,yBAAA;wBACL,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;wBAClD,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACjD,qBAAA;AACF,iBAAA;AAAM,qBAAA;oBACL,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;oBACjD,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;oBACpD,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAClD,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,sBAAsB,CAAC,SAAgB,EAAA;QACrC,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,QAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;AAChC,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;IAED,eAAe,GAAA;AACb,QAAA,IAAI,SAAS,GAAU,IAAI,CAAC,SAAS,CAAC;AACtC,QAAA,IAAI,kBAA4B,CAAC;AACjC,QAAA,IAAI,gBAAqB,CAAC;AAE1B,QAAA,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAEnD,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEpE,SAAS,GAAG,IAAI,CAAC,8BAA8B,CAC7C,SAAS,EACT,kBAAkB,CACnB,CAAC;QAEF,SAAS,GAAG,IAAI,CAAC,6BAA6B,CAC5C,SAAS,EACT,kBAAkB,CACnB,CAAC;AAEF,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM,EAAE;AAClD,YAAA,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAExD,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;KAChD;;sIA3IU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,mBAAA,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC8BY,4BAA4B,CAAA;IAmDvC,WACS,CAAA,eAAsC,EACrC,WAAuB,EAAA;QADxB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAuB;QACrC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QAxBjC,IAAS,CAAA,SAAA,GAAQ,EAAE,CAAC;QAGpB,IAAe,CAAA,eAAA,GAAQ,EAAE,CAAC;AAG1B,QAAA,IAAA,CAAA,aAAa,GAAsB,IAAI,YAAY,EAAO,CAAC;AAG3D,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;AAGzD,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,YAAY,EAAO,CAAC;QAE5D,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;;QAGxB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;QAC/B,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;QA0KjC,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;KArKnC;;IAnDJ,mBAAmB,GAAA;QACjB,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,GAAG,EAAE;YACpD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC7B,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1C,SAAA;AAAM,aAAA;YACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC7B,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,KAAK,CAAC;AAC3C,SAAA;KACF;IAiCD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAElE,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,YAAY,GAAG,CAAC,IAAY,KAAI;AACpC,YAAA,OAAO,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;AACpE,SAAC,CAAC;AACF,QAAA,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;AAClD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;YAEhD,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,YAAY,CAAC,iBAAiB,CAAC,EAAE;YACnC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC;AAC5D,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,SAAA;KACF;IAEK,eAAe,GAAA;;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAEnB,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAErD,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;YAEvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAElD,YAAA,IACE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAC9C;AACA,gBAAA,MAAM,IAAI,CAAC,0BAA0B,CACnC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAC1C,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC7B,aAAA;AAED,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,CAAA,CAAA;AAAA,KAAA;AAED,IAAA,YAAY,CAAC,SAAgB,EAAA;QAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,GAAG,EAAE;AACpD,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAC5B,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,KAAK,CAAC;AAC3C,SAAA;KACF;;AAGK,IAAA,0BAA0B,CAAC,YAAoB,EAAA;;;AACnD,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAEnB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AACpE,gBAAA,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE;AAC7B,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CACzD,gBAAgB,CAAC,WAAW,CAAC,GAAG,CACjC,CAAC;YAEF,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAE3D,YAAA,MAAM,cAAc,GAClB,CAAA,EAAA,GAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAC1D,YAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAEvD,IAAI,CAAC,eAAe,CAAC,mBAAmB,iCACnC,gBAAgB,CAAA,EAChB,UAAU,CAAA,CACb,CAAC;YAEH,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,GAAG,EAAE;AACpD,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,aAAA;iBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,IAAI,GAAG,EAAE;AAC5D,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;AACrB,KAAA;;AAGD,IAAA,wBAAwB,CAAC,CAAM,EAAA;AAC7B,QAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEf,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,UAAU,EAAE;AACnD,YAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CACjC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,YAAA,CAAC,MAAW,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACV,gBAAA,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;gBAElC,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,KAAK,WAAW,EAAE;AAC/D,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACpC,iBAAA;aACF,CAAA,GAAG,CAAC;AACN,SAAA;KACF;;AAGD,IAAA,oBAAoB,CAAC,CAAM,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7B;;AAGD,IAAA,uBAAuB,CAAC,CAAM,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;AACvD,SAAA,CAAC,CAAC;KACJ;;AAGD,IAAA,qBAAqB,CAAC,CAAM,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAEnB,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAE3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;AACvD,SAAA,CAAC,CAAC;KACJ;;AAGD,IAAA,sBAAsB,CAAC,CAAM,EAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;AAGD,IAAA,uBAAuB,CAAC,IAAI,EAAA;AAC1B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACnC;IAEK,UAAU,CAAC,MAAW,EAAE,UAAe,EAAA;;YAC3C,QAAQ,MAAM,CAAC,GAAG;gBAChB,KAAK,UAAU,CAAC,SAAS;AACvB,oBAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;AAExC,oBAAA,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAC1B,CAAC;AACF,oBAAA,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAEtE,oBAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;oBACrC,MAAM;AACR,gBAAA;oBACE,MAAM;AACT,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;;6IA/OU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,mBAAA,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,sUAF5B,CAAC,qBAAqB,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCpC,2wEA+DA,EDxCc,MAAA,EAAA,CAAA,qhGAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,OAAO,CAAC,YAAY,EAAE;YACpB,UAAU,CAAC,QAAQ,EAAE;AACnB,gBAAA,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC;aACb,CAAC;YACF,UAAU,CAAC,QAAQ,EAAE;gBACnB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;aACvD,CAAC;SACH,CAAC;AACH,KAAA,EAAA,CAAA,CAAA;4FAGU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAjBxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,WAAW,EAAE,2BAA2B;oBACxC,SAAS,EAAE,CAAC,2BAA2B,CAAC;AACxC,oBAAA,UAAU,EAAE;wBACV,OAAO,CAAC,YAAY,EAAE;4BACpB,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;gCACxC,OAAO,CAAC,GAAG,CAAC;6BACb,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACnB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;6BACvD,CAAC;yBACH,CAAC;AACH,qBAAA;oBACD,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA,CAAA;kIAIC,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAwBzC,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAIP,WAAW,EAAA,CAAA;sBADV,MAAM;gBAIP,cAAc,EAAA,CAAA;sBADb,MAAM;;;MEhEI,uBAAuB,CAAA;;wIAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yIAAvB,uBAAuB,EAAA,YAAA,EAAA,CALnB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAChC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CAE9D,2BAA2B,CAAA,EAAA,CAAA,CAAA;yIAE1B,uBAAuB,EAAA,SAAA,EAHvB,EAAE,EAAA,OAAA,EAAA,CADJ,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAA,EAAA,CAAA,CAAA;4FAI9D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,2BAA2B,CAAC;oBAC3C,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,CAAC;AACzE,oBAAA,SAAS,EAAE,EAAE;oBACb,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;MCUY,oBAAoB,CAAA;;qIAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;sIAApB,oBAAoB,EAAA,YAAA,EAAA,CAZhB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAEpC,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,cAAc;QACd,aAAa;QACb,YAAY;AACZ,QAAA,YAAY,aAEJ,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAEtB,mBAAA,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAXtB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,cAAc;YACd,aAAa;YACb,YAAY;YACZ,YAAY;AACb,SAAA,CAAA,EAAA,CAAA,CAAA;4FAGU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,aAAa;wBACb,YAAY;wBACZ,YAAY;AACb,qBAAA;oBACD,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;MCFY,qBAAqB,CAAA;;sIAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;uIAArB,qBAAqB,EAAA,YAAA,EAAA,CAVjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAErC,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,YAAY;AACZ,QAAA,YAAY,aAEJ,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEvB,mBAAA,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EATvB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,YAAY;YACZ,YAAY;AACb,SAAA,CAAA,EAAA,CAAA,CAAA;4FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,YAAY;AACb,qBAAA;oBACD,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;MCQY,wBAAwB,CAAA;;yIAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;0IAAxB,wBAAwB,EAAA,YAAA,EAAA,CAdpB,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAEzC,YAAY;QACZ,gBAAgB;QAChB,oBAAoB;QACpB,qBAAqB;QACrB,YAAY;QACZ,eAAe;QACf,aAAa;AACb,QAAA,YAAY,aAGJ,4BAA4B,CAAA,EAAA,CAAA,CAAA;0IAE3B,wBAAwB,EAAA,SAAA,EAHxB,EAAE,EAVJ,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,gBAAgB;YAChB,oBAAoB;YACpB,qBAAqB;YACrB,YAAY;YACZ,eAAe;YACf,aAAa;YACb,YAAY;AACb,SAAA,CAAA,EAAA,CAAA,CAAA;4FAIU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,4BAA4B,CAAC;AAC5C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,oBAAoB;wBACpB,qBAAqB;wBACrB,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,YAAY;AACb,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;oBACb,OAAO,EAAE,CAAC,4BAA4B,CAAC;AACxC,iBAAA,CAAA;;;MCLY,iBAAiB,CAAA;;kIAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAT1B,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,uBAAuB;QACvB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAEhB,uBAAuB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGhD,mBAAA,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAFjB,SAAA,EAAA,CAAC,qBAAqB,CAAC,EARzB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,uBAAuB;YACvB,wBAAwB;SACzB,EACS,uBAAuB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;4FAGhD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,uBAAuB;wBACvB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;oBAC5D,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA,CAAA;;;AClBD;;AAEG;;ACFH;;AAEG;;;;"}
|