@pongrass/utils 1.1.10-v20 → 1.1.12-v20
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/fesm2022/pongrass-utils.mjs +195 -33
- package/fesm2022/pongrass-utils.mjs.map +1 -1
- package/index.d.ts +70 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pongrass-utils.mjs","sources":["../../../projects/utils/src/lib/services/configuration.service.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/color-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/custom-select-filter.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/ag-date-range-filter.component.ts","../../../projects/utils/src/lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component.ts","../../../projects/utils/src/lib/enums/browser-constants.enum.ts","../../../projects/utils/src/lib/enums/jsonrpc-methods.enum.ts","../../../projects/utils/src/lib/services/jsonrpc.service.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.html","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.html","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.ts","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.html","../../../projects/utils/src/lib/components/status-select-cell-renderer/status-select-cell-renderer.component.ts","../../../projects/utils/src/lib/components/status-select-cell-renderer/status-select-cell-renderer.component.html","../../../projects/utils/src/lib/components/ag-grid-renderer/badge-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/icon-text-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/hyperlink-cell-renderer.component.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.interface.ts","../../../projects/utils/src/lib/constants/color.constants.ts","../../../projects/utils/src/lib/directives/circular-focus.directive.ts","../../../projects/utils/src/lib/directives/decimal-input.directive.ts","../../../projects/utils/src/lib/directives/show-tooltip-if-truncated.directive.ts","../../../projects/utils/src/lib/directives/multi-select-styler.directive.ts","../../../projects/utils/src/lib/helpers/dateTime.helpers.ts","../../../projects/utils/src/lib/modules/multi-form/date-time-picker/date-time-picker.component.ts","../../../projects/utils/src/lib/modules/multi-form/date-time-picker/date-time-picker.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.module.ts","../../../projects/utils/src/lib/components/generic-filter-model/generic-filter-model.component.ts","../../../projects/utils/src/lib/components/generic-filter-model/generic-filter-model.component.html","../../../projects/utils/src/lib/enums/grid.enum.ts","../../../projects/utils/src/lib/constants/app.constanta.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.component.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.component.html","../../../projects/utils/src/lib/modules/table-grid/table-grid.module.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.ts","../../../projects/utils/src/lib/directives/background-image.directive.ts","../../../projects/utils/src/lib/enums/export.enum.ts","../../../projects/utils/src/lib/services/utils.service.ts","../../../projects/utils/src/lib/interface/login.interface.ts","../../../projects/utils/src/lib/modules/login/login.component.ts","../../../projects/utils/src/lib/modules/login/login.component.html","../../../projects/utils/src/lib/modules/login/login.module.ts","../../../projects/utils/src/lib/modules/dialog/dialog.models.ts","../../../projects/utils/src/lib/modules/dialog/dynamic-modal-wrapper.component.ts","../../../projects/utils/src/lib/modules/dialog/pg-dialog.service.ts","../../../projects/utils/src/public-api.ts","../../../projects/utils/src/pongrass-utils.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { IConfig } from '../interface/api-response.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationServiceLib {\n public currentTablePreference: WritableSignal<any>;\n public allConfigValues: WritableSignal<IConfig | null>;\n\n public openFilterModal: WritableSignal<boolean>;\n public utilsAppliedTheme: WritableSignal<string>;\n\n constructor() {\n this.currentTablePreference = signal<any>({});\n this.allConfigValues = signal<IConfig | null>(null);\n\n this.openFilterModal = signal<boolean>(false);\n this.utilsAppliedTheme = signal<string>('');\n }\n\n /* Generate Unique ID as String */\n public generateUniqueId(): string {\n return `${Math.floor(Date.now() / 1000)}`;\n }\n\n public setTablePreference(tableName: string, preference: any): void {\n const allTablePreference = this.currentTablePreference();\n allTablePreference[tableName] = preference;\n this.currentTablePreference.set(allTablePreference);\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { IColorOption } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule],\r\n selector: 'prg-ws-color-cell-renderer',\r\n template: `\r\n <div class=\"cell-wrapper align-items-center d-inline-flex gap-2\">\r\n <span class=\"color-box\" [ngStyle]=\"{ 'background-color': colorCode }\"></span>\r\n <span class=\"text-truncate\">\r\n {{ params.value }}\r\n </span>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .color-box {\r\n height: 1.5rem;\r\n }\r\n .cell-wrapper {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.5rem;\r\n width: 100%;\r\n overflow: hidden; /* Required to enable truncation */\r\n }\r\n `\r\n ]\r\n})\r\nexport class ColorCellRendererComponent implements ICellRendererAngularComp {\r\n public params!: ICellRendererParams;\r\n public colorsList: IColorOption[] = [];\r\n public colorCode = '';\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.colorsList = params.colDef?.cellRendererParams?.colorsList ?? [];\r\n this.setColorCode(this.params?.value);\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n return true;\r\n }\r\n\r\n setColorCode(colorKey: string): void {\r\n if (this.colorsList && this.colorsList.length > 0 && colorKey) {\r\n const selectedColor = this.colorsList.find(color => color.color_name === colorKey);\r\n if (selectedColor) {\r\n this.colorCode = selectedColor.value as string;\r\n } else {\r\n this.colorCode = ''; // Default color if not found\r\n }\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ViewChild, ElementRef } from '@angular/core';\r\n\r\nimport { ButtonModule, FormModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n selector: 'prg-ws-custom-set-filter',\r\n standalone: true,\r\n imports: [FormsModule, FormModule, ButtonModule],\r\n template: `\r\n <div class=\"select-filter-container\">\r\n <input type=\"text\" #searchInput cFormControl [(ngModel)]=\"searchText\" (input)=\"onSearchChange()\" placeholder=\"Search...\" class=\"search-box\" />\r\n @if (filteredValues.length > 0) {\r\n <div>\r\n <label class=\"checkbox-item\">\r\n <input cFormCheckInput [indeterminate]=\"isIndeterminate\" type=\"checkbox\" [checked]=\"isAllSelected()\" (change)=\"onSelectAllChanged($event)\" />\r\n (Select All)\r\n </label>\r\n </div>\r\n } @else {\r\n <div>\r\n <label> No matches </label>\r\n </div>\r\n }\r\n\r\n <div class=\"checkbox-list\">\r\n @for (value of filteredValues; track value) {\r\n <label [attr.aria-label]=\"'Select ' + value\" class=\"checkbox-item\">\r\n <input cFormCheckInput type=\"checkbox\" [value]=\"value\" [checked]=\"isValueSelected(value)\" (change)=\"onValueChanged(value, $event)\" />\r\n {{ value }}\r\n </label>\r\n }\r\n </div>\r\n <div class=\"filter-actions\">\r\n <button cButton color=\"primary\" size=\"sm\" variant=\"outline\" (click)=\"onReset()\">Reset</button>\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .select-filter-container {\r\n padding: 10px;\r\n label {\r\n display: flex;\r\n gap: 5px;\r\n }\r\n }\r\n .search-box {\r\n width: 100%;\r\n margin-bottom: 5px;\r\n padding: 4px;\r\n }\r\n\r\n .checkbox-list {\r\n max-height: 200px;\r\n overflow-y: auto;\r\n }\r\n .checkbox-item {\r\n padding: 4px 6px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n }\r\n .checkbox-item:hover {\r\n background-color: #f0f0f0;\r\n }\r\n .filter-actions {\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-top: 8px;\r\n border-top: 1px solid #e0e0e0;\r\n padding-top: 8px;\r\n }\r\n `\r\n ]\r\n})\r\nexport class CustomSelectFilterComponent implements IFilterAngularComp {\r\n params!: IFilterParams;\r\n uniqueValues: string[] = [];\r\n filteredValues: string[] = [];\r\n selectedValues: Set<string> = new Set();\r\n searchText: string = '';\r\n isIndeterminate: boolean = false;\r\n\r\n agInit(params: IFilterParams): void {\r\n this.params = params;\r\n this.uniqueValues = this.getUniqueValues();\r\n this.filteredValues = [...this.uniqueValues];\r\n this.uniqueValues.forEach(val => this.selectedValues.add(val));\r\n }\r\n\r\n @ViewChild('searchInput') searchInputRef!: ElementRef<HTMLInputElement>;\r\n\r\n afterGuiAttached(): void {\r\n this.searchInputRef?.nativeElement?.focus();\r\n }\r\n\r\n getUniqueValues(): string[] {\r\n const values = new Set<string>();\r\n this.params.api.forEachNode(node => {\r\n const value = node.data[this.params.colDef.field!];\r\n const formattedValue = this.getFormattedValue(node, value);\r\n values.add(formattedValue);\r\n });\r\n return Array.from(values).sort((a, b) => {\r\n if (a === 'BLANK') return -1;\r\n if (b === 'BLANK') return 1;\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n }\r\n\r\n getFormattedValue(node: any, value: any): string {\r\n const formatter = this.params.colDef.valueFormatter;\r\n let formattedValue = value;\r\n if (formatter && typeof formatter === 'function') {\r\n formattedValue = formatter({\r\n value,\r\n data: node.data,\r\n node,\r\n colDef: this.params.colDef,\r\n column: this.params.column,\r\n api: this.params.api,\r\n context: (this.params as any).context\r\n });\r\n }\r\n if (formattedValue === null || formattedValue === undefined || formattedValue === '') {\r\n return 'BLANK';\r\n }\r\n return String(formattedValue);\r\n }\r\n\r\n isValueSelected(value: string): boolean {\r\n return this.selectedValues.has(value);\r\n }\r\n\r\n isAllSelected(): boolean {\r\n return this.filteredValues.length > 0 && this.filteredValues.every(val => this.selectedValues.has(val));\r\n }\r\n\r\n onSelectAllChanged(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n if (checked) {\r\n this.filteredValues.forEach(val => this.selectedValues.add(val));\r\n } else {\r\n this.filteredValues.forEach(val => this.selectedValues.delete(val));\r\n }\r\n this.updateIndeterminate();\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n onValueChanged(value: string, event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n if (checked) {\r\n this.selectedValues.add(value);\r\n } else {\r\n this.selectedValues.delete(value);\r\n }\r\n this.updateIndeterminate();\r\n // If all are now selected, ensure isIndeterminate is false\r\n if (this.isAllSelected()) {\r\n this.isIndeterminate = false;\r\n }\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n updateIndeterminate(): void {\r\n // isIndeterminate is true if at least one but not all filteredValues are selected\r\n const selectedCount = this.filteredValues.filter(val => this.selectedValues.has(val)).length;\r\n this.isIndeterminate = selectedCount > 0 && selectedCount < this.filteredValues.length;\r\n }\r\n\r\n onSearchChange(): void {\r\n const lower = this.searchText.toLowerCase();\r\n this.filteredValues = this.uniqueValues.filter(val => val?.toString().toLowerCase().includes(lower));\r\n this.updateIndeterminate();\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const value = params.data[this.params.colDef.field!];\r\n const formattedValue = this.getFormattedValue(params.node, value);\r\n return this.selectedValues.has(formattedValue);\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return this.selectedValues.size !== this.uniqueValues.length;\r\n }\r\n\r\n getModel() {\r\n return { values: Array.from(this.selectedValues) };\r\n }\r\n\r\n setModel(model: { values?: string[] }): void {\r\n if (model?.values) {\r\n this.selectedValues = new Set(model.values);\r\n } else {\r\n this.selectedValues = new Set(this.uniqueValues);\r\n }\r\n this.filteredValues = [...this.uniqueValues];\r\n }\r\n\r\n onReset(): void {\r\n this.searchText = '';\r\n this.selectedValues = new Set(this.uniqueValues);\r\n this.filteredValues = [...this.uniqueValues];\r\n this.isIndeterminate = false;\r\n this.params.filterChangedCallback();\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef, AfterViewInit } from '@angular/core';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonModule, CalendarModule, FormModule } from '@coreui/angular-pro';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'prg-ws-ag-date-range-filter',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, FormModule, ButtonModule, CalendarModule],\r\n template: `\r\n <div class=\"date-range-filter-container\">\r\n <div class=\"filter-body\">\r\n <div class=\"calendar-wrapper\">\r\n <c-calendar\r\n [range]=\"true\"\r\n [calendars]=\"2\"\r\n [startDate]=\"startDate\"\r\n [endDate]=\"endDate\"\r\n [calendarDate]=\"viewDate\"\r\n (startDateChange)=\"onStartDateChange($event)\"\r\n (endDateChange)=\"onEndDateChange($event)\"\r\n locale=\"en-US\">\r\n </c-calendar>\r\n </div>\r\n <div class=\"presets-list\">\r\n @for (preset of presets; track preset.label) {\r\n <div class=\"preset-item\" \r\n [class.active]=\"preset.isSelected\"\r\n (click)=\"onPresetClick(preset)\">\r\n {{ preset.label }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"filter-actions d-flex justify-content-end mt-2 pt-2 border-top\">\r\n <button cButton color=\"primary\" size=\"sm\" variant=\"outline\" (click)=\"onReset()\">Reset</button>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .date-range-filter-container {\r\n padding: 10px;\r\n min-width: 600px;\r\n }\r\n .filter-body {\r\n display: flex;\r\n gap: 10px;\r\n }\r\n .calendar-wrapper {\r\n flex: 1;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 4px;\r\n }\r\n .presets-list {\r\n width: 150px;\r\n border-left: 1px solid #e0e0e0;\r\n padding-left: 10px;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n }\r\n .preset-item {\r\n padding: 6px 10px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n font-size: 0.9em;\r\n transition: background-color 0.2s, color 0.2s;\r\n }\r\n .preset-item:hover {\r\n background-color: #f0f0f0;\r\n }\r\n .preset-item.active {\r\n background-color: var(--cui-primary, #321fdb);\r\n color: white;\r\n }\r\n `]\r\n})\r\nexport class AgDateRangeFilterComponent implements IFilterAngularComp, AfterViewInit {\r\n params!: IFilterParams;\r\n startDate: Date | null = null;\r\n endDate: Date | null = null;\r\n viewDate: Date = new Date();\r\n private selectedPresetLabel: string | null = null;\r\n\r\n presets = [\r\n {\r\n label: 'Today',\r\n isSelected: false,\r\n calculate: () => {\r\n const now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n return { start: now, end: now };\r\n }\r\n },\r\n {\r\n label: 'Yesterday',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const yesterday = new Date(today);\r\n yesterday.setDate(today.getDate() - 1);\r\n return { start: yesterday, end: yesterday };\r\n }\r\n },\r\n {\r\n label: 'This Week',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const day = today.getDay() || 7;\r\n const start = new Date(today);\r\n if (day !== 1) start.setDate(today.getDate() - (day - 1));\r\n const end = new Date(start);\r\n end.setDate(start.getDate() + 6);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'This Month',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const start = new Date(today.getFullYear(), today.getMonth(), 1);\r\n const end = new Date(today.getFullYear(), today.getMonth() + 1, 0);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'This Quarter',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const currQuarter = Math.floor(today.getMonth() / 3);\r\n const start = new Date(today.getFullYear(), currQuarter * 3, 1);\r\n const end = new Date(today.getFullYear(), start.getMonth() + 3, 0);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'Last Week',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const start = new Date(today);\r\n const day = start.getDay() || 7;\r\n start.setDate(today.getDate() - day - 6);\r\n const end = new Date(start);\r\n end.setDate(start.getDate() + 6);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'Last Month',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const start = new Date(today.getFullYear(), today.getMonth() - 1, 1);\r\n const end = new Date(today.getFullYear(), today.getMonth(), 0);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'Last Quarter',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const lastQuarter = Math.floor(today.getMonth() / 3) - 1;\r\n const start = new Date(today.getFullYear(), lastQuarter * 3, 1);\r\n const end = new Date(today.getFullYear(), start.getMonth() + 3, 0);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'Past 7 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(7)\r\n },\r\n {\r\n label: 'Past 30 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(30)\r\n },\r\n {\r\n label: 'Past 90 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(90)\r\n },\r\n {\r\n label: 'Past 180 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(180)\r\n },\r\n {\r\n label: 'Past 365 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(365)\r\n }\r\n ];\r\n\r\n constructor(private cdr: ChangeDetectorRef) { }\r\n\r\n agInit(params: IFilterParams): void {\r\n this.params = params;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Attempt to match preset after view initialization\r\n if (this.startDate && this.endDate) {\r\n this.matchAndSelectPreset();\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n onStartDateChange(date: Date | null) {\r\n this.startDate = date;\r\n this.selectedPresetLabel = null;\r\n this.clearPresetSelection();\r\n \r\n // Check if both dates are now set and try to match a preset\r\n if (this.startDate && this.endDate) {\r\n this.matchAndSelectPreset();\r\n }\r\n \r\n this.params.filterChangedCallback();\r\n }\r\n\r\n onEndDateChange(date: Date | null) {\r\n this.endDate = date;\r\n this.selectedPresetLabel = null;\r\n this.clearPresetSelection();\r\n \r\n // Check if both dates are now set and try to match a preset\r\n if (this.startDate && this.endDate) {\r\n this.matchAndSelectPreset();\r\n }\r\n \r\n this.params.filterChangedCallback();\r\n }\r\n\r\n private clearPresetSelection() {\r\n this.presets.forEach(p => p.isSelected = false);\r\n }\r\n\r\n private calculatePastDays(days: number): { start: Date, end: Date } {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const start = new Date(today);\r\n start.setDate(today.getDate() - days);\r\n return { start, end: today };\r\n }\r\n\r\n private normalizeDate(date: Date): string {\r\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\r\n }\r\n\r\n private areDatesEqual(date1: Date | null, date2: Date | null): boolean {\r\n if (!date1 && !date2) return true;\r\n if (!date1 || !date2) return false;\r\n return this.normalizeDate(date1) === this.normalizeDate(date2);\r\n }\r\n\r\n private matchAndSelectPreset() {\r\n if (!this.startDate || !this.endDate) {\r\n this.clearPresetSelection();\r\n this.selectedPresetLabel = null;\r\n return;\r\n }\r\n\r\n for (const preset of this.presets) {\r\n if (preset.calculate) {\r\n try {\r\n const { start, end } = preset.calculate();\r\n \r\n if (this.areDatesEqual(this.startDate, start) && \r\n this.areDatesEqual(this.endDate, end)) {\r\n this.clearPresetSelection();\r\n preset.isSelected = true;\r\n this.selectedPresetLabel = preset.label;\r\n console.log('Matched preset:', preset.label);\r\n return;\r\n }\r\n } catch (error) {\r\n console.error('Error calculating preset:', preset.label, error);\r\n }\r\n }\r\n }\r\n\r\n this.clearPresetSelection();\r\n this.selectedPresetLabel = null;\r\n }\r\n\r\n onPresetClick(preset: any) {\r\n if (preset.calculate) {\r\n const { start, end } = preset.calculate();\r\n \r\n this.clearPresetSelection();\r\n preset.isSelected = true;\r\n this.selectedPresetLabel = preset.label;\r\n\r\n this.startDate = start;\r\n this.endDate = end;\r\n this.viewDate = new Date(start);\r\n\r\n this.cdr.detectChanges();\r\n \r\n setTimeout(() => {\r\n this.params.filterChangedCallback();\r\n }, 0);\r\n }\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return !!this.startDate || !!this.endDate;\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const field = this.params.colDef.field;\r\n if (!field) return false;\r\n const value = params.data[field];\r\n if (!value) return false;\r\n\r\n const rowDate = new Date(value);\r\n const rowTime = new Date(rowDate.getFullYear(), rowDate.getMonth(), rowDate.getDate()).getTime();\r\n\r\n let startLimit = -Infinity;\r\n if (this.startDate) {\r\n startLimit = new Date(this.startDate.getFullYear(), this.startDate.getMonth(), this.startDate.getDate()).getTime();\r\n }\r\n\r\n let endLimit = Infinity;\r\n if (this.endDate) {\r\n endLimit = new Date(this.endDate.getFullYear(), this.endDate.getMonth(), this.endDate.getDate()).getTime();\r\n }\r\n\r\n return rowTime >= startLimit && rowTime <= endLimit;\r\n }\r\n\r\n getModel() {\r\n return {\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n selectedPreset: this.selectedPresetLabel\r\n };\r\n }\r\n\r\n setModel(model: any) {\r\n console.log('setModel called with:', model);\r\n \r\n if (model) {\r\n // Parse dates from model\r\n this.startDate = model.startDate ? new Date(model.startDate) : null;\r\n this.endDate = model.endDate ? new Date(model.endDate) : null;\r\n this.selectedPresetLabel = model.selectedPreset || null;\r\n \r\n // Set view date\r\n if (this.startDate) {\r\n this.viewDate = new Date(this.startDate);\r\n } else {\r\n this.viewDate = new Date();\r\n }\r\n\r\n // Clear all selections first\r\n this.clearPresetSelection();\r\n\r\n // If we have a saved preset label, try to select it directly\r\n if (this.selectedPresetLabel) {\r\n const preset = this.presets.find(p => p.label === this.selectedPresetLabel);\r\n if (preset) {\r\n preset.isSelected = true;\r\n console.log('Restored preset selection:', this.selectedPresetLabel);\r\n }\r\n } else if (this.startDate && this.endDate) {\r\n // Otherwise try to match dates to a preset\r\n this.matchAndSelectPreset();\r\n }\r\n } else {\r\n this.startDate = null;\r\n this.endDate = null;\r\n this.selectedPresetLabel = null;\r\n this.clearPresetSelection();\r\n this.viewDate = new Date();\r\n }\r\n \r\n this.cdr.detectChanges();\r\n }\r\n\r\n onReset() {\r\n this.startDate = null;\r\n this.endDate = null;\r\n this.selectedPresetLabel = null;\r\n this.clearPresetSelection();\r\n this.viewDate = new Date();\r\n this.cdr.detectChanges();\r\n this.params.filterChangedCallback();\r\n }\r\n}","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { Component } from '@angular/core';\r\nimport { FormModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FormModule],\r\n template: ` <div class=\"d-flex justify-content-start align-items-center h-100 mt-2\">\r\n <input\r\n cFormCheckInput\r\n type=\"checkbox\"\r\n class=\"me-2 cell-renderer-checkbox\"\r\n [checked]=\"value\"\r\n (change)=\"onChangeCheckBox($event)\"\r\n [disabled]=\"ischeckboxDisabled\" />\r\n </div>`\r\n})\r\nexport class CheckboxCellRendererComponent implements ICellRendererAngularComp {\r\n public value!: boolean;\r\n private params!: ICellRendererParams;\r\n public ischeckboxDisabled = true;\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.ischeckboxDisabled = params.colDef?.cellRendererParams?.data?.disabled ?? true;\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.value = params.value === 'Y' || params.value === 1 || params.value === '1' ? true : false;\r\n return true;\r\n }\r\n\r\n onChangeCheckBox(event: Event) {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n this.value = checked;\r\n\r\n // Emit the change event to the parent via a callback\r\n if (this.params.colDef?.cellRendererParams?.onCheckboxChange) {\r\n this.params.colDef.cellRendererParams.onCheckboxChange(this.params.data, checked, this.params.colDef?.field);\r\n }\r\n }\r\n}\r\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { Component } from '@angular/core';\r\n\r\nimport { ButtonModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'prg-ws-comments-button-cell-renderer',\r\n imports: [ButtonModule],\r\n template: `\r\n <div>\r\n <button cButton [color]=\"params.data?.orders_notes ? 'primary' : 'secondary'\" size=\"sm\" data-action=\"comment-action\" (click)=\"onCommentClick()\">\r\n Comments\r\n </button>\r\n </div>\r\n `,\r\n styles: ``\r\n})\r\nexport class CommentsButtonCellRendererComponent implements ICellRendererAngularComp {\r\n public params!: ICellRendererParams;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.params = params;\r\n return true;\r\n }\r\n\r\n onCommentClick(): void {\r\n if (this.params?.colDef?.cellRendererParams?.onCommentClick) {\r\n this.params.colDef.cellRendererParams.onCommentClick(this.params.data);\r\n }\r\n }\r\n}\r\n","export enum BrowserConstantsEnum {\r\n sessionid = 'sessionId',\r\n loginUid = 'uid',\r\n iframeTabs = 'tabs',\r\n connectExternalFlag = 'connectExternal',\r\n lastUserName = 'lastUserName',\r\n logoutReason = 'logoutReason',\r\n\r\n tablePreference = 'table_preference',\r\n\r\n cookieSidebarUnfoldable = 'pongrass_sidebar_state',\r\n cookieTheme = 'pongrass_theme',\r\n\r\n menuItems = '_menu_items'\r\n}\r\n","export enum JSONRPCMethods {\n getFormsConfig = 'get_form',\n tableSearch = 'table_search',\n tableUpdate = 'table_update',\n tableList = 'table_list',\n generateAccountId = 'generate_accountid',\n updateTablePreference = 'update_form_preference',\n\n listPhotoQueue = 'photo_queue',\n updateFileStatus = 'update_photo_status',\n report = 'report',\n\n adStatusList = 'list_adstatus',\n adApprovedList = 'get_approval_adlist',\n updateApprovedList = 'update_approve_adlist',\n getEditionPublicationList = 'get_edition',\n nationaROPReport = 'national_rop_report',\n nationaInserts = 'national_inserts',\n prodStatusList = 'list_prodstatus',\n updateAdStatus = 'update_ad_status',\n\n ordersNotes = 'orders_notes',\n\n getPageStatus = 'get_page_status',\n listPageStatus = 'list_pagestatus',\n updatePageStatus = 'update_page_status',\n\n markads = 'markads',\n updateReport = 'update_report',\n\n listFileStatus = 'list_filestatus',\n getIndustryList = 'get_industry'\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { BehaviorSubject, lastValueFrom, map, Observable } from 'rxjs';\r\nimport { IAPIResponse, IConfig } from '../interface/api-response.interface';\r\nimport { IFormConfig } from '../modules/multi-form/multi-form.interface';\r\nimport { BrowserConstantsEnum } from '../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../enums/jsonrpc-methods.enum';\r\nimport { IAvailableForms } from '../interface/multi-forms.interface';\r\nimport { ConfigurationServiceLib } from './configuration.service';\r\nimport { MaintAction } from '../modules/table-grid/table-grid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonrpcServiceLib {\r\n private readonly httpService = inject(HttpClient);\r\n private readonly configService = inject(ConfigurationServiceLib);\r\n private readonly baseURL$: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n\r\n get baseURL(): string {\r\n return this.baseURL$.value || this.defaultBaseURl;\r\n }\r\n\r\n get defaultBaseURl(): string {\r\n return ((window as any).config as IConfig)?.apiBaseURLWebMaint;\r\n }\r\n\r\n setBaseUrl(url: string): void {\r\n this.baseURL$.next(url);\r\n }\r\n\r\n // JSONRPC POST Request\r\n public postJsonRpcRequest(method: string, params: any): Observable<any> {\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const body = {\r\n jsonrpc: '2.0',\r\n method: method,\r\n params: params,\r\n id: this.configService.generateUniqueId()\r\n };\r\n\r\n return this.httpService\r\n .post(this.baseURL, body, { headers })\r\n .pipe(map(response => ({ ...response, timestamp: new Date().toISOString() })));\r\n }\r\n\r\n // JSONRPC POST Request With promise\r\n public async postJsonRpcRequestPromise(method: string, params: any): Promise<any> {\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const body = {\r\n jsonrpc: '2.0',\r\n method: method,\r\n params: params,\r\n id: this.configService.generateUniqueId()\r\n };\r\n\r\n const request$ = this.httpService.post(this.baseURL, body, { headers });\r\n const response = await lastValueFrom<any>(request$);\r\n return { ...response, timestamp: new Date().toISOString() };\r\n }\r\n\r\n /**\r\n *\r\n * @param formName Form config name\r\n * @param tableName Table Name\r\n */\r\n public async getFormConfig(formName: string, tableName: string): Promise<IFormConfig | null> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n form_name: formName,\r\n table_name: tableName\r\n };\r\n\r\n return this.postJsonRpcRequestPromise(JSONRPCMethods.getFormsConfig, params)\r\n .then((response: IAPIResponse<[IFormConfig]>) => {\r\n return response.result ? response.result[0] : { rows: [] };\r\n })\r\n .finally(() => {});\r\n }\r\n\r\n /**\r\n *\r\n * @param formName Report config name\r\n * @param reportName Table Name\r\n */\r\n public async getFormConfigReports(formName: string, reportName: string): Promise<IFormConfig | null> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n form_name: formName,\r\n report_name: reportName\r\n };\r\n\r\n return this.postJsonRpcRequestPromise(JSONRPCMethods.report, params)\r\n .then((response: IAPIResponse<[IFormConfig]>) => {\r\n return response.result ? response.result[0] : { rows: [] };\r\n })\r\n .finally(() => {});\r\n }\r\n\r\n /** Get available forms */\r\n public async getTableConfig(tableName: string): Promise<IAvailableForms[]> {\r\n try {\r\n const response: IAPIResponse<IAvailableForms[]> = await this.postJsonRpcRequestPromise(JSONRPCMethods.getFormsConfig, {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n });\r\n\r\n if (response.result) {\r\n return response.result;\r\n }\r\n return [];\r\n } catch (error) {\r\n return [];\r\n }\r\n }\r\n\r\n /** Get single row data by their params */\r\n public async getTableRow(tableName: string, param: any): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n };\r\n params = { ...params, ...param };\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableSearch, params);\r\n }\r\n\r\n /**\r\n *\r\n * @param tableName Table Name\r\n * @param param Form values and params needed fo the call\r\n * @param action 'U' for update and 'N' for create and 'D' for delete\r\n * @returns Promise<any>\r\n */\r\n public async createUpdateDeleteTableRow(tableName: string, requests: any, action?: MaintAction): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName,\r\n maint_action: action\r\n };\r\n params = { ...params, ...requests };\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableUpdate, params);\r\n }\r\n\r\n /**\r\n *\r\n * @param tableName Table Name\r\n * @param param Params to get the list of data\r\n * @returns Array of data\r\n */\r\n public async getTableList(tableName: string, param: any): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n };\r\n params = { ...params, ...param };\r\n\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableList, params);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { Component, OnInit, OnDestroy, Output, EventEmitter, Input, inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MultiSelectModule } from '@coreui/angular-pro';\r\nimport { NgClass } from '@angular/common';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\r\nimport { IEditionPublication } from '../../interface/multi-forms.interface';\r\nimport { IAPIResponse } from '../../interface/api-response.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-edition-list-grouped',\r\n imports: [MultiSelectModule, FormsModule, NgClass],\r\n templateUrl: './edition-list-grouped.component.html',\r\n styleUrl: './edition-list-grouped.component.scss',\r\n standalone: true\r\n})\r\nexport class EditionListGroupedComponent implements OnInit, OnDestroy {\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n private isActive: boolean;\r\n\r\n public editionPublicationList: {\r\n region: string;\r\n values: IEditionPublication[];\r\n }[];\r\n\r\n private selectedRegions: string[];\r\n private selectedEditions: string[];\r\n\r\n @Output() selectedEditionsChange = new EventEmitter<string[]>();\r\n @Input() label: string;\r\n @Input() multiple: boolean;\r\n @Input() hasFormError: boolean;\r\n\r\n constructor() {\r\n this.isActive = true;\r\n this.editionPublicationList = [];\r\n this.selectedEditions = [];\r\n this.selectedRegions = [];\r\n this.label = '';\r\n this.hasFormError = false;\r\n this.multiple = true;\r\n }\r\n ngOnInit(): void {\r\n this.getEditionPublicationList();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.isActive = false;\r\n }\r\n\r\n private async getEditionPublicationList(): Promise<void> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n for_approval: true\r\n };\r\n\r\n await this.jsonrpcService\r\n .postJsonRpcRequestPromise(JSONRPCMethods.getEditionPublicationList, params)\r\n .then((response: IAPIResponse<IEditionPublication[]>) => {\r\n if (response.result) {\r\n const result = response.result;\r\n result.forEach(ed => {\r\n ed['selected'] = false;\r\n });\r\n const groupedByRegion = result.reduce((acc: any, current: IEditionPublication) => {\r\n const region = current.region;\r\n if (region) {\r\n if (!acc[region]) {\r\n acc[region] = {\r\n region: region,\r\n values: []\r\n };\r\n }\r\n acc[region].values.push(current);\r\n }\r\n return acc;\r\n }, {});\r\n this.editionPublicationList = Object.values(groupedByRegion);\r\n }\r\n });\r\n }\r\n\r\n public onEditionSelection(option: IEditionPublication[] | IEditionPublication): void {\r\n this.selectedEditions = [];\r\n\r\n if (Array.isArray(option)) {\r\n if (option.length > 0) {\r\n option.forEach(editionData => {\r\n this.selectedEditions.push(editionData.edname!);\r\n });\r\n }\r\n } else {\r\n if (option && option.edname) {\r\n this.selectedEditions.push(option.edname);\r\n }\r\n }\r\n\r\n this.selectedEditionsChange.emit(this.selectedEditions);\r\n }\r\n\r\n public onSelectEditionGroup(region: string, index: number): void {\r\n const isSelected = this.selectedRegions.includes(region);\r\n\r\n if (isSelected) {\r\n this.selectedRegions.splice(index, 1);\r\n } else {\r\n this.selectedRegions.push(region);\r\n }\r\n\r\n this.editionPublicationList.forEach(element => {\r\n if (element.region === region) {\r\n element.values.forEach(regionValues => {\r\n regionValues.selected = !isSelected;\r\n });\r\n }\r\n });\r\n }\r\n\r\n public onVisibleChange(isActive: boolean): void {\r\n const elements = document.getElementsByClassName('form-multi-select-cleaner');\r\n Array.from(elements).forEach((element: Element) => {\r\n (element as HTMLElement).style.display = isActive ? 'inline-block' : 'none';\r\n });\r\n }\r\n}\r\n","<div class=\"row\">\n <div class=\"col-12\">\n @if (label) {\n <label for=\"sel-group-edition\">{{ label }}</label>\n }\n <c-multi-select\n [cleaner]=\"true\"\n [selectionType]=\"multiple ? 'counter' : 'text'\"\n [multiple]=\"multiple\"\n clearSearchOnSelect\n [ngClass]=\"{ 'form-invalid': hasFormError }\"\n placeholder=\"All Editions\"\n visibleItems=\"8\"\n (valueChange)=\"onEditionSelection($event)\"\n (visibleChange)=\"onVisibleChange($event)\">\n @for (option of editionPublicationList; track $index + '_' + option.region) {\n <c-multi-select-optgroup>\n <c-multi-select-optgroup-label (click)=\"onSelectEditionGroup(option.region, $index)\" class=\"region-selector cursor-pointer\">{{\n option?.region\n }}</c-multi-select-optgroup-label>\n @for (item of option.values; track item?.description) {\n <c-multi-select-option [value]=\"item\" [selected]=\"item.selected\">{{ '[' + item?.edname + ']' }} {{ item?.description }}</c-multi-select-option>\n }\n </c-multi-select-optgroup>\n }\n </c-multi-select>\n </div>\n</div>\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { IIndustry } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-industry-update-listbox-cell-renderer',\r\n templateUrl: './industry-update-listbox-cell-renderer.component.html',\r\n styleUrl: './industry-update-listbox-cell-renderer.component.scss',\r\n imports: [FormsModule, NgClass],\r\n standalone: true\r\n})\r\nexport class IndustryUpdateListboxCellRendererComponent implements ICellRendererAngularComp {\r\n public industryList: IIndustry[] = [];\r\n public selectedIndustry: string | undefined;\r\n private params!: ICellRendererParams;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.industryList = params.colDef?.cellRendererParams?.data?.industryList ?? [];\r\n this.selectedIndustry = params.data?.industry;\r\n\r\n if (!this.selectedIndustry) {\r\n this.selectedIndustry = 'select-industry';\r\n }\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.selectedIndustry = params.data?.industry;\r\n\r\n if (!this.selectedIndustry) {\r\n this.selectedIndustry = 'select-industry';\r\n }\r\n return true;\r\n }\r\n\r\n public onIndustryChange(event: Event): void {\r\n const value = (event.target as HTMLSelectElement).value;\r\n if (this.params.colDef?.cellRendererParams?.onUpdateIndustry) {\r\n this.params.colDef.cellRendererParams.onUpdateIndustry(this.params.data, value);\r\n }\r\n }\r\n}\r\n","<select\n class=\"form-select select-industry\"\n [ngClass]=\"{ 'select-industry-red': selectedIndustry === 'select-industry' }\"\n [(ngModel)]=\"selectedIndustry\"\n (change)=\"onIndustryChange($event)\"\n id=\"sel-industry\"\n name=\"sel-industry\">\n <option value=\"select-industry\" disabled class=\"select-industry-opt\">Select Industry</option>\n @for (industry of industryList; track industry.industry) {\n <option [value]=\"industry?.industry\" class=\"select-industry-opt\">\n {{ industry?.description }}\n </option>\n }\n</select>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormModule } from '@coreui/angular-pro';\r\nimport { IPageStatusList } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-page-status-cell-renderer',\r\n templateUrl: './page-status-cell-renderer.component.html',\r\n styleUrl: './page-status-cell-renderer.component.scss',\r\n imports: [FormsModule, CommonModule, FormModule],\r\n standalone: true\r\n})\r\nexport class PageStatusCellRendererComponent {\r\n public pageStatusList: IPageStatusList[] = [];\r\n private params!: ICellRendererParams;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public pageStatus: any | undefined = undefined;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.pageStatusList = params.colDef?.cellRendererParams?.data?.pageStatusList ?? [];\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.pageStatus = params.data;\r\n return true;\r\n }\r\n\r\n public updatePageStatus(value: string): void {\r\n if (this.params.colDef?.cellRendererParams?.onUpdatePageStatus) {\r\n this.params.colDef.cellRendererParams.onUpdatePageStatus(this.params.data, value);\r\n }\r\n }\r\n\r\n public getStatusColor(): string {\r\n const selectedStatus = this.pageStatusList.find(status => status.page_status_name === this.pageStatus!.page_status_name);\r\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\r\n }\r\n}\r\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"pageStatus!.page_status_name\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of pageStatusList; track $index) {\n <option [value]=\"status.page_status_name\">\n {{ status.page_status_name }}\n </option>\n }\n </select>\n</div>\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormModule } from '@coreui/angular-pro';\r\nimport { IProdStatus } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FormModule, CommonModule, FormsModule],\r\n selector: 'prg-ws-status-select-cell-renderer',\r\n templateUrl: './status-select-cell-renderer.component.html',\r\n styleUrl: './status-select-cell-renderer.component.scss'\r\n})\r\nexport class StatusSelectCellRendererComponent implements ICellRendererAngularComp {\r\n public prodStatusList: IProdStatus[] = [];\r\n private params!: ICellRendererParams;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public fileStatus: any | undefined = undefined;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.prodStatusList = params.colDef?.cellRendererParams?.data?.prodStatusList ?? [];\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.fileStatus = params.data;\r\n return true;\r\n }\r\n\r\n public updatePageStatus(value: string): void {\r\n if (this.params.colDef?.cellRendererParams?.onUpdateFileStatus) {\r\n this.params.colDef.cellRendererParams.onUpdateFileStatus(this.params.data, value);\r\n }\r\n }\r\n\r\n public getStatusColor(): string {\r\n const selectedStatus = this.prodStatusList.find(status => status.statusid === this.fileStatus!.it_prodstatusid);\r\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\r\n }\r\n}\r\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"this.fileStatus!.it_prodstatusid\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of prodStatusList; track $index) {\n <option [value]=\"status.statusid\">\n {{ status.statusdesc }}\n </option>\n }\n </select>\n</div>\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { BadgeModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n selector: 'prg-ws-badge-cell-renderer',\r\n standalone: true,\r\n imports: [CommonModule, BadgeModule],\r\n template: `\r\n @if (displayValue) {\r\n <c-badge\r\n [color]=\"badgeColor\"\r\n [ngStyle]=\"customStyles\"\r\n [textColor]=\"textColor\"\r\n class=\"text-wrap\"\r\n >\r\n {{ displayValue }}\r\n </c-badge>\r\n }\r\n `,\r\n styles: [`\r\n c-badge {\r\n font-size: 0.875rem;\r\n font-weight: 500;\r\n }\r\n `]\r\n})\r\nexport class BadgeCellRendererComponent implements ICellRendererAngularComp {\r\n public displayValue: string = '';\r\n public badgeColor: string = 'secondary';\r\n public textColor: string = 'black';\r\n public customStyles: { [key: string]: string } = {};\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.updateValue(params);\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.updateValue(params);\r\n return true;\r\n }\r\n\r\n private updateValue(params: ICellRendererParams): void {\r\n // Determine the value to display\r\n this.displayValue = params.valueFormatted || params.value;\r\n\r\n const rendererParams = params.colDef?.cellRendererParams;\r\n\r\n // reset defaults\r\n this.badgeColor = 'secondary';\r\n this.textColor = 'black';\r\n this.customStyles = {};\r\n\r\n if (rendererParams) {\r\n if (rendererParams.textColor) {\r\n this.textColor = rendererParams.textColor;\r\n }\r\n\r\n // 1. Check for static color\r\n if (rendererParams.color) {\r\n this.applyColor(rendererParams.color);\r\n }\r\n\r\n // 2. Check for dynamic color map\r\n if (rendererParams.colorMap) {\r\n // value could be anything, assume string key\r\n const key = params.value;\r\n if (rendererParams.colorMap[key]) {\r\n this.applyColor(rendererParams.colorMap[key]);\r\n }\r\n }\r\n\r\n // 3. Check if color depends on another field in the row\r\n if (rendererParams.colorField && params.data) {\r\n const colorValue = params.data[rendererParams.colorField];\r\n if (colorValue) {\r\n this.applyColor(colorValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private applyColor(color: string): void {\r\n if (!color) return;\r\n\r\n const themeColors = ['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark'];\r\n\r\n if (themeColors.includes(color.toLowerCase())) {\r\n this.badgeColor = color;\r\n delete this.customStyles['background-color'];\r\n } else {\r\n // Assume it's a custom CSS color (hex, rgb, named color, etc.)\r\n this.badgeColor = ''; // Remove utility class color\r\n this.customStyles['background-color'] = color;\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\n@Component({\r\n selector: 'prg-ws-icon-text-cell-renderer',\r\n standalone: true,\r\n imports: [CommonModule, IconModule],\r\n template: `\r\n <div class=\"d-flex align-items-center\" [style.color]=\"isRed ? 'red' : 'inherit'\">\r\n @if (iconName && iconPosition === 'start') {\r\n <c-icon [name]=\"iconName\" [size]=\"'sm'\" class=\"me-2\"></c-icon>\r\n }\r\n\r\n <span class=\"text-truncate\">{{ displayValue }}</span>\r\n\r\n @if (iconName && iconPosition === 'end') {\r\n <c-icon [name]=\"iconName\" [size]=\"'sm'\" class=\"ms-2\"></c-icon>\r\n }\r\n </div>\r\n `,\r\n styles: [`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n overflow: hidden;\r\n }\r\n `]\r\n})\r\nexport class IconTextCellRendererComponent implements ICellRendererAngularComp {\r\n public displayValue: string = '';\r\n public iconName: string = '';\r\n public iconPosition: 'start' | 'end' = 'start';\r\n public isRed: boolean = false;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.updateValue(params);\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.updateValue(params);\r\n return true;\r\n }\r\n\r\n private updateValue(params: ICellRendererParams): void {\r\n this.displayValue = params.valueFormatted || params.value;\r\n\r\n const rendererParams = params.colDef?.cellRendererParams;\r\n if (rendererParams) {\r\n // Icon Logic\r\n if (typeof rendererParams.iconName === 'function') {\r\n this.iconName = rendererParams.iconName(params);\r\n } else {\r\n this.iconName = rendererParams.iconName || '';\r\n }\r\n this.iconPosition = rendererParams.iconPosition || 'start';\r\n\r\n // Red Condition Logic\r\n if (rendererParams.isRedCondition && typeof rendererParams.isRedCondition === 'function') {\r\n this.isRed = rendererParams.isRedCondition(params);\r\n } else {\r\n this.isRed = false;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\n\r\n@Component({\r\n selector: 'prg-ws-hyperlink-cell-renderer',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n @if (isLink) {\r\n <a [href]=\"href\" [target]=\"target\" (click)=\"$event.stopPropagation()\">{{ displayValue }}</a>\r\n } @else {\r\n <span>{{ displayValue }}</span>\r\n }\r\n `,\r\n styles: [`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n a {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n a:hover {\r\n text-decoration: none;\r\n }\r\n `]\r\n})\r\nexport class HyperlinkCellRendererComponent implements ICellRendererAngularComp {\r\n public displayValue: string = '';\r\n public href: string = '';\r\n public target: string = '_blank';\r\n public isLink: boolean = false;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.updateValue(params);\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.updateValue(params);\r\n return true;\r\n }\r\n\r\n private updateValue(params: ICellRendererParams): void {\r\n this.displayValue = params.valueFormatted || params.value;\r\n const value = params.value;\r\n\r\n if (!value) {\r\n this.isLink = false;\r\n return;\r\n }\r\n\r\n const rendererParams = params.colDef?.cellRendererParams || {};\r\n const type = rendererParams.type || 'auto'; // 'link', 'email', 'auto'\r\n\r\n if (type === 'email') {\r\n this.setAsEmail(value);\r\n } else if (type === 'link') {\r\n this.setAsLink(value, rendererParams.target);\r\n } else {\r\n // Auto detection\r\n if (typeof value === 'string' && value.includes('@') && !value.includes(' ')) { // Simple email check\r\n this.setAsEmail(value);\r\n } else if (typeof value === 'string' && (value.startsWith('http') || value.startsWith('www.'))) {\r\n this.setAsLink(value, rendererParams.target);\r\n } else {\r\n this.isLink = false;\r\n }\r\n }\r\n }\r\n\r\n private setAsEmail(value: string) {\r\n this.isLink = true;\r\n this.href = `mailto:${value}`;\r\n this.target = '_self';\r\n }\r\n\r\n private setAsLink(value: string, targetParam?: string) {\r\n this.isLink = true;\r\n let url = value;\r\n // If it starts with www. but no protocol, add https://\r\n if (url.startsWith('www.')) {\r\n url = `https://${url}`;\r\n } else if (!url.startsWith('http') && !url.startsWith('//')) {\r\n // If forced as link but no protocol, keep as is or assume https? \r\n // Usually browsers handle \"google.com\" as relative if in href, so prepending https is safer for external links.\r\n // However, if it's a relative link intended, we shouldn't touch it.\r\n // Given \"display link or email\", it's likely external or at least absolute.\r\n // But to be safe, if strictly 'link' type and no protocol, I might leave it or prepend.\r\n // Let's prepend https:// if it looks like a domain (contains dot).\r\n if (url.includes('.')) {\r\n url = `https://${url}`;\r\n }\r\n }\r\n this.href = url;\r\n this.target = targetParam || '_blank';\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { AbstractControl } from '@angular/forms';\r\n\r\nexport enum FormFieldType {\r\n Text = 'text',\r\n Email = 'email',\r\n Number = 'number',\r\n Select = 'select',\r\n\r\n Textarea = 'textarea',\r\n Date = 'date',\r\n NewDate = 'new-date',\r\n Datetime = 'datetime',\r\n Switch = 'switch',\r\n Checkbox = 'checkbox',\r\n Float = 'float',\r\n Edition = 'edition',\r\n Separator = 'seperator',\r\n FormHeader = 'form-header',\r\n Password = 'password',\r\n Url = 'url',\r\n Tel = 'tel',\r\n Timepicker = 'time'\r\n}\r\n\r\nexport interface IFieldConfig {\r\n /** Form label */\r\n label: string;\r\n\r\n /** Form field type */\r\n type: FormFieldType;\r\n\r\n /** id or formControlName */\r\n controlName: string;\r\n\r\n /** for selects or multi-selects */\r\n options?: { value: string; label: string; disabled?: boolean }[];\r\n\r\n /** for selects or multi-selects allows create option along with selects */\r\n allowCreateOptions?: boolean;\r\n\r\n /** for selects or multi-selects allows search option */\r\n allowSearch?: boolean;\r\n\r\n /** for selects or multi-selects allows clear option */\r\n allowCleaner?: boolean;\r\n\r\n /** for selects or multi-selects search option */\r\n search?: string;\r\n\r\n /** grid column span */\r\n colspan?: number;\r\n\r\n /** Placeholder */\r\n placeholder?: string;\r\n\r\n /** For multi-selects */\r\n selectionType?: 'text' | 'tags' | 'counter';\r\n\r\n /** For textarea rows */\r\n textareaRows?: number;\r\n\r\n /** For textarea columns */\r\n textareaColumns?: number;\r\n\r\n /** Validations */\r\n validations: IFormValidations;\r\n\r\n /** Form Value */\r\n value?: any;\r\n\r\n /** For multi-selects - Allows multiple selection */\r\n multiple?: boolean;\r\n\r\n /** Additional info or description for the field */\r\n info?: string;\r\n\r\n /** Additional configuration for specific field types */\r\n config?: any;\r\n\r\n styles?: IFormStyles;\r\n\r\n actionButton?: {\r\n icon: string;\r\n tooltip?: string; // Tooltip for the action button\r\n action: string; // e.g., 'reload', 'generateAccountId'\r\n };\r\n}\r\n\r\nexport interface IFormConfig {\r\n formName?: string;\r\n rows: IFieldConfig[][];\r\n unique_key?: string[];\r\n}\r\n\r\nexport interface IFormValidations {\r\n required?: boolean;\r\n minLength?: number;\r\n maxLength?: number;\r\n pattern?: string;\r\n readonly?: boolean;\r\n precision?: number; // For float type number\r\n min?: number; // For number type\r\n max?: number; // For number type\r\n defaultAdvance?: 'weekly' | 'monthly' | 'quarterly' | 'halfyearly' | 'yearly';\r\n}\r\n\r\nexport interface IFormSubmissionEmit {\r\n /** Reflects the validity of the form */\r\n isValid: boolean;\r\n\r\n /** Reflects the values of the form controls */\r\n values: { [key: string]: any };\r\n\r\n /** Reflects the controls of the form */\r\n controls: { [key: string]: AbstractControl };\r\n}\r\n\r\nexport interface IFormStyles {\r\n field?: string;\r\n label?: string;\r\n}\r\n","export const ColorsCodes = [\n {\n color_name: 'AliceBlue',\n color_code: '#F0F8FF'\n },\n {\n color_name: 'Aqua',\n color_code: '#00FFFF'\n },\n {\n color_name: 'Aquamarine',\n color_code: '#7FFFD4'\n },\n {\n color_name: 'Beige',\n color_code: '#F5F5DC'\n },\n {\n color_name: 'Black',\n color_code: '#000000'\n },\n {\n color_name: 'Blue',\n color_code: '#0000FF'\n },\n {\n color_name: 'Chartreuse',\n color_code: '#7FFF00'\n },\n {\n color_name: 'Coral',\n color_code: '#FF7F50'\n },\n {\n color_name: 'DarkGray',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGrey',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGreen',\n color_code: '#006400'\n },\n {\n color_name: 'DarkOrange',\n color_code: '#FF8C00'\n },\n {\n color_name: 'Fuchsia',\n color_code: '#FF00FF'\n },\n {\n color_name: 'GoldenRod',\n color_code: '#DAA520'\n },\n {\n color_name: 'Gray',\n color_code: '#808080'\n },\n {\n color_name: 'Grey',\n color_code: '#808080'\n },\n {\n color_name: 'Green',\n color_code: '#008000'\n },\n {\n color_name: 'GreenYellow',\n color_code: '#ADFF2F'\n },\n {\n color_name: 'Khaki',\n color_code: '#F0E68C'\n },\n {\n color_name: 'Lavender',\n color_code: '#E6E6FA'\n },\n {\n color_name: 'LightGray',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGrey',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGreen',\n color_code: '#90EE90'\n },\n {\n color_name: 'LightSalmon',\n color_code: '#FFA07A'\n },\n {\n color_name: 'LightSkyBlue',\n color_code: '#87CEFA'\n },\n {\n color_name: 'Lime',\n color_code: '#00FF00'\n },\n {\n color_name: 'LimeGreen',\n color_code: '#32CD32'\n },\n {\n color_name: 'Magenta',\n color_code: '#FF00FF'\n },\n {\n color_name: 'Maroon',\n color_code: '#800000'\n },\n {\n color_name: 'MediumSpringGreen',\n color_code: '#00FA9A'\n },\n {\n color_name: 'Navy',\n color_code: '#000080'\n },\n {\n color_name: 'Olive',\n color_code: '#808000'\n },\n {\n color_name: 'Orange',\n color_code: '#FFA500'\n },\n {\n color_name: 'OrangeRed',\n color_code: '#FF4500'\n },\n {\n color_name: 'Orchid',\n color_code: '#DA70D6'\n },\n {\n color_name: 'PaleGreen',\n color_code: '#98FB98'\n },\n {\n color_name: 'PaleTurquoise',\n color_code: '#AFEEEE'\n },\n {\n color_name: 'Plum',\n color_code: '#DDA0DD'\n },\n {\n color_name: 'Purple',\n color_code: '#800080'\n },\n {\n color_name: 'Red',\n color_code: '#FF0000'\n },\n {\n color_name: 'Salmon',\n color_code: '#FA8072'\n },\n {\n color_name: 'SandyBrown',\n color_code: '#F4A460'\n },\n {\n color_name: 'Silver',\n color_code: '#C0C0C0'\n },\n {\n color_name: 'SkyBlue',\n color_code: '#87CEEB'\n },\n {\n color_name: 'Teal',\n color_code: '#008080'\n },\n {\n color_name: 'Tomato',\n color_code: '#FF6347'\n },\n {\n color_name: 'Violet',\n color_code: '#EE82EE'\n },\n {\n color_name: 'Wheat',\n color_code: '#F5DEB3'\n },\n {\n color_name: 'White',\n color_code: '#FFFFFF'\n },\n {\n color_name: 'Yellow',\n color_code: '#FFFF00'\n }\n];\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, inject } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[wsCircularFocus]',\r\n standalone: true\r\n})\r\nexport class CircularFocusDirective implements AfterViewInit, OnDestroy {\r\n private el = inject(ElementRef);\r\n\r\n @Input() formId: string = '';\r\n @Input() formGroup: FormGroup | null = null;\r\n\r\n private focusableElements: HTMLElement[] = [];\r\n private formSubscription: Subscription | null = null;\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.collectFocusableElements();\r\n\r\n // Subscribe to form value changes if formGroup is provided\r\n if (this.formGroup) {\r\n this.formSubscription = this.formGroup.valueChanges.subscribe(() => {\r\n // Wait for DOM to update after form changes\r\n setTimeout(() => {\r\n this.collectFocusableElements();\r\n }, 0);\r\n });\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Clean up subscription when directive is destroyed\r\n if (this.formSubscription) {\r\n this.formSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private collectFocusableElements(): void {\r\n if (!this.formId) {\r\n // If no formId is provided, use the current element\r\n this.focusableElements = this.getFocusableElements(this.el.nativeElement);\r\n } else {\r\n const formElement = document.getElementById(this.formId);\r\n if (formElement) {\r\n this.focusableElements = this.getFocusableElements(formElement);\r\n }\r\n }\r\n }\r\n\r\n private getFocusableElements(element: HTMLElement): HTMLElement[] {\r\n return Array.from(\r\n element.querySelectorAll(\r\n 'input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [contenteditable]:not([disabled]), c-multi-select:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])'\r\n )\r\n ).filter(el => {\r\n // Filter out hidden elements\r\n const element = el as HTMLElement;\r\n return element.offsetParent !== null; // Check if element is visible\r\n }) as HTMLElement[];\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n // ToDo: Plan to escape the circular navigation when Escape is pressed\r\n // if (event.key === 'Escape') {}\r\n\r\n // Only handle Tab key events\r\n if (event.key !== 'Tab') return;\r\n\r\n // If no focusable elements, do nothing\r\n if (this.focusableElements.length === 0) return;\r\n\r\n const currentElement = document.activeElement as HTMLElement;\r\n const currentIndex = this.focusableElements.indexOf(currentElement);\r\n\r\n // If current element is not in our list, do nothing\r\n if (currentIndex === -1) return;\r\n\r\n // Handle circular navigation\r\n if (event.shiftKey) {\r\n // Going backward with Shift+Tab\r\n if (currentIndex === 0) {\r\n event.preventDefault();\r\n const lastElement = this.focusableElements[this.focusableElements.length - 1];\r\n lastElement.focus();\r\n }\r\n } else {\r\n // Going forward with Tab\r\n if (currentIndex === this.focusableElements.length - 1) {\r\n event.preventDefault();\r\n const firstElement = this.focusableElements[0];\r\n firstElement.focus();\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[wsDecimalInput]',\r\n standalone: true\r\n})\r\nexport class DecimalInputDirective {\r\n private el = inject(ElementRef<HTMLInputElement>);\r\n private control = inject(NgControl, { optional: true });\r\n\r\n @Input() wsDecimalInput = 4;\r\n @Input() wsAcceptStringInput = true;\r\n\r\n private get decimalPlaces() {\r\n return this.wsDecimalInput;\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput(e: InputEvent) {\r\n const input = this.el.nativeElement;\r\n const before = input.value;\r\n\r\n let cleaned = before.replace(/[^0-9.]/g, '');\r\n\r\n const parts = cleaned.split('.');\r\n if (parts.length > 2) {\r\n cleaned = parts[0] + '.' + parts.slice(1).join('');\r\n }\r\n\r\n if (parts.length === 2 && parts[1].length > this.decimalPlaces) {\r\n cleaned = parts[0] + '.' + parts[1].slice(0, this.decimalPlaces);\r\n }\r\n\r\n if (cleaned !== before) {\r\n const cursorPos = input.selectionStart ?? 0;\r\n\r\n input.value = cleaned;\r\n\r\n const newPos = cursorPos + (cleaned.length - before.length);\r\n input.setSelectionRange(newPos, newPos);\r\n\r\n this.control?.control?.setValue(this.wsAcceptStringInput ? cleaned : Number(cleaned) || null, { emitEvent: false, onlySelf: true });\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(e: ClipboardEvent) {\r\n const text = e.clipboardData?.getData('text') ?? '';\r\n if (!/^\\d*\\.?\\d*$/.test(text)) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n const val = this.el.nativeElement.value.trim();\r\n if (!val) return;\r\n\r\n const num = Number(val);\r\n if (isNaN(num)) return;\r\n\r\n let str = num.toFixed(this.decimalPlaces);\r\n\r\n if (!this.wsAcceptStringInput) {\r\n this.control?.control?.setValue(num, { emitEvent: false });\r\n } else {\r\n this.control?.control?.setValue(str, { emitEvent: false });\r\n }\r\n\r\n this.el.nativeElement.value = str;\r\n }\r\n\r\n constructor() {\r\n this.control?.valueChanges?.subscribe(v => {\r\n if (document.activeElement !== this.el.nativeElement) {\r\n this.formatProgrammatic(v);\r\n }\r\n });\r\n }\r\n\r\n private formatProgrammatic(value: any) {\r\n if (value == null || value === '') {\r\n this.el.nativeElement.value = '';\r\n return;\r\n }\r\n\r\n const str = Number(value).toFixed(this.decimalPlaces);\r\n this.el.nativeElement.value = str;\r\n }\r\n}\r\n","/// <reference path=\"../types/coreui-pro.d.ts\" />\r\n\r\nimport { Directive, ElementRef, HostListener, inject, Input } from '@angular/core';\r\n\r\nimport { Tooltip } from '@coreui/coreui-pro';\r\n\r\n@Directive({ selector: '[wsShowTooltipIfTruncated]', standalone: true })\r\nexport class ShowTooltipIfTruncatedDirective {\r\n @Input('wsShowTooltipIfTruncated') tooltipText: string = '';\r\n private el = inject(ElementRef);\r\n\r\n constructor() {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (!this.isTextTruncated()) {\r\n return;\r\n }\r\n Tooltip.getOrCreateInstance(this.el.nativeElement, {\r\n trigger: 'manual',\r\n title: this.tooltipText\r\n }).show();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n Tooltip.getOrCreateInstance(this.el.nativeElement)?.hide();\r\n }\r\n\r\n private isTextTruncated(): boolean {\r\n const el = this.el.nativeElement;\r\n return el.scrollWidth > el.clientWidth;\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { MultiSelectComponent } from '@coreui/angular-pro';\r\nimport { IColorOption } from '../interface/multi-forms.interface';\r\n\r\n@Directive({\r\n selector: '[wsMultiSelectStyler]',\r\n standalone: true\r\n})\r\nexport class MultiSelectStylerDirective implements OnInit, OnDestroy {\r\n private ngControl = inject(NgControl, { optional: true });\r\n private renderer = inject(Renderer2);\r\n private el = inject(ElementRef);\r\n private mutationObserver?: MutationObserver;\r\n\r\n @Input() wsMultiSelectStyler: boolean = true;\r\n @Input() options: IColorOption[] = [];\r\n private multiSelect = inject(MultiSelectComponent, { optional: true });\r\n\r\n ngOnInit() {\r\n if (!this.wsMultiSelectStyler) return;\r\n\r\n if (!this.ngControl) {\r\n return;\r\n }\r\n\r\n // Initial update\r\n setTimeout(() => this.updateSelectedItem(), 0);\r\n\r\n // Watch for control value changes\r\n this.ngControl.valueChanges?.subscribe(() => {\r\n setTimeout(() => this.updateSelectedItem(), 0);\r\n });\r\n\r\n this.setupMutationObserver();\r\n }\r\n\r\n private setupMutationObserver() {\r\n const container = this.getSelectionContainer();\r\n if (!container) return;\r\n\r\n this.mutationObserver = new MutationObserver(() => {\r\n this.updateSelectedItem();\r\n });\r\n\r\n this.mutationObserver.observe(container, {\r\n childList: true,\r\n subtree: true\r\n });\r\n }\r\n\r\n private getSelectionContainer(): HTMLElement | null {\r\n return this.el.nativeElement.querySelector('.form-multi-select-selection');\r\n }\r\n\r\n private updateSelectedItem() {\r\n const container = this.getSelectionContainer();\r\n if (!container) return;\r\n\r\n // Clear existing custom element\r\n const existingItem = container.querySelector('.color-box');\r\n if (existingItem) {\r\n existingItem.remove();\r\n }\r\n\r\n const selectedValue = this.ngControl?.value;\r\n\r\n if (!selectedValue) return;\r\n\r\n const textElement = container.querySelector('.form-multi-select-text');\r\n if (!textElement) return;\r\n\r\n const option = this.options.find(opt => opt.label === selectedValue);\r\n if (!option) {\r\n return;\r\n }\r\n // const option = { color: 'red'};\r\n this.renderer.setStyle(container, 'flex-wrap', 'unset');\r\n this.renderer.addClass(container, 'gap-2');\r\n\r\n // Create and insert color box\r\n const colorBox = this.renderer.createElement('span');\r\n this.renderer.addClass(colorBox, 'color-box');\r\n this.renderer.setStyle(colorBox, 'background-color', option.value);\r\n this.renderer.insertBefore(textElement.parentNode, colorBox, textElement);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.mutationObserver?.disconnect();\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { IConfig } from '../interface/api-response.interface';\r\n\r\n// Output: \"2024-10-02 15:43:58\"\r\nexport function convertToISOnString(date: Date): string {\r\n if (!date) return '';\r\n\r\n const dateString = date instanceof Date ? date.toISOString() : date;\r\n if (dateString.includes('T')) {\r\n return dateString.replace('T', ' ').split('.')[0];\r\n }\r\n return dateString;\r\n}\r\n\r\n// defaultDateFormat = 'DD/MM/YYYY';\r\n// Output: \"02/10/2024\"\r\nexport function regionalDateFormat(date: Date): string {\r\n if (!date) return '';\r\n\r\n const config = (window as any).config as IConfig;\r\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\r\n const day = ('0' + date.getDate()).slice(-2);\r\n const year = date.getFullYear();\r\n\r\n switch (config.defaultDateFormat) {\r\n case 'MM/DD/YYYY':\r\n return `${month}/${day}/${year}`;\r\n case 'DD/MM/YYYY':\r\n return `${day}/${month}/${year}`;\r\n case 'YYYY/MM/DD':\r\n return `${year}/${month}/${day}`;\r\n default:\r\n return `${month}/${day}/${year}`;\r\n }\r\n}\r\n\r\n// convertIsoToFormat(date, 'YYYY/MM/DD');\r\n// Output: \"2024/10/02\"\r\nexport function convertIsoToFormat(date: string | Date, dateFormat?: string): string {\r\n if (!date) return '';\r\n\r\n const config = (window as any).config as IConfig;\r\n let format: any;\r\n if (dateFormat) format = dateFormat;\r\n else format = config.defaultDateFormat;\r\n\r\n const dateObj = new Date(date);\r\n\r\n const year = dateObj.getFullYear();\r\n const month = String(dateObj.getMonth() + 1).padStart(2, '0');\r\n const day = String(dateObj.getDate()).padStart(2, '0');\r\n return format.replace('YYYY', String(year)).replace('MM', month).replace('DD', day);\r\n}\r\n\r\n// Output: 'Oct 2, 2024, 3:43:58 PM'\r\nexport function convertDateShort(dateString: string): string {\r\n if (!dateString) {\r\n return '';\r\n }\r\n const date = new Date(dateString);\r\n return date.toLocaleString('en-US', {\r\n month: 'short',\r\n day: 'numeric',\r\n year: 'numeric',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n hour12: true\r\n });\r\n}\r\n\r\nexport type TimeOption = {\r\n value: string;\r\n label: string;\r\n};\r\n\r\nexport function generateTimeOptions(): TimeOption[] {\r\n const times: TimeOption[] = [];\r\n\r\n for (let hour = 0; hour < 24; hour++) {\r\n for (let minute = 0; minute < 60; minute += 15) {\r\n const hour12 = hour % 12 === 0 ? 12 : hour % 12;\r\n const ampm = hour < 12 ? 'am' : 'pm';\r\n\r\n times.push({\r\n value: `${hour},${minute}`,\r\n label: `${hour12}:${minute.toString().padStart(2, '0')}${ampm}`\r\n });\r\n }\r\n }\r\n\r\n return times;\r\n}\r\n\r\n// Output: '\"20:33:00\"'\r\nexport function getTimeValueFromDateTime(isoString: string): string {\r\n const d = new Date(isoString); // \"2025-12-16T20:33:00.000Z\"\r\n\r\n const h = d.getHours().toString().padStart(2, '0');\r\n const m = d.getMinutes().toString().padStart(2, '0');\r\n const s = d.getSeconds().toString().padStart(2, '0');\r\n\r\n return `${h}:${m}:${s}`; \r\n}\r\n","import { Component, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { generateTimeOptions } from '../../../helpers/dateTime.helpers';\r\n\r\n@Component({\r\n selector: 'app-date-time-picker',\r\n templateUrl: './date-time-picker.component.html',\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateTimePickerComponent implements ControlValueAccessor {\r\n date: Date | null = null;\r\n timeValue: string | null = null;\r\n disabled = false;\r\n\r\n readonly timeDropdwons = generateTimeOptions();\r\n readonly DEFAULT_TIME = '0,0'; // 12:00 AM\r\n\r\n private onChange = (_: Date | null) => {};\r\n private onTouched = () => {};\r\n\r\n writeValue(value: Date | null): void {\r\n if (!value) {\r\n this.date = null;\r\n this.timeValue = null;\r\n return;\r\n }\r\n\r\n const inputDate = value instanceof Date ? value : new Date(value);\r\n\r\n // ********** FIX FOR COREUI DATE PICKER (LOCAL TIME REPRESENTATION) **********\r\n // Get Y, M, D from the UTC value to ensure the correct day is selected,\r\n // then create a new Date object for the start of that day in the LOCAL time zone.\r\n const year = inputDate.getUTCFullYear();\r\n const month = inputDate.getUTCMonth();\r\n const day = inputDate.getUTCDate();\r\n\r\n // this.date must be a NEW Date reference for the picker to recognize the change\r\n this.date = new Date(year, month, day);\r\n // *****************************************************************************\r\n\r\n // FIX for Time (Using UTC getters and normalization)\r\n const h = inputDate.getUTCHours();\r\n let m = inputDate.getUTCMinutes();\r\n\r\n m = Math.round(m / 15) * 15;\r\n if (m === 60) {\r\n m = 0;\r\n }\r\n\r\n this.timeValue = `${h},${m}`;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onDateChange(date: Date | null) {\r\n if (!date) return;\r\n\r\n this.date = date;\r\n\r\n if (!this.timeValue) {\r\n this.timeValue = this.DEFAULT_TIME;\r\n }\r\n\r\n this.emitValue();\r\n }\r\n\r\n onTimeChange(value: string) {\r\n this.timeValue = value;\r\n this.emitValue();\r\n }\r\n\r\n private emitValue() {\r\n if (!this.date || !this.timeValue) {\r\n this.onChange(null);\r\n return;\r\n }\r\n\r\n const [h, m] = this.timeValue.split(',').map(Number);\r\n\r\n // Create a new Date object based on the selected date (which is a local midnight)\r\n // The key here is to use the UTC setters to apply the time portion\r\n // so the final output is a UTC timestamp as expected by the parent form.\r\n const combined = new Date(this.date);\r\n combined.setUTCHours(h, m, 0, 0);\r\n\r\n this.onChange(combined);\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"row g-3 align-items-end\">\r\n <div class=\"col-12 col-md-6\">\r\n <c-date-picker\r\n [date]=\"date\"\r\n [disabled]=\"disabled\"\r\n (valueChange)=\"onDateChange($event)\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n [value]=\"date\"\r\n [calendarDate]=\"date\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6\">\r\n <select cSelect class=\"form-select\" [value]=\"timeValue\" [disabled]=\"disabled\" (change)=\"onTimeChange($any($event.target).value)\">\r\n @if (!date) {\r\n <option value=\"\">Select time</option>\r\n }\r\n @for (time of timeDropdwons; track time.value) {\r\n <option [value]=\"time.value\">\r\n {{ time.label }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n</div>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { FormFieldType, IFieldConfig, IFormConfig, IFormSubmissionEmit, IFormValidations } from './multi-form.interface';\r\nimport Swal from 'sweetalert2';\r\nimport { ColorsCodes } from '../../constants/color.constants';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-multi-form',\r\n templateUrl: './multi-form.component.html',\r\n styleUrl: './multi-form.component.scss',\r\n standalone: false\r\n})\r\nexport class MultiFormComponent implements OnInit, OnChanges {\r\n private readonly formBuilder = inject(FormBuilder);\r\n readonly configurationService = inject(ConfigurationServiceLib);\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n @Input() config!: IFormConfig;\r\n @Input() showUnsavedFlags: boolean;\r\n @Input() currentTableGridsSelectedIndex!: number;\r\n @Input() formId: string;\r\n\r\n @Output() fieldAction = new EventEmitter<{ action: string; field: IFieldConfig; value?: any }>();\r\n @Output() formSavedUnsavedListen: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() selectionChangeEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n public multiForm: FormGroup;\r\n public isFormSubmitted: boolean;\r\n private initialFormValues: any;\r\n\r\n public isFormSaved: boolean = false;\r\n public isFormSavedModalActive: boolean = false;\r\n private isSelectionChange: boolean = false;\r\n inputType = {\r\n colorSelect: 'color-select'\r\n };\r\n public colorCodes$ = ColorsCodes;\r\n public FormFieldType = FormFieldType;\r\n today = new Date();\r\n\r\n constructor() {\r\n this.multiForm = this.formBuilder.group({});\r\n this.isFormSubmitted = false;\r\n this.showUnsavedFlags = false;\r\n this.formId = '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buildFormControls();\r\n this.saveInitialFormValues();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['config'] && !changes['config'].isFirstChange()) {\r\n if (this.showUnsavedFlags) {\r\n if (this.hasUnsavedChanges() && !this.isFormSaved && !this.isSelectionChange) {\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Do you want to save the changes?',\r\n showDenyButton: true,\r\n confirmButtonText: 'Save',\r\n denyButtonText: `Don't save`\r\n }).then((result: any) => {\r\n if (result.isConfirmed) {\r\n this.proceedToSaveUnsavedForm();\r\n } else if (result.isDenied) {\r\n this.proceedWithoutSavingForm();\r\n }\r\n });\r\n return;\r\n }\r\n this.updateFormControls();\r\n } else {\r\n this.updateFormControls();\r\n }\r\n }\r\n }\r\n\r\n private buildFormControls(): void {\r\n if (this.config?.rows?.length) {\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n\r\n const validators = this.getValidators(field.validations);\r\n if (field.type === FormFieldType.Checkbox) {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control({ value: this.getTruthyOrFalsy(field.value) || false, disabled: field.validations?.readonly || false }, validators)\r\n );\r\n } else if (field.type === FormFieldType.Date) {\r\n // If field value is \"\", dont set the default advance date\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control(\r\n {\r\n value: field?.value !== '' ? this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '') : '',\r\n disabled: field.validations?.readonly || false\r\n },\r\n validators\r\n )\r\n );\r\n } else if (field.type === FormFieldType.Float) {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control(\r\n {\r\n value: field?.value !== '' ? this.updateFloatValue(field.value) : '',\r\n disabled: field.validations?.readonly || false\r\n },\r\n validators\r\n )\r\n );\r\n } else {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control({ value: field?.value || '', disabled: field.validations?.readonly || false }, validators)\r\n );\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n /** Reload the field action */\r\n onClickFieldAction(action: any, field: IFieldConfig) {\r\n this.fieldAction.emit({ action: 'reload', field });\r\n }\r\n\r\n private updateFormControls(): void {\r\n if (!this.config?.rows?.length) return;\r\n\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n const isReadOnly = !!field.validations?.readonly;\r\n const validators = this.getValidators(field.validations);\r\n let control = this.multiForm.get(field.controlName);\r\n\r\n // If control does not exist, add it as enabled\r\n if (!control) {\r\n let initialValue: any = '';\r\n if (field.type === FormFieldType.Checkbox) {\r\n initialValue = this.getTruthyOrFalsy(field.value) || false;\r\n } else if (field.type === FormFieldType.Date || field.type === FormFieldType.NewDate) {\r\n initialValue = field?.value ? new Date(field.value) : this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '');\r\n } else if (field.type === FormFieldType.Float) {\r\n initialValue = field?.value ? this.updateFloatValue(field.value) : '';\r\n } else {\r\n initialValue = field.value || '';\r\n }\r\n control = this.formBuilder.control(initialValue, { validators, nonNullable: true });\r\n this.multiForm.addControl(field.controlName, control);\r\n }\r\n\r\n // Always enable before setting value\r\n control.enable({ emitEvent: false });\r\n\r\n // Set value\r\n if (field.type === FormFieldType.Checkbox) {\r\n control.setValue(this.getTruthyOrFalsy(field.value) || false, { emitEvent: false });\r\n } else if (field.type === FormFieldType.Date || field.type === FormFieldType.NewDate) {\r\n control.setValue(field?.value ? new Date(field.value) : '', { emitEvent: false });\r\n } else if (field.type === FormFieldType.Float) {\r\n control.setValue(field?.value ? this.updateFloatValue(field.value) : '', { emitEvent: false });\r\n } else {\r\n control.setValue(field.value || '', { emitEvent: false });\r\n }\r\n\r\n // Disable if readonly\r\n if (isReadOnly) {\r\n control.disable({ emitEvent: false });\r\n }\r\n });\r\n });\r\n this.saveInitialFormValues();\r\n this.isFormSaved = false;\r\n this.multiForm.markAsPristine();\r\n }\r\n\r\n public getTruthyOrFalsy(value: any) {\r\n return value === '1' || value === 1 ? true : false;\r\n }\r\n\r\n private getValidators(validations?: IFormValidations) {\r\n const validators: any = [];\r\n\r\n if (validations) {\r\n if (validations.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (validations.minLength) {\r\n validators.push(Validators.minLength(validations.minLength));\r\n }\r\n if (validations.maxLength) {\r\n validators.push(Validators.maxLength(validations.maxLength));\r\n }\r\n if (validations.pattern) {\r\n validators.push(Validators.pattern(validations.pattern));\r\n }\r\n }\r\n\r\n return validators;\r\n }\r\n\r\n /** Get the form values */\r\n public getFormValues(): IFormSubmissionEmit {\r\n this.isFormSubmitted = true;\r\n this.isFormSaved = true;\r\n const formSubmissionEmit = { isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls };\r\n return formSubmissionEmit;\r\n }\r\n\r\n /** Reset the form */\r\n public resetForm(): void {\r\n this.multiForm.reset();\r\n this.isFormSubmitted = false;\r\n }\r\n\r\n /**Set Value to form */\r\n public setValue(control: string, value: any): void {\r\n this.multiForm.controls[control].setValue(value);\r\n }\r\n\r\n /**Get Value from form */\r\n public getValue(control: string): any {\r\n return this.multiForm.controls[control].value;\r\n }\r\n\r\n /**Get Form Control */\r\n public getFormControl(control: string): any {\r\n return this.multiForm.controls[control];\r\n }\r\n\r\n private hasUnsavedChanges(): boolean {\r\n return JSON.stringify(this.multiForm.getRawValue()) !== JSON.stringify(this.initialFormValues);\r\n }\r\n\r\n private saveInitialFormValues(): void {\r\n this.initialFormValues = this.multiForm.getRawValue();\r\n }\r\n\r\n public proceedToSaveUnsavedForm(): void {\r\n this.formSavedUnsavedListen.emit({ isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls });\r\n }\r\n\r\n public proceedWithoutSavingForm(): void {\r\n this.formSavedUnsavedListen.emit(null);\r\n this.updateFormControls();\r\n }\r\n\r\n public onValueChange(event: any, control: string): void {\r\n this.selectionChangeEvent.emit({ control, value: event });\r\n this.isSelectionChange = true;\r\n }\r\n\r\n public onDateValueChange(value: any, control: string): void {\r\n const stopControl: IFieldConfig = this.findStopControl();\r\n if (stopControl) {\r\n if (control === '@start' && value && stopControl?.validations?.defaultAdvance) {\r\n const startDate = new Date(value);\r\n if (this.multiForm.contains('@stop')) {\r\n this.multiForm.controls['@stop'].setValue(this.setDefaultAdvanceDate(startDate, stopControl?.validations?.defaultAdvance));\r\n }\r\n }\r\n }\r\n }\r\n\r\n // public onDateChange(event: any, controlName: string): void {\r\n // const control = this.multiForm.get(controlName);\r\n // if (control && event && event.toString() !== control.value?.toString()) {\r\n // // Use setTimeout to avoid NG0600 signal error if this is called during a signal update cycle\r\n // setTimeout(() => {\r\n // control.setValue(event);\r\n // this.onDateValueChange(event, controlName);\r\n // });\r\n // }\r\n // }\r\n\r\n public onEditionChange(event: any): void {\r\n const controlNameWithAt = '@edname';\r\n const controlNameWithoutAt = 'edname';\r\n\r\n if (this.multiForm.contains(controlNameWithAt)) {\r\n this.multiForm.controls[controlNameWithAt].setValue(event);\r\n } else if (this.multiForm.contains(controlNameWithoutAt)) {\r\n this.multiForm.controls[controlNameWithoutAt].setValue(event);\r\n } else {\r\n this.multiForm.addControl(controlNameWithAt, this.formBuilder.control(event));\r\n }\r\n }\r\n\r\n public handleSearch(field: IFieldConfig, keyword: any) {\r\n const fieldConfig = field.config;\r\n if(fieldConfig) {\r\n this.jsonrpcService.postJsonRpcRequest(fieldConfig.method, { keyword }).subscribe((response: any) => {\r\n field.options = response?.result || [];\r\n });\r\n }\r\n }\r\n\r\n public setDefaultAdvanceDate(currentDate: Date, defaultAdvance: string): any {\r\n if (defaultAdvance === 'weekly') {\r\n return this.advanceDate(currentDate, 6);\r\n } else if (defaultAdvance === 'monthly') {\r\n const month = currentDate.getMonth();\r\n const year = currentDate.getFullYear();\r\n\r\n // Get days in current month\r\n const daysInMonth = new Date(year, month + 1, 0).getDate();\r\n\r\n let daysToAdd = 30;\r\n if (daysInMonth === 31) {\r\n daysToAdd = 30;\r\n } else if (daysInMonth === 30) {\r\n daysToAdd = 29;\r\n } else if (month === 1) {\r\n const isLeap = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n daysToAdd = isLeap ? 28 : 27;\r\n }\r\n\r\n return this.advanceDate(currentDate, daysToAdd);\r\n } else if (defaultAdvance === 'quarterly') {\r\n return this.advanceDate(currentDate, 90);\r\n } else if (defaultAdvance === 'halfyearly') {\r\n return this.advanceDate(currentDate, 180);\r\n } else if (defaultAdvance === 'yearly') {\r\n return this.advanceDate(currentDate, 365);\r\n } else {\r\n return this.advanceDate(currentDate, 0);\r\n }\r\n }\r\n\r\n private advanceDate(currentDate: Date, advancedBy: number): any {\r\n if (advancedBy || advancedBy === 0) {\r\n const advanceDate = new Date(currentDate.setDate(currentDate.getDate() + advancedBy));\r\n return advanceDate;\r\n }\r\n }\r\n\r\n private findStopControl(): any {\r\n for (const row of this.config.rows) {\r\n for (const field of row) {\r\n if (field.controlName === '@stop') {\r\n return field;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Set precision for float type\r\n * @param value\r\n * @returns\r\n */\r\n private updateFloatValue(value: unknown): string | null {\r\n if (value == null || value === '') {\r\n return null;\r\n }\r\n\r\n const precision = this.configurationService?.allConfigValues()?.formConfig?.formValidations?.defaultDecimalPrecision ?? 2;\r\n\r\n if (typeof value === 'number') {\r\n return Number.isFinite(value) ? value.toFixed(precision) : null;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n const trimmed = value.trim();\r\n if (trimmed === '') return null;\r\n\r\n const num = parseFloat(trimmed);\r\n return Number.isFinite(num) ? num.toFixed(precision) : null;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" wsCircularFocus>\r\n @for (row of config?.rows; track $index; let isLast = $last) {\r\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\r\n @for (field of row; track $index) {\r\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\r\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\r\n @if (multiForm.controls[field.controlName]) {\r\n <!-- Label -->\r\n @if (field.label && field.type !== FormFieldType.Checkbox) {\r\n <label\r\n [wsShowTooltipIfTruncated]=\"field.label\"\r\n cLabel\r\n class=\"mb-1 label-multiform single-line-label\"\r\n [for]=\"field.controlName\"\r\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\r\n [ngStyle]=\"field.styles?.label\"\r\n >{{ field.label }}\r\n @if (field?.validations?.required || false) {\r\n <strong class=\"text-danger\">*</strong>\r\n }\r\n </label>\r\n }\r\n\r\n <!-- Text, Email, Number Inputs -->\r\n @if (\r\n field.type === FormFieldType.Text ||\r\n field.type === FormFieldType.Email ||\r\n field.type === FormFieldType.Number ||\r\n field.type === FormFieldType.Password ||\r\n field.type === FormFieldType.Url ||\r\n field.type === FormFieldType.Tel\r\n ) {\r\n <div class=\"position-relative w-100\">\r\n <input\r\n [type]=\"field.type\"\r\n cFormControl\r\n [formControlName]=\"field.controlName\"\r\n [id]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\r\n 'no-label-margin': !field.label\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n\r\n @if (field.actionButton) {\r\n <button\r\n type=\"button\"\r\n [cTooltip]=\"field.actionButton?.tooltip\"\r\n tooltipPlacement=\"top\"\r\n cButton\r\n color=\"primary\"\r\n variant=\"outline\"\r\n aria-label=\"action\"\r\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\r\n (click)=\"onClickFieldAction($event, field)\">\r\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\r\n </button>\r\n }\r\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\r\n @if (multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Select Inputs -->\r\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\r\n <ng-container>\r\n <c-multi-select\r\n [multiple]=\"field?.multiple || false\"\r\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\r\n [search]=\"field?.allowCreateOptions || field?.allowSearch || field?.search || false\"\r\n [searchNoResultsLabel]=\"field?.searchNoResultsLabel || 'No results found'\"\r\n [clearSearchOnSelect]=\"true\"\r\n [selectionType]=\"field?.selectionType || 'tags'\"\r\n [cleaner]=\"field?.allowCleaner === false ? false : true\"\r\n [formControlName]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || 'Select'\"\r\n [wsMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\r\n [options]=\"colorCodes$\"\r\n [optionsMaxHeight]=\"400\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (searchValueChange)=\"handleSearch(field, $event)\"\r\n (valueChange)=\"onValueChange($event, field.controlName)\"\r\n [ngStyle]=\"field.styles?.field\">\r\n @if (field.type === inputType?.colorSelect) {\r\n @for (option of colorCodes$; track $index) {\r\n <c-multi-select-option [value]=\"option?.label\">\r\n <label class=\"d-flex gap-2\">\r\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\r\n {{ option.label }}\r\n </label>\r\n </c-multi-select-option>\r\n }\r\n } @else {\r\n @for (option of field.options; track $index) {\r\n <c-multi-select-option [value]=\"option?.value\">\r\n {{ option.label }}\r\n </c-multi-select-option>\r\n }\r\n }\r\n </c-multi-select>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <!-- Date input -->\r\n @else if (field.type === FormFieldType.Date) {\r\n <ng-container>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"field?.label || 'Select Date'\"\r\n class=\"form-control\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\r\n [formControlName]=\"field.controlName\"\r\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\r\n [bsConfig]=\"{\r\n containerClass: 'pongrass-red-datepicker',\r\n showWeekNumbers: false,\r\n adaptivePosition: true,\r\n useUtc: false\r\n }\"\r\n bsDatepicker\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n @else if (field.type === FormFieldType.NewDate) {\r\n <ng-container>\r\n <c-date-picker\r\n [formControlName]=\"field.controlName\"\r\n [calendarDate]=\"multiForm.controls[field.controlName]?.value\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </ng-container>\r\n }\r\n\r\n <!-- Date Time input -->\r\n @else if (field.type === FormFieldType.Datetime) {\r\n <app-date-time-picker [formControlName]=\"field.controlName\"></app-date-time-picker>\r\n }\r\n\r\n <!-- Textarea -->\r\n @else if (field.type === FormFieldType.Textarea) {\r\n <ng-container>\r\n <textarea\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n [rows]=\"field?.textareaRows || 4\"\r\n [columns]=\"field?.textareaColumns || 4\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [formControlName]=\"field.controlName\"\r\n [ngStyle]=\"field.styles?.field\"></textarea>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n <!-- Checkbox -->\r\n @else if (field.type === FormFieldType.Checkbox) {\r\n <div class=\"no-label-margin\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\r\n </div>\r\n }\r\n\r\n @else if (field.type === FormFieldType.Switch) {\r\n <c-form-check sizing=\"lg\" [switch]=\"true\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.info }}</label>\r\n </c-form-check>\r\n }\r\n <!-- Decimal input -->\r\n @else if (field.type === FormFieldType.Float) {\r\n <ng-container>\r\n <input\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n type=\"number\"\r\n class=\"me-2\"\r\n [formControlName]=\"field.controlName\"\r\n [wsDecimalInput]=\"field.validations?.precision || configurationService?.allConfigValues()?.formConfig?.formValidations?.defaultDecimalPrecision || 2\"\r\n [wsAcceptStringInput]=\"false\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Edition) {\r\n <ng-container>\r\n <prg-ws-edition-list-grouped\r\n (selectedEditionsChange)=\"onEditionChange($event)\"\r\n [multiple]=\"field?.multiple === false ? false : true\"\r\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\r\n </prg-ws-edition-list-grouped>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Timepicker) {\r\n <c-time-picker [formControlName]=\"field.controlName\" seconds />\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (field?.type === FormFieldType.Separator) {\r\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\r\n }\r\n @if (field?.type === FormFieldType.FormHeader) {\r\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n</form>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AutocompleteModule, ButtonModule, DatePickerModule, FormCheckInputDirective, FormModule, InputGroupComponent, ModalModule, MultiSelectModule, TimePickerModule, TooltipModule } from '@coreui/angular-pro';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\r\n\r\nimport { MultiFormComponent } from './multi-form.component';\r\nimport { EditionListGroupedComponent } from '../../components/edition-list-grouped/edition-list-grouped.component';\r\n\r\nimport { CircularFocusDirective } from '../../directives/circular-focus.directive';\r\nimport { DecimalInputDirective } from '../../directives/decimal-input.directive';\r\nimport { ShowTooltipIfTruncatedDirective } from '../../directives/show-tooltip-if-truncated.directive';\r\nimport { MultiSelectStylerDirective } from '../../directives/multi-select-styler.directive';\r\nimport { DateTimePickerComponent } from './date-time-picker/date-time-picker.component';\r\n\r\n@NgModule({\r\n declarations: [MultiFormComponent, DateTimePickerComponent],\r\n imports: [\r\n CircularFocusDirective,\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MultiSelectModule,\r\n FormModule,\r\n IconModule,\r\n InputGroupComponent,\r\n DatePickerModule,\r\n DecimalInputDirective,\r\n ShowTooltipIfTruncatedDirective,\r\n ModalModule,\r\n TooltipModule,\r\n ButtonModule,\r\n BsDatepickerModule,\r\n AutocompleteModule,\r\n FormCheckInputDirective,\r\n EditionListGroupedComponent,\r\n MultiSelectStylerDirective,\r\n TimePickerModule,\r\n ],\r\n exports: [MultiFormComponent, DateTimePickerComponent]\r\n})\r\nexport class MultiFormModule {}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Component, effect, EventEmitter, Input, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { IEmmitedResponse } from './generic-filter-modal.interface';\r\nimport { MultiFormComponent } from '../../modules/multi-form/multi-form.component';\r\nimport { IFormConfig } from '../../modules/multi-form/multi-form.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MultiFormModule } from '../../modules/multi-form/multi-form.module';\r\nimport { ButtonModule, ModalModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n selector: 'prg-ws-generic-filter-model',\r\n templateUrl: './generic-filter-model.component.html',\r\n styleUrl: './generic-filter-model.component.scss',\r\n standalone: true,\r\n imports: [CommonModule, MultiFormModule, ModalModule, ButtonModule]\r\n})\r\nexport class GenericFilterModelComponent implements OnInit {\r\n readonly configurationService = inject(ConfigurationServiceLib);\r\n readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n @Input() filterFormConfiguration: IFormConfig | any = [];\r\n @Input() tableName: string = '';\r\n @Output() sendFilteredData: EventEmitter<IEmmitedResponse>;\r\n\r\n @ViewChild('filterFormComponent') filterFormComponent!: MultiFormComponent;\r\n\r\n public isFilterModalActive: boolean;\r\n\r\n constructor() {\r\n this.isFilterModalActive = false;\r\n this.sendFilteredData = new EventEmitter<IEmmitedResponse>();\r\n\r\n effect(() => {\r\n this.isFilterModalActive = this.configurationService.openFilterModal();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.tableName) throw new Error('Table name is required to filter data.');\r\n }\r\n\r\n public handleFilterModal(event: boolean): void {\r\n this.isFilterModalActive = event;\r\n this.configurationService.openFilterModal.set(this.isFilterModalActive);\r\n }\r\n\r\n public resetFilter(): void {\r\n this.filterFormComponent.resetForm();\r\n this.sendFilteredData.emit({ isReset: true, returnedData: [] });\r\n }\r\n\r\n public async onFilter(): Promise<void> {\r\n const formValues = this.filterAttributesWithValues(this.filterFormComponent.getFormValues().values);\r\n if (Object.keys(formValues).length > 0) {\r\n const tableData = await this.jsonrpcService.getTableList(this.tableName, formValues);\r\n this.sendFilteredData.emit({ isReset: false, returnedData: tableData.result || [] });\r\n this.configurationService.openFilterModal.set(false);\r\n }\r\n }\r\n\r\n private filterAttributesWithValues(object: any): any {\r\n return Object.keys(object)\r\n .filter(key => object[key] !== null && object[key] !== '' && object[key] !== undefined)\r\n .reduce((result: any, key: any) => {\r\n result[key] = object[key];\r\n return result;\r\n }, {});\r\n }\r\n\r\n public close(): void {\r\n this.configurationService.openFilterModal.set(false);\r\n }\r\n}\r\n","<!-- Filter Modal -->\n<c-modal id=\"generic-filter-modal\" [visible]=\"isFilterModalActive\" (visibleChange)=\"handleFilterModal($event)\" size=\"md\" alignment=\"center\" scrollable>\n <c-modal-header>\n <h5 cModalTitle>Advanced Search</h5>\n <!-- <button (click)=\"commonService.openFilterModal.set(false)\" cButtonClose></button> -->\n </c-modal-header>\n <c-modal-body>\n @if (filterFormConfiguration) {\n <app-multi-form [config]=\"filterFormConfiguration\" #filterFormComponent></app-multi-form>\n }\n </c-modal-body>\n <c-modal-footer>\n <button (click)=\"close()\" cButton color=\"secondary\">Close</button>\n <button (click)=\"resetFilter()\" cButton color=\"primary\">Reset</button>\n <button cButton color=\"primary\" (click)=\"onFilter()\">Search</button>\n </c-modal-footer>\n</c-modal>\n","import { IFilterComp } from '@ag-grid-community/core';\r\nimport { ICellRendererComp, ICellEditorComp } from '@ag-grid-community/core';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { CustomSelectFilterComponent } from '../components/ag-grid-renderer/custom-select-filter.component';\r\nimport { AgDateRangeFilterComponent } from '../components/ag-grid-renderer/ag-date-range-filter.component';\r\n\r\ntype AgGridComponentClass = { new(...args: any[]): IFilterComp } | { new(...args: any[]): ICellRendererComp } | { new(...args: any[]): IFilterAngularComp } | { new(...args: any[]): ICellEditorComp };\r\n\r\nexport enum FilterType {\r\n SELECT = 'SELECT_FILTER',\r\n TEXT = 'TEXT_FILTER',\r\n NUMBER = 'NUMBER_FILTER',\r\n DATE = 'DATE_FILTER',\r\n DATE_RANGE = 'DATE_RANGE_FILTER'\r\n}\r\n\r\n// Built-in AG Grid filters\r\nexport const AgGridFilters: Partial<Record<FilterType, string>> = {\r\n [FilterType.TEXT]: 'agTextColumnFilter',\r\n [FilterType.NUMBER]: 'agNumberColumnFilter',\r\n [FilterType.DATE]: 'agDateColumnFilter'\r\n};\r\n\r\n// Custom filters that can be used in the table grid\r\nexport const TABLE_GRID_FILTER_COMPONENTS: Partial<Record<FilterType, AgGridComponentClass>> = {\r\n [FilterType.SELECT]: CustomSelectFilterComponent,\r\n [FilterType.DATE_RANGE]: AgDateRangeFilterComponent,\r\n // Add others as needed\r\n};\r\n","export const MessageLabel = {\n RowPerPage: 'Rows per page'\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n CellValueChangedEvent,\r\n ColumnMovedEvent,\r\n ColumnResizedEvent,\r\n FirstDataRenderedEvent,\r\n GridOptions,\r\n GridReadyEvent,\r\n IColumnLimit,\r\n PaginationChangedEvent,\r\n SortChangedEvent\r\n} from '@ag-grid-community/core';\r\nimport { IColumnStateEvent, IFilterChangeEvent, ITableGridConfiguration, ITableGridState } from './table-grid';\r\nimport { Component, effect, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subject } from 'rxjs';\r\nimport { auditTime, takeUntil } from 'rxjs/operators';\r\nimport { FilterType, AgGridFilters, TABLE_GRID_FILTER_COMPONENTS } from '../../enums/grid.enum';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { MessageLabel } from '../../constants/app.constanta';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\r\nimport { IAPIResponse } from '../../interface/api-response.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-table-grid',\r\n templateUrl: './table-grid.component.html',\r\n styleUrl: './table-grid.component.scss',\r\n standalone: false\r\n})\r\nexport class TableGridComponent implements OnInit, OnChanges, OnDestroy {\r\n private readonly formBuilder = inject(FormBuilder);\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n private readonly toastrService = inject(ToastrService);\r\n private readonly configurationService = inject(ConfigurationServiceLib);\r\n\r\n @Input() tableConfiguration!: ITableGridConfiguration;\r\n @Input() columnToolVisible: boolean;\r\n @Input() initialPageNumber: number;\r\n\r\n @Output() tableGridReady: EventEmitter<GridReadyEvent>;\r\n @Output() tableRowSelection: EventEmitter<any>;\r\n @Output() tableRowSelectionChanged: EventEmitter<any>;\r\n @Output() tableRowClicked: EventEmitter<{ event: any; row: any }>;\r\n @Output() columnStateEvent: EventEmitter<IColumnStateEvent>;\r\n @Output() pageChange: EventEmitter<PaginationChangedEvent>;\r\n @Output() filterChanged: EventEmitter<IFilterChangeEvent>;\r\n @Output() cellValueChanged: EventEmitter<CellValueChangedEvent>;\r\n\r\n private gridAPI: GridReadyEvent | undefined;\r\n public columnsListselectionForm!: FormGroup;\r\n public tableGridState: ITableGridState[];\r\n\r\n autoSizeTrigger$ = new Subject<void>();\r\n subscribeUntil$ = new Subject<void>();\r\n\r\n autoSizeStrategy = {\r\n type: 'fitCellContents',\r\n defaultMinWidth: this.configurationService.allConfigValues()?.tableGridConfig?.defaultMinWidth || 100\r\n };\r\n\r\n /**\r\n * Resize all columns to fit the grid width while maintaining their minimum widths.\r\n * This method collects the current widths of all columns and applies them as limits\r\n */\r\n sizeToFit() {\r\n const columnLimits: IColumnLimit[] = [];\r\n this.gridAPI?.api.getColumns()!.forEach(column => {\r\n column.getMaxWidth();\r\n columnLimits.push({\r\n key: column.getColId(),\r\n minWidth: column.getActualWidth()\r\n });\r\n });\r\n this.gridAPI?.api.sizeColumnsToFit({\r\n columnLimits: columnLimits\r\n });\r\n }\r\n\r\n /**\r\n * Automatically resize all columns to fit their content.\r\n * This method collects the current widths of all columns and applies them as limits\r\n * to ensure that the columns are resized based on their content.\r\n */\r\n autoSizeAll(skipHeader: boolean = false): void {\r\n this.gridAPI?.api.autoSizeAllColumns(skipHeader);\r\n this.sizeToFit();\r\n }\r\n\r\n gridOptions: GridOptions = {\r\n onRowDataUpdated: () => {\r\n // Trigger auto-size when row data is updated\r\n // this.autoSizeTrigger$.next();\r\n },\r\n localeText: {\r\n pageSizeSelectorLabel: `${MessageLabel.RowPerPage}:`,\r\n ariaPageSizeSelectorLabel: `${MessageLabel.RowPerPage}`\r\n }\r\n };\r\n\r\n constructor() {\r\n this.tableGridReady = new EventEmitter<GridReadyEvent>();\r\n this.tableRowSelection = new EventEmitter<any>();\r\n this.tableRowSelectionChanged = new EventEmitter<any>();\r\n this.tableRowClicked = new EventEmitter<{ event: any; row: any }>();\r\n this.columnStateEvent = new EventEmitter<IColumnStateEvent>();\r\n this.pageChange = new EventEmitter<PaginationChangedEvent>();\r\n this.filterChanged = new EventEmitter<IFilterChangeEvent>();\r\n this.cellValueChanged = new EventEmitter<CellValueChangedEvent>();\r\n\r\n this.columnToolVisible = false;\r\n this.initialPageNumber = 0;\r\n\r\n this.tableGridState = [];\r\n\r\n effect(() => {\r\n if (this.configurationService.utilsAppliedTheme() === 'dark') {\r\n this.tableConfiguration.tableTheme = `${this.tableConfiguration.themeClass}-dark`;\r\n } else {\r\n this.tableConfiguration.tableTheme = this.tableConfiguration.themeClass;\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['tableConfiguration'] && !changes['tableConfiguration'].firstChange) {\r\n if (this.gridAPI) {\r\n this.gridAPI.api.refreshClientSideRowModel();\r\n }\r\n setTimeout(() => {\r\n this.createColumnState();\r\n this.createColumnsListForm();\r\n }, 0);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createColumnsListForm();\r\n this.gridOptions = {\r\n ...this.gridOptions,\r\n ...this.tableConfiguration.defaultGridOptions\r\n };\r\n\r\n this.autoSizeTrigger$.pipe(auditTime(500), takeUntil(this.subscribeUntil$)).subscribe(() => {\r\n this.autoSizeAll();\r\n });\r\n }\r\n\r\n /** Send event to parent component when Ag Grid is stabilized*/\r\n public onGridReady(event: GridReadyEvent) {\r\n this.gridAPI = event;\r\n this.createColumnState();\r\n this.tableGridReady.emit(event);\r\n }\r\n\r\n /** Send event to parent component when a row is selected */\r\n public onRowSelected(event: any): void {\r\n const selectedRows = this.gridAPI?.api.getSelectedRows();\r\n this.tableRowSelection.emit({ event: event, rows: selectedRows });\r\n }\r\n\r\n /** Send event to parent component when a row is clicked */\r\n onRowClicked(event: any): void {\r\n this.tableRowClicked.emit({ event: event, row: event.data });\r\n }\r\n\r\n /** Send on checkbox selection event event to parent component when row selection is changed */\r\n public onRowSelectionChanged(event: any): void {\r\n if (this.gridAPI) {\r\n const selectedNodes = this.gridAPI.api.getSelectedNodes();\r\n const selectedData = selectedNodes.map(node => node.data);\r\n this.tableRowSelectionChanged.emit(selectedData);\r\n }\r\n }\r\n\r\n /** Create column state on initialization of table grid */\r\n private createColumnState(): void {\r\n if (this.gridAPI) {\r\n if (this.tableConfiguration.initialState) {\r\n this.tableGridState = this.tableConfiguration.initialState;\r\n const initialState = this.tableGridState.map(item => ({\r\n colId: item.key!,\r\n hide: item.visible === null || item.visible === undefined ? false : !item.visible,\r\n width: item.width || this.configurationService.allConfigValues()?.tableGridConfig?.defaultMinWidth,\r\n sort: item.sort || null\r\n }));\r\n\r\n this.gridAPI.api.applyColumnState({\r\n state: initialState,\r\n defaultState: { sort: null }\r\n });\r\n } else {\r\n const state = this.gridAPI.api.getColumnState();\r\n state.forEach((columnState: any) => {\r\n this.tableGridState.push({\r\n key: columnState.colId,\r\n visible: columnState.hide ? !columnState.hide : true,\r\n width: columnState.width,\r\n sort: columnState.sort\r\n });\r\n });\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** Set visibility of columns and send the event and column form to parent component along with last checkbox event data */\r\n public getCheckboxStatus(event: Event, field: string): void {\r\n const isChecked = (event.target as HTMLInputElement).checked;\r\n const columnIndex = this.tableGridState.findIndex(item => item.key === field);\r\n\r\n if (columnIndex > -1) {\r\n this.tableGridState[columnIndex] = {\r\n ...this.tableGridState[columnIndex],\r\n visible: isChecked\r\n };\r\n }\r\n\r\n if (this.gridAPI) {\r\n this.gridAPI.api.setColumnsVisible([field], isChecked);\r\n this.gridAPI.api.autoSizeColumns([field]);\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n\r\n /** Create form group for column tools menu */\r\n private createColumnsListForm(): void {\r\n if (!this.columnToolVisible) return;\r\n if (!this.tableConfiguration.tablename) {\r\n throw new Error('Table name is required for columns tools list');\r\n }\r\n\r\n const controls: any = {};\r\n if (this.tableConfiguration?.columnDefs) {\r\n this.tableConfiguration.columnDefs.forEach(col => {\r\n col.filter = this.getAppliedFilter(col.filter);\r\n });\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n controls[col.key] = [col.visible === null || col.visible === undefined ? true : col.visible];\r\n });\r\n }\r\n\r\n if (Object.entries(controls).length > 0) {\r\n this.columnsListselectionForm = this.formBuilder.group(controls);\r\n }\r\n }\r\n\r\n private getAppliedFilter(filterType: FilterType | undefined): any {\r\n if (!filterType) return undefined;\r\n\r\n // Ensure it's a valid FilterType\r\n if (Object.values(FilterType).includes(filterType)) {\r\n // Check if a custom component exists for this filterType\r\n const customComponent = TABLE_GRID_FILTER_COMPONENTS[filterType as FilterType];\r\n return customComponent ?? AgGridFilters[filterType];\r\n }\r\n\r\n return filterType;\r\n }\r\n\r\n /** On resizing columns, update the tableGridState */\r\n public onColumnResized(event: ColumnResizedEvent | any): void {\r\n if (event.finished && event.column) {\r\n const columnId = event.column!.colId;\r\n const columnWidth = event.column!.actualWidth;\r\n const columnVisible = event.column!.visible;\r\n\r\n const column = this.tableGridState.find(item => item.key === columnId);\r\n\r\n if (column) {\r\n column.width = columnWidth;\r\n column.visible = columnVisible;\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** On moving columns, update the tableGridState */\r\n public onColumnMoved(event: ColumnMovedEvent): void {\r\n if (event.finished) {\r\n const { column, toIndex } = event;\r\n\r\n if (!column || toIndex === undefined || toIndex === null) {\r\n return;\r\n }\r\n\r\n const movedColId = column.getColId();\r\n const currentIndex = this.tableGridState.findIndex((col: any) => col.key === movedColId);\r\n\r\n if (currentIndex > -1) {\r\n const [movedColumn] = this.tableGridState.splice(currentIndex, 1);\r\n this.tableGridState.splice(toIndex, 0, movedColumn);\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n public onSortChanged(event: SortChangedEvent): void {\r\n if (event.columns) {\r\n event.columns.forEach((col: any) => {\r\n const column = this.tableGridState.find(item => item.key === col.colId);\r\n if (column) {\r\n column.sort = col.sort || null;\r\n }\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** Emit event when pagination is changed */\r\n public onPaginationChanged(event: PaginationChangedEvent): void {\r\n this.pageChange.emit(event);\r\n }\r\n\r\n /** Emit event when first data is rendered */\r\n public onFirstDataRendered(event: FirstDataRenderedEvent) {\r\n event.api.paginationGoToPage(this.initialPageNumber);\r\n }\r\n\r\n /** Emit event to update table preference */\r\n public updatetablePreference(): void {\r\n this.columnStateEvent.emit({\r\n currentEvent: {},\r\n currentTableState: this.tableGridState\r\n });\r\n }\r\n\r\n /** Reset table preference to default state */\r\n public resetTablePreference(): void {\r\n if (!this.tableConfiguration.tablename) {\r\n throw new Error('Table name is required for columns tools list');\r\n }\r\n\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: this.tableConfiguration.tablename,\r\n maint_action: 'D'\r\n };\r\n\r\n this.jsonrpcService.postJsonRpcRequest(JSONRPCMethods.updateTablePreference, params).subscribe({\r\n next: (response: IAPIResponse<any>) => {\r\n if (response.result) {\r\n this.tableGridState = [];\r\n if (response.result.fields_to_display && response.result.fields_to_display.length > 0) {\r\n this.tableConfiguration.initialState = response.result.fields_to_display;\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = col.visible === null || col.visible === undefined ? true : col.visible;\r\n col.width = col.width;\r\n col.sort = null;\r\n this.tableGridState.push(col);\r\n this.columnsListselectionForm.controls[col.key].setValue(true);\r\n });\r\n\r\n if (this.gridAPI) {\r\n this.gridAPI.api.applyColumnState({\r\n state: this.tableGridState.map(item => ({\r\n colId: item.key!,\r\n hide: item.visible === null || item.visible === undefined ? false : !item.visible,\r\n width: item.width,\r\n sort: item.sort || null,\r\n flex: 1\r\n })),\r\n defaultState: { sort: null },\r\n applyOrder: true\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n } else {\r\n this.toastrService.success('Failed to reset table preference');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /** Reset table preference to default state */\r\n public resetTablePreferenceV2(): void {\r\n if (!this.tableConfiguration?.tablename) {\r\n throw new Error('Table name is required for column tools list');\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = false;\r\n delete col.width;\r\n delete col.sort;\r\n });\r\n\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: this.tableConfiguration.tablename,\r\n display_options: this.tableGridState\r\n };\r\n\r\n this.jsonrpcService.postJsonRpcRequest(JSONRPCMethods.updateTablePreference, params).subscribe({\r\n next: (response: IAPIResponse<any>) => {\r\n if (response?.result) {\r\n this.handleSuccessfulReset(response.result);\r\n } else {\r\n this.toastrService.error('Failed to reset table preference');\r\n }\r\n },\r\n error: () => {\r\n this.toastrService.error('An error occurred while resetting table preference');\r\n }\r\n });\r\n }\r\n\r\n /** Handle successful reset of table preference */\r\n private handleSuccessfulReset(result: any): void {\r\n this.tableGridState = [];\r\n\r\n const fieldsToDisplay = result.fields_to_display || [];\r\n if (fieldsToDisplay.length > 0) {\r\n this.tableConfiguration.initialState = fieldsToDisplay;\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = false;\r\n this.tableGridState.push(col);\r\n this.columnsListselectionForm.controls[col.key]?.setValue(false);\r\n });\r\n\r\n this.updateGridState();\r\n }\r\n\r\n /** Update grid state based on the current tableGridState */\r\n private updateGridState(): void {\r\n if (this.gridAPI) {\r\n const columnState: any = this.tableGridState.map(item => ({\r\n colId: item.key,\r\n hide: true,\r\n width: item?.width || this.configurationService.allConfigValues()?.tableGridConfig?.defaultMinWidth || 100,\r\n sort: item.sort || null,\r\n flex: 1\r\n }));\r\n\r\n this.gridAPI.api.applyColumnState({\r\n state: columnState,\r\n defaultState: { sort: null },\r\n applyOrder: true\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /* Emit event when filter is changed */\r\n public onFilterChanged(params: any) {\r\n const filterModel = params.api.getFilterModel();\r\n const filteredRows: any[] = [];\r\n params.api.forEachNodeAfterFilter((node: any) => {\r\n if (node.data) {\r\n filteredRows.push(node.data);\r\n }\r\n });\r\n const filterChangedParams: IFilterChangeEvent = {\r\n rows: filteredRows,\r\n column: params.columns,\r\n filters: filterModel\r\n };\r\n this.filterChanged.emit(filterChangedParams);\r\n }\r\n\r\n /** Emit event when a cell value is changed */\r\n public onCellValueChanged(event: CellValueChangedEvent): void {\r\n this.cellValueChanged.emit(event);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscribeUntil$.next();\r\n this.subscribeUntil$.complete();\r\n }\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-12 d-md-flex\">\r\n <div class=\"table-list-wrapper flex-fill\">\r\n <!-- style=\"width: 100%; height: 567px\" -->\r\n <ag-grid-angular\r\n style=\"width: 100%\"\r\n [rowData]=\"tableConfiguration.rows\"\r\n [columnDefs]=\"tableConfiguration.columnDefs\"\r\n [defaultColDef]=\"tableConfiguration.defaultColDef\"\r\n [rowSelection]=\"tableConfiguration.rowSelectionOption\"\r\n [pagination]=\"tableConfiguration.pagination.enabled\"\r\n [paginationPageSize]=\"tableConfiguration.pagination.paginationPageSize\"\r\n [paginationPageSizeSelector]=\"tableConfiguration.pagination.paginationPageSizeSelector\"\r\n [class]=\"[tableConfiguration.tableClasses, tableConfiguration.tableTheme]\"\r\n [selectionColumnDef]=\"tableConfiguration.selectionColumnDef\"\r\n (gridReady)=\"onGridReady($event)\"\r\n (rowSelected)=\"onRowSelected($event)\"\r\n (rowClicked)=\"onRowClicked($event)\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n (columnMoved)=\"onColumnMoved($event)\"\r\n (sortChanged)=\"onSortChanged($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (cellValueChanged)=\"onCellValueChanged($event)\"\r\n (selectionChanged)=\"onRowSelectionChanged($event)\" \r\n [masterDetail]=\"tableConfiguration.masterDetail\"\r\n [detailCellRendererParams]=\"tableConfiguration.detailCellRendererParams\"\r\n [detailCellRenderer]=\"tableConfiguration.detailCellRenderer\"\r\n [enableCellTextSelection]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n [ensureDomOrder]=\"true\"\r\n [tooltipShowDelay]=\"tableConfiguration.tooltipShowDelay\" />\r\n </div>\r\n\r\n @if (columnToolVisible && columnsListselectionForm) {\r\n <div class=\"columns-list ms-3 p-3 d-md-flex flex-column h-100 d-none border border-1 rounded hide columns-tool\" [id]=\"tableConfiguration.tablename\">\r\n <div class=\"d-flex justify-content-between align-items-center mb-3 gap-2 columns-heading\">\r\n <span\r\n class=\"cursor-pointer text-primary\"\r\n tooltipPlacement=\"top\"\r\n cTooltip=\"Column Preference\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\">\r\n <svg cIcon name=\"cilColumns\" size=\"xl\"></svg>\r\n </span>\r\n\r\n <span class=\"cursor-pointer text-primary\" tooltipPlacement=\"top\" cTooltip=\"Auto Resize Columns\" (click)=\"autoSizeAll()\">\r\n <svg cIcon name=\"cilResizeWidth\" size=\"xl\"></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <c-offcanvas placement=\"end\" [id]=\"tableConfiguration.tablename + 'config-columns'\" width=\"550\">\r\n <c-offcanvas-header>\r\n <h5 cOffcanvasTitle>Table Column Preference</h5>\r\n <button\r\n cButtonClose\r\n size=\"sm\"\r\n class=\"text-reset ms-auto\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\"\r\n aria-label=\"Close\"></button>\r\n </c-offcanvas-header>\r\n <c-offcanvas-body>\r\n <div class=\"columns-wrapper mb-2\" [formGroup]=\"columnsListselectionForm\">\r\n @for (item of this.tableGridState; track $index) {\r\n <div class=\"checkbox-item px-1\">\r\n <c-form-check>\r\n <input\r\n (change)=\"getCheckboxStatus($event, item.key)\"\r\n [checked]=\"columnsListselectionForm.get(item.key)?.value\"\r\n cFormCheckInput\r\n [id]=\"'cb_' + item.key\"\r\n type=\"checkbox\"\r\n [formControl]=\"columnsListselectionForm.controls[item.key]\" />\r\n <label class=\"truncate-preference-label\" cFormCheckLabel [for]=\"'cb_' + item.key\" [title]=\"item?.headerName || item?.label\">\r\n {{ item?.headerName || item?.label }}</label\r\n >\r\n </c-form-check>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"align d-flex gap-3 justify-content-end\">\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableRemovecolumn\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreferenceV2()\">\r\n Clear\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableResetPreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreference()\">\r\n Reset\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableUpdatePreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"updatetablePreference()\">\r\n Update\r\n </button>\r\n </div>\r\n </c-offcanvas-body>\r\n </c-offcanvas>\r\n }\r\n </div>\r\n</div>\r\n","import { TableGridComponent } from './table-grid.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AgGridModule } from '@ag-grid-community/angular';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ModuleRegistry, _EditCoreModule } from '@ag-grid-community/core';\nimport { CsvExportModule } from '@ag-grid-community/csv-export';\nimport { ButtonModule, FormModule, OffcanvasModule, TooltipModule } from '@coreui/angular-pro';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconModule } from '@coreui/icons-angular';\n\nModuleRegistry.registerModules([ClientSideRowModelModule, CsvExportModule, _EditCoreModule]);\n\n@NgModule({\n declarations: [TableGridComponent],\n imports: [CommonModule, AgGridModule, FormModule, ReactiveFormsModule, ButtonModule, OffcanvasModule, TooltipModule, IconModule],\n exports: [TableGridComponent]\n})\nexport class TableGridModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n AgPublicEventType,\r\n CellValueChangedEvent,\r\n ColDef,\r\n GridApi,\r\n GridOptions,\r\n GridReadyEvent,\r\n ICellRendererParams,\r\n PaginationChangedEvent,\r\n SelectionColumnDef\r\n} from '@ag-grid-community/core';\r\nimport { inject } from '@angular/core';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\n\r\nexport class ITableGridConfiguration {\r\n initialState!: ITableGridState[];\r\n columnDefs: ColDef[] = [];\r\n rows: any;\r\n defaultColDef: ColDef;\r\n rowSelectionOption: IRowSelectionOptions;\r\n pagination: ITableGridPagination;\r\n themeClass: string;\r\n tableTheme: string;\r\n tablename: string;\r\n selectionColumnDef?: SelectionColumnDef;\r\n tablePreference: { disableRemovecolumn?: boolean; disableResetPreference?: boolean; disableUpdatePreference?: boolean };\r\n detailCellRendererParams?: any;\r\n detailCellRenderer?: any;\r\n frameworkComponents?: { [key: string]: any };\r\n tooltipShowDelay: number;\r\n masterDetail: boolean;\r\n tableClasses: string[] = ['default-ag-layout'];\r\n defaultGridOptions?: GridOptions;\r\n\r\n constructor() {\r\n this.pagination = new ITableGridPagination();\r\n this.tablename = '';\r\n this.tableTheme = '';\r\n this.defaultColDef = {\r\n filter: 'agTextColumnFilter',\r\n floatingFilter: false\r\n };\r\n\r\n this.themeClass = 'ag-theme-quartz';\r\n this.rowSelectionOption = {\r\n enableClickSelection: true,\r\n mode: 'singleRow',\r\n checkboxes: false\r\n };\r\n this.masterDetail = false;\r\n this.tablePreference = { disableRemovecolumn: false, disableResetPreference: false, disableUpdatePreference: false };\r\n this.tooltipShowDelay = 100;\r\n }\r\n}\r\n\r\nexport class ITableGridPagination {\r\n private configurationService = inject(ConfigurationServiceLib);\r\n\r\n enabled: boolean = true;\r\n paginationPageSize = this.configurationService.allConfigValues()?.tableGridConfig?.defaultPageSize || 20;\r\n paginationPageSizeSelector = this.configurationService.allConfigValues()?.tableGridConfig?.defaultPageSizeSelector || false;\r\n}\r\n\r\nexport interface IRowSelectionOptions {\r\n enableClickSelection?: boolean | 'enableDeselection' | 'enableSelection';\r\n mode: string;\r\n checkboxes: boolean;\r\n headerCheckbox?: boolean;\r\n}\r\n\r\nexport interface IColumnStateEvent {\r\n currentEvent: ITableGridState;\r\n currentTableState: ITableGridState[];\r\n}\r\n\r\nexport interface ITableGridState {\r\n key?: string;\r\n width?: number;\r\n visible?: boolean;\r\n sort?: 'asc' | 'desc' | null;\r\n label?: string;\r\n}\r\n\r\nexport interface IFilterChangeEvent {\r\n rows: any[];\r\n column: any[];\r\n filters: any;\r\n}\r\n\r\nexport interface IGridReadyEvent extends GridReadyEvent {\r\n api: IGridApi;\r\n}\r\n\r\nexport interface ICellValueChangedEvent extends CellValueChangedEvent {\r\n data: CellValueChangedEvent['data'];\r\n colDef: CellValueChangedEvent['colDef'];\r\n}\r\nexport interface IColDef extends ColDef {}\r\n\r\nexport interface IPaginationChangedEvent extends PaginationChangedEvent {\r\n newPage: PaginationChangedEvent['newPage'];\r\n animate?: PaginationChangedEvent['animate'];\r\n keepRenderedRows?: PaginationChangedEvent['keepRenderedRows'];\r\n newData?: PaginationChangedEvent['newData'];\r\n newPageSize?: PaginationChangedEvent['newPageSize'];\r\n api: PaginationChangedEvent['api'];\r\n}\r\n\r\nexport interface PongrassICellRendererAngularComp extends ICellRendererAngularComp {}\r\n\r\nexport interface PongrassICellRendererParams extends ICellRendererParams {\r\n data: ICellRendererParams['data'];\r\n colDef: ICellRendererParams['colDef'];\r\n}\r\n\r\nexport interface IGridApi extends GridApi<any> {}\r\n\r\nexport type IAgPublicEventType = AgPublicEventType;\r\n\r\nexport type MaintAction = 'N' | 'D' | 'U';\r\n","import { Directive, ElementRef, Input, OnInit, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[wsBackgroundImage]',\r\n standalone: true\r\n})\r\nexport class BackgroundImageDirective implements OnInit {\r\n private el = inject(ElementRef);\r\n\r\n /**\r\n * Flag to enable random background selection\r\n * Defaults to false\r\n */\r\n @Input() random: boolean = false;\r\n\r\n /**\r\n * Path to the background image (string) or images (string[])\r\n */\r\n @Input() backgroundImage: string | string[] = '';\r\n\r\n ngOnInit(): void {\r\n this.setBackgroundImage();\r\n }\r\n\r\n private setBackgroundImage(): void {\r\n let imageUrl = '';\r\n\r\n if (typeof this.backgroundImage === 'string') {\r\n // Single image path\r\n imageUrl = this.backgroundImage;\r\n } else if (Array.isArray(this.backgroundImage) && this.backgroundImage.length > 0) {\r\n // Array of image paths\r\n if (this.random) {\r\n // Select a random image from the array\r\n const randomIndex = Math.floor(Math.random() * this.backgroundImage.length);\r\n imageUrl = this.backgroundImage[randomIndex];\r\n } else {\r\n // Use the first image in the array\r\n imageUrl = this.backgroundImage[0];\r\n }\r\n }\r\n\r\n if (imageUrl) {\r\n this.el.nativeElement.style.backgroundImage = `url('${imageUrl}')`;\r\n this.el.nativeElement.style.backgroundSize = 'cover';\r\n this.el.nativeElement.style.backgroundPosition = 'center';\r\n this.el.nativeElement.style.backgroundRepeat = 'no-repeat';\r\n this.el.nativeElement.style.minHeight = '100vh';\r\n this.el.nativeElement.style.width = '100%';\r\n this.el.nativeElement.style.margin = '0';\r\n this.el.nativeElement.style.display = 'block';\r\n }\r\n }\r\n}\r\n","export enum ExportToExcelNames {\r\n ProdStatusReport = 'Prod_Status_Report',\r\n NationalROPReport = 'National ROP Report',\r\n NationalInserts = 'National Inserts',\r\n ApprovedAdList = 'Approved Ad List',\r\n PageStatusReport = 'Page Status Report',\r\n}\r\n\r\nexport enum ExcelType {\r\n excelBlobType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n xlsxBookType = 'xlsx'\r\n}\r\n\r\n","import { inject, Injectable } from '@angular/core';\r\n\r\nimport { ConfigurationServiceLib } from './configuration.service';\r\n\r\nimport { IConfig } from '../interface/api-response.interface';\r\nimport { IExcelHeaders, IExportCellConfig, IPrintHeaders } from '../interface/exports.interface';\r\nimport { convertIsoToFormat } from '../helpers/dateTime.helpers';\r\nimport { ExcelType } from '../enums/export.enum';\r\n\r\nimport * as ExcelJS from 'exceljs';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n private readonly configurationServiceLib = inject(ConfigurationServiceLib);\r\n private readonly toastrService = inject(ToastrService);\r\n\r\n readonly allConfigValues: IConfig = this.configurationServiceLib.allConfigValues() || ({} as unknown as IConfig);\r\n\r\n constructor() {}\r\n\r\n public formatToTwoDecimalPlaces(value: any, decimalPlaces?: number): string {\r\n if (value !== undefined && value !== null) {\r\n const numValue = Number(value);\r\n\r\n if (!isNaN(numValue)) {\r\n return numValue.toFixed(decimalPlaces || 2);\r\n }\r\n }\r\n\r\n return value?.toString() || '';\r\n }\r\n\r\n // Truncate values to precision\r\n public truncateFloat(value: number | string, precision: number): string {\r\n const num = Number(value);\r\n if (isNaN(num)) return '';\r\n const factor = Math.pow(10, precision);\r\n const truncated = Math.trunc(num * factor) / factor;\r\n return truncated.toFixed(precision);\r\n }\r\n\r\n /**\r\n *\r\n * @param excelData Table data to export\r\n * @param columns Array of Column keys and label '{ keys: '_key', label: '_label' }'\r\n * @param excelFileName Name of the excel file 'Example FileName_export_1740978888354'\r\n * @param headers (Optional) Adds Extra headings on top of the columns\r\n * @param showTotalValueCols (Optional) Calculates and shows the total of all the values of that column\r\n * @param columnAlignment (Optional) Aligns the cell value (currently only to right side)\r\n */\r\n public async exportAsExcelFile(\r\n excelData: any[],\r\n columns: any[],\r\n excelFileName: string,\r\n headers?: IExcelHeaders[],\r\n showTotalValueCols?: string[],\r\n columnAlignment?: IExportCellConfig\r\n ): Promise<void> {\r\n // this.loaderService.show();\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(excelFileName);\r\n\r\n // const currentRow = 1;\r\n // if (headers) {\r\n // headers.forEach((header: IExcelHeaders) => {\r\n // worksheet.mergeCells(`A${currentRow}:K${currentRow}`);\r\n // worksheet.getCell(`A${currentRow}`).value = header.heading;\r\n // worksheet.getCell(`A${currentRow}`).alignment = { horizontal: header.alignment, wrapText: true };\r\n // worksheet.getCell(`A${currentRow}`).font = { bold: header.bold, size: header.fontSize || 14 };\r\n // currentRow++;\r\n // });\r\n // worksheet.addRow({});\r\n // }\r\n\r\n const columnLabels = columns.map(col => col.label);\r\n const columnKeys = columns.map(col => col.key);\r\n const headerRow = worksheet.addRow(columnLabels);\r\n headerRow.eachCell(cell => {\r\n cell.font = { bold: true, size: 12 };\r\n });\r\n\r\n // Prepare worksheet data and add it to the worksheet\r\n const worksheetData = this.prepareWorksheetData(excelData, columns);\r\n worksheetData.forEach(dataRow => {\r\n const rowInstance = worksheet.addRow(Object.values(dataRow));\r\n\r\n // Align specific columns based on columnAlignment parameter\r\n if (columnAlignment?.align === 'end' && columnAlignment.headers.length > 0) {\r\n rowInstance.eachCell((cell, colNumber) => {\r\n const columnKey = columnKeys[colNumber - 1]; // Match index with headers\r\n if (columnAlignment.headers.includes(columnKey)) {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Calculate total for specified columns\r\n if (showTotalValueCols && showTotalValueCols.length > 0) {\r\n const totalRow: any = {};\r\n\r\n columns.forEach(col => {\r\n if (showTotalValueCols.includes(col.key)) {\r\n totalRow[col.label] = excelData.reduce((sum, row) => sum + (Number(row[col.key]) || 0), 0);\r\n } else {\r\n totalRow[col.label] = ''; // Empty for non-total columns\r\n }\r\n });\r\n\r\n const totalRowInstance = worksheet.addRow(Object.values(totalRow));\r\n totalRowInstance.eachCell((cell, colNumber) => {\r\n cell.font = { bold: true, color: { argb: '000' }, size: 12 };\r\n cell.alignment = { horizontal: 'left' };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFF00' } };\r\n cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };\r\n\r\n // Apply right alignment for specified total columns\r\n const columnKey = columnKeys[colNumber - 1];\r\n if (columnAlignment?.headers.includes(columnKey)) {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n });\r\n }\r\n\r\n // Set column widths\r\n columns.forEach((col, index) => {\r\n worksheet.getColumn(index + 1).width = 15;\r\n });\r\n\r\n // Generate Excel file and save\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n this.saveAsExcelFile(buffer, excelFileName);\r\n }\r\n\r\n /** Prepare Data for Excel Export*/\r\n private prepareWorksheetData(data: any[], columns: any[]): any[] {\r\n const rows = data.map(row => {\r\n const formattedRow: any = {};\r\n columns.forEach(col => {\r\n formattedRow[col.label] = row[col.key];\r\n });\r\n return formattedRow;\r\n });\r\n\r\n return [...rows];\r\n }\r\n\r\n /** Save Buffer File */\r\n private saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], { type: ExcelType.excelBlobType });\r\n const url = window.URL.createObjectURL(data);\r\n\r\n const link = document.createElement('a');\r\n link.href = url;\r\n\r\n const unique = Math.random().toString(36).substring(2, 8).toUpperCase();\r\n link.download = `${fileName}_${convertIsoToFormat(new Date())}_${unique}.${ExcelType.xlsxBookType}`;\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n setTimeout(() => {\r\n // this.loaderService.hide();\r\n this.toastrService.success(`${link.download} file downloaded successfully`, 'Success');\r\n }, 500);\r\n }\r\n\r\n /** Print Page Status Report */\r\n public printHTMLTable(columns: any[], data: any[], headers?: IExcelHeaders[], showTotalValueCols?: string[]): void {\r\n let headersAndHeadings = '';\r\n if (headers) {\r\n headersAndHeadings = this.generateHeaderHTML(headers);\r\n }\r\n\r\n const headerHTML = `<tr>${columns\r\n .map(col => `<th style=\"border: 1px solid #ddd; padding: 8px; background-color: #f2f2f2;\">${col.label}</th>`)\r\n .join('')}</tr>`;\r\n\r\n const bodyHTML = data\r\n .map((row, index) => {\r\n const rowStyle = index % 2 === 0 ? 'background-color: #f9f9f9;' : 'background-color: #e9ecef;';\r\n const rowHTML = columns\r\n .map(col => {\r\n const cellBackground = col.key === 'page_status_name' ? `background-color: ${row?.html_color || ''};` : '';\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; ${cellBackground}}\">${row[col.key] !== null ? row[col.key] : ''}</td>`;\r\n })\r\n .join('');\r\n\r\n return `<tr style=\"${rowStyle}\">${rowHTML}</tr>`;\r\n })\r\n .join('');\r\n\r\n // Generate Footer Row with Totals\r\n let footerHTML = '';\r\n if (showTotalValueCols && showTotalValueCols.length > 0) {\r\n const totalRow = columns\r\n .map(col => {\r\n if (showTotalValueCols.includes(col.key)) {\r\n const total = data.reduce((sum, row) => sum + (Number(row[col.key]) || 0), 0);\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; background-color: yellow; font-weight: bold;\">${this.formatToTwoDecimalPlaces(total)}</td>`;\r\n }\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; background-color: yellow;\"></td>`; // Empty but styled\r\n })\r\n .join('');\r\n\r\n footerHTML = `<tr>${totalRow}</tr>`;\r\n }\r\n\r\n const tableHTML = `\r\n <table style=\"width: 100%; border-collapse: collapse;\">\r\n <thead>${headerHTML}</thead>\r\n <tbody>${bodyHTML}</tbody>\r\n <tfoot>${footerHTML}</tfoot>\r\n </table>\r\n `;\r\n\r\n // Create a new window for printing\r\n const printWindow = window.open('', '', 'width=800, height=600');\r\n if (printWindow) {\r\n printWindow.document.write(`\r\n <html>\r\n <head>\r\n <style>\r\n @media print {\r\n @page {\r\n size: landscape; \r\n }\r\n body {\r\n -webkit-print-color-adjust: exact; \r\n print-color-adjust: exact; \r\n }\r\n table { width: 100%; border-collapse: collapse; }\r\n th, td { border: 1px solid black; padding: 10px; }\r\n th { background-color: #f2f2f2; }\r\n p { margin: 0; padding: 0; }\r\n }\r\n </style>\r\n </head>\r\n <body>\r\n <title>Report</title>\r\n ${headersAndHeadings} \r\n ${tableHTML}\r\n <script type=\"text/javascript\">\r\n window.onload = function() {\r\n window.print();\r\n window.onafterprint = window.close();\r\n };\r\n </script>\r\n </body>\r\n </html>\r\n `);\r\n printWindow.document.close();\r\n printWindow.focus();\r\n }\r\n }\r\n\r\n // Function to generate header HTML from headers array\r\n private generateHeaderHTML(headers: IPrintHeaders[]): string {\r\n return headers\r\n .map(header => {\r\n let style = '';\r\n if (header.alignment) {\r\n style += `text-align: ${header.alignment};`;\r\n }\r\n if (header.bold) {\r\n style += 'font-weight: bold;';\r\n }\r\n if (header.fontSize) {\r\n style += `font-size: ${header.fontSize}px;`;\r\n }\r\n if (header.marginBottom) {\r\n style += `margin-bottom: ${header.marginBottom}px;`;\r\n }\r\n if (header.marginTop) {\r\n style += `margin-bottom: ${header.marginTop}px;`;\r\n }\r\n\r\n return `<p style=\"${style}\">${header.heading}</p>`;\r\n })\r\n .join('');\r\n }\r\n}\r\n","export interface ILoginConfig {\r\n /** Heading of Application (e.g., Maintainance Portal) */\r\n title: string;\r\n\r\n /** URL of the logo shown on login screen */\r\n logoUrl: string;\r\n\r\n /** Placeholder text for username/email input */\r\n usernamePlaceholder: string;\r\n\r\n /** Placeholder text for password input */\r\n passwordPlaceholder: string;\r\n\r\n /** Text displayed on the login submit button */\r\n submitButtonText: string;\r\n\r\n /** Background configuration */\r\n backgroundDirective: {\r\n /** Array of background image URLs */\r\n backgroundImages: string[];\r\n\r\n /** If true → pick a random image on each load */\r\n random: boolean;\r\n };\r\n\r\n //** Version info */\r\n version?: {\r\n currentVersion: string;\r\n brandName: string;\r\n copyrightYear: string;\r\n };\r\n}\r\n\r\nexport enum ILOGIN_ACTION {\r\n SUBMIT = 'submit',\r\n BACK_TO_LOGIN = 'backToLogin'\r\n}\r\n","import { Component, output, input, signal, inject, Renderer2, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { ILOGIN_ACTION, ILoginConfig } from '../../interface/login.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-login',\r\n templateUrl: './login.component.html',\r\n styleUrl: './login.component.scss',\r\n standalone: false\r\n})\r\nexport class LoginComponent implements OnInit {\r\n readonly configService = inject(ConfigurationServiceLib);\r\n private readonly rendererService = inject(Renderer2);\r\n private readonly formBuilder = inject(FormBuilder);\r\n\r\n public config = input.required<ILoginConfig>({});\r\n public showInactivityLogoutMessage = input<boolean>(false);\r\n\r\n public action = output<{ type: string; data?: any }>();\r\n\r\n public isFormSubmitted = signal<boolean>(false);\r\n\r\n loginForm!: FormGroup;\r\n\r\n public contactSupportValue: string;\r\n public forgetPasswordValue: string;\r\n\r\n constructor() {\r\n this.contactSupportValue = '';\r\n this.forgetPasswordValue = '';\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.config()) {\r\n throw new Error('Config is required');\r\n } else if (!this.config().title || !this.config().logoUrl) {\r\n throw new Error('Title and logo URL are required on the LoginForm Card');\r\n }\r\n\r\n this.initializeForm();\r\n this.initializeInitialValues();\r\n\r\n const lastUserName = localStorage.getItem(BrowserConstantsEnum.lastUserName);\r\n if (lastUserName) {\r\n this.loginForm.controls['uid'].setValue(lastUserName);\r\n }\r\n }\r\n\r\n private initializeForm(): void {\r\n this.loginForm = this.formBuilder.group({\r\n uid: ['', [Validators.required]],\r\n pwd: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n onSubmit(): void {\r\n this.isFormSubmitted.set(true);\r\n this.action.emit({ type: ILOGIN_ACTION.SUBMIT, data: this.loginForm });\r\n }\r\n\r\n private initializeInitialValues(): void {\r\n if (this.configService.allConfigValues() && this.configService.allConfigValues()?.contactSupport) {\r\n if (this.configService.allConfigValues()?.contactSupport?.startsWith('http')) {\r\n this.contactSupportValue = this.configService.allConfigValues()?.contactSupport || '';\r\n this.rendererService.setAttribute(document.getElementById('contact-us'), 'target', '_blank');\r\n } else {\r\n this.contactSupportValue = `mailto:${this.configService.allConfigValues()?.contactSupport}`;\r\n }\r\n }\r\n\r\n // if (this.configService.allConfigValues()?.forgetPassword.startsWith('http')) {\r\n // this.forgetPasswordValue = this.configService.allConfigValues()?.forgetPassword;\r\n // this.rendererService.setAttribute(document.getElementById('forget-password'), 'target', '_blank');\r\n // } else {\r\n // this.forgetPasswordValue = `mailto:${this.configService.allConfigValues()?.forgetPassword}`;\r\n // }\r\n }\r\n}\r\n","<div\r\n class=\"container-fluid login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 login-fields glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img [src]=\"config()?.logoUrl\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4 \">{{ config()?.title }}</p>\r\n </div>\r\n <div class=\"mb-4 d-flex align-items-center justify-content-center flex-column\">\r\n @if (showInactivityLogoutMessage()) {\r\n <c-alert ngClass=\"mb-4\" color=\"danger\" class=\"text-center\">You have been logged out due to inactivity!</c-alert>\r\n }\r\n <form cForm [formGroup]=\"loginForm\" class=\"needs-validation max-w-300\" [validated]=\"isFormSubmitted()\" noValidate (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"uid\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-password-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\" />\r\n </svg>\r\n </span>\r\n <input \r\n cFormControl\r\n id=\"txt-auth-password\"\r\n type=\"password\"\r\n sizing=\"lg\"\r\n formControlName=\"pwd\"\r\n required\r\n autocomplete=\"current-password\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.passwordPlaceholder\" />\r\n\r\n <c-form-feedback [valid]=\"false\">Password is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\">\r\n {{ config()?.submitButtonText }}\r\n </button>\r\n </div>\r\n @if (config()?.version) {\r\n @if (config()?.version?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + config()?.version?.currentVersion || '' }}</div>\r\n }\r\n @if (config()?.version?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '©' + config()?.version?.copyrightYear + ' ' + config()?.version?.brandName }}\r\n </div>\r\n }\r\n } @else {\r\n @if (configService.allConfigValues()?.project?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + configService.allConfigValues()?.project?.currentVersion || '' }}</div>\r\n }\r\n @if (configService.allConfigValues()?.project?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '©' + configService.allConfigValues()?.project?.copyrightYear + ' ' + configService.allConfigValues()?.project?.brandName }}\r\n </div>\r\n }\r\n }\r\n </form>\r\n\r\n @if (contactSupportValue) {\r\n <div class=\"mt-4 fs-5\">\r\n Don't have an account?\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"contactSupportValue\" class=\"text-decoration-none primary-text\" id=\"contact-us\">Contact Support</a>\r\n </span>\r\n </div>\r\n }\r\n\r\n <!-- <div class=\"mt-4 fs-5 text-center\">\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"forgetPasswordValue\" class=\"text-decoration-none primary-text\" id=\"forget-password\">Forget Password?</a>\r\n <a class=\"text-decoration-none text-white\" id=\"forget-password\" (click)=\"goToForgetPassword()\">Forget Password?</a>\r\n </span>\r\n </div> -->\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AlertModule, ButtonModule, FormModule, FormPasswordDirective, SpinnerModule } from '@coreui/angular-pro';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\nimport { LoginComponent } from './login.component';\r\nimport { BackgroundImageDirective } from '../../directives/background-image.directive';\r\n\r\n@NgModule({\r\n declarations: [LoginComponent],\r\n imports: [\r\n CommonModule,\r\n BackgroundImageDirective,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FormModule,\r\n ButtonModule,\r\n SpinnerModule,\r\n FormPasswordDirective,\r\n IconModule,\r\n AlertModule\r\n ],\r\n exports: [LoginComponent]\r\n})\r\nexport class LoginModule {}\r\n","import { Type } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface IDialogButton {\r\n label: string;\r\n type?: 'submit' | 'close' | 'custom';\r\n color?: string;\r\n variant?: string;\r\n class?: string;\r\n onClick?: (context?: any) => void;\r\n}\r\n\r\nexport interface IDialogConfig {\r\n title?: string;\r\n message?: string;\r\n size?: 'sm' | 'md' | 'lg' | 'xl';\r\n data?: any;\r\n buttons?: IDialogButton[];\r\n scrollable?: boolean;\r\n customClose?: boolean;\r\n alignment?: 'center' | 'top';\r\n component?: Type<any>;\r\n}\r\n\r\nexport class DialogRef<T = any> {\r\n private _result = new Subject<T>();\r\n\r\n /** Observable that emits when any button is clicked in the wrapper */\r\n public buttonClick$ = new Subject<IDialogButton>();\r\n\r\n /** Observable that emits when the dialog is closed */\r\n afterClosed(): Observable<T> {\r\n return this._result.asObservable();\r\n }\r\n\r\n constructor(public closeFn?: (result?: T) => void) { }\r\n\r\n setCloseFn(fn: (result?: T) => void) {\r\n this.closeFn = fn;\r\n }\r\n\r\n close(result?: T) {\r\n if (this.closeFn) {\r\n this.closeFn(result);\r\n }\r\n if (!this._result.closed) {\r\n this._result.next(result as T);\r\n this._result.complete();\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n ComponentRef,\r\n inject,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n NgZone,\r\n OnDestroy,\r\n ElementRef,\r\n signal,\r\n effect,\r\n untracked,\r\n Injector\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonModule, ModalModule } from '@coreui/angular-pro';\r\nimport { DialogRef, IDialogButton } from './dialog.models';\r\n\r\n@Component({\r\n selector: 'prg-ws-dynamic-modal-wrapper',\r\n standalone: true,\r\n imports: [CommonModule, ModalModule, ButtonModule],\r\n template: `\r\n <c-modal\r\n #modalElement\r\n [visible]=\"visibleSignal()\"\r\n [size]=\"size\"\r\n [alignment]=\"alignment\"\r\n [scrollable]=\"scrollable\"\r\n backdrop=\"static\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n >\r\n <c-modal-header>\r\n <h5 cModalTitle>{{ title }}</h5>\r\n <button (click)=\"topClose()\" cButtonClose></button>\r\n </c-modal-header>\r\n <c-modal-body>\r\n @if (message) {\r\n <div [innerHTML]=\"message\" class=\"mb-3\"></div>\r\n }\r\n <ng-template #contentHost></ng-template>\r\n </c-modal-body>\r\n @if (buttons?.length) {\r\n <c-modal-footer>\r\n @for (btn of buttons; track btn) {\r\n <button\r\n cButton\r\n [color]=\"btn.color || 'primary'\"\r\n [variant]=\"btn.variant\"\r\n [className]=\"btn.class || ''\"\r\n (click)=\"onButtonClick(btn)\"\r\n >\r\n {{ btn.label }}\r\n </button>\r\n }\r\n </c-modal-footer>\r\n }\r\n </c-modal>\r\n `\r\n})\r\nexport class DynamicModalWrapperComponent implements AfterViewInit, OnDestroy {\r\n @Input() title: string = '';\r\n @Input() message: string = '';\r\n @Input() size: 'sm' | 'md' | 'lg' | 'xl' | undefined = 'lg';\r\n @Input() buttons: IDialogButton[] = [];\r\n @Input() scrollable: boolean = true;\r\n @Input() alignment: 'center' | 'top' = 'top';\r\n @Input() childInjector?: Injector;\r\n @Input() backdropIndex: number = 1;\r\n @Input() customClose: boolean = false;\r\n\r\n private _result: any;\r\n\r\n // New Signal-based inputs for child component\r\n private _childComponentType = signal<Type<any> | null>(null);\r\n @Input() set childComponentType(value: Type<any>) {\r\n this._childComponentType.set(value);\r\n }\r\n\r\n private _childComponentData = signal<any>(null);\r\n @Input() set childComponentData(value: any) {\r\n this._childComponentData.set(value);\r\n }\r\n\r\n @ViewChild('contentHost', { read: ViewContainerRef }) contentHost!: ViewContainerRef;\r\n @ViewChild('modalElement', { read: ElementRef }) modalElement!: ElementRef;\r\n\r\n visibleSignal = signal(false);\r\n componentRef!: ComponentRef<any>;\r\n closeCallback: (result?: any) => void = () => { };\r\n\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n private readonly zone = inject(NgZone);\r\n private readonly dialogRef = inject(DialogRef, { optional: true });\r\n private isDestroyed = false;\r\n private isViewInit = false;\r\n\r\n constructor() {\r\n // React to child component type changes\r\n effect(() => {\r\n const type = this._childComponentType();\r\n if (type && this.isViewInit) {\r\n untracked(() => this.loadComponent());\r\n }\r\n });\r\n\r\n // React to data changes\r\n effect(() => {\r\n const data = this._childComponentData();\r\n if (data && this.componentRef && this.isViewInit) {\r\n untracked(() => this.applyData(data));\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.isViewInit = true;\r\n\r\n // Load component immediately once view is ready\r\n this.loadComponent();\r\n\r\n // Small delay before showing modal to avoid CD/Signal race conditions\r\n this.zone.run(() => {\r\n setTimeout(() => {\r\n if (!this.isDestroyed) {\r\n this.visibleSignal.set(true);\r\n this.cdr.detectChanges();\r\n // Add backdrop class after modal is visible\r\n this.addBackdropClass();\r\n }\r\n }, 50);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.isDestroyed = true;\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n loadComponent() {\r\n if (!this._childComponentType() || !this.contentHost) return;\r\n\r\n this.contentHost.clear();\r\n this.componentRef = this.contentHost.createComponent(this._childComponentType()!, {\r\n injector: this.childInjector || this.contentHost.injector\r\n });\r\n\r\n const data = this._childComponentData();\r\n if (data) {\r\n this.applyData(data);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private applyData(data: any) {\r\n if (!this.componentRef) return;\r\n if (this.componentRef.instance.setData) {\r\n this.componentRef.instance.setData(data);\r\n } else {\r\n Object.assign(this.componentRef.instance, data);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onButtonClick(btn: IDialogButton) {\r\n // Notify the child component that a button was clicked\r\n if (this.dialogRef) {\r\n this.dialogRef.buttonClick$.next(btn);\r\n }\r\n\r\n if (btn.type === 'close') {\r\n if (!this.customClose) {\r\n this.close();\r\n }\r\n }\r\n\r\n if (btn.onClick) {\r\n btn.onClick(this.componentRef?.instance);\r\n }\r\n }\r\n\r\n topClose() {\r\n this.dialogRef?.buttonClick$.next({\r\n type: 'close',\r\n label: 'T-Close',\r\n });\r\n if (!this.customClose) {\r\n this.close();\r\n }\r\n }\r\n\r\n close(result?: any) {\r\n this._result = result;\r\n this.visibleSignal.set(false);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onVisibleChange(event: boolean) {\r\n if (this.visibleSignal() === event) return;\r\n this.visibleSignal.set(event);\r\n\r\n if (!event) {\r\n // Cleanup delay to prevent view[EFFECTS] error\r\n this.zone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n this.zone.run(() => {\r\n if (!this.isDestroyed) {\r\n this.closeCallback(this._result);\r\n }\r\n });\r\n }, 400);\r\n });\r\n }\r\n }\r\n\r\n private addBackdropClass() {\r\n // Wait a bit for the backdrop to be rendered by CoreUI\r\n this.zone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n // Set modal z-index\r\n if (this.modalElement) {\r\n const modalEl = this.modalElement.nativeElement as HTMLElement;\r\n const baseModalZIndex = 1055;\r\n const modalZIndex = baseModalZIndex + ((this.backdropIndex - 1) * 10);\r\n modalEl.style.setProperty('--cui-modal-zindex', modalZIndex.toString());\r\n }\r\n\r\n // Find all backdrops\r\n const backdrops = document.querySelectorAll('.modal-backdrop.show');\r\n if (backdrops.length > 0) {\r\n // Get the most recently added backdrop (last one)\r\n const latestBackdrop = backdrops[backdrops.length - 1] as HTMLElement;\r\n\r\n // Set the backdrop z-index dynamically\r\n const baseBackdropZIndex = 1050;\r\n const backdropZIndex = baseBackdropZIndex + ((this.backdropIndex - 1) * 10);\r\n latestBackdrop.style.zIndex = backdropZIndex.toString();\r\n }\r\n }, 100);\r\n });\r\n }\r\n}\r\n","import { ApplicationRef, ComponentRef, EnvironmentInjector, Injectable, Type, createComponent, inject, ViewContainerRef, Injector } from '@angular/core';\r\nimport { DynamicModalWrapperComponent } from './dynamic-modal-wrapper.component';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { DialogRef, IDialogConfig } from './dialog.models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PgDialogService {\r\n private appRef = inject(ApplicationRef);\r\n private injector = inject(EnvironmentInjector);\r\n private viewContainerRef!: ViewContainerRef;\r\n private openDialogs = new Set<DialogRef>();\r\n\r\n registerViewContainerRef(vcr: ViewContainerRef) {\r\n this.viewContainerRef = vcr;\r\n }\r\n\r\n add<T>(config: IDialogConfig): Observable<any> {\r\n const subject = new Subject<any>();\r\n const component = config.component || null as any;\r\n\r\n const dialogRef = this.open(component, config);\r\n\r\n // Inject result handling into buttons if they don't have onClick\r\n if (config.buttons) {\r\n config.buttons.forEach(btn => {\r\n const originalOnClick = btn.onClick;\r\n btn.onClick = (context) => {\r\n if (originalOnClick) {\r\n originalOnClick(context);\r\n }\r\n subject.next(btn.label); // Or we could pass btn itself\r\n if (btn.type !== 'submit') {\r\n dialogRef.close(btn.label);\r\n }\r\n };\r\n });\r\n }\r\n\r\n // Subscribe to afterClosed to finish the subject\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (!subject.closed) {\r\n subject.next(result || 'close');\r\n subject.complete();\r\n }\r\n });\r\n\r\n return subject.asObservable();\r\n }\r\n\r\n alert(message: string, title: string = 'Alert'): Observable<void> {\r\n const subject = new Subject<void>();\r\n this.add({\r\n title,\r\n message,\r\n size: 'md',\r\n alignment: 'center',\r\n buttons: [\r\n {\r\n label: 'OK',\r\n color: 'primary',\r\n onClick: () => {\r\n subject.next();\r\n subject.complete();\r\n }\r\n }\r\n ]\r\n });\r\n return subject.asObservable();\r\n }\r\n\r\n confirm(message: string, title: string = 'Confirm'): Observable<boolean> {\r\n const subject = new Subject<boolean>();\r\n this.add({\r\n title,\r\n message,\r\n alignment: 'center',\r\n size: 'md',\r\n buttons: [\r\n {\r\n label: 'Cancel',\r\n variant: 'outline',\r\n color: 'secondary',\r\n onClick: () => {\r\n subject.next(false);\r\n subject.complete();\r\n }\r\n },\r\n {\r\n label: 'Confirm',\r\n color: 'primary',\r\n onClick: () => {\r\n subject.next(true);\r\n subject.complete();\r\n }\r\n }\r\n ]\r\n });\r\n return subject.asObservable();\r\n }\r\n\r\n open<T>(component: Type<T>, config: IDialogConfig = {}) {\r\n if (!this.viewContainerRef) {\r\n console.error('PgDialogService: ViewContainerRef not registered. Please register it in AppComponent.');\r\n // Fallback (might fail with EFFECTS error but better than crashing immediately)\r\n return this.openManual(component, config);\r\n }\r\n\r\n const dialogRef = new DialogRef();\r\n\r\n const childInjector = Injector.create({\r\n providers: [{\r\n provide: DialogRef,\r\n useValue: dialogRef\r\n }],\r\n parent: this.injector\r\n });\r\n\r\n // Create the wrapper component using VCR\r\n const wrapperRef = this.viewContainerRef.createComponent(DynamicModalWrapperComponent, {\r\n injector: childInjector // Give the wrapper access to DialogRef too\r\n });\r\n\r\n // Now initialize the DialogRef with the actual wrapper instance\r\n dialogRef.setCloseFn((res) => wrapperRef.instance.close(res));\r\n\r\n wrapperRef.instance.childInjector = childInjector;\r\n this.configureWrapper(wrapperRef, component, config);\r\n\r\n // Handle close cleanup\r\n wrapperRef.instance.closeCallback = () => {\r\n this.removeDialog(dialogRef);\r\n wrapperRef.destroy();\r\n };\r\n\r\n this.openDialogs.add(dialogRef);\r\n return dialogRef;\r\n }\r\n\r\n // Fallback implementation (old manual way)\r\n private openManual<T>(component: Type<T>, config: IDialogConfig = {}) {\r\n const wrapperRef = createComponent(DynamicModalWrapperComponent, {\r\n environmentInjector: this.injector\r\n });\r\n\r\n const dialogRef = new DialogRef();\r\n const childInjector = Injector.create({\r\n providers: [{\r\n provide: DialogRef,\r\n useValue: dialogRef\r\n }],\r\n parent: this.injector\r\n });\r\n\r\n wrapperRef.instance.childInjector = childInjector;\r\n dialogRef.setCloseFn((res) => wrapperRef.instance.close(res));\r\n\r\n this.configureWrapper(wrapperRef, component, config);\r\n\r\n // Attach to the view\r\n this.appRef.attachView(wrapperRef.hostView);\r\n const domElem = (wrapperRef.hostView as any).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n // Trigger change detection to ensure inputs are applied\r\n wrapperRef.changeDetectorRef.detectChanges();\r\n\r\n // Handle close cleanup\r\n wrapperRef.instance.closeCallback = (result) => {\r\n this.removeDialog(dialogRef);\r\n this.appRef.detachView(wrapperRef.hostView);\r\n wrapperRef.destroy();\r\n domElem.remove();\r\n };\r\n\r\n this.openDialogs.add(dialogRef);\r\n return dialogRef;\r\n }\r\n\r\n private configureWrapper(wrapperRef: ComponentRef<DynamicModalWrapperComponent>, component: Type<any>, config: IDialogConfig) {\r\n wrapperRef.instance.title = config.title || '';\r\n wrapperRef.instance.message = config.message || '';\r\n wrapperRef.instance.size = config.size || 'lg';\r\n wrapperRef.instance.childComponentType = component;\r\n wrapperRef.instance.childComponentData = config.data;\r\n\r\n // Set backdrop index based on current dialog count (1-based index)\r\n wrapperRef.instance.backdropIndex = this.openDialogs.size + 1;\r\n\r\n if (config.buttons) {\r\n wrapperRef.instance.buttons = config.buttons;\r\n }\r\n if (config.scrollable !== undefined) {\r\n wrapperRef.instance.scrollable = config.scrollable;\r\n }\r\n if (config.alignment) {\r\n wrapperRef.instance.alignment = config.alignment;\r\n }\r\n if (config.customClose) {\r\n wrapperRef.instance.customClose = config.customClose;\r\n }\r\n }\r\n\r\n private removeDialog(dialogRef: DialogRef) {\r\n this.openDialogs.delete(dialogRef);\r\n }\r\n\r\n closeAll() {\r\n // Clone to array to safely iterate as items might be deleted during iteration\r\n const dialogs = Array.from(this.openDialogs);\r\n dialogs.forEach(dialog => dialog.close());\r\n this.openDialogs.clear();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/services/configuration.service';\r\n\r\nexport * from './lib/components/ag-grid-renderer/color-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/custom-select-filter.component';\r\nexport * from './lib/components/ag-grid-renderer/ag-date-range-filter.component';\r\nexport * from './lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component';\r\nexport * from './lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component';\r\nexport * from './lib/components/edition-list-grouped/edition-list-grouped.component';\r\nexport * from './lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component';\r\nexport * from './lib/components/page-status-cell-renderer/page-status-cell-renderer.component';\r\nexport * from './lib/components/status-select-cell-renderer/status-select-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/badge-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/icon-text-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/hyperlink-cell-renderer.component';\r\n\r\nexport * from './lib/components/generic-filter-model/generic-filter-modal.interface';\r\nexport * from './lib/components/generic-filter-model/generic-filter-model.component';\r\n\r\nexport * from './lib/modules/multi-form/multi-form.module';\r\nexport * from './lib/modules/multi-form/multi-form.interface';\r\nexport * from './lib/modules/multi-form/multi-form.component';\r\nexport * from './lib/modules/multi-form/date-time-picker/date-time-picker.component';\r\n\r\nexport * from './lib/modules/table-grid/table-grid.module';\r\nexport * from './lib/modules/table-grid/table-grid.component';\r\nexport * from './lib/modules/table-grid/table-grid';\r\n\r\n// Export directives\r\nexport * from './lib/directives/circular-focus.directive';\r\nexport * from './lib/directives/decimal-input.directive';\r\nexport * from './lib/directives/multi-select-styler.directive';\r\nexport * from './lib/directives/show-tooltip-if-truncated.directive';\r\nexport * from './lib/directives/background-image.directive';\r\n\r\n// Export utility functions\r\nexport * from './lib/services/utils.service';\r\nexport * from './lib/services/jsonrpc.service';\r\nexport * from './lib/enums/export.enum';\r\nexport * from './lib/interface/exports.interface';\r\nexport * from './lib/helpers/dateTime.helpers';\r\n\r\nexport * from './lib/modules/login/login.module';\r\nexport * from './lib/modules/login/login.component';\r\nexport * from './lib/interface/login.interface';\r\nexport * from './lib/modules/dialog/pg-dialog.service';\r\nexport * from './lib/modules/dialog/dialog.models';\r\nexport * from './lib/modules/dialog/dynamic-modal-wrapper.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i1.CircularFocusDirective","i4","i5","i6.DecimalInputDirective","i7.ShowTooltipIfTruncatedDirective","i9.EditionListGroupedComponent","i10.MultiSelectStylerDirective","i11.DateTimePickerComponent","i2.BackgroundImageDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pongrass-utils.mjs","sources":["../../../projects/utils/src/lib/services/configuration.service.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/color-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/custom-select-filter.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/ag-date-range-filter.component.ts","../../../projects/utils/src/lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component.ts","../../../projects/utils/src/lib/enums/browser-constants.enum.ts","../../../projects/utils/src/lib/enums/jsonrpc-methods.enum.ts","../../../projects/utils/src/lib/services/jsonrpc.service.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.ts","../../../projects/utils/src/lib/components/edition-list-grouped/edition-list-grouped.component.html","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.ts","../../../projects/utils/src/lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component.html","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.ts","../../../projects/utils/src/lib/components/page-status-cell-renderer/page-status-cell-renderer.component.html","../../../projects/utils/src/lib/components/status-select-cell-renderer/status-select-cell-renderer.component.ts","../../../projects/utils/src/lib/components/status-select-cell-renderer/status-select-cell-renderer.component.html","../../../projects/utils/src/lib/components/ag-grid-renderer/badge-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/icon-text-cell-renderer.component.ts","../../../projects/utils/src/lib/components/ag-grid-renderer/hyperlink-cell-renderer.component.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.interface.ts","../../../projects/utils/src/lib/constants/color.constants.ts","../../../projects/utils/src/lib/directives/circular-focus.directive.ts","../../../projects/utils/src/lib/directives/decimal-input.directive.ts","../../../projects/utils/src/lib/directives/show-tooltip-if-truncated.directive.ts","../../../projects/utils/src/lib/directives/multi-select-styler.directive.ts","../../../projects/utils/src/lib/helpers/dateTime.helpers.ts","../../../projects/utils/src/lib/modules/multi-form/date-time-picker/date-time-picker.component.ts","../../../projects/utils/src/lib/modules/multi-form/date-time-picker/date-time-picker.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.ts","../../../projects/utils/src/lib/modules/multi-form/multi-form.component.html","../../../projects/utils/src/lib/modules/multi-form/multi-form.module.ts","../../../projects/utils/src/lib/components/generic-filter-model/generic-filter-model.component.ts","../../../projects/utils/src/lib/components/generic-filter-model/generic-filter-model.component.html","../../../projects/utils/src/lib/enums/grid.enum.ts","../../../projects/utils/src/lib/constants/app.constanta.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.component.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.component.html","../../../projects/utils/src/lib/modules/table-grid/table-grid.module.ts","../../../projects/utils/src/lib/modules/table-grid/table-grid.ts","../../../projects/utils/src/lib/directives/background-image.directive.ts","../../../projects/utils/src/lib/enums/export.enum.ts","../../../projects/utils/src/lib/services/utils.service.ts","../../../projects/utils/src/lib/interface/login.interface.ts","../../../projects/utils/src/lib/modules/login/login.component.ts","../../../projects/utils/src/lib/modules/login/login.component.html","../../../projects/utils/src/lib/modules/login/login.module.ts","../../../projects/utils/src/lib/modules/dialog/dialog.models.ts","../../../projects/utils/src/lib/modules/dialog/dynamic-modal-wrapper.component.ts","../../../projects/utils/src/lib/modules/dialog/pg-dialog.service.ts","../../../projects/utils/src/lib/services/misc-api.service.ts","../../../projects/utils/src/lib/modules/forget-password/forget-password.component.ts","../../../projects/utils/src/lib/modules/forget-password/forget-password.component.html","../../../projects/utils/src/public-api.ts","../../../projects/utils/src/pongrass-utils.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { IConfig } from '../interface/api-response.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigurationServiceLib {\n public currentTablePreference: WritableSignal<any>;\n public allConfigValues: WritableSignal<IConfig | null>;\n\n public openFilterModal: WritableSignal<boolean>;\n public utilsAppliedTheme: WritableSignal<string>;\n\n constructor() {\n this.currentTablePreference = signal<any>({});\n this.allConfigValues = signal<IConfig | null>(null);\n\n this.openFilterModal = signal<boolean>(false);\n this.utilsAppliedTheme = signal<string>('');\n }\n\n /* Generate Unique ID as String */\n public generateUniqueId(): string {\n return `${Math.floor(Date.now() / 1000)}`;\n }\n\n public setTablePreference(tableName: string, preference: any): void {\n const allTablePreference = this.currentTablePreference();\n allTablePreference[tableName] = preference;\n this.currentTablePreference.set(allTablePreference);\n }\n}\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { IColorOption } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule],\r\n selector: 'prg-ws-color-cell-renderer',\r\n template: `\r\n <div class=\"cell-wrapper align-items-center d-inline-flex gap-2\">\r\n <span class=\"color-box\" [ngStyle]=\"{ 'background-color': colorCode }\"></span>\r\n <span class=\"text-truncate\">\r\n {{ params.value }}\r\n </span>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .color-box {\r\n height: 1.5rem;\r\n }\r\n .cell-wrapper {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.5rem;\r\n width: 100%;\r\n overflow: hidden; /* Required to enable truncation */\r\n }\r\n `\r\n ]\r\n})\r\nexport class ColorCellRendererComponent implements ICellRendererAngularComp {\r\n public params!: ICellRendererParams;\r\n public colorsList: IColorOption[] = [];\r\n public colorCode = '';\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.colorsList = params.colDef?.cellRendererParams?.colorsList ?? [];\r\n this.setColorCode(this.params?.value);\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n return true;\r\n }\r\n\r\n setColorCode(colorKey: string): void {\r\n if (this.colorsList && this.colorsList.length > 0 && colorKey) {\r\n const selectedColor = this.colorsList.find(color => color.color_name === colorKey);\r\n if (selectedColor) {\r\n this.colorCode = selectedColor.value as string;\r\n } else {\r\n this.colorCode = ''; // Default color if not found\r\n }\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ViewChild, ElementRef } from '@angular/core';\r\n\r\nimport { ButtonModule, FormModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n selector: 'prg-ws-custom-set-filter',\r\n standalone: true,\r\n imports: [FormsModule, FormModule, ButtonModule],\r\n template: `\r\n <div class=\"select-filter-container\">\r\n <input type=\"text\" #searchInput cFormControl [(ngModel)]=\"searchText\" (input)=\"onSearchChange()\" placeholder=\"Search...\" class=\"search-box\" />\r\n @if (filteredValues.length > 0) {\r\n <div>\r\n <label class=\"checkbox-item\">\r\n <input cFormCheckInput [indeterminate]=\"isIndeterminate\" type=\"checkbox\" [checked]=\"isAllSelected()\" (change)=\"onSelectAllChanged($event)\" />\r\n (Select All)\r\n </label>\r\n </div>\r\n } @else {\r\n <div>\r\n <label> No matches </label>\r\n </div>\r\n }\r\n\r\n <div class=\"checkbox-list\">\r\n @for (value of filteredValues; track value) {\r\n <label [attr.aria-label]=\"'Select ' + value\" class=\"checkbox-item\">\r\n <input cFormCheckInput type=\"checkbox\" [value]=\"value\" [checked]=\"isValueSelected(value)\" (change)=\"onValueChanged(value, $event)\" />\r\n {{ value }}\r\n </label>\r\n }\r\n </div>\r\n <div class=\"filter-actions\">\r\n <button cButton color=\"primary\" size=\"sm\" variant=\"outline\" (click)=\"onReset()\">Reset</button>\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .select-filter-container {\r\n padding: 10px;\r\n label {\r\n display: flex;\r\n gap: 5px;\r\n }\r\n }\r\n .search-box {\r\n width: 100%;\r\n margin-bottom: 5px;\r\n padding: 4px;\r\n }\r\n\r\n .checkbox-list {\r\n max-height: 200px;\r\n overflow-y: auto;\r\n }\r\n .checkbox-item {\r\n padding: 4px 6px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n }\r\n .checkbox-item:hover {\r\n background-color: #f0f0f0;\r\n }\r\n .filter-actions {\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-top: 8px;\r\n border-top: 1px solid #e0e0e0;\r\n padding-top: 8px;\r\n }\r\n `\r\n ]\r\n})\r\nexport class CustomSelectFilterComponent implements IFilterAngularComp {\r\n params!: IFilterParams;\r\n uniqueValues: string[] = [];\r\n filteredValues: string[] = [];\r\n selectedValues: Set<string> = new Set();\r\n searchText: string = '';\r\n isIndeterminate: boolean = false;\r\n\r\n agInit(params: IFilterParams): void {\r\n this.params = params;\r\n this.uniqueValues = this.getUniqueValues();\r\n this.filteredValues = [...this.uniqueValues];\r\n this.uniqueValues.forEach(val => this.selectedValues.add(val));\r\n }\r\n\r\n @ViewChild('searchInput') searchInputRef!: ElementRef<HTMLInputElement>;\r\n\r\n afterGuiAttached(): void {\r\n this.searchInputRef?.nativeElement?.focus();\r\n }\r\n\r\n getUniqueValues(): string[] {\r\n const values = new Set<string>();\r\n this.params.api.forEachNode(node => {\r\n const value = node.data[this.params.colDef.field!];\r\n const formattedValue = this.getFormattedValue(node, value);\r\n values.add(formattedValue);\r\n });\r\n return Array.from(values).sort((a, b) => {\r\n if (a === 'BLANK') return -1;\r\n if (b === 'BLANK') return 1;\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n }\r\n\r\n getFormattedValue(node: any, value: any): string {\r\n const formatter = this.params.colDef.valueFormatter;\r\n let formattedValue = value;\r\n if (formatter && typeof formatter === 'function') {\r\n formattedValue = formatter({\r\n value,\r\n data: node.data,\r\n node,\r\n colDef: this.params.colDef,\r\n column: this.params.column,\r\n api: this.params.api,\r\n context: (this.params as any).context\r\n });\r\n }\r\n if (formattedValue === null || formattedValue === undefined || formattedValue === '') {\r\n return 'BLANK';\r\n }\r\n return String(formattedValue);\r\n }\r\n\r\n isValueSelected(value: string): boolean {\r\n return this.selectedValues.has(value);\r\n }\r\n\r\n isAllSelected(): boolean {\r\n return this.filteredValues.length > 0 && this.filteredValues.every(val => this.selectedValues.has(val));\r\n }\r\n\r\n onSelectAllChanged(event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n if (checked) {\r\n this.filteredValues.forEach(val => this.selectedValues.add(val));\r\n } else {\r\n this.filteredValues.forEach(val => this.selectedValues.delete(val));\r\n }\r\n this.updateIndeterminate();\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n onValueChanged(value: string, event: Event): void {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n if (checked) {\r\n this.selectedValues.add(value);\r\n } else {\r\n this.selectedValues.delete(value);\r\n }\r\n this.updateIndeterminate();\r\n // If all are now selected, ensure isIndeterminate is false\r\n if (this.isAllSelected()) {\r\n this.isIndeterminate = false;\r\n }\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n updateIndeterminate(): void {\r\n // isIndeterminate is true if at least one but not all filteredValues are selected\r\n const selectedCount = this.filteredValues.filter(val => this.selectedValues.has(val)).length;\r\n this.isIndeterminate = selectedCount > 0 && selectedCount < this.filteredValues.length;\r\n }\r\n\r\n onSearchChange(): void {\r\n const lower = this.searchText.toLowerCase();\r\n this.filteredValues = this.uniqueValues.filter(val => val?.toString().toLowerCase().includes(lower));\r\n this.updateIndeterminate();\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const value = params.data[this.params.colDef.field!];\r\n const formattedValue = this.getFormattedValue(params.node, value);\r\n return this.selectedValues.has(formattedValue);\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return this.selectedValues.size !== this.uniqueValues.length;\r\n }\r\n\r\n getModel() {\r\n return { values: Array.from(this.selectedValues) };\r\n }\r\n\r\n setModel(model: { values?: string[] }): void {\r\n if (model?.values) {\r\n this.selectedValues = new Set(model.values);\r\n } else {\r\n this.selectedValues = new Set(this.uniqueValues);\r\n }\r\n this.filteredValues = [...this.uniqueValues];\r\n }\r\n\r\n onReset(): void {\r\n this.searchText = '';\r\n this.selectedValues = new Set(this.uniqueValues);\r\n this.filteredValues = [...this.uniqueValues];\r\n this.isIndeterminate = false;\r\n this.params.filterChangedCallback();\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef, AfterViewInit } from '@angular/core';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonModule, CalendarModule, FormModule } from '@coreui/angular-pro';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'prg-ws-ag-date-range-filter',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, FormModule, ButtonModule, CalendarModule],\r\n template: `\r\n <div class=\"date-range-filter-container\">\r\n <div class=\"filter-body\">\r\n <div class=\"calendar-wrapper\">\r\n <c-calendar\r\n [range]=\"true\"\r\n [calendars]=\"2\"\r\n [startDate]=\"startDate\"\r\n [endDate]=\"endDate\"\r\n [calendarDate]=\"viewDate\"\r\n (startDateChange)=\"onStartDateChange($event)\"\r\n (endDateChange)=\"onEndDateChange($event)\"\r\n locale=\"en-US\">\r\n </c-calendar>\r\n </div>\r\n <div class=\"presets-list\">\r\n @for (preset of presets; track preset.label) {\r\n <div class=\"preset-item\" \r\n [class.active]=\"preset.isSelected\"\r\n (click)=\"onPresetClick(preset)\">\r\n {{ preset.label }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"filter-actions d-flex justify-content-end mt-2 pt-2 border-top\">\r\n <button cButton color=\"primary\" size=\"sm\" variant=\"outline\" (click)=\"onReset()\">Reset</button>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .date-range-filter-container {\r\n padding: 10px;\r\n min-width: 600px;\r\n }\r\n .filter-body {\r\n display: flex;\r\n gap: 10px;\r\n }\r\n .calendar-wrapper {\r\n flex: 1;\r\n border: 1px solid #e0e0e0;\r\n border-radius: 4px;\r\n }\r\n .presets-list {\r\n width: 150px;\r\n border-left: 1px solid #e0e0e0;\r\n padding-left: 10px;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n }\r\n .preset-item {\r\n padding: 6px 10px;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n font-size: 0.9em;\r\n transition: background-color 0.2s, color 0.2s;\r\n }\r\n .preset-item:hover {\r\n background-color: #f0f0f0;\r\n }\r\n .preset-item.active {\r\n background-color: var(--cui-primary, #321fdb);\r\n color: white;\r\n }\r\n `]\r\n})\r\nexport class AgDateRangeFilterComponent implements IFilterAngularComp, AfterViewInit {\r\n params!: IFilterParams;\r\n startDate: Date | null = null;\r\n endDate: Date | null = null;\r\n viewDate: Date = new Date();\r\n private selectedPresetLabel: string | null = null;\r\n\r\n presets = [\r\n {\r\n label: 'Today',\r\n isSelected: false,\r\n calculate: () => {\r\n const now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n return { start: now, end: now };\r\n }\r\n },\r\n {\r\n label: 'Yesterday',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const yesterday = new Date(today);\r\n yesterday.setDate(today.getDate() - 1);\r\n return { start: yesterday, end: yesterday };\r\n }\r\n },\r\n {\r\n label: 'This Week',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const day = today.getDay() || 7;\r\n const start = new Date(today);\r\n if (day !== 1) start.setDate(today.getDate() - (day - 1));\r\n const end = new Date(start);\r\n end.setDate(start.getDate() + 6);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'This Month',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const start = new Date(today.getFullYear(), today.getMonth(), 1);\r\n const end = new Date(today.getFullYear(), today.getMonth() + 1, 0);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'This Quarter',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const currQuarter = Math.floor(today.getMonth() / 3);\r\n const start = new Date(today.getFullYear(), currQuarter * 3, 1);\r\n const end = new Date(today.getFullYear(), start.getMonth() + 3, 0);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'Last Week',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const start = new Date(today);\r\n const day = start.getDay() || 7;\r\n start.setDate(today.getDate() - day - 6);\r\n const end = new Date(start);\r\n end.setDate(start.getDate() + 6);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'Last Month',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const start = new Date(today.getFullYear(), today.getMonth() - 1, 1);\r\n const end = new Date(today.getFullYear(), today.getMonth(), 0);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'Last Quarter',\r\n isSelected: false,\r\n calculate: () => {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const lastQuarter = Math.floor(today.getMonth() / 3) - 1;\r\n const start = new Date(today.getFullYear(), lastQuarter * 3, 1);\r\n const end = new Date(today.getFullYear(), start.getMonth() + 3, 0);\r\n return { start, end };\r\n }\r\n },\r\n {\r\n label: 'Past 7 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(7)\r\n },\r\n {\r\n label: 'Past 30 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(30)\r\n },\r\n {\r\n label: 'Past 90 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(90)\r\n },\r\n {\r\n label: 'Past 180 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(180)\r\n },\r\n {\r\n label: 'Past 365 days',\r\n isSelected: false,\r\n calculate: () => this.calculatePastDays(365)\r\n }\r\n ];\r\n\r\n constructor(private cdr: ChangeDetectorRef) { }\r\n\r\n agInit(params: IFilterParams): void {\r\n this.params = params;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Attempt to match preset after view initialization\r\n if (this.startDate && this.endDate) {\r\n this.matchAndSelectPreset();\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n onStartDateChange(date: Date | null) {\r\n this.startDate = date;\r\n this.selectedPresetLabel = null;\r\n this.clearPresetSelection();\r\n \r\n // Check if both dates are now set and try to match a preset\r\n if (this.startDate && this.endDate) {\r\n this.matchAndSelectPreset();\r\n }\r\n \r\n this.params.filterChangedCallback();\r\n }\r\n\r\n onEndDateChange(date: Date | null) {\r\n this.endDate = date;\r\n this.selectedPresetLabel = null;\r\n this.clearPresetSelection();\r\n \r\n // Check if both dates are now set and try to match a preset\r\n if (this.startDate && this.endDate) {\r\n this.matchAndSelectPreset();\r\n }\r\n \r\n this.params.filterChangedCallback();\r\n }\r\n\r\n private clearPresetSelection() {\r\n this.presets.forEach(p => p.isSelected = false);\r\n }\r\n\r\n private calculatePastDays(days: number): { start: Date, end: Date } {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n const start = new Date(today);\r\n start.setDate(today.getDate() - days);\r\n return { start, end: today };\r\n }\r\n\r\n private normalizeDate(date: Date): string {\r\n return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\r\n }\r\n\r\n private areDatesEqual(date1: Date | null, date2: Date | null): boolean {\r\n if (!date1 && !date2) return true;\r\n if (!date1 || !date2) return false;\r\n return this.normalizeDate(date1) === this.normalizeDate(date2);\r\n }\r\n\r\n private matchAndSelectPreset() {\r\n if (!this.startDate || !this.endDate) {\r\n this.clearPresetSelection();\r\n this.selectedPresetLabel = null;\r\n return;\r\n }\r\n\r\n for (const preset of this.presets) {\r\n if (preset.calculate) {\r\n try {\r\n const { start, end } = preset.calculate();\r\n \r\n if (this.areDatesEqual(this.startDate, start) && \r\n this.areDatesEqual(this.endDate, end)) {\r\n this.clearPresetSelection();\r\n preset.isSelected = true;\r\n this.selectedPresetLabel = preset.label;\r\n console.log('Matched preset:', preset.label);\r\n return;\r\n }\r\n } catch (error) {\r\n console.error('Error calculating preset:', preset.label, error);\r\n }\r\n }\r\n }\r\n\r\n this.clearPresetSelection();\r\n this.selectedPresetLabel = null;\r\n }\r\n\r\n onPresetClick(preset: any) {\r\n if (preset.calculate) {\r\n const { start, end } = preset.calculate();\r\n \r\n this.clearPresetSelection();\r\n preset.isSelected = true;\r\n this.selectedPresetLabel = preset.label;\r\n\r\n this.startDate = start;\r\n this.endDate = end;\r\n this.viewDate = new Date(start);\r\n\r\n this.cdr.detectChanges();\r\n \r\n setTimeout(() => {\r\n this.params.filterChangedCallback();\r\n }, 0);\r\n }\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return !!this.startDate || !!this.endDate;\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const field = this.params.colDef.field;\r\n if (!field) return false;\r\n const value = params.data[field];\r\n if (!value) return false;\r\n\r\n const rowDate = new Date(value);\r\n const rowTime = new Date(rowDate.getFullYear(), rowDate.getMonth(), rowDate.getDate()).getTime();\r\n\r\n let startLimit = -Infinity;\r\n if (this.startDate) {\r\n startLimit = new Date(this.startDate.getFullYear(), this.startDate.getMonth(), this.startDate.getDate()).getTime();\r\n }\r\n\r\n let endLimit = Infinity;\r\n if (this.endDate) {\r\n endLimit = new Date(this.endDate.getFullYear(), this.endDate.getMonth(), this.endDate.getDate()).getTime();\r\n }\r\n\r\n return rowTime >= startLimit && rowTime <= endLimit;\r\n }\r\n\r\n getModel() {\r\n return {\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n selectedPreset: this.selectedPresetLabel\r\n };\r\n }\r\n\r\n setModel(model: any) {\r\n console.log('setModel called with:', model);\r\n \r\n if (model) {\r\n // Parse dates from model\r\n this.startDate = model.startDate ? new Date(model.startDate) : null;\r\n this.endDate = model.endDate ? new Date(model.endDate) : null;\r\n this.selectedPresetLabel = model.selectedPreset || null;\r\n \r\n // Set view date\r\n if (this.startDate) {\r\n this.viewDate = new Date(this.startDate);\r\n } else {\r\n this.viewDate = new Date();\r\n }\r\n\r\n // Clear all selections first\r\n this.clearPresetSelection();\r\n\r\n // If we have a saved preset label, try to select it directly\r\n if (this.selectedPresetLabel) {\r\n const preset = this.presets.find(p => p.label === this.selectedPresetLabel);\r\n if (preset) {\r\n preset.isSelected = true;\r\n console.log('Restored preset selection:', this.selectedPresetLabel);\r\n }\r\n } else if (this.startDate && this.endDate) {\r\n // Otherwise try to match dates to a preset\r\n this.matchAndSelectPreset();\r\n }\r\n } else {\r\n this.startDate = null;\r\n this.endDate = null;\r\n this.selectedPresetLabel = null;\r\n this.clearPresetSelection();\r\n this.viewDate = new Date();\r\n }\r\n \r\n this.cdr.detectChanges();\r\n }\r\n\r\n onReset() {\r\n this.startDate = null;\r\n this.endDate = null;\r\n this.selectedPresetLabel = null;\r\n this.clearPresetSelection();\r\n this.viewDate = new Date();\r\n this.cdr.detectChanges();\r\n this.params.filterChangedCallback();\r\n }\r\n}","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { Component } from '@angular/core';\r\nimport { FormModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FormModule],\r\n template: ` <div class=\"d-flex justify-content-start align-items-center h-100 mt-2\">\r\n <input\r\n cFormCheckInput\r\n type=\"checkbox\"\r\n class=\"me-2 cell-renderer-checkbox\"\r\n [checked]=\"value\"\r\n (change)=\"onChangeCheckBox($event)\"\r\n [disabled]=\"ischeckboxDisabled\" />\r\n </div>`\r\n})\r\nexport class CheckboxCellRendererComponent implements ICellRendererAngularComp {\r\n public value!: boolean;\r\n private params!: ICellRendererParams;\r\n public ischeckboxDisabled = true;\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.ischeckboxDisabled = params.colDef?.cellRendererParams?.data?.disabled ?? true;\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.value = params.value === 'Y' || params.value === 1 || params.value === '1' ? true : false;\r\n return true;\r\n }\r\n\r\n onChangeCheckBox(event: Event) {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n this.value = checked;\r\n\r\n // Emit the change event to the parent via a callback\r\n if (this.params.colDef?.cellRendererParams?.onCheckboxChange) {\r\n this.params.colDef.cellRendererParams.onCheckboxChange(this.params.data, checked, this.params.colDef?.field);\r\n }\r\n }\r\n}\r\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { Component } from '@angular/core';\r\n\r\nimport { ButtonModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'prg-ws-comments-button-cell-renderer',\r\n imports: [ButtonModule],\r\n template: `\r\n <div>\r\n <button cButton [color]=\"params.data?.orders_notes ? 'primary' : 'secondary'\" size=\"sm\" data-action=\"comment-action\" (click)=\"onCommentClick()\">\r\n Comments\r\n </button>\r\n </div>\r\n `,\r\n styles: ``\r\n})\r\nexport class CommentsButtonCellRendererComponent implements ICellRendererAngularComp {\r\n public params!: ICellRendererParams;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.params = params;\r\n return true;\r\n }\r\n\r\n onCommentClick(): void {\r\n if (this.params?.colDef?.cellRendererParams?.onCommentClick) {\r\n this.params.colDef.cellRendererParams.onCommentClick(this.params.data);\r\n }\r\n }\r\n}\r\n","export enum BrowserConstantsEnum {\r\n sessionid = 'sessionId',\r\n loginUid = 'uid',\r\n iframeTabs = 'tabs',\r\n connectExternalFlag = 'connectExternal',\r\n lastUserName = 'lastUserName',\r\n logoutReason = 'logoutReason',\r\n\r\n tablePreference = 'table_preference',\r\n\r\n cookieSidebarUnfoldable = 'pongrass_sidebar_state',\r\n cookieTheme = 'pongrass_theme',\r\n\r\n menuItems = '_menu_items'\r\n}\r\n","export enum JSONRPCMethods {\n getFormsConfig = 'get_form',\n tableSearch = 'table_search',\n tableUpdate = 'table_update',\n tableList = 'table_list',\n generateAccountId = 'generate_accountid',\n updateTablePreference = 'update_form_preference',\n\n listPhotoQueue = 'photo_queue',\n updateFileStatus = 'update_photo_status',\n report = 'report',\n\n adStatusList = 'list_adstatus',\n adApprovedList = 'get_approval_adlist',\n updateApprovedList = 'update_approve_adlist',\n getEditionPublicationList = 'get_edition',\n nationaROPReport = 'national_rop_report',\n nationaInserts = 'national_inserts',\n prodStatusList = 'list_prodstatus',\n updateAdStatus = 'update_ad_status',\n\n ordersNotes = 'orders_notes',\n\n getPageStatus = 'get_page_status',\n listPageStatus = 'list_pagestatus',\n updatePageStatus = 'update_page_status',\n\n markads = 'markads',\n updateReport = 'update_report',\n\n listFileStatus = 'list_filestatus',\n getIndustryList = 'get_industry'\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { BehaviorSubject, lastValueFrom, map, Observable } from 'rxjs';\r\nimport { IAPIResponse, IConfig } from '../interface/api-response.interface';\r\nimport { IFormConfig } from '../modules/multi-form/multi-form.interface';\r\nimport { BrowserConstantsEnum } from '../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../enums/jsonrpc-methods.enum';\r\nimport { IAvailableForms } from '../interface/multi-forms.interface';\r\nimport { ConfigurationServiceLib } from './configuration.service';\r\nimport { MaintAction } from '../modules/table-grid/table-grid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonrpcServiceLib {\r\n private readonly httpService = inject(HttpClient);\r\n private readonly configService = inject(ConfigurationServiceLib);\r\n private readonly baseURL$: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n\r\n get baseURL(): string {\r\n return this.baseURL$.value || this.defaultBaseURl;\r\n }\r\n\r\n get defaultBaseURl(): string {\r\n return ((window as any).config as IConfig)?.apiBaseURLWebMaint;\r\n }\r\n\r\n setBaseUrl(url: string): void {\r\n this.baseURL$.next(url);\r\n }\r\n\r\n // JSONRPC POST Request\r\n public postJsonRpcRequest(method: string, params: any): Observable<any> {\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const body = {\r\n jsonrpc: '2.0',\r\n method: method,\r\n params: params,\r\n id: this.configService.generateUniqueId()\r\n };\r\n\r\n return this.httpService\r\n .post(this.baseURL, body, { headers })\r\n .pipe(map(response => ({ ...response, timestamp: new Date().toISOString() })));\r\n }\r\n\r\n // JSONRPC POST Request With promise\r\n public async postJsonRpcRequestPromise(method: string, params: any): Promise<any> {\r\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\r\n const body = {\r\n jsonrpc: '2.0',\r\n method: method,\r\n params: params,\r\n id: this.configService.generateUniqueId()\r\n };\r\n\r\n const request$ = this.httpService.post(this.baseURL, body, { headers });\r\n const response = await lastValueFrom<any>(request$);\r\n return { ...response, timestamp: new Date().toISOString() };\r\n }\r\n\r\n /**\r\n *\r\n * @param formName Form config name\r\n * @param tableName Table Name\r\n */\r\n public async getFormConfig(formName: string, tableName: string): Promise<IFormConfig | null> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n form_name: formName,\r\n table_name: tableName\r\n };\r\n\r\n return this.postJsonRpcRequestPromise(JSONRPCMethods.getFormsConfig, params)\r\n .then((response: IAPIResponse<[IFormConfig]>) => {\r\n return response.result ? response.result[0] : { rows: [] };\r\n })\r\n .finally(() => {});\r\n }\r\n\r\n /**\r\n *\r\n * @param formName Report config name\r\n * @param reportName Table Name\r\n */\r\n public async getFormConfigReports(formName: string, reportName: string): Promise<IFormConfig | null> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n form_name: formName,\r\n report_name: reportName\r\n };\r\n\r\n return this.postJsonRpcRequestPromise(JSONRPCMethods.report, params)\r\n .then((response: IAPIResponse<[IFormConfig]>) => {\r\n return response.result ? response.result[0] : { rows: [] };\r\n })\r\n .finally(() => {});\r\n }\r\n\r\n /** Get available forms */\r\n public async getTableConfig(tableName: string): Promise<IAvailableForms[]> {\r\n try {\r\n const response: IAPIResponse<IAvailableForms[]> = await this.postJsonRpcRequestPromise(JSONRPCMethods.getFormsConfig, {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n });\r\n\r\n if (response.result) {\r\n return response.result;\r\n }\r\n return [];\r\n } catch (error) {\r\n return [];\r\n }\r\n }\r\n\r\n /** Get single row data by their params */\r\n public async getTableRow(tableName: string, param: any): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n };\r\n params = { ...params, ...param };\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableSearch, params);\r\n }\r\n\r\n /**\r\n *\r\n * @param tableName Table Name\r\n * @param param Form values and params needed fo the call\r\n * @param action 'U' for update and 'N' for create and 'D' for delete\r\n * @returns Promise<any>\r\n */\r\n public async createUpdateDeleteTableRow(tableName: string, requests: any, action?: MaintAction): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName,\r\n maint_action: action\r\n };\r\n params = { ...params, ...requests };\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableUpdate, params);\r\n }\r\n\r\n /**\r\n *\r\n * @param tableName Table Name\r\n * @param param Params to get the list of data\r\n * @returns Array of data\r\n */\r\n public async getTableList(tableName: string, param: any): Promise<any> {\r\n let params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: tableName\r\n };\r\n params = { ...params, ...param };\r\n\r\n return await this.postJsonRpcRequestPromise(JSONRPCMethods.tableList, params);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { Component, OnInit, OnDestroy, Output, EventEmitter, Input, inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MultiSelectModule } from '@coreui/angular-pro';\r\nimport { NgClass } from '@angular/common';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\r\nimport { IEditionPublication } from '../../interface/multi-forms.interface';\r\nimport { IAPIResponse } from '../../interface/api-response.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-edition-list-grouped',\r\n imports: [MultiSelectModule, FormsModule, NgClass],\r\n templateUrl: './edition-list-grouped.component.html',\r\n styleUrl: './edition-list-grouped.component.scss',\r\n standalone: true\r\n})\r\nexport class EditionListGroupedComponent implements OnInit, OnDestroy {\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n private isActive: boolean;\r\n\r\n public editionPublicationList: {\r\n region: string;\r\n values: IEditionPublication[];\r\n }[];\r\n\r\n private selectedRegions: string[];\r\n private selectedEditions: string[];\r\n\r\n @Output() selectedEditionsChange = new EventEmitter<string[]>();\r\n @Input() label: string;\r\n @Input() multiple: boolean;\r\n @Input() hasFormError: boolean;\r\n\r\n constructor() {\r\n this.isActive = true;\r\n this.editionPublicationList = [];\r\n this.selectedEditions = [];\r\n this.selectedRegions = [];\r\n this.label = '';\r\n this.hasFormError = false;\r\n this.multiple = true;\r\n }\r\n ngOnInit(): void {\r\n this.getEditionPublicationList();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.isActive = false;\r\n }\r\n\r\n private async getEditionPublicationList(): Promise<void> {\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n for_approval: true\r\n };\r\n\r\n await this.jsonrpcService\r\n .postJsonRpcRequestPromise(JSONRPCMethods.getEditionPublicationList, params)\r\n .then((response: IAPIResponse<IEditionPublication[]>) => {\r\n if (response.result) {\r\n const result = response.result;\r\n result.forEach(ed => {\r\n ed['selected'] = false;\r\n });\r\n const groupedByRegion = result.reduce((acc: any, current: IEditionPublication) => {\r\n const region = current.region;\r\n if (region) {\r\n if (!acc[region]) {\r\n acc[region] = {\r\n region: region,\r\n values: []\r\n };\r\n }\r\n acc[region].values.push(current);\r\n }\r\n return acc;\r\n }, {});\r\n this.editionPublicationList = Object.values(groupedByRegion);\r\n }\r\n });\r\n }\r\n\r\n public onEditionSelection(option: IEditionPublication[] | IEditionPublication): void {\r\n this.selectedEditions = [];\r\n\r\n if (Array.isArray(option)) {\r\n if (option.length > 0) {\r\n option.forEach(editionData => {\r\n this.selectedEditions.push(editionData.edname!);\r\n });\r\n }\r\n } else {\r\n if (option && option.edname) {\r\n this.selectedEditions.push(option.edname);\r\n }\r\n }\r\n\r\n this.selectedEditionsChange.emit(this.selectedEditions);\r\n }\r\n\r\n public onSelectEditionGroup(region: string, index: number): void {\r\n const isSelected = this.selectedRegions.includes(region);\r\n\r\n if (isSelected) {\r\n this.selectedRegions.splice(index, 1);\r\n } else {\r\n this.selectedRegions.push(region);\r\n }\r\n\r\n this.editionPublicationList.forEach(element => {\r\n if (element.region === region) {\r\n element.values.forEach(regionValues => {\r\n regionValues.selected = !isSelected;\r\n });\r\n }\r\n });\r\n }\r\n\r\n public onVisibleChange(isActive: boolean): void {\r\n const elements = document.getElementsByClassName('form-multi-select-cleaner');\r\n Array.from(elements).forEach((element: Element) => {\r\n (element as HTMLElement).style.display = isActive ? 'inline-block' : 'none';\r\n });\r\n }\r\n}\r\n","<div class=\"row\">\n <div class=\"col-12\">\n @if (label) {\n <label for=\"sel-group-edition\">{{ label }}</label>\n }\n <c-multi-select\n [cleaner]=\"true\"\n [selectionType]=\"multiple ? 'counter' : 'text'\"\n [multiple]=\"multiple\"\n clearSearchOnSelect\n [ngClass]=\"{ 'form-invalid': hasFormError }\"\n placeholder=\"All Editions\"\n visibleItems=\"8\"\n (valueChange)=\"onEditionSelection($event)\"\n (visibleChange)=\"onVisibleChange($event)\">\n @for (option of editionPublicationList; track $index + '_' + option.region) {\n <c-multi-select-optgroup>\n <c-multi-select-optgroup-label (click)=\"onSelectEditionGroup(option.region, $index)\" class=\"region-selector cursor-pointer\">{{\n option?.region\n }}</c-multi-select-optgroup-label>\n @for (item of option.values; track item?.description) {\n <c-multi-select-option [value]=\"item\" [selected]=\"item.selected\">{{ '[' + item?.edname + ']' }} {{ item?.description }}</c-multi-select-option>\n }\n </c-multi-select-optgroup>\n }\n </c-multi-select>\n </div>\n</div>\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { IIndustry } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-industry-update-listbox-cell-renderer',\r\n templateUrl: './industry-update-listbox-cell-renderer.component.html',\r\n styleUrl: './industry-update-listbox-cell-renderer.component.scss',\r\n imports: [FormsModule, NgClass],\r\n standalone: true\r\n})\r\nexport class IndustryUpdateListboxCellRendererComponent implements ICellRendererAngularComp {\r\n public industryList: IIndustry[] = [];\r\n public selectedIndustry: string | undefined;\r\n private params!: ICellRendererParams;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.industryList = params.colDef?.cellRendererParams?.data?.industryList ?? [];\r\n this.selectedIndustry = params.data?.industry;\r\n\r\n if (!this.selectedIndustry) {\r\n this.selectedIndustry = 'select-industry';\r\n }\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.selectedIndustry = params.data?.industry;\r\n\r\n if (!this.selectedIndustry) {\r\n this.selectedIndustry = 'select-industry';\r\n }\r\n return true;\r\n }\r\n\r\n public onIndustryChange(event: Event): void {\r\n const value = (event.target as HTMLSelectElement).value;\r\n if (this.params.colDef?.cellRendererParams?.onUpdateIndustry) {\r\n this.params.colDef.cellRendererParams.onUpdateIndustry(this.params.data, value);\r\n }\r\n }\r\n}\r\n","<select\n class=\"form-select select-industry\"\n [ngClass]=\"{ 'select-industry-red': selectedIndustry === 'select-industry' }\"\n [(ngModel)]=\"selectedIndustry\"\n (change)=\"onIndustryChange($event)\"\n id=\"sel-industry\"\n name=\"sel-industry\">\n <option value=\"select-industry\" disabled class=\"select-industry-opt\">Select Industry</option>\n @for (industry of industryList; track industry.industry) {\n <option [value]=\"industry?.industry\" class=\"select-industry-opt\">\n {{ industry?.description }}\n </option>\n }\n</select>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormModule } from '@coreui/angular-pro';\r\nimport { IPageStatusList } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-page-status-cell-renderer',\r\n templateUrl: './page-status-cell-renderer.component.html',\r\n styleUrl: './page-status-cell-renderer.component.scss',\r\n imports: [FormsModule, CommonModule, FormModule],\r\n standalone: true\r\n})\r\nexport class PageStatusCellRendererComponent {\r\n public pageStatusList: IPageStatusList[] = [];\r\n private params!: ICellRendererParams;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public pageStatus: any | undefined = undefined;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.pageStatusList = params.colDef?.cellRendererParams?.data?.pageStatusList ?? [];\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.pageStatus = params.data;\r\n return true;\r\n }\r\n\r\n public updatePageStatus(value: string): void {\r\n if (this.params.colDef?.cellRendererParams?.onUpdatePageStatus) {\r\n this.params.colDef.cellRendererParams.onUpdatePageStatus(this.params.data, value);\r\n }\r\n }\r\n\r\n public getStatusColor(): string {\r\n const selectedStatus = this.pageStatusList.find(status => status.page_status_name === this.pageStatus!.page_status_name);\r\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\r\n }\r\n}\r\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"pageStatus!.page_status_name\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of pageStatusList; track $index) {\n <option [value]=\"status.page_status_name\">\n {{ status.page_status_name }}\n </option>\n }\n </select>\n</div>\n","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormModule } from '@coreui/angular-pro';\r\nimport { IProdStatus } from '../../interface/multi-forms.interface';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [FormModule, CommonModule, FormsModule],\r\n selector: 'prg-ws-status-select-cell-renderer',\r\n templateUrl: './status-select-cell-renderer.component.html',\r\n styleUrl: './status-select-cell-renderer.component.scss'\r\n})\r\nexport class StatusSelectCellRendererComponent implements ICellRendererAngularComp {\r\n public prodStatusList: IProdStatus[] = [];\r\n private params!: ICellRendererParams;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public fileStatus: any | undefined = undefined;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.prodStatusList = params.colDef?.cellRendererParams?.data?.prodStatusList ?? [];\r\n this.refresh(params);\r\n }\r\n\r\n // Return Cell Value\r\n refresh(params: ICellRendererParams): boolean {\r\n this.fileStatus = params.data;\r\n return true;\r\n }\r\n\r\n public updatePageStatus(value: string): void {\r\n if (this.params.colDef?.cellRendererParams?.onUpdateFileStatus) {\r\n this.params.colDef.cellRendererParams.onUpdateFileStatus(this.params.data, value);\r\n }\r\n }\r\n\r\n public getStatusColor(): string {\r\n const selectedStatus = this.prodStatusList.find(status => status.statusid === this.fileStatus!.it_prodstatusid);\r\n return selectedStatus && selectedStatus.html_color ? selectedStatus.html_color : '#C5B4E3';\r\n }\r\n}\r\n","<div class=\"wrapper-production-status-select\">\n <select\n class=\"status-dropdown\"\n aria-label=\"status-dropdown\"\n cSelect\n sizing=\"sm\"\n (click)=\"$event.stopPropagation()\"\n [ngModel]=\"this.fileStatus!.it_prodstatusid\"\n (ngModelChange)=\"updatePageStatus($event)\"\n [ngStyle]=\"{ '--select-background': getStatusColor() }\">\n @for (status of prodStatusList; track $index) {\n <option [value]=\"status.statusid\">\n {{ status.statusdesc }}\n </option>\n }\n </select>\n</div>\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { BadgeModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n selector: 'prg-ws-badge-cell-renderer',\r\n standalone: true,\r\n imports: [CommonModule, BadgeModule],\r\n template: `\r\n @if (displayValue) {\r\n <c-badge\r\n [color]=\"badgeColor\"\r\n [ngStyle]=\"customStyles\"\r\n [textColor]=\"textColor\"\r\n class=\"text-wrap\"\r\n >\r\n {{ displayValue }}\r\n </c-badge>\r\n }\r\n `,\r\n styles: [`\r\n c-badge {\r\n font-size: 0.875rem;\r\n font-weight: 500;\r\n }\r\n `]\r\n})\r\nexport class BadgeCellRendererComponent implements ICellRendererAngularComp {\r\n public displayValue: string = '';\r\n public badgeColor: string = 'secondary';\r\n public textColor: string = 'black';\r\n public customStyles: { [key: string]: string } = {};\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.updateValue(params);\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.updateValue(params);\r\n return true;\r\n }\r\n\r\n private updateValue(params: ICellRendererParams): void {\r\n // Determine the value to display\r\n this.displayValue = params.valueFormatted || params.value;\r\n\r\n const rendererParams = params.colDef?.cellRendererParams;\r\n\r\n // reset defaults\r\n this.badgeColor = 'secondary';\r\n this.textColor = 'black';\r\n this.customStyles = {};\r\n\r\n if (rendererParams) {\r\n if (rendererParams.textColor) {\r\n this.textColor = rendererParams.textColor;\r\n }\r\n\r\n // 1. Check for static color\r\n if (rendererParams.color) {\r\n this.applyColor(rendererParams.color);\r\n }\r\n\r\n // 2. Check for dynamic color map\r\n if (rendererParams.colorMap) {\r\n // value could be anything, assume string key\r\n const key = params.value;\r\n if (rendererParams.colorMap[key]) {\r\n this.applyColor(rendererParams.colorMap[key]);\r\n }\r\n }\r\n\r\n // 3. Check if color depends on another field in the row\r\n if (rendererParams.colorField && params.data) {\r\n const colorValue = params.data[rendererParams.colorField];\r\n if (colorValue) {\r\n this.applyColor(colorValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private applyColor(color: string): void {\r\n if (!color) return;\r\n\r\n const themeColors = ['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark'];\r\n\r\n if (themeColors.includes(color.toLowerCase())) {\r\n this.badgeColor = color;\r\n delete this.customStyles['background-color'];\r\n } else {\r\n // Assume it's a custom CSS color (hex, rgb, named color, etc.)\r\n this.badgeColor = ''; // Remove utility class color\r\n this.customStyles['background-color'] = color;\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\n@Component({\r\n selector: 'prg-ws-icon-text-cell-renderer',\r\n standalone: true,\r\n imports: [CommonModule, IconModule],\r\n template: `\r\n <div class=\"d-flex align-items-center\" [style.color]=\"isRed ? 'red' : 'inherit'\">\r\n @if (iconName && iconPosition === 'start') {\r\n <c-icon [name]=\"iconName\" [size]=\"'sm'\" class=\"me-2\"></c-icon>\r\n }\r\n\r\n <span class=\"text-truncate\">{{ displayValue }}</span>\r\n\r\n @if (iconName && iconPosition === 'end') {\r\n <c-icon [name]=\"iconName\" [size]=\"'sm'\" class=\"ms-2\"></c-icon>\r\n }\r\n </div>\r\n `,\r\n styles: [`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n overflow: hidden;\r\n }\r\n `]\r\n})\r\nexport class IconTextCellRendererComponent implements ICellRendererAngularComp {\r\n public displayValue: string = '';\r\n public iconName: string = '';\r\n public iconPosition: 'start' | 'end' = 'start';\r\n public isRed: boolean = false;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.updateValue(params);\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.updateValue(params);\r\n return true;\r\n }\r\n\r\n private updateValue(params: ICellRendererParams): void {\r\n this.displayValue = params.valueFormatted || params.value;\r\n\r\n const rendererParams = params.colDef?.cellRendererParams;\r\n if (rendererParams) {\r\n // Icon Logic\r\n if (typeof rendererParams.iconName === 'function') {\r\n this.iconName = rendererParams.iconName(params);\r\n } else {\r\n this.iconName = rendererParams.iconName || '';\r\n }\r\n this.iconPosition = rendererParams.iconPosition || 'start';\r\n\r\n // Red Condition Logic\r\n if (rendererParams.isRedCondition && typeof rendererParams.isRedCondition === 'function') {\r\n this.isRed = rendererParams.isRedCondition(params);\r\n } else {\r\n this.isRed = false;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\n\r\n@Component({\r\n selector: 'prg-ws-hyperlink-cell-renderer',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n @if (isLink) {\r\n <a [href]=\"href\" [target]=\"target\" (click)=\"$event.stopPropagation()\">{{ displayValue }}</a>\r\n } @else {\r\n <span>{{ displayValue }}</span>\r\n }\r\n `,\r\n styles: [`\r\n :host {\r\n display: block;\r\n width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n a {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n a:hover {\r\n text-decoration: none;\r\n }\r\n `]\r\n})\r\nexport class HyperlinkCellRendererComponent implements ICellRendererAngularComp {\r\n public displayValue: string = '';\r\n public href: string = '';\r\n public target: string = '_blank';\r\n public isLink: boolean = false;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.updateValue(params);\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.updateValue(params);\r\n return true;\r\n }\r\n\r\n private updateValue(params: ICellRendererParams): void {\r\n this.displayValue = params.valueFormatted || params.value;\r\n const value = params.value;\r\n\r\n if (!value) {\r\n this.isLink = false;\r\n return;\r\n }\r\n\r\n const rendererParams = params.colDef?.cellRendererParams || {};\r\n const type = rendererParams.type || 'auto'; // 'link', 'email', 'auto'\r\n\r\n if (type === 'email') {\r\n this.setAsEmail(value);\r\n } else if (type === 'link') {\r\n this.setAsLink(value, rendererParams.target);\r\n } else {\r\n // Auto detection\r\n if (typeof value === 'string' && value.includes('@') && !value.includes(' ')) { // Simple email check\r\n this.setAsEmail(value);\r\n } else if (typeof value === 'string' && (value.startsWith('http') || value.startsWith('www.'))) {\r\n this.setAsLink(value, rendererParams.target);\r\n } else {\r\n this.isLink = false;\r\n }\r\n }\r\n }\r\n\r\n private setAsEmail(value: string) {\r\n this.isLink = true;\r\n this.href = `mailto:${value}`;\r\n this.target = '_self';\r\n }\r\n\r\n private setAsLink(value: string, targetParam?: string) {\r\n this.isLink = true;\r\n let url = value;\r\n // If it starts with www. but no protocol, add https://\r\n if (url.startsWith('www.')) {\r\n url = `https://${url}`;\r\n } else if (!url.startsWith('http') && !url.startsWith('//')) {\r\n // If forced as link but no protocol, keep as is or assume https? \r\n // Usually browsers handle \"google.com\" as relative if in href, so prepending https is safer for external links.\r\n // However, if it's a relative link intended, we shouldn't touch it.\r\n // Given \"display link or email\", it's likely external or at least absolute.\r\n // But to be safe, if strictly 'link' type and no protocol, I might leave it or prepend.\r\n // Let's prepend https:// if it looks like a domain (contains dot).\r\n if (url.includes('.')) {\r\n url = `https://${url}`;\r\n }\r\n }\r\n this.href = url;\r\n this.target = targetParam || '_blank';\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { AbstractControl } from '@angular/forms';\r\n\r\nexport enum FormFieldType {\r\n Text = 'text',\r\n Email = 'email',\r\n Number = 'number',\r\n Select = 'select',\r\n\r\n Textarea = 'textarea',\r\n Date = 'date',\r\n NewDate = 'new-date',\r\n Datetime = 'datetime',\r\n Switch = 'switch',\r\n Checkbox = 'checkbox',\r\n Float = 'float',\r\n Edition = 'edition',\r\n Separator = 'seperator',\r\n FormHeader = 'form-header',\r\n Password = 'password',\r\n Url = 'url',\r\n Tel = 'tel',\r\n Timepicker = 'time'\r\n}\r\n\r\nexport interface IFieldConfig {\r\n /** Form label */\r\n label: string;\r\n\r\n /** Form field type */\r\n type: FormFieldType;\r\n\r\n /** id or formControlName */\r\n controlName: string;\r\n\r\n /** for selects or multi-selects */\r\n options?: { value: string; label: string; disabled?: boolean }[];\r\n\r\n /** for selects or multi-selects allows create option along with selects */\r\n allowCreateOptions?: boolean;\r\n\r\n /** for selects or multi-selects allows search option */\r\n allowSearch?: boolean;\r\n\r\n /** for selects or multi-selects allows clear option */\r\n allowCleaner?: boolean;\r\n\r\n /** for selects or multi-selects search option */\r\n search?: string;\r\n\r\n /** grid column span */\r\n colspan?: number;\r\n\r\n /** Placeholder */\r\n placeholder?: string;\r\n\r\n /** For multi-selects */\r\n selectionType?: 'text' | 'tags' | 'counter';\r\n\r\n /** For textarea rows */\r\n textareaRows?: number;\r\n\r\n /** For textarea columns */\r\n textareaColumns?: number;\r\n\r\n /** Validations */\r\n validations: IFormValidations;\r\n\r\n /** Form Value */\r\n value?: any;\r\n\r\n /** For multi-selects - Allows multiple selection */\r\n multiple?: boolean;\r\n\r\n /** Additional info or description for the field */\r\n info?: string;\r\n\r\n /** Additional configuration for specific field types */\r\n config?: any;\r\n\r\n styles?: IFormStyles;\r\n\r\n actionButton?: {\r\n icon: string;\r\n tooltip?: string; // Tooltip for the action button\r\n action: string; // e.g., 'reload', 'generateAccountId'\r\n };\r\n\r\n /** Control is becomes readonly if it has a value */\r\n readonlyIfNotEmpty?: boolean;\r\n}\r\n\r\nexport interface IFormConfig {\r\n formName?: string;\r\n rows: IFieldConfig[][];\r\n unique_key?: string[];\r\n}\r\n\r\nexport interface IFormValidations {\r\n required?: boolean;\r\n minLength?: number;\r\n maxLength?: number;\r\n pattern?: string;\r\n readonly?: boolean;\r\n precision?: number; // For float type number\r\n min?: number; // For number type\r\n max?: number; // For number type\r\n defaultAdvance?: 'weekly' | 'monthly' | 'quarterly' | 'halfyearly' | 'yearly';\r\n minDate?: Date;\r\n maxDate?: Date;\r\n}\r\n\r\nexport interface IFormSubmissionEmit {\r\n /** Reflects the validity of the form */\r\n isValid: boolean;\r\n\r\n /** Reflects the values of the form controls */\r\n values: { [key: string]: any };\r\n\r\n /** Reflects the controls of the form */\r\n controls: { [key: string]: AbstractControl };\r\n}\r\n\r\nexport interface IFormStyles {\r\n field?: string;\r\n label?: string;\r\n}\r\n","export const ColorsCodes = [\n {\n color_name: 'AliceBlue',\n color_code: '#F0F8FF'\n },\n {\n color_name: 'Aqua',\n color_code: '#00FFFF'\n },\n {\n color_name: 'Aquamarine',\n color_code: '#7FFFD4'\n },\n {\n color_name: 'Beige',\n color_code: '#F5F5DC'\n },\n {\n color_name: 'Black',\n color_code: '#000000'\n },\n {\n color_name: 'Blue',\n color_code: '#0000FF'\n },\n {\n color_name: 'Chartreuse',\n color_code: '#7FFF00'\n },\n {\n color_name: 'Coral',\n color_code: '#FF7F50'\n },\n {\n color_name: 'DarkGray',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGrey',\n color_code: '#A9A9A9'\n },\n {\n color_name: 'DarkGreen',\n color_code: '#006400'\n },\n {\n color_name: 'DarkOrange',\n color_code: '#FF8C00'\n },\n {\n color_name: 'Fuchsia',\n color_code: '#FF00FF'\n },\n {\n color_name: 'GoldenRod',\n color_code: '#DAA520'\n },\n {\n color_name: 'Gray',\n color_code: '#808080'\n },\n {\n color_name: 'Grey',\n color_code: '#808080'\n },\n {\n color_name: 'Green',\n color_code: '#008000'\n },\n {\n color_name: 'GreenYellow',\n color_code: '#ADFF2F'\n },\n {\n color_name: 'Khaki',\n color_code: '#F0E68C'\n },\n {\n color_name: 'Lavender',\n color_code: '#E6E6FA'\n },\n {\n color_name: 'LightGray',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGrey',\n color_code: '#D3D3D3'\n },\n {\n color_name: 'LightGreen',\n color_code: '#90EE90'\n },\n {\n color_name: 'LightSalmon',\n color_code: '#FFA07A'\n },\n {\n color_name: 'LightSkyBlue',\n color_code: '#87CEFA'\n },\n {\n color_name: 'Lime',\n color_code: '#00FF00'\n },\n {\n color_name: 'LimeGreen',\n color_code: '#32CD32'\n },\n {\n color_name: 'Magenta',\n color_code: '#FF00FF'\n },\n {\n color_name: 'Maroon',\n color_code: '#800000'\n },\n {\n color_name: 'MediumSpringGreen',\n color_code: '#00FA9A'\n },\n {\n color_name: 'Navy',\n color_code: '#000080'\n },\n {\n color_name: 'Olive',\n color_code: '#808000'\n },\n {\n color_name: 'Orange',\n color_code: '#FFA500'\n },\n {\n color_name: 'OrangeRed',\n color_code: '#FF4500'\n },\n {\n color_name: 'Orchid',\n color_code: '#DA70D6'\n },\n {\n color_name: 'PaleGreen',\n color_code: '#98FB98'\n },\n {\n color_name: 'PaleTurquoise',\n color_code: '#AFEEEE'\n },\n {\n color_name: 'Plum',\n color_code: '#DDA0DD'\n },\n {\n color_name: 'Purple',\n color_code: '#800080'\n },\n {\n color_name: 'Red',\n color_code: '#FF0000'\n },\n {\n color_name: 'Salmon',\n color_code: '#FA8072'\n },\n {\n color_name: 'SandyBrown',\n color_code: '#F4A460'\n },\n {\n color_name: 'Silver',\n color_code: '#C0C0C0'\n },\n {\n color_name: 'SkyBlue',\n color_code: '#87CEEB'\n },\n {\n color_name: 'Teal',\n color_code: '#008080'\n },\n {\n color_name: 'Tomato',\n color_code: '#FF6347'\n },\n {\n color_name: 'Violet',\n color_code: '#EE82EE'\n },\n {\n color_name: 'Wheat',\n color_code: '#F5DEB3'\n },\n {\n color_name: 'White',\n color_code: '#FFFFFF'\n },\n {\n color_name: 'Yellow',\n color_code: '#FFFF00'\n }\n];\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, inject } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[wsCircularFocus]',\r\n standalone: true\r\n})\r\nexport class CircularFocusDirective implements AfterViewInit, OnDestroy {\r\n private el = inject(ElementRef);\r\n\r\n @Input() formId: string = '';\r\n @Input() formGroup: FormGroup | null = null;\r\n\r\n private focusableElements: HTMLElement[] = [];\r\n private formSubscription: Subscription | null = null;\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.collectFocusableElements();\r\n\r\n // Subscribe to form value changes if formGroup is provided\r\n if (this.formGroup) {\r\n this.formSubscription = this.formGroup.valueChanges.subscribe(() => {\r\n // Wait for DOM to update after form changes\r\n setTimeout(() => {\r\n this.collectFocusableElements();\r\n }, 0);\r\n });\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Clean up subscription when directive is destroyed\r\n if (this.formSubscription) {\r\n this.formSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private collectFocusableElements(): void {\r\n if (!this.formId) {\r\n // If no formId is provided, use the current element\r\n this.focusableElements = this.getFocusableElements(this.el.nativeElement);\r\n } else {\r\n const formElement = document.getElementById(this.formId);\r\n if (formElement) {\r\n this.focusableElements = this.getFocusableElements(formElement);\r\n }\r\n }\r\n }\r\n\r\n private getFocusableElements(element: HTMLElement): HTMLElement[] {\r\n return Array.from(\r\n element.querySelectorAll(\r\n 'input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [contenteditable]:not([disabled]), c-multi-select:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])'\r\n )\r\n ).filter(el => {\r\n // Filter out hidden elements\r\n const element = el as HTMLElement;\r\n return element.offsetParent !== null; // Check if element is visible\r\n }) as HTMLElement[];\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent): void {\r\n // ToDo: Plan to escape the circular navigation when Escape is pressed\r\n // if (event.key === 'Escape') {}\r\n\r\n // Only handle Tab key events\r\n if (event.key !== 'Tab') return;\r\n\r\n // If no focusable elements, do nothing\r\n if (this.focusableElements.length === 0) return;\r\n\r\n const currentElement = document.activeElement as HTMLElement;\r\n const currentIndex = this.focusableElements.indexOf(currentElement);\r\n\r\n // If current element is not in our list, do nothing\r\n if (currentIndex === -1) return;\r\n\r\n // Handle circular navigation\r\n if (event.shiftKey) {\r\n // Going backward with Shift+Tab\r\n if (currentIndex === 0) {\r\n event.preventDefault();\r\n const lastElement = this.focusableElements[this.focusableElements.length - 1];\r\n lastElement.focus();\r\n }\r\n } else {\r\n // Going forward with Tab\r\n if (currentIndex === this.focusableElements.length - 1) {\r\n event.preventDefault();\r\n const firstElement = this.focusableElements[0];\r\n firstElement.focus();\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[wsDecimalInput]',\r\n standalone: true\r\n})\r\nexport class DecimalInputDirective {\r\n private el = inject(ElementRef<HTMLInputElement>);\r\n private control = inject(NgControl, { optional: true });\r\n\r\n @Input() wsDecimalInput = 4;\r\n @Input() wsAcceptStringInput = true;\r\n\r\n private get decimalPlaces() {\r\n return this.wsDecimalInput;\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput(e: InputEvent) {\r\n const input = this.el.nativeElement;\r\n const before = input.value;\r\n\r\n let cleaned = before.replace(/[^0-9.]/g, '');\r\n\r\n const parts = cleaned.split('.');\r\n if (parts.length > 2) {\r\n cleaned = parts[0] + '.' + parts.slice(1).join('');\r\n }\r\n\r\n if (parts.length === 2 && parts[1].length > this.decimalPlaces) {\r\n cleaned = parts[0] + '.' + parts[1].slice(0, this.decimalPlaces);\r\n }\r\n\r\n if (cleaned !== before) {\r\n const cursorPos = input.selectionStart ?? 0;\r\n\r\n input.value = cleaned;\r\n\r\n const newPos = cursorPos + (cleaned.length - before.length);\r\n input.setSelectionRange(newPos, newPos);\r\n\r\n this.control?.control?.setValue(this.wsAcceptStringInput ? cleaned : Number(cleaned) || null, { emitEvent: false, onlySelf: true });\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(e: ClipboardEvent) {\r\n const text = e.clipboardData?.getData('text') ?? '';\r\n if (!/^\\d*\\.?\\d*$/.test(text)) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n const val = this.el.nativeElement.value.trim();\r\n if (!val) return;\r\n\r\n const num = Number(val);\r\n if (isNaN(num)) return;\r\n\r\n let str = num.toFixed(this.decimalPlaces);\r\n\r\n if (!this.wsAcceptStringInput) {\r\n this.control?.control?.setValue(num, { emitEvent: false });\r\n } else {\r\n this.control?.control?.setValue(str, { emitEvent: false });\r\n }\r\n\r\n this.el.nativeElement.value = str;\r\n }\r\n\r\n constructor() {\r\n this.control?.valueChanges?.subscribe(v => {\r\n if (document.activeElement !== this.el.nativeElement) {\r\n this.formatProgrammatic(v);\r\n }\r\n });\r\n }\r\n\r\n private formatProgrammatic(value: any) {\r\n if (value == null || value === '') {\r\n this.el.nativeElement.value = '';\r\n return;\r\n }\r\n\r\n const str = Number(value).toFixed(this.decimalPlaces);\r\n this.el.nativeElement.value = str;\r\n }\r\n}\r\n","/// <reference path=\"../types/coreui-pro.d.ts\" />\r\n\r\nimport { Directive, ElementRef, HostListener, inject, Input } from '@angular/core';\r\n\r\nimport { Tooltip } from '@coreui/coreui-pro';\r\n\r\n@Directive({ selector: '[wsShowTooltipIfTruncated]', standalone: true })\r\nexport class ShowTooltipIfTruncatedDirective {\r\n @Input('wsShowTooltipIfTruncated') tooltipText: string = '';\r\n private el = inject(ElementRef);\r\n\r\n constructor() {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (!this.isTextTruncated()) {\r\n return;\r\n }\r\n Tooltip.getOrCreateInstance(this.el.nativeElement, {\r\n trigger: 'manual',\r\n title: this.tooltipText\r\n }).show();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n Tooltip.getOrCreateInstance(this.el.nativeElement)?.hide();\r\n }\r\n\r\n private isTextTruncated(): boolean {\r\n const el = this.el.nativeElement;\r\n return el.scrollWidth > el.clientWidth;\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { MultiSelectComponent } from '@coreui/angular-pro';\r\nimport { IColorOption } from '../interface/multi-forms.interface';\r\n\r\n@Directive({\r\n selector: '[wsMultiSelectStyler]',\r\n standalone: true\r\n})\r\nexport class MultiSelectStylerDirective implements OnInit, OnDestroy {\r\n private ngControl = inject(NgControl, { optional: true });\r\n private renderer = inject(Renderer2);\r\n private el = inject(ElementRef);\r\n private mutationObserver?: MutationObserver;\r\n\r\n @Input() wsMultiSelectStyler: boolean = true;\r\n @Input() options: IColorOption[] = [];\r\n private multiSelect = inject(MultiSelectComponent, { optional: true });\r\n\r\n ngOnInit() {\r\n if (!this.wsMultiSelectStyler) return;\r\n\r\n if (!this.ngControl) {\r\n return;\r\n }\r\n\r\n // Initial update\r\n setTimeout(() => this.updateSelectedItem(), 0);\r\n\r\n // Watch for control value changes\r\n this.ngControl.valueChanges?.subscribe(() => {\r\n setTimeout(() => this.updateSelectedItem(), 0);\r\n });\r\n\r\n this.setupMutationObserver();\r\n }\r\n\r\n private setupMutationObserver() {\r\n const container = this.getSelectionContainer();\r\n if (!container) return;\r\n\r\n this.mutationObserver = new MutationObserver(() => {\r\n this.updateSelectedItem();\r\n });\r\n\r\n this.mutationObserver.observe(container, {\r\n childList: true,\r\n subtree: true\r\n });\r\n }\r\n\r\n private getSelectionContainer(): HTMLElement | null {\r\n return this.el.nativeElement.querySelector('.form-multi-select-selection');\r\n }\r\n\r\n private updateSelectedItem() {\r\n const container = this.getSelectionContainer();\r\n if (!container) return;\r\n\r\n // Clear existing custom element\r\n const existingItem = container.querySelector('.color-box');\r\n if (existingItem) {\r\n existingItem.remove();\r\n }\r\n\r\n const selectedValue = this.ngControl?.value;\r\n\r\n if (!selectedValue) return;\r\n\r\n const textElement = container.querySelector('.form-multi-select-text');\r\n if (!textElement) return;\r\n\r\n const option = this.options.find(opt => opt.label === selectedValue);\r\n if (!option) {\r\n return;\r\n }\r\n // const option = { color: 'red'};\r\n this.renderer.setStyle(container, 'flex-wrap', 'unset');\r\n this.renderer.addClass(container, 'gap-2');\r\n\r\n // Create and insert color box\r\n const colorBox = this.renderer.createElement('span');\r\n this.renderer.addClass(colorBox, 'color-box');\r\n this.renderer.setStyle(colorBox, 'background-color', option.value);\r\n this.renderer.insertBefore(textElement.parentNode, colorBox, textElement);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.mutationObserver?.disconnect();\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { IConfig } from '../interface/api-response.interface';\r\n\r\n// Output: \"2024-10-02 15:43:58\"\r\nexport function convertToISOnString(date: Date): string {\r\n if (!date) return '';\r\n\r\n const dateString = date instanceof Date ? date.toISOString() : date;\r\n if (dateString.includes('T')) {\r\n return dateString.replace('T', ' ').split('.')[0];\r\n }\r\n return dateString;\r\n}\r\n\r\n// defaultDateFormat = 'DD/MM/YYYY';\r\n// Output: \"02/10/2024\"\r\nexport function regionalDateFormat(date: Date): string {\r\n if (!date) return '';\r\n\r\n const config = (window as any).config as IConfig;\r\n const month = ('0' + (date.getMonth() + 1)).slice(-2);\r\n const day = ('0' + date.getDate()).slice(-2);\r\n const year = date.getFullYear();\r\n\r\n switch (config.defaultDateFormat) {\r\n case 'MM/DD/YYYY':\r\n return `${month}/${day}/${year}`;\r\n case 'DD/MM/YYYY':\r\n return `${day}/${month}/${year}`;\r\n case 'YYYY/MM/DD':\r\n return `${year}/${month}/${day}`;\r\n default:\r\n return `${month}/${day}/${year}`;\r\n }\r\n}\r\n\r\n// convertIsoToFormat(date, 'YYYY/MM/DD');\r\n// Output: \"2024/10/02\"\r\nexport function convertIsoToFormat(date: string | Date, dateFormat?: string): string {\r\n if (!date) return '';\r\n\r\n const config = (window as any).config as IConfig;\r\n let format: any;\r\n if (dateFormat) format = dateFormat;\r\n else format = config.defaultDateFormat;\r\n\r\n const dateObj = new Date(date);\r\n\r\n const year = dateObj.getFullYear();\r\n const month = String(dateObj.getMonth() + 1).padStart(2, '0');\r\n const day = String(dateObj.getDate()).padStart(2, '0');\r\n return format.replace('YYYY', String(year)).replace('MM', month).replace('DD', day);\r\n}\r\n\r\n// Output: 'Oct 2, 2024, 3:43:58 PM'\r\nexport function convertDateShort(dateString: string): string {\r\n if (!dateString) {\r\n return '';\r\n }\r\n const date = new Date(dateString);\r\n return date.toLocaleString('en-US', {\r\n month: 'short',\r\n day: 'numeric',\r\n year: 'numeric',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n hour12: true\r\n });\r\n}\r\n\r\nexport type TimeOption = {\r\n value: string;\r\n label: string;\r\n};\r\n\r\nexport function generateTimeOptions(): TimeOption[] {\r\n const times: TimeOption[] = [];\r\n\r\n for (let hour = 0; hour < 24; hour++) {\r\n for (let minute = 0; minute < 60; minute += 15) {\r\n const hour12 = hour % 12 === 0 ? 12 : hour % 12;\r\n const ampm = hour < 12 ? 'am' : 'pm';\r\n\r\n times.push({\r\n value: `${hour},${minute}`,\r\n label: `${hour12}:${minute.toString().padStart(2, '0')}${ampm}`\r\n });\r\n }\r\n }\r\n\r\n return times;\r\n}\r\n\r\n// Output: '\"20:33:00\"'\r\nexport function getTimeValueFromDateTime(isoString: string): string {\r\n const d = new Date(isoString); // \"2025-12-16T20:33:00.000Z\"\r\n\r\n const h = d.getHours().toString().padStart(2, '0');\r\n const m = d.getMinutes().toString().padStart(2, '0');\r\n const s = d.getSeconds().toString().padStart(2, '0');\r\n\r\n return `${h}:${m}:${s}`; \r\n}\r\n","import { Component, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { generateTimeOptions } from '../../../helpers/dateTime.helpers';\r\n\r\n@Component({\r\n selector: 'app-date-time-picker',\r\n templateUrl: './date-time-picker.component.html',\r\n standalone: false,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimePickerComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class DateTimePickerComponent implements ControlValueAccessor {\r\n date: Date | null = null;\r\n timeValue: string | null = null;\r\n disabled = false;\r\n\r\n readonly timeDropdwons = generateTimeOptions();\r\n readonly DEFAULT_TIME = '0,0'; // 12:00 AM\r\n\r\n private onChange = (_: Date | null) => {};\r\n private onTouched = () => {};\r\n\r\n writeValue(value: Date | null): void {\r\n if (!value) {\r\n this.date = null;\r\n this.timeValue = null;\r\n return;\r\n }\r\n\r\n const inputDate = value instanceof Date ? value : new Date(value);\r\n\r\n // ********** FIX FOR COREUI DATE PICKER (LOCAL TIME REPRESENTATION) **********\r\n // Get Y, M, D from the UTC value to ensure the correct day is selected,\r\n // then create a new Date object for the start of that day in the LOCAL time zone.\r\n const year = inputDate.getUTCFullYear();\r\n const month = inputDate.getUTCMonth();\r\n const day = inputDate.getUTCDate();\r\n\r\n // this.date must be a NEW Date reference for the picker to recognize the change\r\n this.date = new Date(year, month, day);\r\n // *****************************************************************************\r\n\r\n // FIX for Time (Using UTC getters and normalization)\r\n const h = inputDate.getUTCHours();\r\n let m = inputDate.getUTCMinutes();\r\n\r\n m = Math.round(m / 15) * 15;\r\n if (m === 60) {\r\n m = 0;\r\n }\r\n\r\n this.timeValue = `${h},${m}`;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onDateChange(date: Date | null) {\r\n if (!date) return;\r\n\r\n this.date = date;\r\n\r\n if (!this.timeValue) {\r\n this.timeValue = this.DEFAULT_TIME;\r\n }\r\n\r\n this.emitValue();\r\n }\r\n\r\n onTimeChange(value: string) {\r\n this.timeValue = value;\r\n this.emitValue();\r\n }\r\n\r\n private emitValue() {\r\n if (!this.date || !this.timeValue) {\r\n this.onChange(null);\r\n return;\r\n }\r\n\r\n const [h, m] = this.timeValue.split(',').map(Number);\r\n\r\n // Create a new Date object based on the selected date (which is a local midnight)\r\n // The key here is to use the UTC setters to apply the time portion\r\n // so the final output is a UTC timestamp as expected by the parent form.\r\n const combined = new Date(this.date);\r\n combined.setUTCHours(h, m, 0, 0);\r\n\r\n this.onChange(combined);\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"row g-3 align-items-end\">\r\n <div class=\"col-12 col-md-6\">\r\n <c-date-picker\r\n [date]=\"date\"\r\n [disabled]=\"disabled\"\r\n (valueChange)=\"onDateChange($event)\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n [value]=\"date\"\r\n [calendarDate]=\"date\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6\">\r\n <select cSelect class=\"form-select\" [value]=\"timeValue\" [disabled]=\"disabled\" (change)=\"onTimeChange($any($event.target).value)\">\r\n @if (!date) {\r\n <option value=\"\">Select time</option>\r\n }\r\n @for (time of timeDropdwons; track time.value) {\r\n <option [value]=\"time.value\">\r\n {{ time.label }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n</div>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { FormFieldType, IFieldConfig, IFormConfig, IFormSubmissionEmit, IFormValidations } from './multi-form.interface';\r\nimport Swal from 'sweetalert2';\r\nimport { ColorsCodes } from '../../constants/color.constants';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-multi-form',\r\n templateUrl: './multi-form.component.html',\r\n styleUrl: './multi-form.component.scss',\r\n standalone: false\r\n})\r\nexport class MultiFormComponent implements OnInit, OnChanges {\r\n private readonly formBuilder = inject(FormBuilder);\r\n readonly configurationService = inject(ConfigurationServiceLib);\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n @Input() config!: IFormConfig;\r\n @Input() showUnsavedFlags: boolean;\r\n @Input() currentTableGridsSelectedIndex!: number;\r\n @Input() formId: string;\r\n\r\n @Output() fieldAction = new EventEmitter<{ action: string; field: IFieldConfig; value?: any }>();\r\n @Output() formSavedUnsavedListen: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() selectionChangeEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n public multiForm: FormGroup;\r\n public isFormSubmitted: boolean;\r\n private initialFormValues: any;\r\n\r\n public isFormSaved: boolean = false;\r\n public isFormSavedModalActive: boolean = false;\r\n private isSelectionChange: boolean = false;\r\n inputType = {\r\n colorSelect: 'color-select'\r\n };\r\n public colorCodes$ = ColorsCodes;\r\n public FormFieldType = FormFieldType;\r\n today = new Date();\r\n\r\n constructor() {\r\n this.multiForm = this.formBuilder.group({});\r\n this.isFormSubmitted = false;\r\n this.showUnsavedFlags = false;\r\n this.formId = '';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buildFormControls();\r\n this.saveInitialFormValues();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['config'] && !changes['config'].isFirstChange()) {\r\n if (this.showUnsavedFlags) {\r\n if (this.hasUnsavedChanges() && !this.isFormSaved && !this.isSelectionChange) {\r\n Swal.fire({\r\n icon: 'warning',\r\n title: 'Do you want to save the changes?',\r\n showDenyButton: true,\r\n confirmButtonText: 'Save',\r\n denyButtonText: `Don't save`\r\n }).then((result: any) => {\r\n if (result.isConfirmed) {\r\n this.proceedToSaveUnsavedForm();\r\n } else if (result.isDenied) {\r\n this.proceedWithoutSavingForm();\r\n }\r\n });\r\n return;\r\n }\r\n this.updateFormControls();\r\n } else {\r\n this.updateFormControls();\r\n }\r\n }\r\n }\r\n\r\n private buildFormControls(): void {\r\n if (this.config?.rows?.length) {\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n\r\n const validators = this.getValidators(field.validations);\r\n if (field.type === FormFieldType.Checkbox) {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control({ value: this.getTruthyOrFalsy(field.value) || false, disabled: this.shouldBeReadOnly(field) }, validators)\r\n );\r\n } else if (field.type === FormFieldType.Date) {\r\n // If field value is \"\", dont set the default advance date\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control(\r\n {\r\n value: field?.value !== '' ? this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '') : '',\r\n disabled: this.shouldBeReadOnly(field)\r\n },\r\n validators\r\n )\r\n );\r\n } else if (field.type === FormFieldType.Float) {\r\n this.multiForm.addControl(\r\n field.controlName,\r\n this.formBuilder.control(\r\n {\r\n value: field?.value !== '' ? this.updateFloatValue(field.value) : '',\r\n disabled: this.shouldBeReadOnly(field)\r\n },\r\n validators\r\n )\r\n );\r\n } else {\r\n this.multiForm.addControl(field.controlName, this.formBuilder.control({ value: field?.value || '', disabled: this.shouldBeReadOnly(field) }, validators));\r\n }\r\n });\r\n });\r\n }\r\n\r\n }\r\n\r\n /** Reload the field action */\r\n onClickFieldAction(action: any, field: IFieldConfig) {\r\n this.fieldAction.emit({ action: 'reload', field });\r\n }\r\n\r\n private updateFormControls(): void {\r\n if (!this.config?.rows?.length) return;\r\n\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n\r\n const validators = this.getValidators(field.validations);\r\n let control = this.multiForm.get(field.controlName);\r\n\r\n // If control does not exist, add it as enabled\r\n if (!control) {\r\n let initialValue: any = '';\r\n if (field.type === FormFieldType.Checkbox) {\r\n initialValue = this.getTruthyOrFalsy(field.value) || false;\r\n } else if (field.type === FormFieldType.Date || field.type === FormFieldType.NewDate) {\r\n initialValue = field?.value ? new Date(field.value) : this.setDefaultAdvanceDate(new Date(), field?.validations?.defaultAdvance || '');\r\n } else if (field.type === FormFieldType.Float) {\r\n initialValue = field?.value ? this.updateFloatValue(field.value) : '';\r\n } else {\r\n initialValue = field.value || '';\r\n }\r\n control = this.formBuilder.control(initialValue, { validators, nonNullable: true });\r\n this.multiForm.addControl(field.controlName, control);\r\n }\r\n\r\n // Always enable before setting value\r\n control.enable({ emitEvent: false });\r\n\r\n // Set value\r\n if (field.type === FormFieldType.Checkbox) {\r\n control.setValue(this.getTruthyOrFalsy(field.value) || false, { emitEvent: false });\r\n } else if (field.type === FormFieldType.Date || field.type === FormFieldType.NewDate) {\r\n control.setValue(field?.value ? new Date(field.value) : '', { emitEvent: false });\r\n } else if (field.type === FormFieldType.Float) {\r\n control.setValue(field?.value ? this.updateFloatValue(field.value) : '', { emitEvent: false });\r\n } else {\r\n control.setValue(field.value || '', { emitEvent: false });\r\n }\r\n\r\n // Disable if readonly\r\n const isReadOnly = this.shouldBeReadOnly(field);\r\n if (isReadOnly) {\r\n control.disable({ emitEvent: false });\r\n }\r\n });\r\n });\r\n this.saveInitialFormValues();\r\n this.isFormSaved = false;\r\n this.multiForm.markAsPristine();\r\n }\r\n\r\n public getTruthyOrFalsy(value: any) {\r\n return value === '1' || value === 1 ? true : false;\r\n }\r\n\r\n private getValidators(validations?: IFormValidations) {\r\n const validators: any = [];\r\n\r\n if (validations) {\r\n if (validations.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (validations.minLength) {\r\n validators.push(Validators.minLength(validations.minLength));\r\n }\r\n if (validations.maxLength) {\r\n validators.push(Validators.maxLength(validations.maxLength));\r\n }\r\n if (validations.pattern) {\r\n validators.push(Validators.pattern(validations.pattern));\r\n }\r\n if (validations.min) {\r\n validators.push(Validators.min(validations.min));\r\n }\r\n if (validations.max) {\r\n validators.push(Validators.max(validations.max));\r\n }\r\n }\r\n\r\n return validators;\r\n }\r\n\r\n /** Get the form values */\r\n public getFormValues(): IFormSubmissionEmit {\r\n this.isFormSubmitted = true;\r\n this.isFormSaved = true;\r\n const formSubmissionEmit = { isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls };\r\n return formSubmissionEmit;\r\n }\r\n\r\n /** Reset the form */\r\n public resetForm(): void {\r\n this.multiForm.reset();\r\n this.isFormSubmitted = false;\r\n }\r\n\r\n /**Set Value to form */\r\n public setValue(control: string, value: any): void {\r\n this.multiForm.controls[control].setValue(value);\r\n }\r\n\r\n /**Get Value from form */\r\n public getValue(control: string): any {\r\n return this.multiForm.controls[control].value;\r\n }\r\n\r\n /**Get Form Control */\r\n public getFormControl(control: string): any {\r\n return this.multiForm.controls[control];\r\n }\r\n\r\n private hasUnsavedChanges(): boolean {\r\n return JSON.stringify(this.multiForm.getRawValue()) !== JSON.stringify(this.initialFormValues);\r\n }\r\n\r\n private saveInitialFormValues(): void {\r\n this.initialFormValues = this.multiForm.getRawValue();\r\n }\r\n\r\n public proceedToSaveUnsavedForm(): void {\r\n this.formSavedUnsavedListen.emit({ isValid: this.multiForm.valid, values: this.multiForm.getRawValue(), controls: this.multiForm.controls });\r\n }\r\n\r\n public proceedWithoutSavingForm(): void {\r\n this.formSavedUnsavedListen.emit(null);\r\n this.updateFormControls();\r\n }\r\n\r\n public onValueChange(event: any, control: string): void {\r\n this.selectionChangeEvent.emit({ control, value: event });\r\n this.isSelectionChange = true;\r\n }\r\n\r\n public onDateValueChange(value: any, control: string): void {\r\n const stopControl: IFieldConfig = this.findStopControl();\r\n if (stopControl) {\r\n if (control === '@start' && value && stopControl?.validations?.defaultAdvance) {\r\n const startDate = new Date(value);\r\n if (this.multiForm.contains('@stop')) {\r\n this.multiForm.controls['@stop'].setValue(this.setDefaultAdvanceDate(startDate, stopControl?.validations?.defaultAdvance));\r\n }\r\n }\r\n }\r\n }\r\n\r\n // public onDateChange(event: any, controlName: string): void {\r\n // const control = this.multiForm.get(controlName);\r\n // if (control && event && event.toString() !== control.value?.toString()) {\r\n // // Use setTimeout to avoid NG0600 signal error if this is called during a signal update cycle\r\n // setTimeout(() => {\r\n // control.setValue(event);\r\n // this.onDateValueChange(event, controlName);\r\n // });\r\n // }\r\n // }\r\n\r\n public onEditionChange(event: any): void {\r\n const controlNameWithAt = '@edname';\r\n const controlNameWithoutAt = 'edname';\r\n\r\n if (this.multiForm.contains(controlNameWithAt)) {\r\n this.multiForm.controls[controlNameWithAt].setValue(event);\r\n } else if (this.multiForm.contains(controlNameWithoutAt)) {\r\n this.multiForm.controls[controlNameWithoutAt].setValue(event);\r\n } else {\r\n this.multiForm.addControl(controlNameWithAt, this.formBuilder.control(event));\r\n }\r\n }\r\n\r\n public handleSearch(field: IFieldConfig, keyword: any) {\r\n const fieldConfig = field.config;\r\n if (fieldConfig) {\r\n this.jsonrpcService.postJsonRpcRequest(fieldConfig.method, { keyword }).subscribe((response: any) => {\r\n field.options = response?.result || [];\r\n });\r\n }\r\n }\r\n\r\n public setDefaultAdvanceDate(currentDate: Date, defaultAdvance: string): any {\r\n if (defaultAdvance === 'weekly') {\r\n return this.advanceDate(currentDate, 6);\r\n } else if (defaultAdvance === 'monthly') {\r\n const month = currentDate.getMonth();\r\n const year = currentDate.getFullYear();\r\n\r\n // Get days in current month\r\n const daysInMonth = new Date(year, month + 1, 0).getDate();\r\n\r\n let daysToAdd = 30;\r\n if (daysInMonth === 31) {\r\n daysToAdd = 30;\r\n } else if (daysInMonth === 30) {\r\n daysToAdd = 29;\r\n } else if (month === 1) {\r\n const isLeap = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n daysToAdd = isLeap ? 28 : 27;\r\n }\r\n\r\n return this.advanceDate(currentDate, daysToAdd);\r\n } else if (defaultAdvance === 'quarterly') {\r\n return this.advanceDate(currentDate, 90);\r\n } else if (defaultAdvance === 'halfyearly') {\r\n return this.advanceDate(currentDate, 180);\r\n } else if (defaultAdvance === 'yearly') {\r\n return this.advanceDate(currentDate, 365);\r\n } else {\r\n return this.advanceDate(currentDate, 0);\r\n }\r\n }\r\n\r\n private advanceDate(currentDate: Date, advancedBy: number): any {\r\n if (advancedBy || advancedBy === 0) {\r\n const advanceDate = new Date(currentDate.setDate(currentDate.getDate() + advancedBy));\r\n return advanceDate;\r\n }\r\n }\r\n\r\n private findStopControl(): any {\r\n for (const row of this.config.rows) {\r\n for (const field of row) {\r\n if (field.controlName === '@stop') {\r\n return field;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Determines if a field should be read-only based on its configuration\r\n * @param field The field configuration\r\n * @returns boolean indicating if the field should be read-only\r\n */\r\n private shouldBeReadOnly(field: IFieldConfig): boolean {\r\n // Check explicit readonly validation\r\n if (field?.validations?.readonly) {\r\n return true;\r\n }\r\n\r\n // Check readonlyIfNotEmpty - field is disabled if it has a value\r\n if (field?.readonlyIfNotEmpty && this.fieldHasValue(field)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if a field currently has a value\r\n * @param field The field configuration\r\n * @returns boolean indicating if the field has a value\r\n */\r\n private fieldHasValue(field: IFieldConfig): boolean {\r\n const control = this.multiForm.get(field.controlName);\r\n if (!control) {\r\n // Fallback to initial value if control doesn't exist yet\r\n const value = field.value;\r\n return value !== undefined && value !== null && value !== '';\r\n }\r\n\r\n const currentValue = control.value;\r\n return currentValue !== undefined && currentValue !== null && currentValue !== '';\r\n }\r\n\r\n /**\r\n * Updates the readonly state for all fields based on their current values and configurations\r\n * This can be called externally when field values change dynamically\r\n */\r\n public updateReadonlyStates(): void {\r\n if (!this.config?.rows?.length) return;\r\n\r\n this.config.rows.forEach(row => {\r\n row.forEach(field => {\r\n if (field?.type === FormFieldType.Separator || field?.type === FormFieldType.FormHeader) return;\r\n\r\n const control = this.multiForm.get(field.controlName);\r\n if (!control) return;\r\n\r\n const shouldBeReadOnly = this.shouldBeReadOnly(field);\r\n\r\n if (shouldBeReadOnly && !control.disabled) {\r\n control.disable({ emitEvent: false });\r\n } else if (!shouldBeReadOnly && control.disabled) {\r\n control.enable({ emitEvent: false });\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Set precision for float type\r\n * @param value\r\n * @returns\r\n */\r\n private updateFloatValue(value: unknown): string | null {\r\n if (value == null || value === '') {\r\n return null;\r\n }\r\n\r\n const precision = this.configurationService?.allConfigValues()?.formConfig?.formValidations?.defaultDecimalPrecision ?? 2;\r\n\r\n if (typeof value === 'number') {\r\n return Number.isFinite(value) ? value.toFixed(precision) : null;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n const trimmed = value.trim();\r\n if (trimmed === '') return null;\r\n\r\n const num = parseFloat(trimmed);\r\n return Number.isFinite(num) ? num.toFixed(precision) : null;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","<form [formGroup]=\"multiForm\" cForm class=\"multiform-wrapper\" wsCircularFocus>\r\n @for (row of config?.rows; track $index; let isLast = $last) {\r\n <div class=\"row gx-3 multiform-inner\" [id]=\"formId\" [ngClass]=\"config?.rows?.length > 1 && !isLast ? 'border-bottom mb-3' : ''\">\r\n @for (field of row; track $index) {\r\n @if (field?.type !== FormFieldType.Separator && field?.type !== FormFieldType.FormHeader) {\r\n <div class=\"mb-3\" [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\" [attr.data-id]=\"field.controlName\">\r\n @if (multiForm.controls[field.controlName]) {\r\n <!-- Label -->\r\n @if (field.label && field.type !== FormFieldType.Checkbox) {\r\n <label\r\n [wsShowTooltipIfTruncated]=\"field.label\"\r\n cLabel\r\n class=\"mb-1 label-multiform single-line-label\"\r\n [for]=\"field.controlName\"\r\n [ngClass]=\"{ 'text-danger': isFormSubmitted && multiForm.controls[field.controlName]?.errors }\"\r\n [ngStyle]=\"field.styles?.label\"\r\n >{{ field.label }}\r\n @if (field?.validations?.required || false) {\r\n <strong class=\"text-danger\">*</strong>\r\n }\r\n </label>\r\n }\r\n\r\n <!-- Text, Email, Number Inputs -->\r\n @if (\r\n field.type === FormFieldType.Text ||\r\n field.type === FormFieldType.Email ||\r\n field.type === FormFieldType.Number ||\r\n field.type === FormFieldType.Password ||\r\n field.type === FormFieldType.Url ||\r\n field.type === FormFieldType.Tel\r\n ) {\r\n <div class=\"position-relative w-100\">\r\n <input\r\n [type]=\"field.type\"\r\n cFormControl\r\n [formControlName]=\"field.controlName\"\r\n [id]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors,\r\n 'no-label-margin': !field.label\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n\r\n @if (field.actionButton) {\r\n <button\r\n type=\"button\"\r\n [cTooltip]=\"field.actionButton?.tooltip\"\r\n tooltipPlacement=\"top\"\r\n cButton\r\n color=\"primary\"\r\n variant=\"outline\"\r\n aria-label=\"action\"\r\n class=\"d-flex position-absolute top-50 end-0 translate-middle-y me-2 btn p-0 border-0 bg-transparent\"\r\n (click)=\"onClickFieldAction($event, field)\">\r\n <svg cIcon class=\"text-primary\" [name]=\"field.actionButton.icon\" size=\"xl\"></svg>\r\n </button>\r\n }\r\n @if (multiForm.controls[field.controlName]?.touched || isFormSubmitted) {\r\n @if (multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['min']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Minimum value {{ field?.validations?.min }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['max']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">Maximum value {{ field?.validations?.max }} is allowed</small>\r\n }\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Select Inputs -->\r\n @else if (field.type === FormFieldType.Select || field.type === inputType?.colorSelect) {\r\n <ng-container>\r\n <c-multi-select\r\n [multiple]=\"field?.multiple || false\"\r\n [allowCreateOptions]=\"field?.allowCreateOptions || false\"\r\n [search]=\"field?.allowCreateOptions || field?.allowSearch || field?.search || false\"\r\n [searchNoResultsLabel]=\"field?.searchNoResultsLabel || 'No results found'\"\r\n [clearSearchOnSelect]=\"true\"\r\n [selectionType]=\"field?.selectionType || 'tags'\"\r\n [cleaner]=\"field?.allowCleaner === false ? false : true\"\r\n [formControlName]=\"field.controlName\"\r\n [placeholder]=\"field.placeholder || 'Select'\"\r\n [wsMultiSelectStyler]=\"field.type === inputType?.colorSelect\"\r\n [options]=\"colorCodes$\"\r\n [optionsMaxHeight]=\"400\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (searchValueChange)=\"handleSearch(field, $event)\"\r\n (valueChange)=\"onValueChange($event, field.controlName)\"\r\n [ngStyle]=\"field.styles?.field\">\r\n @if (field.type === inputType?.colorSelect) {\r\n @for (option of colorCodes$; track $index) {\r\n <c-multi-select-option [value]=\"option?.label\">\r\n <label class=\"d-flex gap-2\">\r\n <span class=\"color-box\" [style.background-color]=\"option?.value\"></span>\r\n {{ option.label }}\r\n </label>\r\n </c-multi-select-option>\r\n }\r\n } @else {\r\n @for (option of field.options; track $index) {\r\n <c-multi-select-option [value]=\"option?.value\">\r\n {{ option.label }}\r\n </c-multi-select-option>\r\n }\r\n }\r\n </c-multi-select>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <!-- Date input -->\r\n @else if (field.type === FormFieldType.Date) {\r\n <ng-container>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"field?.label || 'Select Date'\"\r\n class=\"form-control\"\r\n [ngClass]=\"{\r\n 'form-invalid': (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n (bsValueChange)=\"onDateValueChange($event, field.controlName)\"\r\n [formControlName]=\"field.controlName\"\r\n [dateInputFormat]=\"configurationService?.allConfigValues()?.defaultDateFormat || 'MM/DD/YYYY'\"\r\n [bsConfig]=\"{\r\n containerClass: 'pongrass-red-datepicker',\r\n showWeekNumbers: false,\r\n adaptivePosition: true,\r\n useUtc: false\r\n }\"\r\n bsDatepicker\r\n [ngStyle]=\"field.styles?.field\"\r\n [minDate]=\"field?.validations?.minDate || ''\"\r\n [maxDate]=\"field?.validations?.maxDate || ''\">\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n\r\n } @else if (field.type === FormFieldType.NewDate) {\r\n <ng-container>\r\n <c-date-picker\r\n [formControlName]=\"field.controlName\"\r\n [calendarDate]=\"multiForm.controls[field.controlName]?.value\"\r\n inputReadOnly=\"true\"\r\n [showAdjacentDays]=\"false\"\r\n locale=\"en-US\">\r\n </c-date-picker>\r\n </ng-container>\r\n }\r\n\r\n <!-- Date Time input -->\r\n @else if (field.type === FormFieldType.Datetime) {\r\n <app-date-time-picker [formControlName]=\"field.controlName\"></app-date-time-picker>\r\n }\r\n\r\n <!-- Textarea -->\r\n @else if (field.type === FormFieldType.Textarea) {\r\n <ng-container>\r\n <textarea\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n [rows]=\"field?.textareaRows || 4\"\r\n [columns]=\"field?.textareaColumns || 4\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [formControlName]=\"field.controlName\"\r\n [ngStyle]=\"field.styles?.field\"></textarea>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n <!-- Checkbox -->\r\n @else if (field.type === FormFieldType.Checkbox) {\r\n <div class=\"no-label-margin\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.label }}</label>\r\n </div>\r\n\r\n } @else if (field.type === FormFieldType.Switch) {\r\n <c-form-check sizing=\"lg\" [switch]=\"true\">\r\n <input cFormCheckInput [id]=\"field.controlName\" type=\"checkbox\" [formControlName]=\"field.controlName\" [ngStyle]=\"field.styles?.field\" />\r\n <label cFormCheckLabel [for]=\"field.controlName\" class=\"ms-2\" [ngStyle]=\"field.styles?.label\">{{ field.info }}</label>\r\n </c-form-check>\r\n }\r\n <!-- Decimal input -->\r\n @else if (field.type === FormFieldType.Float) {\r\n <ng-container>\r\n <input\r\n cFormControl\r\n [id]=\"field.controlName\"\r\n type=\"number\"\r\n class=\"me-2\"\r\n [formControlName]=\"field.controlName\"\r\n [wsDecimalInput]=\"\r\n field.validations?.precision || configurationService?.allConfigValues()?.formConfig?.formValidations?.defaultDecimalPrecision || 2\r\n \"\r\n [wsAcceptStringInput]=\"false\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [ngClass]=\"{\r\n 'form-invalid border-danger border border-2':\r\n (multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors\r\n }\"\r\n [min]=\"field.validations?.min\"\r\n [max]=\"field.validations?.max\"\r\n [ngStyle]=\"field.styles?.field\" />\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['pattern']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is invalid</small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['minlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Minimum length {{ field?.validations?.minLength }} characters is required\r\n </small>\r\n } @else if (multiForm.controls[field.controlName]?.errors?.['maxlength']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">\r\n Maximum length {{ field?.validations?.maxLength }} characters is allowed\r\n </small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Edition) {\r\n <ng-container>\r\n <prg-ws-edition-list-grouped\r\n (selectedEditionsChange)=\"onEditionChange($event)\"\r\n [multiple]=\"field?.multiple === false ? false : true\"\r\n [hasFormError]=\"isFormSubmitted && multiForm.controls[field.controlName]?.errors\">\r\n </prg-ws-edition-list-grouped>\r\n @if ((multiForm.controls[field.controlName]?.touched || isFormSubmitted) && multiForm.controls[field.controlName]?.errors) {\r\n @if (multiForm.controls[field.controlName]?.errors?.['required']) {\r\n <small class=\"text-danger fst-italic form-invalid-label\">{{ field?.label }} is required</small>\r\n }\r\n }\r\n </ng-container>\r\n } @else if (field.type === FormFieldType.Timepicker) {\r\n <c-time-picker [formControlName]=\"field.controlName\" seconds />\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (field?.type === FormFieldType.Separator) {\r\n <div [class]=\"'field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\"></div>\r\n }\r\n @if (field?.type === FormFieldType.FormHeader) {\r\n <div [class]=\"'fs-6 fw-bold my-2 field-' + field.type\" [ngClass]=\"field.colspan ? 'col-md-' + field.colspan : 'col'\">{{ field?.label }}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n</form>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AutocompleteModule, ButtonModule, DatePickerModule, FormCheckInputDirective, FormModule, InputGroupComponent, ModalModule, MultiSelectModule, TimePickerModule, TooltipModule } from '@coreui/angular-pro';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\r\n\r\nimport { MultiFormComponent } from './multi-form.component';\r\nimport { EditionListGroupedComponent } from '../../components/edition-list-grouped/edition-list-grouped.component';\r\n\r\nimport { CircularFocusDirective } from '../../directives/circular-focus.directive';\r\nimport { DecimalInputDirective } from '../../directives/decimal-input.directive';\r\nimport { ShowTooltipIfTruncatedDirective } from '../../directives/show-tooltip-if-truncated.directive';\r\nimport { MultiSelectStylerDirective } from '../../directives/multi-select-styler.directive';\r\nimport { DateTimePickerComponent } from './date-time-picker/date-time-picker.component';\r\n\r\n@NgModule({\r\n declarations: [MultiFormComponent, DateTimePickerComponent],\r\n imports: [\r\n CircularFocusDirective,\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MultiSelectModule,\r\n FormModule,\r\n IconModule,\r\n InputGroupComponent,\r\n DatePickerModule,\r\n DecimalInputDirective,\r\n ShowTooltipIfTruncatedDirective,\r\n ModalModule,\r\n TooltipModule,\r\n ButtonModule,\r\n BsDatepickerModule,\r\n AutocompleteModule,\r\n FormCheckInputDirective,\r\n EditionListGroupedComponent,\r\n MultiSelectStylerDirective,\r\n TimePickerModule,\r\n ],\r\n exports: [MultiFormComponent, DateTimePickerComponent]\r\n})\r\nexport class MultiFormModule {}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Component, effect, EventEmitter, Input, OnInit, Output, ViewChild, inject } from '@angular/core';\r\nimport { IEmmitedResponse } from './generic-filter-modal.interface';\r\nimport { MultiFormComponent } from '../../modules/multi-form/multi-form.component';\r\nimport { IFormConfig } from '../../modules/multi-form/multi-form.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MultiFormModule } from '../../modules/multi-form/multi-form.module';\r\nimport { ButtonModule, ModalModule } from '@coreui/angular-pro';\r\n\r\n@Component({\r\n selector: 'prg-ws-generic-filter-model',\r\n templateUrl: './generic-filter-model.component.html',\r\n styleUrl: './generic-filter-model.component.scss',\r\n standalone: true,\r\n imports: [CommonModule, MultiFormModule, ModalModule, ButtonModule]\r\n})\r\nexport class GenericFilterModelComponent implements OnInit {\r\n readonly configurationService = inject(ConfigurationServiceLib);\r\n readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n\r\n @Input() filterFormConfiguration: IFormConfig | any = [];\r\n @Input() tableName: string = '';\r\n @Output() sendFilteredData: EventEmitter<IEmmitedResponse>;\r\n\r\n @ViewChild('filterFormComponent') filterFormComponent!: MultiFormComponent;\r\n\r\n public isFilterModalActive: boolean;\r\n\r\n constructor() {\r\n this.isFilterModalActive = false;\r\n this.sendFilteredData = new EventEmitter<IEmmitedResponse>();\r\n\r\n effect(() => {\r\n this.isFilterModalActive = this.configurationService.openFilterModal();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.tableName) throw new Error('Table name is required to filter data.');\r\n }\r\n\r\n public handleFilterModal(event: boolean): void {\r\n this.isFilterModalActive = event;\r\n this.configurationService.openFilterModal.set(this.isFilterModalActive);\r\n }\r\n\r\n public resetFilter(): void {\r\n this.filterFormComponent.resetForm();\r\n this.sendFilteredData.emit({ isReset: true, returnedData: [] });\r\n }\r\n\r\n public async onFilter(): Promise<void> {\r\n const formValues = this.filterAttributesWithValues(this.filterFormComponent.getFormValues().values);\r\n if (Object.keys(formValues).length > 0) {\r\n const tableData = await this.jsonrpcService.getTableList(this.tableName, formValues);\r\n this.sendFilteredData.emit({ isReset: false, returnedData: tableData.result || [] });\r\n this.configurationService.openFilterModal.set(false);\r\n }\r\n }\r\n\r\n private filterAttributesWithValues(object: any): any {\r\n return Object.keys(object)\r\n .filter(key => object[key] !== null && object[key] !== '' && object[key] !== undefined)\r\n .reduce((result: any, key: any) => {\r\n result[key] = object[key];\r\n return result;\r\n }, {});\r\n }\r\n\r\n public close(): void {\r\n this.configurationService.openFilterModal.set(false);\r\n }\r\n}\r\n","<!-- Filter Modal -->\n<c-modal id=\"generic-filter-modal\" [visible]=\"isFilterModalActive\" (visibleChange)=\"handleFilterModal($event)\" size=\"md\" alignment=\"center\" scrollable>\n <c-modal-header>\n <h5 cModalTitle>Advanced Search</h5>\n <!-- <button (click)=\"commonService.openFilterModal.set(false)\" cButtonClose></button> -->\n </c-modal-header>\n <c-modal-body>\n @if (filterFormConfiguration) {\n <app-multi-form [config]=\"filterFormConfiguration\" #filterFormComponent></app-multi-form>\n }\n </c-modal-body>\n <c-modal-footer>\n <button (click)=\"close()\" cButton color=\"secondary\">Close</button>\n <button (click)=\"resetFilter()\" cButton color=\"primary\">Reset</button>\n <button cButton color=\"primary\" (click)=\"onFilter()\">Search</button>\n </c-modal-footer>\n</c-modal>\n","import { IFilterComp } from '@ag-grid-community/core';\r\nimport { ICellRendererComp, ICellEditorComp } from '@ag-grid-community/core';\r\nimport { IFilterAngularComp } from '@ag-grid-community/angular';\r\nimport { CustomSelectFilterComponent } from '../components/ag-grid-renderer/custom-select-filter.component';\r\nimport { AgDateRangeFilterComponent } from '../components/ag-grid-renderer/ag-date-range-filter.component';\r\n\r\ntype AgGridComponentClass = { new(...args: any[]): IFilterComp } | { new(...args: any[]): ICellRendererComp } | { new(...args: any[]): IFilterAngularComp } | { new(...args: any[]): ICellEditorComp };\r\n\r\nexport enum FilterType {\r\n SELECT = 'SELECT_FILTER',\r\n TEXT = 'TEXT_FILTER',\r\n NUMBER = 'NUMBER_FILTER',\r\n DATE = 'DATE_FILTER',\r\n DATE_RANGE = 'DATE_RANGE_FILTER'\r\n}\r\n\r\n// Built-in AG Grid filters\r\nexport const AgGridFilters: Partial<Record<FilterType, string>> = {\r\n [FilterType.TEXT]: 'agTextColumnFilter',\r\n [FilterType.NUMBER]: 'agNumberColumnFilter',\r\n [FilterType.DATE]: 'agDateColumnFilter'\r\n};\r\n\r\n// Custom filters that can be used in the table grid\r\nexport const TABLE_GRID_FILTER_COMPONENTS: Partial<Record<FilterType, AgGridComponentClass>> = {\r\n [FilterType.SELECT]: CustomSelectFilterComponent,\r\n [FilterType.DATE_RANGE]: AgDateRangeFilterComponent,\r\n // Add others as needed\r\n};\r\n","export const MessageLabel = {\n RowPerPage: 'Rows per page'\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n CellValueChangedEvent,\r\n ColumnMovedEvent,\r\n ColumnResizedEvent,\r\n FirstDataRenderedEvent,\r\n GridOptions,\r\n GridReadyEvent,\r\n IColumnLimit,\r\n PaginationChangedEvent,\r\n SortChangedEvent\r\n} from '@ag-grid-community/core';\r\nimport { IColumnStateEvent, IFilterChangeEvent, ITableGridConfiguration, ITableGridState } from './table-grid';\r\nimport { Component, effect, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subject } from 'rxjs';\r\nimport { auditTime, takeUntil } from 'rxjs/operators';\r\nimport { FilterType, AgGridFilters, TABLE_GRID_FILTER_COMPONENTS } from '../../enums/grid.enum';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { MessageLabel } from '../../constants/app.constanta';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { JSONRPCMethods } from '../../enums/jsonrpc-methods.enum';\r\nimport { IAPIResponse } from '../../interface/api-response.interface';\r\nimport { JsonrpcServiceLib } from '../../services/jsonrpc.service';\r\n\r\n@Component({\r\n selector: 'prg-ws-table-grid',\r\n templateUrl: './table-grid.component.html',\r\n styleUrl: './table-grid.component.scss',\r\n standalone: false\r\n})\r\nexport class TableGridComponent implements OnInit, OnChanges, OnDestroy {\r\n private readonly formBuilder = inject(FormBuilder);\r\n private readonly jsonrpcService = inject(JsonrpcServiceLib);\r\n private readonly toastrService = inject(ToastrService);\r\n private readonly configurationService = inject(ConfigurationServiceLib);\r\n\r\n @Input() tableConfiguration!: ITableGridConfiguration;\r\n @Input() columnToolVisible: boolean;\r\n @Input() initialPageNumber: number;\r\n\r\n @Output() tableGridReady: EventEmitter<GridReadyEvent>;\r\n @Output() tableRowSelection: EventEmitter<any>;\r\n @Output() tableRowSelectionChanged: EventEmitter<any>;\r\n @Output() tableRowClicked: EventEmitter<{ event: any; row: any }>;\r\n @Output() columnStateEvent: EventEmitter<IColumnStateEvent>;\r\n @Output() pageChange: EventEmitter<PaginationChangedEvent>;\r\n @Output() filterChanged: EventEmitter<IFilterChangeEvent>;\r\n @Output() cellValueChanged: EventEmitter<CellValueChangedEvent>;\r\n\r\n private gridAPI: GridReadyEvent | undefined;\r\n public columnsListselectionForm!: FormGroup;\r\n public tableGridState: ITableGridState[];\r\n\r\n autoSizeTrigger$ = new Subject<void>();\r\n subscribeUntil$ = new Subject<void>();\r\n\r\n autoSizeStrategy = {\r\n type: 'fitCellContents',\r\n defaultMinWidth: this.configurationService.allConfigValues()?.tableGridConfig?.defaultMinWidth || 100\r\n };\r\n\r\n /**\r\n * Resize all columns to fit the grid width while maintaining their minimum widths.\r\n * This method collects the current widths of all columns and applies them as limits\r\n */\r\n sizeToFit() {\r\n const columnLimits: IColumnLimit[] = [];\r\n this.gridAPI?.api.getColumns()!.forEach(column => {\r\n column.getMaxWidth();\r\n columnLimits.push({\r\n key: column.getColId(),\r\n minWidth: column.getActualWidth()\r\n });\r\n });\r\n this.gridAPI?.api.sizeColumnsToFit({\r\n columnLimits: columnLimits\r\n });\r\n }\r\n\r\n /**\r\n * Automatically resize all columns to fit their content.\r\n * This method collects the current widths of all columns and applies them as limits\r\n * to ensure that the columns are resized based on their content.\r\n */\r\n autoSizeAll(skipHeader: boolean = false): void {\r\n this.gridAPI?.api.autoSizeAllColumns(skipHeader);\r\n this.sizeToFit();\r\n }\r\n\r\n gridOptions: GridOptions = {\r\n onRowDataUpdated: () => {\r\n // Trigger auto-size when row data is updated\r\n // this.autoSizeTrigger$.next();\r\n },\r\n localeText: {\r\n pageSizeSelectorLabel: `${MessageLabel.RowPerPage}:`,\r\n ariaPageSizeSelectorLabel: `${MessageLabel.RowPerPage}`\r\n }\r\n };\r\n\r\n constructor() {\r\n this.tableGridReady = new EventEmitter<GridReadyEvent>();\r\n this.tableRowSelection = new EventEmitter<any>();\r\n this.tableRowSelectionChanged = new EventEmitter<any>();\r\n this.tableRowClicked = new EventEmitter<{ event: any; row: any }>();\r\n this.columnStateEvent = new EventEmitter<IColumnStateEvent>();\r\n this.pageChange = new EventEmitter<PaginationChangedEvent>();\r\n this.filterChanged = new EventEmitter<IFilterChangeEvent>();\r\n this.cellValueChanged = new EventEmitter<CellValueChangedEvent>();\r\n\r\n this.columnToolVisible = false;\r\n this.initialPageNumber = 0;\r\n\r\n this.tableGridState = [];\r\n\r\n effect(() => {\r\n if (this.configurationService.utilsAppliedTheme() === 'dark') {\r\n this.tableConfiguration.tableTheme = `${this.tableConfiguration.themeClass}-dark`;\r\n } else {\r\n this.tableConfiguration.tableTheme = this.tableConfiguration.themeClass;\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['tableConfiguration'] && !changes['tableConfiguration'].firstChange) {\r\n if (this.gridAPI) {\r\n this.gridAPI.api.refreshClientSideRowModel();\r\n }\r\n setTimeout(() => {\r\n this.createColumnState();\r\n this.createColumnsListForm();\r\n }, 0);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createColumnsListForm();\r\n this.gridOptions = {\r\n ...this.gridOptions,\r\n ...this.tableConfiguration.defaultGridOptions\r\n };\r\n\r\n this.autoSizeTrigger$.pipe(auditTime(500), takeUntil(this.subscribeUntil$)).subscribe(() => {\r\n this.autoSizeAll();\r\n });\r\n }\r\n\r\n /** Send event to parent component when Ag Grid is stabilized*/\r\n public onGridReady(event: GridReadyEvent) {\r\n this.gridAPI = event;\r\n this.createColumnState();\r\n this.tableGridReady.emit(event);\r\n }\r\n\r\n /** Send event to parent component when a row is selected */\r\n public onRowSelected(event: any): void {\r\n const selectedRows = this.gridAPI?.api.getSelectedRows();\r\n this.tableRowSelection.emit({ event: event, rows: selectedRows });\r\n }\r\n\r\n /** Send event to parent component when a row is clicked */\r\n onRowClicked(event: any): void {\r\n this.tableRowClicked.emit({ event: event, row: event.data });\r\n }\r\n\r\n /** Send on checkbox selection event event to parent component when row selection is changed */\r\n public onRowSelectionChanged(event: any): void {\r\n if (this.gridAPI) {\r\n const selectedNodes = this.gridAPI.api.getSelectedNodes();\r\n const selectedData = selectedNodes.map(node => node.data);\r\n this.tableRowSelectionChanged.emit(selectedData);\r\n }\r\n }\r\n\r\n /** Create column state on initialization of table grid */\r\n private createColumnState(): void {\r\n if (this.gridAPI) {\r\n if (this.tableConfiguration.initialState) {\r\n this.tableGridState = this.tableConfiguration.initialState;\r\n const initialState = this.tableGridState.map(item => ({\r\n colId: item.key!,\r\n hide: item.visible === null || item.visible === undefined ? false : !item.visible,\r\n width: item.width || this.configurationService.allConfigValues()?.tableGridConfig?.defaultMinWidth,\r\n sort: item.sort || null\r\n }));\r\n\r\n this.gridAPI.api.applyColumnState({\r\n state: initialState,\r\n defaultState: { sort: null }\r\n });\r\n } else {\r\n const state = this.gridAPI.api.getColumnState();\r\n state.forEach((columnState: any) => {\r\n this.tableGridState.push({\r\n key: columnState.colId,\r\n visible: columnState.hide ? !columnState.hide : true,\r\n width: columnState.width,\r\n sort: columnState.sort\r\n });\r\n });\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** Set visibility of columns and send the event and column form to parent component along with last checkbox event data */\r\n public getCheckboxStatus(event: Event, field: string): void {\r\n const isChecked = (event.target as HTMLInputElement).checked;\r\n const columnIndex = this.tableGridState.findIndex(item => item.key === field);\r\n\r\n if (columnIndex > -1) {\r\n this.tableGridState[columnIndex] = {\r\n ...this.tableGridState[columnIndex],\r\n visible: isChecked\r\n };\r\n }\r\n\r\n if (this.gridAPI) {\r\n this.gridAPI.api.setColumnsVisible([field], isChecked);\r\n this.gridAPI.api.autoSizeColumns([field]);\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n\r\n /** Create form group for column tools menu */\r\n private createColumnsListForm(): void {\r\n if (!this.columnToolVisible) return;\r\n if (!this.tableConfiguration.tablename) {\r\n throw new Error('Table name is required for columns tools list');\r\n }\r\n\r\n const controls: any = {};\r\n if (this.tableConfiguration?.columnDefs) {\r\n this.tableConfiguration.columnDefs.forEach(col => {\r\n col.filter = this.getAppliedFilter(col.filter);\r\n });\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n controls[col.key] = [col.visible === null || col.visible === undefined ? true : col.visible];\r\n });\r\n }\r\n\r\n if (Object.entries(controls).length > 0) {\r\n this.columnsListselectionForm = this.formBuilder.group(controls);\r\n }\r\n }\r\n\r\n private getAppliedFilter(filterType: FilterType | undefined): any {\r\n if (!filterType) return undefined;\r\n\r\n // Ensure it's a valid FilterType\r\n if (Object.values(FilterType).includes(filterType)) {\r\n // Check if a custom component exists for this filterType\r\n const customComponent = TABLE_GRID_FILTER_COMPONENTS[filterType as FilterType];\r\n return customComponent ?? AgGridFilters[filterType];\r\n }\r\n\r\n return filterType;\r\n }\r\n\r\n /** On resizing columns, update the tableGridState */\r\n public onColumnResized(event: ColumnResizedEvent | any): void {\r\n if (event.finished && event.column) {\r\n const columnId = event.column!.colId;\r\n const columnWidth = event.column!.actualWidth;\r\n const columnVisible = event.column!.visible;\r\n\r\n const column = this.tableGridState.find(item => item.key === columnId);\r\n\r\n if (column) {\r\n column.width = columnWidth;\r\n column.visible = columnVisible;\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** On moving columns, update the tableGridState */\r\n public onColumnMoved(event: ColumnMovedEvent): void {\r\n if (event.finished) {\r\n const { column, toIndex } = event;\r\n\r\n if (!column || toIndex === undefined || toIndex === null) {\r\n return;\r\n }\r\n\r\n const movedColId = column.getColId();\r\n const currentIndex = this.tableGridState.findIndex((col: any) => col.key === movedColId);\r\n\r\n if (currentIndex > -1) {\r\n const [movedColumn] = this.tableGridState.splice(currentIndex, 1);\r\n this.tableGridState.splice(toIndex, 0, movedColumn);\r\n }\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n public onSortChanged(event: SortChangedEvent): void {\r\n if (event.columns) {\r\n event.columns.forEach((col: any) => {\r\n const column = this.tableGridState.find(item => item.key === col.colId);\r\n if (column) {\r\n column.sort = col.sort || null;\r\n }\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /** Emit event when pagination is changed */\r\n public onPaginationChanged(event: PaginationChangedEvent): void {\r\n this.pageChange.emit(event);\r\n }\r\n\r\n /** Emit event when first data is rendered */\r\n public onFirstDataRendered(event: FirstDataRenderedEvent) {\r\n event.api.paginationGoToPage(this.initialPageNumber);\r\n }\r\n\r\n /** Emit event to update table preference */\r\n public updatetablePreference(): void {\r\n this.columnStateEvent.emit({\r\n currentEvent: {},\r\n currentTableState: this.tableGridState\r\n });\r\n }\r\n\r\n /** Reset table preference to default state */\r\n public resetTablePreference(): void {\r\n if (!this.tableConfiguration.tablename) {\r\n throw new Error('Table name is required for columns tools list');\r\n }\r\n\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: this.tableConfiguration.tablename,\r\n maint_action: 'D'\r\n };\r\n\r\n this.jsonrpcService.postJsonRpcRequest(JSONRPCMethods.updateTablePreference, params).subscribe({\r\n next: (response: IAPIResponse<any>) => {\r\n if (response.result) {\r\n this.tableGridState = [];\r\n if (response.result.fields_to_display && response.result.fields_to_display.length > 0) {\r\n this.tableConfiguration.initialState = response.result.fields_to_display;\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = col.visible === null || col.visible === undefined ? true : col.visible;\r\n col.width = col.width;\r\n col.sort = null;\r\n this.tableGridState.push(col);\r\n this.columnsListselectionForm.controls[col.key].setValue(true);\r\n });\r\n\r\n if (this.gridAPI) {\r\n this.gridAPI.api.applyColumnState({\r\n state: this.tableGridState.map(item => ({\r\n colId: item.key!,\r\n hide: item.visible === null || item.visible === undefined ? false : !item.visible,\r\n width: item.width,\r\n sort: item.sort || null,\r\n flex: 1\r\n })),\r\n defaultState: { sort: null },\r\n applyOrder: true\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n } else {\r\n this.toastrService.success('Failed to reset table preference');\r\n }\r\n }\r\n });\r\n }\r\n\r\n /** Reset table preference to default state */\r\n public resetTablePreferenceV2(): void {\r\n if (!this.tableConfiguration?.tablename) {\r\n throw new Error('Table name is required for column tools list');\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = false;\r\n delete col.width;\r\n delete col.sort;\r\n });\r\n\r\n const params = {\r\n uid: +localStorage.getItem(BrowserConstantsEnum.loginUid)!,\r\n table_name: this.tableConfiguration.tablename,\r\n display_options: this.tableGridState\r\n };\r\n\r\n this.jsonrpcService.postJsonRpcRequest(JSONRPCMethods.updateTablePreference, params).subscribe({\r\n next: (response: IAPIResponse<any>) => {\r\n if (response?.result) {\r\n this.handleSuccessfulReset(response.result);\r\n } else {\r\n this.toastrService.error('Failed to reset table preference');\r\n }\r\n },\r\n error: () => {\r\n this.toastrService.error('An error occurred while resetting table preference');\r\n }\r\n });\r\n }\r\n\r\n /** Handle successful reset of table preference */\r\n private handleSuccessfulReset(result: any): void {\r\n this.tableGridState = [];\r\n\r\n const fieldsToDisplay = result.fields_to_display || [];\r\n if (fieldsToDisplay.length > 0) {\r\n this.tableConfiguration.initialState = fieldsToDisplay;\r\n }\r\n\r\n this.tableConfiguration.initialState.forEach((col: any) => {\r\n col.visible = false;\r\n this.tableGridState.push(col);\r\n this.columnsListselectionForm.controls[col.key]?.setValue(false);\r\n });\r\n\r\n this.updateGridState();\r\n }\r\n\r\n /** Update grid state based on the current tableGridState */\r\n private updateGridState(): void {\r\n if (this.gridAPI) {\r\n const columnState: any = this.tableGridState.map(item => ({\r\n colId: item.key,\r\n hide: true,\r\n width: item?.width || this.configurationService.allConfigValues()?.tableGridConfig?.defaultMinWidth || 100,\r\n sort: item.sort || null,\r\n flex: 1\r\n }));\r\n\r\n this.gridAPI.api.applyColumnState({\r\n state: columnState,\r\n defaultState: { sort: null },\r\n applyOrder: true\r\n });\r\n\r\n // this.configurationService.currentTablePreference.set({ tableState: this.tableGridState, tableName: this.tableConfiguration.tablename });\r\n this.configurationService.setTablePreference(this.tableConfiguration.tablename, this.tableGridState);\r\n }\r\n }\r\n\r\n /* Emit event when filter is changed */\r\n public onFilterChanged(params: any) {\r\n const filterModel = params.api.getFilterModel();\r\n const filteredRows: any[] = [];\r\n params.api.forEachNodeAfterFilter((node: any) => {\r\n if (node.data) {\r\n filteredRows.push(node.data);\r\n }\r\n });\r\n const filterChangedParams: IFilterChangeEvent = {\r\n rows: filteredRows,\r\n column: params.columns,\r\n filters: filterModel\r\n };\r\n this.filterChanged.emit(filterChangedParams);\r\n }\r\n\r\n /** Emit event when a cell value is changed */\r\n public onCellValueChanged(event: CellValueChangedEvent): void {\r\n this.cellValueChanged.emit(event);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscribeUntil$.next();\r\n this.subscribeUntil$.complete();\r\n }\r\n}\r\n","<div class=\"row\">\r\n <div class=\"col-12 d-md-flex\">\r\n <div class=\"table-list-wrapper flex-fill\">\r\n <!-- style=\"width: 100%; height: 567px\" -->\r\n <ag-grid-angular\r\n style=\"width: 100%\"\r\n [rowData]=\"tableConfiguration.rows\"\r\n [columnDefs]=\"tableConfiguration.columnDefs\"\r\n [defaultColDef]=\"tableConfiguration.defaultColDef\"\r\n [rowSelection]=\"tableConfiguration.rowSelectionOption\"\r\n [pagination]=\"tableConfiguration.pagination.enabled\"\r\n [paginationPageSize]=\"tableConfiguration.pagination.paginationPageSize\"\r\n [paginationPageSizeSelector]=\"tableConfiguration.pagination.paginationPageSizeSelector\"\r\n [class]=\"[tableConfiguration.tableClasses, tableConfiguration.tableTheme]\"\r\n [selectionColumnDef]=\"tableConfiguration.selectionColumnDef\"\r\n (gridReady)=\"onGridReady($event)\"\r\n (rowSelected)=\"onRowSelected($event)\"\r\n (rowClicked)=\"onRowClicked($event)\"\r\n (columnResized)=\"onColumnResized($event)\"\r\n (columnMoved)=\"onColumnMoved($event)\"\r\n (sortChanged)=\"onSortChanged($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (firstDataRendered)=\"onFirstDataRendered($event)\"\r\n (filterChanged)=\"onFilterChanged($event)\"\r\n (cellValueChanged)=\"onCellValueChanged($event)\"\r\n (selectionChanged)=\"onRowSelectionChanged($event)\" \r\n [masterDetail]=\"tableConfiguration.masterDetail\"\r\n [detailCellRendererParams]=\"tableConfiguration.detailCellRendererParams\"\r\n [detailCellRenderer]=\"tableConfiguration.detailCellRenderer\"\r\n [enableCellTextSelection]=\"true\"\r\n [gridOptions]=\"gridOptions\"\r\n [ensureDomOrder]=\"true\"\r\n [tooltipShowDelay]=\"tableConfiguration.tooltipShowDelay\" />\r\n </div>\r\n\r\n @if (columnToolVisible && columnsListselectionForm) {\r\n <div class=\"columns-list ms-3 p-3 d-md-flex flex-column h-100 d-none border border-1 rounded hide columns-tool\" [id]=\"tableConfiguration.tablename\">\r\n <div class=\"d-flex justify-content-between align-items-center mb-3 gap-2 columns-heading\">\r\n <span\r\n class=\"cursor-pointer text-primary\"\r\n tooltipPlacement=\"top\"\r\n cTooltip=\"Column Preference\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\">\r\n <svg cIcon name=\"cilColumns\" size=\"xl\"></svg>\r\n </span>\r\n\r\n <span class=\"cursor-pointer text-primary\" tooltipPlacement=\"top\" cTooltip=\"Auto Resize Columns\" (click)=\"autoSizeAll()\">\r\n <svg cIcon name=\"cilResizeWidth\" size=\"xl\"></svg>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <c-offcanvas placement=\"end\" [id]=\"tableConfiguration.tablename + 'config-columns'\" width=\"550\">\r\n <c-offcanvas-header>\r\n <h5 cOffcanvasTitle>Table Column Preference</h5>\r\n <button\r\n cButtonClose\r\n size=\"sm\"\r\n class=\"text-reset ms-auto\"\r\n [cOffcanvasToggle]=\"tableConfiguration.tablename + 'config-columns'\"\r\n aria-label=\"Close\"></button>\r\n </c-offcanvas-header>\r\n <c-offcanvas-body>\r\n <div class=\"columns-wrapper mb-2\" [formGroup]=\"columnsListselectionForm\">\r\n @for (item of this.tableGridState; track $index) {\r\n <div class=\"checkbox-item px-1\">\r\n <c-form-check>\r\n <input\r\n (change)=\"getCheckboxStatus($event, item.key)\"\r\n [checked]=\"columnsListselectionForm.get(item.key)?.value\"\r\n cFormCheckInput\r\n [id]=\"'cb_' + item.key\"\r\n type=\"checkbox\"\r\n [formControl]=\"columnsListselectionForm.controls[item.key]\" />\r\n <label class=\"truncate-preference-label\" cFormCheckLabel [for]=\"'cb_' + item.key\" [title]=\"item?.headerName || item?.label\">\r\n {{ item?.headerName || item?.label }}</label\r\n >\r\n </c-form-check>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"align d-flex gap-3 justify-content-end\">\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableRemovecolumn\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreferenceV2()\">\r\n Clear\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableResetPreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"resetTablePreference()\">\r\n Reset\r\n </button>\r\n <button\r\n cButton\r\n [disabled]=\"tableConfiguration.tablePreference.disableUpdatePreference\"\r\n color=\"primary\"\r\n class=\"px-2 mt-auto\"\r\n variant=\"outline\"\r\n (click)=\"updatetablePreference()\">\r\n Update\r\n </button>\r\n </div>\r\n </c-offcanvas-body>\r\n </c-offcanvas>\r\n }\r\n </div>\r\n</div>\r\n","import { TableGridComponent } from './table-grid.component';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AgGridModule } from '@ag-grid-community/angular';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ModuleRegistry, _EditCoreModule } from '@ag-grid-community/core';\nimport { CsvExportModule } from '@ag-grid-community/csv-export';\nimport { ButtonModule, FormModule, OffcanvasModule, TooltipModule } from '@coreui/angular-pro';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconModule } from '@coreui/icons-angular';\n\nModuleRegistry.registerModules([ClientSideRowModelModule, CsvExportModule, _EditCoreModule]);\n\n@NgModule({\n declarations: [TableGridComponent],\n imports: [CommonModule, AgGridModule, FormModule, ReactiveFormsModule, ButtonModule, OffcanvasModule, TooltipModule, IconModule],\n exports: [TableGridComponent]\n})\nexport class TableGridModule {}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n AgPublicEventType,\r\n CellValueChangedEvent,\r\n ColDef,\r\n GridApi,\r\n GridOptions,\r\n GridReadyEvent,\r\n ICellRendererParams,\r\n PaginationChangedEvent,\r\n SelectionColumnDef\r\n} from '@ag-grid-community/core';\r\nimport { inject } from '@angular/core';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\r\n\r\nexport class ITableGridConfiguration {\r\n initialState!: ITableGridState[];\r\n columnDefs: ColDef[] = [];\r\n rows: any;\r\n defaultColDef: ColDef;\r\n rowSelectionOption: IRowSelectionOptions;\r\n pagination: ITableGridPagination;\r\n themeClass: string;\r\n tableTheme: string;\r\n tablename: string;\r\n selectionColumnDef?: SelectionColumnDef;\r\n tablePreference: { disableRemovecolumn?: boolean; disableResetPreference?: boolean; disableUpdatePreference?: boolean };\r\n detailCellRendererParams?: any;\r\n detailCellRenderer?: any;\r\n frameworkComponents?: { [key: string]: any };\r\n tooltipShowDelay: number;\r\n masterDetail: boolean;\r\n tableClasses: string[] = ['default-ag-layout'];\r\n defaultGridOptions?: GridOptions;\r\n\r\n constructor() {\r\n this.pagination = new ITableGridPagination();\r\n this.tablename = '';\r\n this.tableTheme = '';\r\n this.defaultColDef = {\r\n filter: 'agTextColumnFilter',\r\n floatingFilter: false\r\n };\r\n\r\n this.themeClass = 'ag-theme-quartz';\r\n this.rowSelectionOption = {\r\n enableClickSelection: true,\r\n mode: 'singleRow',\r\n checkboxes: false\r\n };\r\n this.masterDetail = false;\r\n this.tablePreference = { disableRemovecolumn: false, disableResetPreference: false, disableUpdatePreference: false };\r\n this.tooltipShowDelay = 100;\r\n }\r\n}\r\n\r\nexport class ITableGridPagination {\r\n private configurationService = inject(ConfigurationServiceLib);\r\n\r\n enabled: boolean = true;\r\n paginationPageSize = this.configurationService.allConfigValues()?.tableGridConfig?.defaultPageSize || 20;\r\n paginationPageSizeSelector = this.configurationService.allConfigValues()?.tableGridConfig?.defaultPageSizeSelector || false;\r\n}\r\n\r\nexport interface IRowSelectionOptions {\r\n enableClickSelection?: boolean | 'enableDeselection' | 'enableSelection';\r\n mode: string;\r\n checkboxes: boolean;\r\n headerCheckbox?: boolean;\r\n}\r\n\r\nexport interface IColumnStateEvent {\r\n currentEvent: ITableGridState;\r\n currentTableState: ITableGridState[];\r\n}\r\n\r\nexport interface ITableGridState {\r\n key?: string;\r\n width?: number;\r\n visible?: boolean;\r\n sort?: 'asc' | 'desc' | null;\r\n label?: string;\r\n}\r\n\r\nexport interface IFilterChangeEvent {\r\n rows: any[];\r\n column: any[];\r\n filters: any;\r\n}\r\n\r\nexport interface IGridReadyEvent extends GridReadyEvent {\r\n api: IGridApi;\r\n}\r\n\r\nexport interface ICellValueChangedEvent extends CellValueChangedEvent {\r\n data: CellValueChangedEvent['data'];\r\n colDef: CellValueChangedEvent['colDef'];\r\n}\r\nexport interface IColDef extends ColDef {}\r\n\r\nexport interface IPaginationChangedEvent extends PaginationChangedEvent {\r\n newPage: PaginationChangedEvent['newPage'];\r\n animate?: PaginationChangedEvent['animate'];\r\n keepRenderedRows?: PaginationChangedEvent['keepRenderedRows'];\r\n newData?: PaginationChangedEvent['newData'];\r\n newPageSize?: PaginationChangedEvent['newPageSize'];\r\n api: PaginationChangedEvent['api'];\r\n}\r\n\r\nexport interface PongrassICellRendererAngularComp extends ICellRendererAngularComp {}\r\n\r\nexport interface PongrassICellRendererParams extends ICellRendererParams {\r\n data: ICellRendererParams['data'];\r\n colDef: ICellRendererParams['colDef'];\r\n}\r\n\r\nexport interface IGridApi extends GridApi<any> {}\r\n\r\nexport type IAgPublicEventType = AgPublicEventType;\r\n\r\nexport type MaintAction = 'N' | 'D' | 'U';\r\n","import { Directive, ElementRef, Input, OnInit, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[wsBackgroundImage]',\r\n standalone: true\r\n})\r\nexport class BackgroundImageDirective implements OnInit {\r\n private el = inject(ElementRef);\r\n\r\n /**\r\n * Flag to enable random background selection\r\n * Defaults to false\r\n */\r\n @Input() random: boolean = false;\r\n\r\n /**\r\n * Path to the background image (string) or images (string[])\r\n */\r\n @Input() backgroundImage: string | string[] = '';\r\n\r\n ngOnInit(): void {\r\n this.setBackgroundImage();\r\n }\r\n\r\n private setBackgroundImage(): void {\r\n let imageUrl = '';\r\n\r\n if (typeof this.backgroundImage === 'string') {\r\n // Single image path\r\n imageUrl = this.backgroundImage;\r\n } else if (Array.isArray(this.backgroundImage) && this.backgroundImage.length > 0) {\r\n // Array of image paths\r\n if (this.random) {\r\n // Select a random image from the array\r\n const randomIndex = Math.floor(Math.random() * this.backgroundImage.length);\r\n imageUrl = this.backgroundImage[randomIndex];\r\n } else {\r\n // Use the first image in the array\r\n imageUrl = this.backgroundImage[0];\r\n }\r\n }\r\n\r\n if (imageUrl) {\r\n this.el.nativeElement.style.backgroundImage = `url('${imageUrl}')`;\r\n this.el.nativeElement.style.backgroundSize = 'cover';\r\n this.el.nativeElement.style.backgroundPosition = 'center';\r\n this.el.nativeElement.style.backgroundRepeat = 'no-repeat';\r\n this.el.nativeElement.style.minHeight = '100vh';\r\n this.el.nativeElement.style.width = '100%';\r\n this.el.nativeElement.style.margin = '0';\r\n this.el.nativeElement.style.display = 'block';\r\n }\r\n }\r\n}\r\n","export enum ExportToExcelNames {\r\n ProdStatusReport = 'Prod_Status_Report',\r\n NationalROPReport = 'National ROP Report',\r\n NationalInserts = 'National Inserts',\r\n ApprovedAdList = 'Approved Ad List',\r\n PageStatusReport = 'Page Status Report',\r\n}\r\n\r\nexport enum ExcelType {\r\n excelBlobType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n xlsxBookType = 'xlsx'\r\n}\r\n\r\n","import { inject, Injectable } from '@angular/core';\r\n\r\nimport { ConfigurationServiceLib } from './configuration.service';\r\n\r\nimport { IConfig } from '../interface/api-response.interface';\r\nimport { IExcelHeaders, IExportCellConfig, IPrintHeaders } from '../interface/exports.interface';\r\nimport { convertIsoToFormat } from '../helpers/dateTime.helpers';\r\nimport { ExcelType } from '../enums/export.enum';\r\n\r\nimport * as ExcelJS from 'exceljs';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n private readonly configurationServiceLib = inject(ConfigurationServiceLib);\r\n private readonly toastrService = inject(ToastrService);\r\n\r\n readonly allConfigValues: IConfig = this.configurationServiceLib.allConfigValues() || ({} as unknown as IConfig);\r\n\r\n constructor() {}\r\n\r\n public formatToTwoDecimalPlaces(value: any, decimalPlaces?: number): string {\r\n if (value !== undefined && value !== null) {\r\n const numValue = Number(value);\r\n\r\n if (!isNaN(numValue)) {\r\n return numValue.toFixed(decimalPlaces || 2);\r\n }\r\n }\r\n\r\n return value?.toString() || '';\r\n }\r\n\r\n // Truncate values to precision\r\n public truncateFloat(value: number | string, precision: number): string {\r\n const num = Number(value);\r\n if (isNaN(num)) return '';\r\n const factor = Math.pow(10, precision);\r\n const truncated = Math.trunc(num * factor) / factor;\r\n return truncated.toFixed(precision);\r\n }\r\n\r\n /**\r\n *\r\n * @param excelData Table data to export\r\n * @param columns Array of Column keys and label '{ keys: '_key', label: '_label' }'\r\n * @param excelFileName Name of the excel file 'Example FileName_export_1740978888354'\r\n * @param headers (Optional) Adds Extra headings on top of the columns\r\n * @param showTotalValueCols (Optional) Calculates and shows the total of all the values of that column\r\n * @param columnAlignment (Optional) Aligns the cell value (currently only to right side)\r\n */\r\n public async exportAsExcelFile(\r\n excelData: any[],\r\n columns: any[],\r\n excelFileName: string,\r\n headers?: IExcelHeaders[],\r\n showTotalValueCols?: string[],\r\n columnAlignment?: IExportCellConfig\r\n ): Promise<void> {\r\n // this.loaderService.show();\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(excelFileName);\r\n\r\n // const currentRow = 1;\r\n // if (headers) {\r\n // headers.forEach((header: IExcelHeaders) => {\r\n // worksheet.mergeCells(`A${currentRow}:K${currentRow}`);\r\n // worksheet.getCell(`A${currentRow}`).value = header.heading;\r\n // worksheet.getCell(`A${currentRow}`).alignment = { horizontal: header.alignment, wrapText: true };\r\n // worksheet.getCell(`A${currentRow}`).font = { bold: header.bold, size: header.fontSize || 14 };\r\n // currentRow++;\r\n // });\r\n // worksheet.addRow({});\r\n // }\r\n\r\n const columnLabels = columns.map(col => col.label);\r\n const columnKeys = columns.map(col => col.key);\r\n const headerRow = worksheet.addRow(columnLabels);\r\n headerRow.eachCell(cell => {\r\n cell.font = { bold: true, size: 12 };\r\n });\r\n\r\n // Prepare worksheet data and add it to the worksheet\r\n const worksheetData = this.prepareWorksheetData(excelData, columns);\r\n worksheetData.forEach(dataRow => {\r\n const rowInstance = worksheet.addRow(Object.values(dataRow));\r\n\r\n // Align specific columns based on columnAlignment parameter\r\n if (columnAlignment?.align === 'end' && columnAlignment.headers.length > 0) {\r\n rowInstance.eachCell((cell, colNumber) => {\r\n const columnKey = columnKeys[colNumber - 1]; // Match index with headers\r\n if (columnAlignment.headers.includes(columnKey)) {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Calculate total for specified columns\r\n if (showTotalValueCols && showTotalValueCols.length > 0) {\r\n const totalRow: any = {};\r\n\r\n columns.forEach(col => {\r\n if (showTotalValueCols.includes(col.key)) {\r\n totalRow[col.label] = excelData.reduce((sum, row) => sum + (Number(row[col.key]) || 0), 0);\r\n } else {\r\n totalRow[col.label] = ''; // Empty for non-total columns\r\n }\r\n });\r\n\r\n const totalRowInstance = worksheet.addRow(Object.values(totalRow));\r\n totalRowInstance.eachCell((cell, colNumber) => {\r\n cell.font = { bold: true, color: { argb: '000' }, size: 12 };\r\n cell.alignment = { horizontal: 'left' };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFF00' } };\r\n cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } };\r\n\r\n // Apply right alignment for specified total columns\r\n const columnKey = columnKeys[colNumber - 1];\r\n if (columnAlignment?.headers.includes(columnKey)) {\r\n cell.alignment = { horizontal: 'right' };\r\n }\r\n });\r\n }\r\n\r\n // Set column widths\r\n columns.forEach((col, index) => {\r\n worksheet.getColumn(index + 1).width = 15;\r\n });\r\n\r\n // Generate Excel file and save\r\n const buffer = await workbook.xlsx.writeBuffer();\r\n this.saveAsExcelFile(buffer, excelFileName);\r\n }\r\n\r\n /** Prepare Data for Excel Export*/\r\n private prepareWorksheetData(data: any[], columns: any[]): any[] {\r\n const rows = data.map(row => {\r\n const formattedRow: any = {};\r\n columns.forEach(col => {\r\n formattedRow[col.label] = row[col.key];\r\n });\r\n return formattedRow;\r\n });\r\n\r\n return [...rows];\r\n }\r\n\r\n /** Save Buffer File */\r\n private saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], { type: ExcelType.excelBlobType });\r\n const url = window.URL.createObjectURL(data);\r\n\r\n const link = document.createElement('a');\r\n link.href = url;\r\n\r\n const unique = Math.random().toString(36).substring(2, 8).toUpperCase();\r\n link.download = `${fileName}_${convertIsoToFormat(new Date())}_${unique}.${ExcelType.xlsxBookType}`;\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n setTimeout(() => {\r\n // this.loaderService.hide();\r\n this.toastrService.success(`${link.download} file downloaded successfully`, 'Success');\r\n }, 500);\r\n }\r\n\r\n /** Print Page Status Report */\r\n public printHTMLTable(columns: any[], data: any[], headers?: IExcelHeaders[], showTotalValueCols?: string[]): void {\r\n let headersAndHeadings = '';\r\n if (headers) {\r\n headersAndHeadings = this.generateHeaderHTML(headers);\r\n }\r\n\r\n const headerHTML = `<tr>${columns\r\n .map(col => `<th style=\"border: 1px solid #ddd; padding: 8px; background-color: #f2f2f2;\">${col.label}</th>`)\r\n .join('')}</tr>`;\r\n\r\n const bodyHTML = data\r\n .map((row, index) => {\r\n const rowStyle = index % 2 === 0 ? 'background-color: #f9f9f9;' : 'background-color: #e9ecef;';\r\n const rowHTML = columns\r\n .map(col => {\r\n const cellBackground = col.key === 'page_status_name' ? `background-color: ${row?.html_color || ''};` : '';\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; ${cellBackground}}\">${row[col.key] !== null ? row[col.key] : ''}</td>`;\r\n })\r\n .join('');\r\n\r\n return `<tr style=\"${rowStyle}\">${rowHTML}</tr>`;\r\n })\r\n .join('');\r\n\r\n // Generate Footer Row with Totals\r\n let footerHTML = '';\r\n if (showTotalValueCols && showTotalValueCols.length > 0) {\r\n const totalRow = columns\r\n .map(col => {\r\n if (showTotalValueCols.includes(col.key)) {\r\n const total = data.reduce((sum, row) => sum + (Number(row[col.key]) || 0), 0);\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; background-color: yellow; font-weight: bold;\">${this.formatToTwoDecimalPlaces(total)}</td>`;\r\n }\r\n return `<td style=\"border: 1px solid #ddd; padding: 8px; background-color: yellow;\"></td>`; // Empty but styled\r\n })\r\n .join('');\r\n\r\n footerHTML = `<tr>${totalRow}</tr>`;\r\n }\r\n\r\n const tableHTML = `\r\n <table style=\"width: 100%; border-collapse: collapse;\">\r\n <thead>${headerHTML}</thead>\r\n <tbody>${bodyHTML}</tbody>\r\n <tfoot>${footerHTML}</tfoot>\r\n </table>\r\n `;\r\n\r\n // Create a new window for printing\r\n const printWindow = window.open('', '', 'width=800, height=600');\r\n if (printWindow) {\r\n printWindow.document.write(`\r\n <html>\r\n <head>\r\n <style>\r\n @media print {\r\n @page {\r\n size: landscape; \r\n }\r\n body {\r\n -webkit-print-color-adjust: exact; \r\n print-color-adjust: exact; \r\n }\r\n table { width: 100%; border-collapse: collapse; }\r\n th, td { border: 1px solid black; padding: 10px; }\r\n th { background-color: #f2f2f2; }\r\n p { margin: 0; padding: 0; }\r\n }\r\n </style>\r\n </head>\r\n <body>\r\n <title>Report</title>\r\n ${headersAndHeadings} \r\n ${tableHTML}\r\n <script type=\"text/javascript\">\r\n window.onload = function() {\r\n window.print();\r\n window.onafterprint = window.close();\r\n };\r\n </script>\r\n </body>\r\n </html>\r\n `);\r\n printWindow.document.close();\r\n printWindow.focus();\r\n }\r\n }\r\n\r\n // Function to generate header HTML from headers array\r\n private generateHeaderHTML(headers: IPrintHeaders[]): string {\r\n return headers\r\n .map(header => {\r\n let style = '';\r\n if (header.alignment) {\r\n style += `text-align: ${header.alignment};`;\r\n }\r\n if (header.bold) {\r\n style += 'font-weight: bold;';\r\n }\r\n if (header.fontSize) {\r\n style += `font-size: ${header.fontSize}px;`;\r\n }\r\n if (header.marginBottom) {\r\n style += `margin-bottom: ${header.marginBottom}px;`;\r\n }\r\n if (header.marginTop) {\r\n style += `margin-bottom: ${header.marginTop}px;`;\r\n }\r\n\r\n return `<p style=\"${style}\">${header.heading}</p>`;\r\n })\r\n .join('');\r\n }\r\n}\r\n","export interface ILoginConfig {\r\n /** Heading of Application (e.g., Maintainance Portal) */\r\n title: string;\r\n\r\n /** URL of the logo shown on login screen */\r\n logoUrl: string;\r\n\r\n /** Placeholder text for username/email input */\r\n usernamePlaceholder: string;\r\n\r\n /** Placeholder text for password input */\r\n passwordPlaceholder: string;\r\n\r\n /** Text displayed on the login submit button */\r\n submitButtonText: string;\r\n\r\n /** Background configuration */\r\n backgroundDirective: {\r\n /** Array of background image URLs */\r\n backgroundImages: string[];\r\n\r\n /** If true → pick a random image on each load */\r\n random: boolean;\r\n };\r\n\r\n //** Version info */\r\n version?: {\r\n currentVersion: string;\r\n brandName: string;\r\n copyrightYear: string;\r\n };\r\n}\r\n\r\nexport enum ILOGIN_ACTION {\r\n SUBMIT = 'submit',\r\n BACK_TO_LOGIN = 'backToLogin',\r\n FORGET_PASSWORD = 'forgetPassword',\r\n}\r\n","import { Component, output, input, signal, inject, Renderer2, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ConfigurationServiceLib } from '../../services/configuration.service';\r\nimport { BrowserConstantsEnum } from '../../enums/browser-constants.enum';\r\nimport { ILOGIN_ACTION, ILoginConfig } from '../../interface/login.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-login',\r\n templateUrl: './login.component.html',\r\n styleUrl: './login.component.scss',\r\n standalone: false\r\n})\r\nexport class LoginComponent implements OnInit {\r\n readonly configService = inject(ConfigurationServiceLib);\r\n private readonly rendererService = inject(Renderer2);\r\n private readonly formBuilder = inject(FormBuilder);\r\n\r\n public config = input.required<ILoginConfig>({});\r\n public showInactivityLogoutMessage = input<boolean>(false);\r\n\r\n public action = output<{ type: string; data?: any }>();\r\n\r\n public isFormSubmitted = signal<boolean>(false);\r\n\r\n loginForm!: FormGroup;\r\n\r\n public contactSupportValue: string;\r\n public forgetPasswordValue: string;\r\n\r\n constructor() {\r\n this.contactSupportValue = '';\r\n this.forgetPasswordValue = '';\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.config()) {\r\n throw new Error('Config is required');\r\n } else if (!this.config().title || !this.config().logoUrl) {\r\n throw new Error('Title and logo URL are required on the LoginForm Card');\r\n }\r\n\r\n this.initializeForm();\r\n this.initializeInitialValues();\r\n\r\n const lastUserName = localStorage.getItem(BrowserConstantsEnum.lastUserName);\r\n if (lastUserName) {\r\n this.loginForm.controls['uid'].setValue(lastUserName);\r\n }\r\n }\r\n\r\n private initializeForm(): void {\r\n this.loginForm = this.formBuilder.group({\r\n uid: ['', [Validators.required]],\r\n pwd: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n onSubmit(): void {\r\n this.isFormSubmitted.set(true);\r\n this.action.emit({ type: ILOGIN_ACTION.SUBMIT, data: this.loginForm });\r\n }\r\n\r\n private initializeInitialValues(): void {\r\n if (this.configService.allConfigValues() && this.configService.allConfigValues()?.contactSupport) {\r\n if (this.configService.allConfigValues()?.contactSupport?.startsWith('http')) {\r\n this.contactSupportValue = this.configService.allConfigValues()?.contactSupport || '';\r\n this.rendererService.setAttribute(document.getElementById('contact-us'), 'target', '_blank');\r\n } else {\r\n this.contactSupportValue = `mailto:${this.configService.allConfigValues()?.contactSupport}`;\r\n }\r\n }\r\n\r\n if (this.configService.allConfigValues() && this.configService.allConfigValues()?.forgetPassword) {\r\n if (this.configService.allConfigValues()?.forgetPassword?.externalLink) {\r\n if (this.configService.allConfigValues()?.forgetPassword?.externalLink?.startsWith('http')) {\r\n this.forgetPasswordValue = this.configService.allConfigValues()?.forgetPassword?.externalLink || '';\r\n } else {\r\n this.forgetPasswordValue = `mailto:${this.configService.allConfigValues()?.forgetPassword?.externalLink}`;\r\n }\r\n }\r\n }\r\n }\r\n\r\n goToForgetPassword() {\r\n this.action.emit({ type: ILOGIN_ACTION.FORGET_PASSWORD });\r\n }\r\n}\r\n","<div\r\n class=\"container-fluid login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 login-fields glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img [src]=\"config()?.logoUrl\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4\">{{ config()?.title }}</p>\r\n </div>\r\n <div class=\"mb-4 d-flex align-items-center justify-content-center flex-column\">\r\n @if (showInactivityLogoutMessage()) {\r\n <c-alert ngClass=\"mb-4\" color=\"danger\" class=\"text-center\">You have been logged out due to inactivity!</c-alert>\r\n }\r\n <form cForm [formGroup]=\"loginForm\" class=\"needs-validation max-w-300\" [validated]=\"isFormSubmitted()\" noValidate (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"uid\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-password-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 384 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M128 96l0 64 128 0 0-64c0-35.3-28.7-64-64-64s-64 28.7-64 64zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\" />\r\n </svg>\r\n </span>\r\n <input\r\n cFormControl\r\n id=\"txt-auth-password\"\r\n type=\"password\"\r\n sizing=\"lg\"\r\n formControlName=\"pwd\"\r\n required\r\n autocomplete=\"current-password\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.passwordPlaceholder\" />\r\n\r\n <c-form-feedback [valid]=\"false\">Password is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\">\r\n {{ config()?.submitButtonText }}\r\n </button>\r\n </div>\r\n\r\n @if (contactSupportValue) {\r\n <div class=\"mt-4 fs-5\">\r\n Don't have an account?\r\n <span class=\"cursor-pointer\">\r\n <a [href]=\"contactSupportValue\" class=\"text-decoration-none primary-text\" id=\"contact-us\">Contact Support</a>\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (configService.allConfigValues()?.forgetPassword?.enabled) {\r\n <div class=\"mt-4 fs-5 text-center\">\r\n <span class=\"cursor-pointer\">\r\n @if (forgetPasswordValue) {\r\n <a [href]=\"forgetPasswordValue\" class=\"text-decoration-none text-white\" id=\"forget-password\" target=\"_blank\">Forget Password?</a>\r\n } @else {\r\n <a class=\"text-decoration-none text-white\" (click)=\"goToForgetPassword()\">Forget Password?</a>\r\n }\r\n </span>\r\n </div>\r\n }\r\n \r\n @if (config()?.version) {\r\n @if (config()?.version?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + config()?.version?.currentVersion || '' }}</div>\r\n }\r\n @if (config()?.version?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '©' + config()?.version?.copyrightYear + ' ' + config()?.version?.brandName }}\r\n </div>\r\n }\r\n } @else {\r\n @if (configService.allConfigValues()?.project?.currentVersion) {\r\n <div class=\"mt-4 text-center pt-8\">{{ 'v' + configService.allConfigValues()?.project?.currentVersion || '' }}</div>\r\n }\r\n @if (configService.allConfigValues()?.project?.copyrightYear) {\r\n <div class=\"mt-2 text-center copyright-text pt-8\">\r\n {{ '©' + configService.allConfigValues()?.project?.copyrightYear + ' ' + configService.allConfigValues()?.project?.brandName }}\r\n </div>\r\n }\r\n }\r\n </form>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AlertModule, ButtonModule, FormModule, FormPasswordDirective, SpinnerModule } from '@coreui/angular-pro';\r\nimport { IconModule } from '@coreui/icons-angular';\r\n\r\nimport { LoginComponent } from './login.component';\r\nimport { BackgroundImageDirective } from '../../directives/background-image.directive';\r\n\r\n@NgModule({\r\n declarations: [LoginComponent],\r\n imports: [\r\n CommonModule,\r\n BackgroundImageDirective,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FormModule,\r\n ButtonModule,\r\n SpinnerModule,\r\n FormPasswordDirective,\r\n IconModule,\r\n AlertModule\r\n ],\r\n exports: [LoginComponent]\r\n})\r\nexport class LoginModule {}\r\n","import { Type } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface IDialogButton {\r\n label: string;\r\n type?: 'submit' | 'close' | 'custom';\r\n color?: string;\r\n variant?: string;\r\n class?: string;\r\n onClick?: (context?: any) => void;\r\n}\r\n\r\nexport interface IDialogConfig {\r\n title?: string;\r\n message?: string;\r\n size?: 'sm' | 'md' | 'lg' | 'xl';\r\n data?: any;\r\n buttons?: IDialogButton[];\r\n scrollable?: boolean;\r\n customClose?: boolean;\r\n alignment?: 'center' | 'top';\r\n component?: Type<any>;\r\n}\r\n\r\nexport class DialogRef<T = any> {\r\n private _result = new Subject<T>();\r\n\r\n /** Observable that emits when any button is clicked in the wrapper */\r\n public buttonClick$ = new Subject<IDialogButton>();\r\n\r\n /** Observable that emits when the dialog is closed */\r\n afterClosed(): Observable<T> {\r\n return this._result.asObservable();\r\n }\r\n\r\n constructor(public closeFn?: (result?: T) => void) { }\r\n\r\n setCloseFn(fn: (result?: T) => void) {\r\n this.closeFn = fn;\r\n }\r\n\r\n close(result?: T) {\r\n if (this.closeFn) {\r\n this.closeFn(result);\r\n }\r\n if (!this._result.closed) {\r\n this._result.next(result as T);\r\n this._result.complete();\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n ComponentRef,\r\n inject,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n NgZone,\r\n OnDestroy,\r\n ElementRef,\r\n signal,\r\n effect,\r\n untracked,\r\n Injector\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonModule, ModalModule } from '@coreui/angular-pro';\r\nimport { DialogRef, IDialogButton } from './dialog.models';\r\n\r\n@Component({\r\n selector: 'prg-ws-dynamic-modal-wrapper',\r\n standalone: true,\r\n imports: [CommonModule, ModalModule, ButtonModule],\r\n template: `\r\n <c-modal\r\n #modalElement\r\n [visible]=\"visibleSignal()\"\r\n [size]=\"size\"\r\n [alignment]=\"alignment\"\r\n [scrollable]=\"scrollable\"\r\n backdrop=\"static\"\r\n (visibleChange)=\"onVisibleChange($event)\"\r\n >\r\n <c-modal-header>\r\n <h5 cModalTitle>{{ title }}</h5>\r\n <button (click)=\"topClose()\" cButtonClose></button>\r\n </c-modal-header>\r\n <c-modal-body>\r\n @if (message) {\r\n <div [innerHTML]=\"message\" class=\"mb-3\"></div>\r\n }\r\n <ng-template #contentHost></ng-template>\r\n </c-modal-body>\r\n @if (buttons?.length) {\r\n <c-modal-footer>\r\n @for (btn of buttons; track btn) {\r\n <button\r\n cButton\r\n [color]=\"btn.color || 'primary'\"\r\n [variant]=\"btn.variant\"\r\n [className]=\"btn.class || ''\"\r\n (click)=\"onButtonClick(btn)\"\r\n >\r\n {{ btn.label }}\r\n </button>\r\n }\r\n </c-modal-footer>\r\n }\r\n </c-modal>\r\n `\r\n})\r\nexport class DynamicModalWrapperComponent implements AfterViewInit, OnDestroy {\r\n @Input() title: string = '';\r\n @Input() message: string = '';\r\n @Input() size: 'sm' | 'md' | 'lg' | 'xl' | undefined = 'lg';\r\n @Input() buttons: IDialogButton[] = [];\r\n @Input() scrollable: boolean = true;\r\n @Input() alignment: 'center' | 'top' = 'top';\r\n @Input() childInjector?: Injector;\r\n @Input() backdropIndex: number = 1;\r\n @Input() customClose: boolean = false;\r\n\r\n private _result: any;\r\n\r\n // New Signal-based inputs for child component\r\n private _childComponentType = signal<Type<any> | null>(null);\r\n @Input() set childComponentType(value: Type<any>) {\r\n this._childComponentType.set(value);\r\n }\r\n\r\n private _childComponentData = signal<any>(null);\r\n @Input() set childComponentData(value: any) {\r\n this._childComponentData.set(value);\r\n }\r\n\r\n @ViewChild('contentHost', { read: ViewContainerRef }) contentHost!: ViewContainerRef;\r\n @ViewChild('modalElement', { read: ElementRef }) modalElement!: ElementRef;\r\n\r\n visibleSignal = signal(false);\r\n componentRef!: ComponentRef<any>;\r\n closeCallback: (result?: any) => void = () => { };\r\n\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n private readonly zone = inject(NgZone);\r\n private readonly dialogRef = inject(DialogRef, { optional: true });\r\n private isDestroyed = false;\r\n private isViewInit = false;\r\n\r\n constructor() {\r\n // React to child component type changes\r\n effect(() => {\r\n const type = this._childComponentType();\r\n if (type && this.isViewInit) {\r\n untracked(() => this.loadComponent());\r\n }\r\n });\r\n\r\n // React to data changes\r\n effect(() => {\r\n const data = this._childComponentData();\r\n if (data && this.componentRef && this.isViewInit) {\r\n untracked(() => this.applyData(data));\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.isViewInit = true;\r\n\r\n // Load component immediately once view is ready\r\n this.loadComponent();\r\n\r\n // Small delay before showing modal to avoid CD/Signal race conditions\r\n this.zone.run(() => {\r\n setTimeout(() => {\r\n if (!this.isDestroyed) {\r\n this.visibleSignal.set(true);\r\n this.cdr.detectChanges();\r\n // Add backdrop class after modal is visible\r\n this.addBackdropClass();\r\n }\r\n }, 50);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.isDestroyed = true;\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n loadComponent() {\r\n if (!this._childComponentType() || !this.contentHost) return;\r\n\r\n this.contentHost.clear();\r\n this.componentRef = this.contentHost.createComponent(this._childComponentType()!, {\r\n injector: this.childInjector || this.contentHost.injector\r\n });\r\n\r\n const data = this._childComponentData();\r\n if (data) {\r\n this.applyData(data);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private applyData(data: any) {\r\n if (!this.componentRef) return;\r\n if (this.componentRef.instance.setData) {\r\n this.componentRef.instance.setData(data);\r\n } else {\r\n Object.assign(this.componentRef.instance, data);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onButtonClick(btn: IDialogButton) {\r\n // Notify the child component that a button was clicked\r\n if (this.dialogRef) {\r\n this.dialogRef.buttonClick$.next(btn);\r\n }\r\n\r\n if (btn.type === 'close') {\r\n if (!this.customClose) {\r\n this.close();\r\n }\r\n }\r\n\r\n if (btn.onClick) {\r\n btn.onClick(this.componentRef?.instance);\r\n }\r\n }\r\n\r\n topClose() {\r\n this.dialogRef?.buttonClick$.next({\r\n type: 'close',\r\n label: 'T-Close',\r\n });\r\n if (!this.customClose) {\r\n this.close();\r\n }\r\n }\r\n\r\n close(result?: any) {\r\n this._result = result;\r\n this.visibleSignal.set(false);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onVisibleChange(event: boolean) {\r\n if (this.visibleSignal() === event) return;\r\n this.visibleSignal.set(event);\r\n\r\n if (!event) {\r\n // Cleanup delay to prevent view[EFFECTS] error\r\n this.zone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n this.zone.run(() => {\r\n if (!this.isDestroyed) {\r\n this.closeCallback(this._result);\r\n }\r\n });\r\n }, 400);\r\n });\r\n }\r\n }\r\n\r\n private addBackdropClass() {\r\n // Wait a bit for the backdrop to be rendered by CoreUI\r\n this.zone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n // Set modal z-index\r\n if (this.modalElement) {\r\n const modalEl = this.modalElement.nativeElement as HTMLElement;\r\n const baseModalZIndex = 1055;\r\n const modalZIndex = baseModalZIndex + ((this.backdropIndex - 1) * 10);\r\n modalEl.style.setProperty('--cui-modal-zindex', modalZIndex.toString());\r\n }\r\n\r\n // Find all backdrops\r\n const backdrops = document.querySelectorAll('.modal-backdrop.show');\r\n if (backdrops.length > 0) {\r\n // Get the most recently added backdrop (last one)\r\n const latestBackdrop = backdrops[backdrops.length - 1] as HTMLElement;\r\n\r\n // Set the backdrop z-index dynamically\r\n const baseBackdropZIndex = 1050;\r\n const backdropZIndex = baseBackdropZIndex + ((this.backdropIndex - 1) * 10);\r\n latestBackdrop.style.zIndex = backdropZIndex.toString();\r\n }\r\n }, 100);\r\n });\r\n }\r\n}\r\n","import { ApplicationRef, ComponentRef, EnvironmentInjector, Injectable, Type, createComponent, inject, ViewContainerRef, Injector } from '@angular/core';\r\nimport { DynamicModalWrapperComponent } from './dynamic-modal-wrapper.component';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { DialogRef, IDialogConfig } from './dialog.models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PgDialogService {\r\n private appRef = inject(ApplicationRef);\r\n private injector = inject(EnvironmentInjector);\r\n private viewContainerRef!: ViewContainerRef;\r\n private openDialogs = new Set<DialogRef>();\r\n\r\n registerViewContainerRef(vcr: ViewContainerRef) {\r\n this.viewContainerRef = vcr;\r\n }\r\n\r\n add<T>(config: IDialogConfig): Observable<any> {\r\n const subject = new Subject<any>();\r\n const component = config.component || null as any;\r\n\r\n const dialogRef = this.open(component, config);\r\n\r\n // Inject result handling into buttons if they don't have onClick\r\n if (config.buttons) {\r\n config.buttons.forEach(btn => {\r\n const originalOnClick = btn.onClick;\r\n btn.onClick = (context) => {\r\n if (originalOnClick) {\r\n originalOnClick(context);\r\n }\r\n subject.next(btn.label); // Or we could pass btn itself\r\n if (btn.type !== 'submit') {\r\n dialogRef.close(btn.label);\r\n }\r\n };\r\n });\r\n }\r\n\r\n // Subscribe to afterClosed to finish the subject\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (!subject.closed) {\r\n subject.next(result || 'close');\r\n subject.complete();\r\n }\r\n });\r\n\r\n return subject.asObservable();\r\n }\r\n\r\n alert(message: string, title: string = 'Alert'): Observable<void> {\r\n const subject = new Subject<void>();\r\n this.add({\r\n title,\r\n message,\r\n size: 'md',\r\n alignment: 'center',\r\n buttons: [\r\n {\r\n label: 'OK',\r\n color: 'primary',\r\n onClick: () => {\r\n subject.next();\r\n subject.complete();\r\n }\r\n }\r\n ]\r\n });\r\n return subject.asObservable();\r\n }\r\n\r\n confirm(message: string, title: string = 'Confirm'): Observable<boolean> {\r\n const subject = new Subject<boolean>();\r\n this.add({\r\n title,\r\n message,\r\n alignment: 'center',\r\n size: 'md',\r\n buttons: [\r\n {\r\n label: 'Cancel',\r\n variant: 'outline',\r\n color: 'secondary',\r\n onClick: () => {\r\n subject.next(false);\r\n subject.complete();\r\n }\r\n },\r\n {\r\n label: 'Confirm',\r\n color: 'primary',\r\n onClick: () => {\r\n subject.next(true);\r\n subject.complete();\r\n }\r\n }\r\n ]\r\n });\r\n return subject.asObservable();\r\n }\r\n\r\n open<T>(component: Type<T>, config: IDialogConfig = {}) {\r\n if (!this.viewContainerRef) {\r\n console.error('PgDialogService: ViewContainerRef not registered. Please register it in AppComponent.');\r\n // Fallback (might fail with EFFECTS error but better than crashing immediately)\r\n return this.openManual(component, config);\r\n }\r\n\r\n const dialogRef = new DialogRef();\r\n\r\n const childInjector = Injector.create({\r\n providers: [{\r\n provide: DialogRef,\r\n useValue: dialogRef\r\n }],\r\n parent: this.injector\r\n });\r\n\r\n // Create the wrapper component using VCR\r\n const wrapperRef = this.viewContainerRef.createComponent(DynamicModalWrapperComponent, {\r\n injector: childInjector // Give the wrapper access to DialogRef too\r\n });\r\n\r\n // Now initialize the DialogRef with the actual wrapper instance\r\n dialogRef.setCloseFn((res) => wrapperRef.instance.close(res));\r\n\r\n wrapperRef.instance.childInjector = childInjector;\r\n this.configureWrapper(wrapperRef, component, config);\r\n\r\n // Handle close cleanup\r\n wrapperRef.instance.closeCallback = () => {\r\n this.removeDialog(dialogRef);\r\n wrapperRef.destroy();\r\n };\r\n\r\n this.openDialogs.add(dialogRef);\r\n return dialogRef;\r\n }\r\n\r\n // Fallback implementation (old manual way)\r\n private openManual<T>(component: Type<T>, config: IDialogConfig = {}) {\r\n const wrapperRef = createComponent(DynamicModalWrapperComponent, {\r\n environmentInjector: this.injector\r\n });\r\n\r\n const dialogRef = new DialogRef();\r\n const childInjector = Injector.create({\r\n providers: [{\r\n provide: DialogRef,\r\n useValue: dialogRef\r\n }],\r\n parent: this.injector\r\n });\r\n\r\n wrapperRef.instance.childInjector = childInjector;\r\n dialogRef.setCloseFn((res) => wrapperRef.instance.close(res));\r\n\r\n this.configureWrapper(wrapperRef, component, config);\r\n\r\n // Attach to the view\r\n this.appRef.attachView(wrapperRef.hostView);\r\n const domElem = (wrapperRef.hostView as any).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n // Trigger change detection to ensure inputs are applied\r\n wrapperRef.changeDetectorRef.detectChanges();\r\n\r\n // Handle close cleanup\r\n wrapperRef.instance.closeCallback = (result) => {\r\n this.removeDialog(dialogRef);\r\n this.appRef.detachView(wrapperRef.hostView);\r\n wrapperRef.destroy();\r\n domElem.remove();\r\n };\r\n\r\n this.openDialogs.add(dialogRef);\r\n return dialogRef;\r\n }\r\n\r\n private configureWrapper(wrapperRef: ComponentRef<DynamicModalWrapperComponent>, component: Type<any>, config: IDialogConfig) {\r\n wrapperRef.instance.title = config.title || '';\r\n wrapperRef.instance.message = config.message || '';\r\n wrapperRef.instance.size = config.size || 'lg';\r\n wrapperRef.instance.childComponentType = component;\r\n wrapperRef.instance.childComponentData = config.data;\r\n\r\n // Set backdrop index based on current dialog count (1-based index)\r\n wrapperRef.instance.backdropIndex = this.openDialogs.size + 1;\r\n\r\n if (config.buttons) {\r\n wrapperRef.instance.buttons = config.buttons;\r\n }\r\n if (config.scrollable !== undefined) {\r\n wrapperRef.instance.scrollable = config.scrollable;\r\n }\r\n if (config.alignment) {\r\n wrapperRef.instance.alignment = config.alignment;\r\n }\r\n if (config.customClose) {\r\n wrapperRef.instance.customClose = config.customClose;\r\n }\r\n }\r\n\r\n private removeDialog(dialogRef: DialogRef) {\r\n this.openDialogs.delete(dialogRef);\r\n }\r\n\r\n closeAll() {\r\n // Clone to array to safely iterate as items might be deleted during iteration\r\n const dialogs = Array.from(this.openDialogs);\r\n dialogs.forEach(dialog => dialog.close());\r\n this.openDialogs.clear();\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { IAPIResponse, IConfig } from '../interface/api-response.interface';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nexport const API_ENDPOINT = {\r\n checkEmail: '/api/v1/check-email',\r\n resetPassword: '/api/v1/reset-password-email',\r\n resetPassword_V2: '/api/v2/reset-password-email',\r\n resetPassword_V3: '/api/v3/reset-password-email',\r\n changePassword: '/api/v1/changePassword'\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MiscApiService {\r\n private readonly httpService = inject(HttpClient);\r\n\r\n public async checkIfEmailExists(username: string): Promise<IAPIResponse<{ exists: boolean; email: string }>> {\r\n const response = await lastValueFrom(\r\n this.httpService.get<IAPIResponse<{ exists: boolean; email: string }>>(((window as any).config as IConfig).apiBaseURLSecurity + API_ENDPOINT.checkEmail, {\r\n params: { username: username }\r\n })\r\n );\r\n return response;\r\n }\r\n\r\n public async sendEmailForReset(userId: string): Promise<IAPIResponse<any>> {\r\n const response = await lastValueFrom(\r\n this.httpService.get<IAPIResponse<any>>(((window as any).config as IConfig).apiBaseURLSecurity + API_ENDPOINT.resetPassword, {\r\n params: { user: userId }\r\n })\r\n );\r\n return response;\r\n }\r\n\r\n public async sendEmailForResetV2(userId: string): Promise<IAPIResponse<any>> {\r\n const response = await lastValueFrom(\r\n this.httpService.get<IAPIResponse<any>>(((window as any).config as IConfig).apiBaseURLSecurity + API_ENDPOINT.resetPassword_V2, {\r\n params: { user: userId }\r\n })\r\n );\r\n return response;\r\n }\r\n\r\n public async sendEmailForResetV3(userId: string): Promise<IAPIResponse<any>> {\r\n const response = await lastValueFrom(\r\n this.httpService.get<IAPIResponse<any>>(((window as any).config as IConfig).apiBaseURLSecurity + API_ENDPOINT.resetPassword_V3, {\r\n params: { user: userId }\r\n })\r\n );\r\n return response;\r\n }\r\n}\r\n","import { Component, inject, input, output, signal } from '@angular/core';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { timer } from 'rxjs';\r\nimport { MiscApiService } from '../../services/misc-api.service';\r\nimport { ButtonModule, FormModule, SpinnerModule } from '@coreui/angular-pro';\r\nimport { IForgetPasswordConfig } from '../../interface/forget-password.interface';\r\nimport { BackgroundImageDirective } from '../../directives/background-image.directive';\r\nimport { ILOGIN_ACTION } from '../../interface/login.interface';\r\n\r\n@Component({\r\n selector: 'prg-ws-forget-password',\r\n imports: [ReactiveFormsModule, FormModule, BackgroundImageDirective, SpinnerModule, ButtonModule],\r\n templateUrl: './forget-password.component.html',\r\n styleUrl: './forget-password.component.scss'\r\n})\r\nexport class ForgetPasswordLibComponent {\r\n private readonly formBuilder = inject(FormBuilder);\r\n private readonly router = inject(Router);\r\n private readonly miscApiService = inject(MiscApiService);\r\n private readonly toastrService = inject(ToastrService);\r\n\r\n public forgetPasswordForm: FormGroup;\r\n public isFormSubmitted = false;\r\n public isLoading = signal(false);\r\n public emailSentSuccessfully = signal(false);\r\n\r\n public config = input.required<IForgetPasswordConfig>({});\r\n public action = output<{ type: string; data?: any }>();\r\n\r\n constructor() {\r\n this.forgetPasswordForm = this.formBuilder.group({\r\n username: ['', Validators.required]\r\n });\r\n }\r\n\r\n public async submitResetPassword(): Promise<void> {\r\n this.isFormSubmitted = true;\r\n if (this.forgetPasswordForm.valid) {\r\n this.isLoading.set(true);\r\n const response: any = await this.miscApiService.checkIfEmailExists(this.forgetPasswordForm.value.username).catch(() => {});\r\n if (response.result && response.result.exists) {\r\n const sendEmail: any = await this.miscApiService.sendEmailForResetV3(this.forgetPasswordForm.value.username).catch(() => {\r\n this.isLoading.set(false);\r\n });\r\n if (sendEmail?.result) {\r\n this.isLoading.set(false);\r\n this.emailSentSuccessfully.set(true);\r\n }\r\n } else {\r\n this.toastrService.error(response?.message || 'Email does not exist', 'Error');\r\n timer(500).subscribe(() => {\r\n this.isLoading.set(false);\r\n });\r\n }\r\n }\r\n }\r\n\r\n backToLogin(): void {\r\n this.action.emit({ type: ILOGIN_ACTION.BACK_TO_LOGIN });\r\n }\r\n}\r\n","<div\r\n class=\"container login-wrapper\"\r\n wsBackgroundImage\r\n [random]=\"config()?.backgroundDirective?.random\"\r\n [backgroundImage]=\"config()?.backgroundDirective?.backgroundImages\">\r\n <div class=\"row align-items-center justify-content-center vh-100\">\r\n <div class=\"col-xxl-3 col-xl-4 col-lg-6 col-12 m-auto\">\r\n <div class=\"glass-card\">\r\n <div class=\"logo-wrapper max-w-300 text-center mt-4 mx-5\">\r\n <img src=\"./assets/img/brand/pongrass_logo.png\" alt=\"pongrass-logo\" class=\"img-fluid max-w-320\" />\r\n <p class=\"fs-19 login-card-title mb-4\">Maintenance Portal</p>\r\n </div>\r\n <div class=\"mt-2\">\r\n <div class=\"h5 mb-3\">Forget Password</div>\r\n @if (emailSentSuccessfully()) {\r\n <div class=\"alert alert-success\" role=\"alert\">\r\n <strong>Success!</strong> An email has been sent to your registered email address with instructions to reset your password.\r\n </div>\r\n <button cButton color=\"primary\" (click)=\"backToLogin()\">Back to Login</button>\r\n } @else {\r\n <form cForm [formGroup]=\"forgetPasswordForm\" class=\"needs-validation\" [validated]=\"isFormSubmitted\" noValidate (ngSubmit)=\"submitResetPassword()\">\r\n <div class=\"mb-4\">\r\n <c-input-group class=\"mb-3\">\r\n <span cInputGroupText id=\"group-username-login\" class=\"transparent-input\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" style=\"width: 15px\">\r\n <path\r\n d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\" />\r\n </svg>\r\n </span>\r\n\r\n <input\r\n cFormControl\r\n id=\"txt-auth-username\"\r\n type=\"text\"\r\n sizing=\"lg\"\r\n formControlName=\"username\"\r\n required\r\n autocomplete=\"username\"\r\n class=\"transparent-input text-white\"\r\n [placeholder]=\"config()?.usernamePlaceholder\" />\r\n <c-form-feedback [valid]=\"false\">User Name is required.</c-form-feedback>\r\n </c-input-group>\r\n </div>\r\n\r\n <div class=\"submit-form mt-4\">\r\n <button type=\"submit\" cButton color=\"dark\" size=\"lg\" class=\"w-100 btn text-white fw-semibold\" [disabled]=\"isLoading()\">\r\n @if (isLoading()) {\r\n <c-spinner aria-hidden=\"true\" size=\"sm\" class=\"margin-bottom-small\" />\r\n }\r\n {{ config()?.submitButtonText || 'Reset' }}\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <div class=\"mt-4 text-center\">\r\n <button cButton color=\"dark\" variant=\"ghost\" size=\"lg\" id=\"back-to-login\" class=\"w-100 text-white\" (click)=\"backToLogin()\">Back to Login</button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of utils\r\n */\r\n\r\nexport * from './lib/services/configuration.service';\r\n\r\nexport * from './lib/components/ag-grid-renderer/color-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/custom-select-filter.component';\r\nexport * from './lib/components/ag-grid-renderer/ag-date-range-filter.component';\r\nexport * from './lib/components/checkbox-cell-renderer/checkbox-cell-renderer.component';\r\nexport * from './lib/components/comments-button-cell-renderer/comments-button-cell-renderer.component';\r\nexport * from './lib/components/edition-list-grouped/edition-list-grouped.component';\r\nexport * from './lib/components/industry-update-listbox-cell-renderer/industry-update-listbox-cell-renderer.component';\r\nexport * from './lib/components/page-status-cell-renderer/page-status-cell-renderer.component';\r\nexport * from './lib/components/status-select-cell-renderer/status-select-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/badge-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/icon-text-cell-renderer.component';\r\nexport * from './lib/components/ag-grid-renderer/hyperlink-cell-renderer.component';\r\n\r\nexport * from './lib/components/generic-filter-model/generic-filter-modal.interface';\r\nexport * from './lib/components/generic-filter-model/generic-filter-model.component';\r\n\r\nexport * from './lib/modules/multi-form/multi-form.module';\r\nexport * from './lib/modules/multi-form/multi-form.interface';\r\nexport * from './lib/modules/multi-form/multi-form.component';\r\nexport * from './lib/modules/multi-form/date-time-picker/date-time-picker.component';\r\n\r\nexport * from './lib/modules/table-grid/table-grid.module';\r\nexport * from './lib/modules/table-grid/table-grid.component';\r\nexport * from './lib/modules/table-grid/table-grid';\r\n\r\n// Export directives\r\nexport * from './lib/directives/circular-focus.directive';\r\nexport * from './lib/directives/decimal-input.directive';\r\nexport * from './lib/directives/multi-select-styler.directive';\r\nexport * from './lib/directives/show-tooltip-if-truncated.directive';\r\nexport * from './lib/directives/background-image.directive';\r\n\r\n// Export utility functions\r\nexport * from './lib/services/utils.service';\r\nexport * from './lib/services/jsonrpc.service';\r\nexport * from './lib/enums/export.enum';\r\nexport * from './lib/interface/exports.interface';\r\nexport * from './lib/helpers/dateTime.helpers';\r\n\r\nexport * from './lib/modules/login/login.module';\r\nexport * from './lib/modules/login/login.component';\r\nexport * from './lib/interface/login.interface';\r\nexport * from './lib/modules/dialog/pg-dialog.service';\r\nexport * from './lib/modules/dialog/dialog.models';\r\nexport * from './lib/modules/dialog/dynamic-modal-wrapper.component';\r\n\r\nexport * from './lib/modules/forget-password/forget-password.component';\r\nexport * from './lib/interface/forget-password.interface';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i1.CircularFocusDirective","i4","i5","i6.DecimalInputDirective","i7.ShowTooltipIfTruncatedDirective","i9.EditionListGroupedComponent","i10.MultiSelectStylerDirective","i11.DateTimePickerComponent","i2.BackgroundImageDirective"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,uBAAuB,CAAA;AAC3B,IAAA,sBAAsB;AACtB,IAAA,eAAe;AAEf,IAAA,eAAe;AACf,IAAA,iBAAiB;AAExB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAM,EAAE,kEAAC;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAiB,IAAI,2DAAC;AAEnD,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAU,KAAK,2DAAC;AAC7C,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAS,EAAE,6DAAC;IAC7C;;IAGO,gBAAgB,GAAA;AACrB,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE;IAC3C;IAEO,kBAAkB,CAAC,SAAiB,EAAE,UAAe,EAAA;AAC1D,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACxD,QAAA,kBAAkB,CAAC,SAAS,CAAC,GAAG,UAAU;AAC1C,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACrD;uGAxBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MC4BY,0BAA0B,CAAA;AAC9B,IAAA,MAAM;IACN,UAAU,GAAmB,EAAE;IAC/B,SAAS,GAAG,EAAE;AAErB,IAAA,MAAM,CAAC,MAA2B,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,IAAI,EAAE;QACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACtB;;AAGA,IAAA,OAAO,CAAC,MAA2B,EAAA;AACjC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,EAAE;AAC7D,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC;YAClF,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,KAAe;YAChD;iBAAO;AACL,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACtB;QACF;IACF;uGA1BW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvB3B,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EATS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAyBX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA3BtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,WACP,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,4BAA4B,EAAA,QAAA,EAC5B,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gHAAA,CAAA,EAAA;;;MC6DU,2BAA2B,CAAA;AACtC,IAAA,MAAM;IACN,YAAY,GAAa,EAAE;IAC3B,cAAc,GAAa,EAAE;AAC7B,IAAA,cAAc,GAAgB,IAAI,GAAG,EAAE;IACvC,UAAU,GAAW,EAAE;IACvB,eAAe,GAAY,KAAK;AAEhC,IAAA,MAAM,CAAC,MAAqB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;QAC1C,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE;AAE0B,IAAA,cAAc;IAExC,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE;IAC7C;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU;QAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAG;AACjC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAM,CAAC;YAClD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1D,YAAA,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5B,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACtC,IAAI,CAAC,KAAK,OAAO;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,OAAO;AAAE,gBAAA,OAAO,CAAC;AAC3B,YAAA,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACvD,QAAA,CAAC,CAAC;IACJ;IAEA,iBAAiB,CAAC,IAAS,EAAE,KAAU,EAAA;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc;QACnD,IAAI,cAAc,GAAG,KAAK;AAC1B,QAAA,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;YAChD,cAAc,GAAG,SAAS,CAAC;gBACzB,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI;AACJ,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AAC1B,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AAC1B,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;AACpB,gBAAA,OAAO,EAAG,IAAI,CAAC,MAAc,CAAC;AAC/B,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,EAAE,EAAE;AACpF,YAAA,OAAO,OAAO;QAChB;AACA,QAAA,OAAO,MAAM,CAAC,cAAc,CAAC;IAC/B;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IACvC;IAEA,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzG;AAEA,IAAA,kBAAkB,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;QAC1D,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClE;aAAO;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrE;QACA,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;IACrC;IAEA,cAAc,CAAC,KAAa,EAAE,KAAY,EAAA;AACxC,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;QAC1D,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAChC;aAAO;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC;QACA,IAAI,CAAC,mBAAmB,EAAE;;AAE1B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC9B;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;IACrC;IAEA,mBAAmB,GAAA;;QAEjB,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC5F,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;IACxF;IAEA,cAAc,GAAA;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QAC3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpG,IAAI,CAAC,mBAAmB,EAAE;IAC5B;AAEA,IAAA,cAAc,CAAC,MAA6B,EAAA;AAC1C,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAM,CAAC;AACpD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;QACjE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC;IAChD;IAEA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM;IAC9D;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;IACpD;AAEA,IAAA,QAAQ,CAAC,KAA4B,EAAA;AACnC,QAAA,IAAI,KAAK,EAAE,MAAM,EAAE;YACjB,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7C;aAAO;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QAClD;QACA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IAC9C;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;IACrC;uGAlIW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlE5B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA7BS,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAmEpC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAtEvC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,CAAC,EAAA,QAAA,EACtC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,maAAA,CAAA,EAAA;;sBAqDA,SAAS;uBAAC,aAAa;;;MCdb,0BAA0B,CAAA;AAiIf,IAAA,GAAA;AAhIpB,IAAA,MAAM;IACN,SAAS,GAAgB,IAAI;IAC7B,OAAO,GAAgB,IAAI;AAC3B,IAAA,QAAQ,GAAS,IAAI,IAAI,EAAE;IACnB,mBAAmB,GAAkB,IAAI;AAEjD,IAAA,OAAO,GAAG;AACN,QAAA;AACI,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAK;AACZ,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;gBACtB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACxB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;YACnC;AACH,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAK;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;gBACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBACjC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACtC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;YAC/C;AACH,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAK;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;gBACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBAC7B,IAAI,GAAG,KAAK,CAAC;AAAE,oBAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AACzD,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBAC3B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAChC,gBAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;YACzB;AACH,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAK;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;gBACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChE,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAClE,gBAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;YACzB;AACH,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAK;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;gBACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACpD,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/D,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAClE,gBAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;YACzB;AACH,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAK;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;gBACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,gBAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AACxC,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBAC3B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAChC,gBAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;YACzB;AACH,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAK;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;gBACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACpE,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC9D,gBAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;YACzB;AACH,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAK;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;gBACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;AACxD,gBAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/D,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAClE,gBAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;YACzB;AACH,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC5C,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAC7C,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAC7C,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG;AAC9C,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG;AAC9C;KACJ;AAED,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAA,CAAA,GAAG,GAAH,GAAG;IAAuB;AAE9C,IAAA,MAAM,CAAC,MAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACxB;IAEA,eAAe,GAAA;;QAEX,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC5B;IACJ;AAEA,IAAA,iBAAiB,CAAC,IAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,oBAAoB,EAAE;;QAG3B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,oBAAoB,EAAE;QAC/B;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;IACvC;AAEA,IAAA,eAAe,CAAC,IAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,oBAAoB,EAAE;;QAG3B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,oBAAoB,EAAE;QAC/B;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;IACvC;IAEQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;IACnD;AAEQ,IAAA,iBAAiB,CAAC,IAAY,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;QACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AACrC,QAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;IAChC;AAEQ,IAAA,aAAa,CAAC,IAAU,EAAA;AAC5B,QAAA,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;IAC7H;IAEQ,aAAa,CAAC,KAAkB,EAAE,KAAkB,EAAA;AACxD,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;AACjC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK;AAClC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAClE;IAEQ,oBAAoB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClC,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC/B;QACJ;AAEA,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC/B,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI;oBACA,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;oBAEzC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;wBACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;wBACvC,IAAI,CAAC,oBAAoB,EAAE;AAC3B,wBAAA,MAAM,CAAC,UAAU,GAAG,IAAI;AACxB,wBAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,KAAK;wBACvC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC;wBAC5C;oBACJ;gBACJ;gBAAE,OAAO,KAAK,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;gBACnE;YACJ;QACJ;QAEA,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACnC;AAEA,IAAA,aAAa,CAAC,MAAW,EAAA;AACrB,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;YAClB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;YAEzC,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,MAAM,CAAC,UAAU,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,KAAK;AAEvC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAE/B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YAExB,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;YACvC,CAAC,EAAE,CAAC,CAAC;QACT;IACJ;IAEA,cAAc,GAAA;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO;IAC7C;AAEA,IAAA,cAAc,CAAC,MAA6B,EAAA;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;AACtC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK;AAExB,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;AAEhG,QAAA,IAAI,UAAU,GAAG,CAAC,QAAQ;AAC1B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACtH;QAEA,IAAI,QAAQ,GAAG,QAAQ;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QAC9G;AAEA,QAAA,OAAO,OAAO,IAAI,UAAU,IAAI,OAAO,IAAI,QAAQ;IACvD;IAEA,QAAQ,GAAA;QACJ,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC;SACxB;IACL;AAEA,IAAA,QAAQ,CAAC,KAAU,EAAA;AACf,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,CAAC;QAE3C,IAAI,KAAK,EAAE;;YAEP,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;YACnE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;YAC7D,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,cAAc,IAAI,IAAI;;AAGvD,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5C;iBAAO;AACH,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE;YAC9B;;YAGA,IAAI,CAAC,oBAAoB,EAAE;;AAG3B,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,mBAAmB,CAAC;gBAC3E,IAAI,MAAM,EAAE;AACR,oBAAA,MAAM,CAAC,UAAU,GAAG,IAAI;oBACxB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,mBAAmB,CAAC;gBACvE;YACJ;iBAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;;gBAEvC,IAAI,CAAC,oBAAoB,EAAE;YAC/B;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC/B,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;IACvC;uGApUS,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApEzB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BX,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA9BW,YAAY,8BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,wNAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAqEpE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAxEtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,UAAA,EAC3B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,CAAC,EAAA,QAAA,EACpE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BX,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0gBAAA,CAAA,EAAA;;;MCtBU,6BAA6B,CAAA;AACjC,IAAA,KAAK;AACJ,IAAA,MAAM;IACP,kBAAkB,GAAG,IAAI;AAChC,IAAA,MAAM,CAAC,MAA2B,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;AACnF,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACtB;;AAGA,IAAA,OAAO,CAAC,MAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK;AAC9F,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AAC1D,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO;;QAGpB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;YAC5D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAC9G;IACF;uGAxBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAV9B,CAAA;;;;;;;;AAQH,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EATG,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAWT,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,UAAU,CAAC;AACrB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQH,QAAA;AACR,iBAAA;;;MCEY,mCAAmC,CAAA;AACvC,IAAA,MAAM;AAEb,IAAA,MAAM,CAAC,MAA2B,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;AAEA,IAAA,OAAO,CAAC,MAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,OAAO,IAAI;IACb;IAEA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACxE;IACF;uGAhBW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATpC,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAPS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAUX,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAb/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,sCAAsC,EAAA,OAAA,EACvC,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA;;;AChBH,IAAY,oBAcX;AAdD,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,KAAgB;AAChB,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,MAAmB;AACnB,IAAA,oBAAA,CAAA,qBAAA,CAAA,GAAA,iBAAuC;AACvC,IAAA,oBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,oBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAE7B,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AAEpC,IAAA,oBAAA,CAAA,yBAAA,CAAA,GAAA,wBAAkD;AAClD,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,gBAA8B;AAE9B,IAAA,oBAAA,CAAA,WAAA,CAAA,GAAA,aAAyB;AAC3B,CAAC,EAdW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;;ACAhC,IAAY,cAgCX;AAhCD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,UAA2B;AAC3B,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,oBAAwC;AACxC,IAAA,cAAA,CAAA,uBAAA,CAAA,GAAA,wBAAgD;AAEhD,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,aAA8B;AAC9B,IAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,qBAAwC;AACxC,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAEjB,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,qBAAsC;AACtC,IAAA,cAAA,CAAA,oBAAA,CAAA,GAAA,uBAA4C;AAC5C,IAAA,cAAA,CAAA,2BAAA,CAAA,GAAA,aAAyC;AACzC,IAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,qBAAwC;AACxC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,kBAAmC;AACnC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AAClC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,kBAAmC;AAEnC,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAE5B,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,iBAAiC;AACjC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AAClC,IAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,oBAAuC;AAEvC,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAE9B,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AAClC,IAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,cAAgC;AAClC,CAAC,EAhCW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACA1B;MAea,iBAAiB,CAAA;AACX,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC/C,IAAA,QAAQ,GAA4B,IAAI,eAAe,CAAS,EAAE,CAAC;AAEpF,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc;IACnD;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAS,MAAc,CAAC,MAAkB,EAAE,kBAAkB;IAChE;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;IACzB;;IAGO,kBAAkB,CAAC,MAAc,EAAE,MAAW,EAAA;QACnD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;AACvE,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB;SACxC;QAED,OAAO,IAAI,CAAC;aACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE;aACpC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF;;AAGO,IAAA,MAAM,yBAAyB,CAAC,MAAc,EAAE,MAAW,EAAA;QAChE,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;AACvE,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB;SACxC;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;AACvE,QAAA,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAM,QAAQ,CAAC;AACnD,QAAA,OAAO,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;IAC7D;AAEA;;;;AAIG;AACI,IAAA,MAAM,aAAa,CAAC,QAAgB,EAAE,SAAiB,EAAA;AAC5D,QAAA,MAAM,MAAM,GAAG;YACb,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,UAAU,EAAE;SACb;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM;AACxE,aAAA,IAAI,CAAC,CAAC,QAAqC,KAAI;YAC9C,OAAO,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;AAC5D,QAAA,CAAC;AACA,aAAA,OAAO,CAAC,MAAK,EAAE,CAAC,CAAC;IACtB;AAEA;;;;AAIG;AACI,IAAA,MAAM,oBAAoB,CAAC,QAAgB,EAAE,UAAkB,EAAA;AACpE,QAAA,MAAM,MAAM,GAAG;YACb,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,WAAW,EAAE;SACd;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM;AAChE,aAAA,IAAI,CAAC,CAAC,QAAqC,KAAI;YAC9C,OAAO,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;AAC5D,QAAA,CAAC;AACA,aAAA,OAAO,CAAC,MAAK,EAAE,CAAC,CAAC;IACtB;;IAGO,MAAM,cAAc,CAAC,SAAiB,EAAA;AAC3C,QAAA,IAAI;YACF,MAAM,QAAQ,GAAoC,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,cAAc,EAAE;gBACpH,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,gBAAA,UAAU,EAAE;AACb,aAAA,CAAC;AAEF,YAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,OAAO,QAAQ,CAAC,MAAM;YACxB;AACA,YAAA,OAAO,EAAE;QACX;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,EAAE;QACX;IACF;;AAGO,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,KAAU,EAAA;AACpD,QAAA,IAAI,MAAM,GAAG;YACX,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,YAAA,UAAU,EAAE;SACb;QACD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE;QAChC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC;IACjF;AAEA;;;;;;AAMG;AACI,IAAA,MAAM,0BAA0B,CAAC,SAAiB,EAAE,QAAa,EAAE,MAAoB,EAAA;AAC5F,QAAA,IAAI,MAAM,GAAG;YACX,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,YAAY,EAAE;SACf;QACD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE;QACnC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC;IACjF;AAEA;;;;;AAKG;AACI,IAAA,MAAM,YAAY,CAAC,SAAiB,EAAE,KAAU,EAAA;AACrD,QAAA,IAAI,MAAM,GAAG;YACX,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,YAAA,UAAU,EAAE;SACb;QACD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE;QAEhC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;IAC/E;uGA/IW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACdD;MAmBa,2BAA2B,CAAA;AACrB,IAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEnD,IAAA,QAAQ;AAET,IAAA,sBAAsB;AAKrB,IAAA,eAAe;AACf,IAAA,gBAAgB;AAEd,IAAA,sBAAsB,GAAG,IAAI,YAAY,EAAY;AACtD,IAAA,KAAK;AACL,IAAA,QAAQ;AACR,IAAA,YAAY;AAErB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;IACA,QAAQ,GAAA;QACN,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;AAEQ,IAAA,MAAM,yBAAyB,GAAA;AACrC,QAAA,MAAM,MAAM,GAAG;YACb,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,YAAA,YAAY,EAAE;SACf;QAED,MAAM,IAAI,CAAC;AACR,aAAA,yBAAyB,CAAC,cAAc,CAAC,yBAAyB,EAAE,MAAM;AAC1E,aAAA,IAAI,CAAC,CAAC,QAA6C,KAAI;AACtD,YAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,gBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM;AAC9B,gBAAA,MAAM,CAAC,OAAO,CAAC,EAAE,IAAG;AAClB,oBAAA,EAAE,CAAC,UAAU,CAAC,GAAG,KAAK;AACxB,gBAAA,CAAC,CAAC;gBACF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,OAA4B,KAAI;AAC/E,oBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;oBAC7B,IAAI,MAAM,EAAE;AACV,wBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;4BAChB,GAAG,CAAC,MAAM,CAAC,GAAG;AACZ,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,MAAM,EAAE;6BACT;wBACH;wBACA,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;oBAClC;AACA,oBAAA,OAAO,GAAG;gBACZ,CAAC,EAAE,EAAE,CAAC;gBACN,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;YAC9D;AACF,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,kBAAkB,CAAC,MAAmD,EAAA;AAC3E,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAE1B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,gBAAA,MAAM,CAAC,OAAO,CAAC,WAAW,IAAG;oBAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,MAAO,CAAC;AACjD,gBAAA,CAAC,CAAC;YACJ;QACF;aAAO;AACL,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3C;QACF;QAEA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACzD;IAEO,oBAAoB,CAAC,MAAc,EAAE,KAAa,EAAA;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;QAExD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC;AAEA,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,IAAG;AAC5C,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC7B,gBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,IAAG;AACpC,oBAAA,YAAY,CAAC,QAAQ,GAAG,CAAC,UAAU;AACrC,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,eAAe,CAAC,QAAiB,EAAA;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,CAAC,2BAA2B,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAgB,KAAI;AAC/C,YAAA,OAAuB,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,MAAM;AAC7E,QAAA,CAAC,CAAC;IACJ;uGA5GW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,sOCnBxC,4pCA4BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,+BAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKtC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;+BACE,6BAA6B,EAAA,OAAA,EAC9B,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,EAAA,UAAA,EAGtC,IAAI,EAAA,QAAA,EAAA,4pCAAA,EAAA;;sBAef;;sBACA;;sBACA;;sBACA;;;MErBU,0CAA0C,CAAA;IAC9C,YAAY,GAAgB,EAAE;AAC9B,IAAA,gBAAgB;AACf,IAAA,MAAM;AAEd,IAAA,MAAM,CAAC,MAA2B,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE;QAC/E,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ;AAE7C,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB;QAC3C;IACF;AAEA,IAAA,OAAO,CAAC,MAA2B,EAAA;QACjC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ;AAE7C,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB;QAC3C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAK;QACvD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,EAAE;AAC5D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;QACjF;IACF;uGA7BW,0CAA0C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0CAA0C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdvD,qjBAcA,EAAA,MAAA,EAAA,CAAA,kOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHY,WAAW,0vBAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGnB,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAPtD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8CAA8C,WAG/C,CAAC,WAAW,EAAE,OAAO,CAAC,cACnB,IAAI,EAAA,QAAA,EAAA,qjBAAA,EAAA,MAAA,EAAA,CAAA,kOAAA,CAAA,EAAA;;;MEGL,+BAA+B,CAAA;IACnC,cAAc,GAAsB,EAAE;AACrC,IAAA,MAAM;;IAEP,UAAU,GAAoB,SAAS;AAE9C,IAAA,MAAM,CAAC,MAA2B,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,IAAI,EAAE;AACnF,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACtB;;AAGA,IAAA,OAAO,CAAC,MAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI;AAC7B,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE;AAC9D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;QACnF;IACF;IAEO,cAAc,GAAA;QACnB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,CAAC,UAAW,CAAC,gBAAgB,CAAC;AACxH,QAAA,OAAO,cAAc,IAAI,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,GAAG,SAAS;IAC5F;uGA3BW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,4FCf5C,2iBAiBA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,mHAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGpC,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;+BACE,kCAAkC,EAAA,OAAA,EAGnC,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,EAAA,UAAA,EACpC,IAAI,EAAA,QAAA,EAAA,2iBAAA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA;;;MEEL,iCAAiC,CAAA;IACrC,cAAc,GAAkB,EAAE;AACjC,IAAA,MAAM;;IAEP,UAAU,GAAoB,SAAS;AAE9C,IAAA,MAAM,CAAC,MAA2B,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,IAAI,EAAE;AACnF,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACtB;;AAGA,IAAA,OAAO,CAAC,MAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI;AAC7B,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE;AAC9D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;QACnF;IACF;IAEO,cAAc,GAAA;QACnB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAW,CAAC,eAAe,CAAC;AAC/G,QAAA,OAAO,cAAc,IAAI,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,GAAG,SAAS;IAC5F;uGA3BW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,8FCf9C,iiBAiBA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPY,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,mHAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAKpC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAP7C,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EACtC,oCAAoC,EAAA,QAAA,EAAA,iiBAAA,EAAA,MAAA,EAAA,CAAA,sIAAA,CAAA,EAAA;;;MEkBnC,0BAA0B,CAAA;IAC5B,YAAY,GAAW,EAAE;IACzB,UAAU,GAAW,WAAW;IAChC,SAAS,GAAW,OAAO;IAC3B,YAAY,GAA8B,EAAE;AAEnD,IAAA,MAAM,CAAC,MAA2B,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC5B;AAEA,IAAA,OAAO,CAAC,MAA2B,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxB,QAAA,OAAO,IAAI;IACf;AAEQ,IAAA,WAAW,CAAC,MAA2B,EAAA;;QAE3C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK;AAEzD,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB;;AAGxD,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QAEtB,IAAI,cAAc,EAAE;AAChB,YAAA,IAAI,cAAc,CAAC,SAAS,EAAE;AAC1B,gBAAA,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS;YAC7C;;AAGA,YAAA,IAAI,cAAc,CAAC,KAAK,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC;YACzC;;AAGA,YAAA,IAAI,cAAc,CAAC,QAAQ,EAAE;;AAEzB,gBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK;AACxB,gBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC9B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjD;YACJ;;YAGA,IAAI,cAAc,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE;gBAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;gBACzD,IAAI,UAAU,EAAE;AACZ,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC/B;YACJ;QACJ;IACJ;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QAErG,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;QAChD;aAAO;;AAEH,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,KAAK;QACjD;IACJ;uGApES,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBzB,CAAA;;;;;;;;;;;GAWX,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZW,YAAY,mHAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAoB1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAvBtC,SAAS;+BACI,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAC1B,CAAA;;;;;;;;;;;AAWX,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,8CAAA,CAAA,EAAA;;;MCUU,6BAA6B,CAAA;IACjC,YAAY,GAAW,EAAE;IACzB,QAAQ,GAAW,EAAE;IACrB,YAAY,GAAoB,OAAO;IACvC,KAAK,GAAY,KAAK;AAE7B,IAAA,MAAM,CAAC,MAA2B,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC1B;AAEA,IAAA,OAAO,CAAC,MAA2B,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxB,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,WAAW,CAAC,MAA2B,EAAA;QAC7C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK;AAEzD,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB;QACxD,IAAI,cAAc,EAAE;;AAElB,YAAA,IAAI,OAAO,cAAc,CAAC,QAAQ,KAAK,UAAU,EAAE;gBACjD,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD;iBAAO;gBACL,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,IAAI,EAAE;YAC/C;YACA,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,IAAI,OAAO;;YAG1D,IAAI,cAAc,CAAC,cAAc,IAAI,OAAO,cAAc,CAAC,cAAc,KAAK,UAAU,EAAE;gBACxF,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC;YACpD;iBAAO;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YACpB;QACF;IACF;uGAnCW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArB9B,CAAA;;;;;;;;;;;;GAYT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAbS,YAAY,8BAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAsBvB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAzBzC,SAAS;+BACE,gCAAgC,EAAA,UAAA,EAC9B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,UAAU,CAAC,EAAA,QAAA,EACzB,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mDAAA,CAAA,EAAA;;;MCWU,8BAA8B,CAAA;IAChC,YAAY,GAAW,EAAE;IACzB,IAAI,GAAW,EAAE;IACjB,MAAM,GAAW,QAAQ;IACzB,MAAM,GAAY,KAAK;AAE9B,IAAA,MAAM,CAAC,MAA2B,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC5B;AAEA,IAAA,OAAO,CAAC,MAA2B,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxB,QAAA,OAAO,IAAI;IACf;AAEQ,IAAA,WAAW,CAAC,MAA2B,EAAA;QAC3C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK;AACzD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;QAE1B,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;YACnB;QACJ;QAEA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,IAAI,EAAE;QAC9D,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,IAAI,MAAM,CAAC;AAE3C,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC1B;AAAO,aAAA,IAAI,IAAI,KAAK,MAAM,EAAE;YACxB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC;QAChD;aAAO;;YAEH,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC1E,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAC1B;iBAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE;gBAC5F,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC;YAChD;iBAAO;AACH,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;YACvB;QACJ;IACJ;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,OAAA,EAAU,KAAK,EAAE;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO;IACzB;IAEQ,SAAS,CAAC,KAAa,EAAE,WAAoB,EAAA;AACjD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,GAAG,GAAG,KAAK;;AAEf,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACxB,YAAA,GAAG,GAAG,CAAA,QAAA,EAAW,GAAG,CAAA,CAAE;QAC1B;AAAO,aAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;;;;;;;AAOzD,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnB,gBAAA,GAAG,GAAG,CAAA,QAAA,EAAW,GAAG,CAAA,CAAE;YAC1B;QACJ;AACA,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,WAAW,IAAI,QAAQ;IACzC;uGApES,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxB7B,CAAA;;;;;;AAMX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAPW,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAyBb,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBA5B1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,cAC9B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,CAAA;;;;;;AAMX,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA;;;ICZS;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAEjB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACpB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,MAAmB;AACrB,CAAC,EApBW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;ACHlB,MAAM,WAAW,GAAG;AACzB,IAAA;AACE,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,cAAc;AAC1B,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,mBAAmB;AAC/B,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,WAAW;AACvB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,UAAU,EAAE;AACb,KAAA;AACD,IAAA;AACE,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,UAAU,EAAE;AACb;CACF;;MCjMY,sBAAsB,CAAA;AACzB,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;IAEtB,MAAM,GAAW,EAAE;IACnB,SAAS,GAAqB,IAAI;IAEnC,iBAAiB,GAAkB,EAAE;IACrC,gBAAgB,GAAwB,IAAI;IAEpD,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,wBAAwB,EAAE;;AAG/B,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;;oBAEjE,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,wBAAwB,EAAE;oBACjC,CAAC,EAAE,CAAC,CAAC;AACP,gBAAA,CAAC,CAAC;YACJ;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAEA,WAAW,GAAA;;AAET,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;QACrC;IACF;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;AAEhB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QAC3E;aAAO;YACL,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YACxD,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;YACjE;QACF;IACF;AAEQ,IAAA,oBAAoB,CAAC,OAAoB,EAAA;AAC/C,QAAA,OAAO,KAAK,CAAC,IAAI,CACf,OAAO,CAAC,gBAAgB,CACtB,qNAAqN,CACtN,CACF,CAAC,MAAM,CAAC,EAAE,IAAG;;YAEZ,MAAM,OAAO,GAAG,EAAiB;AACjC,YAAA,OAAO,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC;AACvC,QAAA,CAAC,CAAkB;IACrB;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;AAK5B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;YAAE;;AAGzB,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE;AAEzC,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,aAA4B;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC;;QAGnE,IAAI,YAAY,KAAK,CAAC,CAAC;YAAE;;AAGzB,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;;AAElB,YAAA,IAAI,YAAY,KAAK,CAAC,EAAE;gBACtB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7E,WAAW,CAAC,KAAK,EAAE;YACrB;QACF;aAAO;;YAEL,IAAI,YAAY,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtD,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC9C,YAAY,CAAC,KAAK,EAAE;YACtB;QACF;IACF;uGAzFW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAIE;;sBACA;;sBAoDA,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCzDxB,qBAAqB,CAAA;AACxB,IAAA,EAAE,GAAG,MAAM,EAAC,UAA4B,EAAC;IACzC,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE9C,cAAc,GAAG,CAAC;IAClB,mBAAmB,GAAG,IAAI;AAEnC,IAAA,IAAY,aAAa,GAAA;QACvB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAGA,IAAA,OAAO,CAAC,CAAa,EAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK;QAE1B,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAE5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD;AAEA,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;YAC9D,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;QAClE;AAEA,QAAA,IAAI,OAAO,KAAK,MAAM,EAAE;AACtB,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC;AAE3C,YAAA,KAAK,CAAC,KAAK,GAAG,OAAO;AAErB,YAAA,MAAM,MAAM,GAAG,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3D,YAAA,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC;AAEvC,YAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrI;IACF;AAGA,IAAA,OAAO,CAAC,CAAiB,EAAA;AACvB,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;QACnD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7B,CAAC,CAAC,cAAc,EAAE;QACpB;IACF;IAGA,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE;AAC9C,QAAA,IAAI,CAAC,GAAG;YAAE;AAEV,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,IAAI,KAAK,CAAC,GAAG,CAAC;YAAE;QAEhB,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAEzC,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC5D;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC5D;QAEA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG;IACnC;AAEA,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,IAAG;YACxC,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACpD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC5B;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,kBAAkB,CAAC,KAAU,EAAA;QACnC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YAChC;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG;IACnC;uGAlFW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAKE;;sBACA;;sBAMA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBA4BhC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAQhC,YAAY;uBAAC,MAAM;;;ACtDtB;MAOa,+BAA+B,CAAA;IACP,WAAW,GAAW,EAAE;AACnD,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,IAAA,WAAA,GAAA,EAAe;IAGf,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YAC3B;QACF;QACA,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACjD,YAAA,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,IAAI,CAAC;SACb,CAAC,CAAC,IAAI,EAAE;IACX;IAGA,YAAY,GAAA;AACV,QAAA,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE;IAC5D;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAChC,QAAA,OAAO,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW;IACxC;uGAzBW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,0BAAA,EAAA,aAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,4BAA4B,EAAE,UAAU,EAAE,IAAI,EAAE;;sBAEpE,KAAK;uBAAC,0BAA0B;;sBAKhC,YAAY;uBAAC,YAAY;;sBAWzB,YAAY;uBAAC,YAAY;;;MCff,0BAA0B,CAAA;IAC7B,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,IAAA,gBAAgB;IAEf,mBAAmB,GAAY,IAAI;IACnC,OAAO,GAAmB,EAAE;IAC7B,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEtE,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE;AAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB;QACF;;QAGA,UAAU,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;;QAG9C,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,MAAK;YAC1C,UAAU,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAChD,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC9C,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAK;YAChD,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE;AACvC,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;IACJ;IAEQ,qBAAqB,GAAA;QAC3B,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,8BAA8B,CAAC;IAC5E;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC9C,QAAA,IAAI,CAAC,SAAS;YAAE;;QAGhB,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC;QAC1D,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,MAAM,EAAE;QACvB;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK;AAE3C,QAAA,IAAI,CAAC,aAAa;YAAE;QAEpB,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,yBAAyB,CAAC;AACtE,QAAA,IAAI,CAAC,WAAW;YAAE;AAElB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,aAAa,CAAC;QACpE,IAAI,CAAC,MAAM,EAAE;YACX;QACF;;QAEA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;;QAG1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC;AAClE,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC;IAC3E;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE;IACrC;uGAhFW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAOE;;sBACA;;;AChBH;AAIA;AACM,SAAU,mBAAmB,CAAC,IAAU,EAAA;AAC5C,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;AAEpB,IAAA,MAAM,UAAU,GAAG,IAAI,YAAY,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI;AACnE,IAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAA,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD;AACA,IAAA,OAAO,UAAU;AACnB;AAEA;AACA;AACM,SAAU,kBAAkB,CAAC,IAAU,EAAA;AAC3C,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;AAEpB,IAAA,MAAM,MAAM,GAAI,MAAc,CAAC,MAAiB;IAChD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,IAAA,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAE/B,IAAA,QAAQ,MAAM,CAAC,iBAAiB;AAC9B,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAI,EAAE;AAClC,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,IAAI,EAAE;AAClC,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,GAAG,EAAE;AAClC,QAAA;AACE,YAAA,OAAO,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAI,EAAE;;AAEtC;AAEA;AACA;AACM,SAAU,kBAAkB,CAAC,IAAmB,EAAE,UAAmB,EAAA;AACzE,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;AAEpB,IAAA,MAAM,MAAM,GAAI,MAAc,CAAC,MAAiB;AAChD,IAAA,IAAI,MAAW;AACf,IAAA,IAAI,UAAU;QAAE,MAAM,GAAG,UAAU;;AAC9B,QAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB;AAEtC,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AAE9B,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE;AAClC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7D,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACrF;AAEA;AACM,SAAU,gBAAgB,CAAC,UAAkB,EAAA;IACjD,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,OAAO,EAAE;IACX;AACA,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;AACjC,IAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAClC,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE;AACT,KAAA,CAAC;AACJ;SAOgB,mBAAmB,GAAA;IACjC,MAAM,KAAK,GAAiB,EAAE;AAE9B,IAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE;AACpC,QAAA,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE;AAC9C,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE;AAC/C,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;YAEpC,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;AAC1B,gBAAA,KAAK,EAAE,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,EAAG,IAAI,CAAA;AAC9D,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,OAAO,KAAK;AACd;AAEA;AACM,SAAU,wBAAwB,CAAC,SAAiB,EAAA;IACxD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAE9B,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAClD,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACpD,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAEpD,IAAA,OAAO,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,EAAE;AACzB;;MCxFa,uBAAuB,CAAA;IAClC,IAAI,GAAgB,IAAI;IACxB,SAAS,GAAkB,IAAI;IAC/B,QAAQ,GAAG,KAAK;IAEP,aAAa,GAAG,mBAAmB,EAAE;AACrC,IAAA,YAAY,GAAG,KAAK,CAAC;AAEtB,IAAA,QAAQ,GAAG,CAAC,CAAc,KAAI,EAAE,CAAC;AACjC,IAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAE5B,IAAA,UAAU,CAAC,KAAkB,EAAA;QAC3B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;;;;AAKjE,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,cAAc,EAAE;AACvC,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE;AACrC,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,EAAE;;AAGlC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;;AAItC,QAAA,MAAM,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa,EAAE;QAEjC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE;YACZ,CAAC,GAAG,CAAC;QACP;QAEA,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,EAAE;IAC9B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,YAAY,CAAC,IAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY;QACpC;QAEA,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEQ,SAAS,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnB;QACF;AAEA,QAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;;;;QAKpD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE;IAClB;uGAxFW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,SAAA,EARvB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdH,22BA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDXa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAZnC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAEpB,KAAK,EAAA,SAAA,EACN;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,22BAAA,EAAA;;;AEdH;MAea,kBAAkB,CAAA;AACZ,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC,IAAA,oBAAoB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC9C,IAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAElD,IAAA,MAAM;AACN,IAAA,gBAAgB;AAChB,IAAA,8BAA8B;AAC9B,IAAA,MAAM;AAEL,IAAA,WAAW,GAAG,IAAI,YAAY,EAAwD;AACtF,IAAA,sBAAsB,GAAsB,IAAI,YAAY,EAAO;AACnE,IAAA,oBAAoB,GAAsB,IAAI,YAAY,EAAO;AAEpE,IAAA,SAAS;AACT,IAAA,eAAe;AACd,IAAA,iBAAiB;IAElB,WAAW,GAAY,KAAK;IAC5B,sBAAsB,GAAY,KAAK;IACtC,iBAAiB,GAAY,KAAK;AAC1C,IAAA,SAAS,GAAG;AACV,QAAA,WAAW,EAAE;KACd;IACM,WAAW,GAAG,WAAW;IACzB,aAAa,GAAG,aAAa;AACpC,IAAA,KAAK,GAAG,IAAI,IAAI,EAAE;AAElB,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;IAClB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,EAAE;AAC3D,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAC5E,IAAI,CAAC,IAAI,CAAC;AACR,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,KAAK,EAAE,kCAAkC;AACzC,wBAAA,cAAc,EAAE,IAAI;AACpB,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,cAAc,EAAE,CAAA,UAAA;AACjB,qBAAA,CAAC,CAAC,IAAI,CAAC,CAAC,MAAW,KAAI;AACtB,wBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;4BACtB,IAAI,CAAC,wBAAwB,EAAE;wBACjC;AAAO,6BAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;4BAC1B,IAAI,CAAC,wBAAwB,EAAE;wBACjC;AACF,oBAAA,CAAC,CAAC;oBACF;gBACF;gBACA,IAAI,CAAC,kBAAkB,EAAE;YAC3B;iBAAO;gBACL,IAAI,CAAC,kBAAkB,EAAE;YAC3B;QACF;IACF;IAEQ,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AAC7B,gBAAA,GAAG,CAAC,OAAO,CAAC,KAAK,IAAG;AAClB,oBAAA,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC,SAAS,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC,UAAU;wBAAE;oBAEzF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC;oBACxD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;AACzC,wBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CACrI;oBACH;yBAAO,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;;AAE5C,wBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;AACE,4BAAA,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,IAAI,EAAE,CAAC,GAAG,EAAE;AAClH,4BAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;yBACtC,EACD,UAAU,CACX,CACF;oBACH;yBAAO,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,EAAE;AAC7C,wBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,WAAW,CAAC,OAAO,CACtB;4BACE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AACpE,4BAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;yBACtC,EACD,UAAU,CACX,CACF;oBACH;yBAAO;AACL,wBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBAC3J;AACF,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;IAEF;;IAGA,kBAAkB,CAAC,MAAW,EAAE,KAAmB,EAAA;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACpD;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM;YAAE;QAEhC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AAC7B,YAAA,GAAG,CAAC,OAAO,CAAC,KAAK,IAAG;AAClB,gBAAA,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC,SAAS,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC,UAAU;oBAAE;gBAEzF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC;AACxD,gBAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;;gBAGnD,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,YAAY,GAAQ,EAAE;oBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;wBACzC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;oBAC5D;AAAO,yBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,OAAO,EAAE;AACpF,wBAAA,YAAY,GAAG,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,IAAI,EAAE,CAAC;oBACxI;yBAAO,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,EAAE;AAC7C,wBAAA,YAAY,GAAG,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;oBACvE;yBAAO;AACL,wBAAA,YAAY,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;oBAClC;AACA,oBAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;oBACnF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC;gBACvD;;gBAGA,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;gBAGpC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;oBACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACrF;AAAO,qBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,OAAO,EAAE;oBACpF,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACnF;qBAAO,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK,EAAE;AAC7C,oBAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBAChG;qBAAO;AACL,oBAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBAC3D;;gBAGA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAC/C,IAAI,UAAU,EAAE;oBACd,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACvC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;IACjC;AAEO,IAAA,gBAAgB,CAAC,KAAU,EAAA;AAChC,QAAA,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK;IACpD;AAEQ,IAAA,aAAa,CAAC,WAA8B,EAAA;QAClD,MAAM,UAAU,GAAQ,EAAE;QAE1B,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,WAAW,CAAC,QAAQ,EAAE;AACxB,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACtC;AACA,YAAA,IAAI,WAAW,CAAC,SAAS,EAAE;AACzB,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC9D;AACA,YAAA,IAAI,WAAW,CAAC,SAAS,EAAE;AACzB,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC9D;AACA,YAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACvB,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1D;AACA,YAAA,IAAI,WAAW,CAAC,GAAG,EAAE;AACnB,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAClD;AACA,YAAA,IAAI,WAAW,CAAC,GAAG,EAAE;AACnB,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAClD;QACF;AAEA,QAAA,OAAO,UAAU;IACnB;;IAGO,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,MAAM,kBAAkB,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACrI,QAAA,OAAO,kBAAkB;IAC3B;;IAGO,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;IAC9B;;IAGO,QAAQ,CAAC,OAAe,EAAE,KAAU,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;IAClD;;AAGO,IAAA,QAAQ,CAAC,OAAe,EAAA;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK;IAC/C;;AAGO,IAAA,cAAc,CAAC,OAAe,EAAA;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzC;IAEQ,iBAAiB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAChG;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;IACvD;IAEO,wBAAwB,GAAA;AAC7B,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC9I;IAEO,wBAAwB,GAAA;AAC7B,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEO,aAAa,CAAC,KAAU,EAAE,OAAe,EAAA;AAC9C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;IAC/B;IAEO,iBAAiB,CAAC,KAAU,EAAE,OAAe,EAAA;AAClD,QAAA,MAAM,WAAW,GAAiB,IAAI,CAAC,eAAe,EAAE;QACxD,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE;AAC7E,gBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBACjC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBACpC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;gBAC5H;YACF;QACF;IACF;;;;;;;;;;;AAaO,IAAA,eAAe,CAAC,KAAU,EAAA;QAC/B,MAAM,iBAAiB,GAAG,SAAS;QACnC,MAAM,oBAAoB,GAAG,QAAQ;QAErC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5D;aAAO,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/D;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/E;IACF;IAEO,YAAY,CAAC,KAAmB,EAAE,OAAY,EAAA;AACnD,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM;QAChC,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,KAAI;gBAClG,KAAK,CAAC,OAAO,GAAG,QAAQ,EAAE,MAAM,IAAI,EAAE;AACxC,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,qBAAqB,CAAC,WAAiB,EAAE,cAAsB,EAAA;AACpE,QAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QACzC;AAAO,aAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE;;AAGtC,YAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;YAE1D,IAAI,SAAS,GAAG,EAAE;AAClB,YAAA,IAAI,WAAW,KAAK,EAAE,EAAE;gBACtB,SAAS,GAAG,EAAE;YAChB;AAAO,iBAAA,IAAI,WAAW,KAAK,EAAE,EAAE;gBAC7B,SAAS,GAAG,EAAE;YAChB;AAAO,iBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACtB,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC;gBACvE,SAAS,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE;YAC9B;YAEA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC;QACjD;AAAO,aAAA,IAAI,cAAc,KAAK,WAAW,EAAE;YACzC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1C;AAAO,aAAA,IAAI,cAAc,KAAK,YAAY,EAAE;YAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC;QAC3C;AAAO,aAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;YACtC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC;QAC3C;aAAO;YACL,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QACzC;IACF;IAEQ,WAAW,CAAC,WAAiB,EAAE,UAAkB,EAAA;AACvD,QAAA,IAAI,UAAU,IAAI,UAAU,KAAK,CAAC,EAAE;AAClC,YAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;AACrF,YAAA,OAAO,WAAW;QACpB;IACF;IAEQ,eAAe,GAAA;QACrB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAClC,YAAA,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;AACvB,gBAAA,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;AACjC,oBAAA,OAAO,KAAK;gBACd;YACF;QACF;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,KAAmB,EAAA;;AAE1C,QAAA,IAAI,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE;AAChC,YAAA,OAAO,IAAI;QACb;;QAGA,IAAI,KAAK,EAAE,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC1D,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;AAEA;;;;AAIG;AACK,IAAA,aAAa,CAAC,KAAmB,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE;;AAEZ,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;YACzB,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAC9D;AAEA,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK;QAClC,OAAO,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,EAAE;IACnF;AAEA;;;AAGG;IACI,oBAAoB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM;YAAE;QAEhC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AAC7B,YAAA,GAAG,CAAC,OAAO,CAAC,KAAK,IAAG;AAClB,gBAAA,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC,SAAS,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC,UAAU;oBAAE;AAEzF,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;AACrD,gBAAA,IAAI,CAAC,OAAO;oBAAE;gBAEd,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAErD,gBAAA,IAAI,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;oBACzC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACvC;AAAO,qBAAA,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,EAAE;oBAChD,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACtC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,KAAc,EAAA;QACrC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACjC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,IAAI,CAAC;AAEzH,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;QACjE;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;YAC5B,IAAI,OAAO,KAAK,EAAE;AAAE,gBAAA,OAAO,IAAI;AAE/B,YAAA,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC;AAC/B,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;QAC7D;AAEA,QAAA,OAAO,IAAI;IACb;uGA9aW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,oYCf/B,8+iBAkSA,EAAA,MAAA,EAAA,CAAA,qoCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,2BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA;;2FDnRa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,8+iBAAA,EAAA,MAAA,EAAA,CAAA,qoCAAA,CAAA,EAAA;;sBAOhB;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;;MEgBU,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,CAxBX,kBAAkB,EAAE,uBAAuB,aAExD,sBAAsB;YACtB,YAAY;YACZ,mBAAmB;YACnB,iBAAiB;YACjB,UAAU;YACV,UAAU;YACV,mBAAmB;YACnB,gBAAgB;YAChB,qBAAqB;YACrB,+BAA+B;YAC/B,WAAW;YACX,aAAa;YACb,YAAY;YACZ,kBAAkB;YAClB,kBAAkB;YAClB,uBAAuB;YACvB,2BAA2B;YAC3B,0BAA0B;YAC1B,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAER,kBAAkB,EAAE,uBAAuB,CAAA,EAAA,CAAA;AAE1C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YArBxB,YAAY;YACZ,mBAAmB;YACnB,iBAAiB;YACjB,UAAU;YACV,UAAU;YACV,mBAAmB;YACnB,gBAAgB;YAGhB,WAAW;YACX,aAAa;YACb,YAAY;YACZ,kBAAkB;YAClB,kBAAkB;YAElB,2BAA2B;YAE3B,gBAAgB,CAAA,EAAA,CAAA;;2FAIP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAzB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;AAC3D,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBACtB,YAAY;wBACZ,mBAAmB;wBACnB,iBAAiB;wBACjB,UAAU;wBACV,UAAU;wBACV,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;wBACrB,+BAA+B;wBAC/B,WAAW;wBACX,aAAa;wBACb,YAAY;wBACZ,kBAAkB;wBAClB,kBAAkB;wBAClB,uBAAuB;wBACvB,2BAA2B;wBAC3B,0BAA0B;wBAC1B,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,uBAAuB;AACtD,iBAAA;;;AC1CD;MAkBa,2BAA2B,CAAA;AAC7B,IAAA,oBAAoB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACtD,IAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAE1C,uBAAuB,GAAsB,EAAE;IAC/C,SAAS,GAAW,EAAE;AACrB,IAAA,gBAAgB;AAEQ,IAAA,mBAAmB;AAE9C,IAAA,mBAAmB;AAE1B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAoB;QAE5D,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE;AACxE,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;IAChF;AAEO,IAAA,iBAAiB,CAAC,KAAc,EAAA;AACrC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;QAChC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACzE;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IACjE;AAEO,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;QACnG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,YAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;AACpF,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACpF,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;QACtD;IACF;AAEQ,IAAA,0BAA0B,CAAC,MAAW,EAAA;AAC5C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM;aACtB,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;AACrF,aAAA,MAAM,CAAC,CAAC,MAAW,EAAE,GAAQ,KAAI;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,YAAA,OAAO,MAAM;QACf,CAAC,EAAE,EAAE,CAAC;IACV;IAEO,KAAK,GAAA;QACV,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;IACtD;uGAvDW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBxC,q0BAiBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDY,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEvD,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;+BACE,6BAA6B,EAAA,UAAA,EAG3B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,q0BAAA,EAAA;;sBAMlE;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,qBAAqB;;;AElBlC,IAAY,UAMX;AAND,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,eAAwB;AACxB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,aAAoB;AACpB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,eAAwB;AACxB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,aAAoB;AACpB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,mBAAgC;AAClC,CAAC,EANW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;AAQtB;AACO,MAAM,aAAa,GAAwC;AAChE,IAAA,CAAC,UAAU,CAAC,IAAI,GAAG,oBAAoB;AACvC,IAAA,CAAC,UAAU,CAAC,MAAM,GAAG,sBAAsB;AAC3C,IAAA,CAAC,UAAU,CAAC,IAAI,GAAG;CACpB;AAED;AACO,MAAM,4BAA4B,GAAsD;AAC7F,IAAA,CAAC,UAAU,CAAC,MAAM,GAAG,2BAA2B;AAChD,IAAA,CAAC,UAAU,CAAC,UAAU,GAAG,0BAA0B;;CAEpD;;AC5BM,MAAM,YAAY,GAAG;AAC1B,IAAA,UAAU,EAAE;CACb;;MC8BY,kBAAkB,CAAA;AACZ,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,oBAAoB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE9D,IAAA,kBAAkB;AAClB,IAAA,iBAAiB;AACjB,IAAA,iBAAiB;AAEhB,IAAA,cAAc;AACd,IAAA,iBAAiB;AACjB,IAAA,wBAAwB;AACxB,IAAA,eAAe;AACf,IAAA,gBAAgB;AAChB,IAAA,UAAU;AACV,IAAA,aAAa;AACb,IAAA,gBAAgB;AAElB,IAAA,OAAO;AACR,IAAA,wBAAwB;AACxB,IAAA,cAAc;AAErB,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AACtC,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AAErC,IAAA,gBAAgB,GAAG;AACjB,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,EAAE,eAAe,EAAE,eAAe,IAAI;KACnG;AAED;;;AAGG;IACH,SAAS,GAAA;QACP,MAAM,YAAY,GAAmB,EAAE;AACvC,QAAA,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAG,CAAC,OAAO,CAAC,MAAM,IAAG;YAC/C,MAAM,CAAC,WAAW,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC;AAChB,gBAAA,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE;AACtB,gBAAA,QAAQ,EAAE,MAAM,CAAC,cAAc;AAChC,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,gBAAgB,CAAC;AACjC,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACH,WAAW,CAAC,aAAsB,KAAK,EAAA;QACrC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,WAAW,GAAgB;QACzB,gBAAgB,EAAE,MAAK;;;QAGvB,CAAC;AACD,QAAA,UAAU,EAAE;AACV,YAAA,qBAAqB,EAAE,CAAA,EAAG,YAAY,CAAC,UAAU,CAAA,CAAA,CAAG;AACpD,YAAA,yBAAyB,EAAE,CAAA,EAAG,YAAY,CAAC,UAAU,CAAA;AACtD;KACF;AAED,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAkB;AACxD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,YAAY,EAAO;AAChD,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,YAAY,EAAO;AACvD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAA4B;AACnE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAqB;AAC7D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAA0B;AAC5D,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAsB;AAC3D,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAyB;AAEjE,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAE1B,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;QAExB,MAAM,CAAC,MAAK;YACV,IAAI,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,KAAK,MAAM,EAAE;AAC5D,gBAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAA,KAAA,CAAO;YACnF;iBAAO;gBACL,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU;YACzE;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE;AAC/E,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE;YAC9C;YACA,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,iBAAiB,EAAE;gBACxB,IAAI,CAAC,qBAAqB,EAAE;YAC9B,CAAC,EAAE,CAAC,CAAC;QACP;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC;SAC5B;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACzF,IAAI,CAAC,WAAW,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;;AAGO,IAAA,WAAW,CAAC,KAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;;AAGO,IAAA,aAAa,CAAC,KAAU,EAAA;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE;AACxD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACnE;;AAGA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9D;;AAGO,IAAA,qBAAqB,CAAC,KAAU,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE;AACzD,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;AACzD,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC;QAClD;IACF;;IAGQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;gBACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY;AAC1D,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,KAAK;oBACpD,KAAK,EAAE,IAAI,CAAC,GAAI;oBAChB,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO;AACjF,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,EAAE,eAAe,EAAE,eAAe;AAClG,oBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;AACpB,iBAAA,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAChC,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI;AAC3B,iBAAA,CAAC;YACJ;iBAAO;gBACL,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE;AAC/C,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,WAAgB,KAAI;AACjC,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;wBACvB,GAAG,EAAE,WAAW,CAAC,KAAK;AACtB,wBAAA,OAAO,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;wBACpD,KAAK,EAAE,WAAW,CAAC,KAAK;wBACxB,IAAI,EAAE,WAAW,CAAC;AACnB,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;;AAGA,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QACtG;IACF;;IAGO,iBAAiB,CAAC,KAAY,EAAE,KAAa,EAAA;AAClD,QAAA,MAAM,SAAS,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AAC5D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;AAE7E,QAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG;AACjC,gBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AACnC,gBAAA,OAAO,EAAE;aACV;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;YACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3C;;AAGA,QAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;IACtG;;IAGQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;QAClE;QAEA,MAAM,QAAQ,GAAQ,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE;YACvC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,IAAG;gBAC/C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;AAChD,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACxD,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;AAC9F,YAAA,CAAC,CAAC;QACJ;QAEA,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;QAClE;IACF;AAEQ,IAAA,gBAAgB,CAAC,UAAkC,EAAA;AACzD,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,SAAS;;AAGjC,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;;AAElD,YAAA,MAAM,eAAe,GAAG,4BAA4B,CAAC,UAAwB,CAAC;AAC9E,YAAA,OAAO,eAAe,IAAI,aAAa,CAAC,UAAU,CAAC;QACrD;AAEA,QAAA,OAAO,UAAU;IACnB;;AAGO,IAAA,eAAe,CAAC,KAA+B,EAAA;QACpD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;AAClC,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAO,CAAC,KAAK;AACpC,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAO,CAAC,WAAW;AAC7C,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAO,CAAC,OAAO;AAE3C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;YAEtE,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,GAAG,WAAW;AAC1B,gBAAA,MAAM,CAAC,OAAO,GAAG,aAAa;YAChC;;AAGA,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QACtG;IACF;;AAGO,IAAA,aAAa,CAAC,KAAuB,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK;YAEjC,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE;gBACxD;YACF;AAEA,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE;AACpC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,GAAG,KAAK,UAAU,CAAC;AAExF,YAAA,IAAI,YAAY,GAAG,CAAC,CAAC,EAAE;AACrB,gBAAA,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC;YACrD;;AAGA,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QACtG;IACF;AAEO,IAAA,aAAa,CAAC,KAAuB,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;gBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;gBACvE,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI;gBAChC;AACF,YAAA,CAAC,CAAC;;AAGF,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QACtG;IACF;;AAGO,IAAA,mBAAmB,CAAC,KAA6B,EAAA;AACtD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;;AAGO,IAAA,mBAAmB,CAAC,KAA6B,EAAA;QACtD,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACtD;;IAGO,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzB,YAAA,YAAY,EAAE,EAAE;YAChB,iBAAiB,EAAE,IAAI,CAAC;AACzB,SAAA,CAAC;IACJ;;IAGO,oBAAoB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;QAClE;AAEA,QAAA,MAAM,MAAM,GAAG;YACb,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,YAAA,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS;AAC7C,YAAA,YAAY,EAAE;SACf;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;AAC7F,YAAA,IAAI,EAAE,CAAC,QAA2B,KAAI;AACpC,gBAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,oBAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,oBAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;wBACrF,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB;oBAC1E;oBAEA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;wBACxD,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO;AACpF,wBAAA,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AACrB,wBAAA,GAAG,CAAC,IAAI,GAAG,IAAI;AACf,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,wBAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChE,oBAAA,CAAC,CAAC;AAEF,oBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;4BAChC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,KAAK;gCACtC,KAAK,EAAE,IAAI,CAAC,GAAI;gCAChB,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO;gCACjF,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gCAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;AACvB,gCAAA,IAAI,EAAE;AACP,6BAAA,CAAC,CAAC;AACH,4BAAA,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B,4BAAA,UAAU,EAAE;AACb,yBAAA,CAAC;;AAGF,wBAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;oBACtG;gBACF;qBAAO;AACL,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kCAAkC,CAAC;gBAChE;YACF;AACD,SAAA,CAAC;IACJ;;IAGO,sBAAsB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;QACjE;QAEA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACxD,YAAA,GAAG,CAAC,OAAO,GAAG,KAAK;YACnB,OAAO,GAAG,CAAC,KAAK;YAChB,OAAO,GAAG,CAAC,IAAI;AACjB,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG;YACb,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAE;AAC1D,YAAA,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS;YAC7C,eAAe,EAAE,IAAI,CAAC;SACvB;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC;AAC7F,YAAA,IAAI,EAAE,CAAC,QAA2B,KAAI;AACpC,gBAAA,IAAI,QAAQ,EAAE,MAAM,EAAE;AACpB,oBAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC7C;qBAAO;AACL,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,kCAAkC,CAAC;gBAC9D;YACF,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,oDAAoD,CAAC;YAChF;AACD,SAAA,CAAC;IACJ;;AAGQ,IAAA,qBAAqB,CAAC,MAAW,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AAExB,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,IAAI,EAAE;AACtD,QAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,eAAe;QACxD;QAEA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACxD,YAAA,GAAG,CAAC,OAAO,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,YAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;AAClE,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE;IACxB;;IAGQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,WAAW,GAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,KAAK;gBACxD,KAAK,EAAE,IAAI,CAAC,GAAG;AACf,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,EAAE,eAAe,EAAE,eAAe,IAAI,GAAG;AAC1G,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;AACvB,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAChC,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5B,gBAAA,UAAU,EAAE;AACb,aAAA,CAAC;;AAGF,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QACtG;IACF;;AAGO,IAAA,eAAe,CAAC,MAAW,EAAA;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;QAC/C,MAAM,YAAY,GAAU,EAAE;QAC9B,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAS,KAAI;AAC9C,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B;AACF,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,mBAAmB,GAAuB;AAC9C,YAAA,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAM,CAAC,OAAO;AACtB,YAAA,OAAO,EAAE;SACV;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC9C;;AAGO,IAAA,kBAAkB,CAAC,KAA4B,EAAA;AACpD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;uGAvcW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,giBChC/B,29KAmHA,EAAA,MAAA,EAAA,CAAA,w7CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,0BAAA,EAAA,mCAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,mCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,sCAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,2CAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,2CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,kCAAA,EAAA,uCAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,gCAAA,EAAA,qCAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qCAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,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,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDnFa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,29KAAA,EAAA,MAAA,EAAA,CAAA,w7CAAA,CAAA,EAAA;;sBAQhB;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEtCH,cAAc,CAAC,eAAe,CAAC,CAAC,wBAAwB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;MAO/E,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAJX,kBAAkB,CAAA,EAAA,OAAA,EAAA,CACvB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,aACrH,kBAAkB,CAAA,EAAA,CAAA;AAEjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAAA,OAAA,EAAA,CAHhB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,CAAA,EAAA,CAAA;;2FAGpH,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;AAClC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC;oBAChI,OAAO,EAAE,CAAC,kBAAkB;AAC7B,iBAAA;;;MCDY,uBAAuB,CAAA;AAClC,IAAA,YAAY;IACZ,UAAU,GAAa,EAAE;AACzB,IAAA,IAAI;AACJ,IAAA,aAAa;AACb,IAAA,kBAAkB;AAClB,IAAA,UAAU;AACV,IAAA,UAAU;AACV,IAAA,UAAU;AACV,IAAA,SAAS;AACT,IAAA,kBAAkB;AAClB,IAAA,eAAe;AACf,IAAA,wBAAwB;AACxB,IAAA,kBAAkB;AAClB,IAAA,mBAAmB;AACnB,IAAA,gBAAgB;AAChB,IAAA,YAAY;AACZ,IAAA,YAAY,GAAa,CAAC,mBAAmB,CAAC;AAC9C,IAAA,kBAAkB;AAElB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,EAAE;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACpB,IAAI,CAAC,aAAa,GAAG;AACnB,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,cAAc,EAAE;SACjB;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB;QACnC,IAAI,CAAC,kBAAkB,GAAG;AACxB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,UAAU,EAAE;SACb;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE;AACpH,QAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG;IAC7B;AACD;MAEY,oBAAoB,CAAA;AACvB,IAAA,oBAAoB,GAAG,MAAM,CAAC,uBAAuB,CAAC;IAE9D,OAAO,GAAY,IAAI;AACvB,IAAA,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,EAAE,eAAe,EAAE,eAAe,IAAI,EAAE;AACxG,IAAA,0BAA0B,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,EAAE,eAAe,EAAE,uBAAuB,IAAI,KAAK;AAC5H;;MCzDY,wBAAwB,CAAA;AAC3B,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B;;;AAGG;IACM,MAAM,GAAY,KAAK;AAEhC;;AAEG;IACM,eAAe,GAAsB,EAAE;IAEhD,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,kBAAkB,GAAA;QACxB,IAAI,QAAQ,GAAG,EAAE;AAEjB,QAAA,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;;AAE5C,YAAA,QAAQ,GAAG,IAAI,CAAC,eAAe;QACjC;AAAO,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEjF,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEf,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC3E,gBAAA,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAC9C;iBAAO;;AAEL,gBAAA,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACpC;QACF;QAEA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,CAAA,KAAA,EAAQ,QAAQ,CAAA,EAAA,CAAI;YAClE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO;YACpD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ;YACzD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,GAAG,WAAW;YAC1D,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO;YAC/C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;YAC1C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;YACxC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;QAC/C;IACF;uGA9CW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAQE;;sBAKA;;;IClBS;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,kBAAA,CAAA,GAAA,oBAAuC;AACvC,IAAA,kBAAA,CAAA,mBAAA,CAAA,GAAA,qBAAyC;AACzC,IAAA,kBAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACpC,IAAA,kBAAA,CAAA,gBAAA,CAAA,GAAA,kBAAmC;AACnC,IAAA,kBAAA,CAAA,kBAAA,CAAA,GAAA,oBAAuC;AACzC,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;IAQlB;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,eAAA,CAAA,GAAA,mEAAmF;AACnF,IAAA,SAAA,CAAA,cAAA,CAAA,GAAA,MAAqB;AACvB,CAAC,EAHW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;MCOR,YAAY,CAAA;AACN,IAAA,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzD,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAE7C,eAAe,GAAY,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE,IAAK,EAAyB;AAEhH,IAAA,WAAA,GAAA,EAAe;IAER,wBAAwB,CAAC,KAAU,EAAE,aAAsB,EAAA;QAChE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAE9B,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACpB,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;YAC7C;QACF;AAEA,QAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAChC;;IAGO,aAAa,CAAC,KAAsB,EAAE,SAAiB,EAAA;AAC5D,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,MAAM;AACnD,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;IACrC;AAEA;;;;;;;;AAQG;AACI,IAAA,MAAM,iBAAiB,CAC5B,SAAgB,EAChB,OAAc,EACd,aAAqB,EACrB,OAAyB,EACzB,kBAA6B,EAC7B,eAAmC,EAAA;;AAGnC,QAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC;;;;;;;;;;;;AActD,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AAClD,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;QAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;AAChD,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAG;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AACtC,QAAA,CAAC,CAAC;;QAGF,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC;AACnE,QAAA,aAAa,CAAC,OAAO,CAAC,OAAO,IAAG;AAC9B,YAAA,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;AAG5D,YAAA,IAAI,eAAe,EAAE,KAAK,KAAK,KAAK,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1E,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;oBACvC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAC5C,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;wBAC/C,IAAI,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;oBAC1C;AACF,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;;QAGF,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,MAAM,QAAQ,GAAQ,EAAE;AAExB,YAAA,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;gBACpB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACxC,oBAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5F;qBAAO;oBACL,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC3B;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAClE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;gBAC5C,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC5D,IAAI,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE;gBACvC,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;AAC9E,gBAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;;gBAGtH,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;gBAC3C,IAAI,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBAChD,IAAI,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE;gBAC1C;AACF,YAAA,CAAC,CAAC;QACJ;;QAGA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YAC7B,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3C,QAAA,CAAC,CAAC;;QAGF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC;IAC7C;;IAGQ,oBAAoB,CAAC,IAAW,EAAE,OAAc,EAAA;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;YAC1B,MAAM,YAAY,GAAQ,EAAE;AAC5B,YAAA,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;AACpB,gBAAA,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACxC,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC;IAClB;;IAGQ,eAAe,CAAC,MAAW,EAAE,QAAgB,EAAA;AACnD,QAAA,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC;QACxE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;AACvE,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,QAAQ,CAAA,CAAA,EAAI,kBAAkB,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM,CAAA,CAAA,EAAI,SAAS,CAAC,YAAY,EAAE;AAEnG,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE;AAEZ,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/B,QAAA,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;QAC/B,UAAU,CAAC,MAAK;;AAEd,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,6BAAA,CAA+B,EAAE,SAAS,CAAC;QACxF,CAAC,EAAE,GAAG,CAAC;IACT;;AAGO,IAAA,cAAc,CAAC,OAAc,EAAE,IAAW,EAAE,OAAyB,EAAE,kBAA6B,EAAA;QACzG,IAAI,kBAAkB,GAAG,EAAE;QAC3B,IAAI,OAAO,EAAE;AACX,YAAA,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACvD;QAEA,MAAM,UAAU,GAAG,CAAA,IAAA,EAAO;aACvB,GAAG,CAAC,GAAG,IAAI,gFAAgF,GAAG,CAAC,KAAK,CAAA,KAAA,CAAO;AAC3G,aAAA,IAAI,CAAC,EAAE,CAAC,CAAA,KAAA,CAAO;QAElB,MAAM,QAAQ,GAAG;AACd,aAAA,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AAClB,YAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,4BAA4B,GAAG,4BAA4B;YAC9F,MAAM,OAAO,GAAG;iBACb,GAAG,CAAC,GAAG,IAAG;gBACT,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,KAAK,kBAAkB,GAAG,qBAAqB,GAAG,EAAE,UAAU,IAAI,EAAE,GAAG,GAAG,EAAE;gBAC1G,OAAO,CAAA,iDAAA,EAAoD,cAAc,CAAA,GAAA,EAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA,KAAA,CAAO;AACjI,YAAA,CAAC;iBACA,IAAI,CAAC,EAAE,CAAC;AAEX,YAAA,OAAO,CAAA,WAAA,EAAc,QAAQ,CAAA,EAAA,EAAK,OAAO,OAAO;AAClD,QAAA,CAAC;aACA,IAAI,CAAC,EAAE,CAAC;;QAGX,IAAI,UAAU,GAAG,EAAE;QACnB,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,MAAM,QAAQ,GAAG;iBACd,GAAG,CAAC,GAAG,IAAG;gBACT,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACxC,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7E,OAAO,CAAA,+FAAA,EAAkG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,OAAO;gBACtJ;gBACA,OAAO,CAAA,iFAAA,CAAmF,CAAC;AAC7F,YAAA,CAAC;iBACA,IAAI,CAAC,EAAE,CAAC;AAEX,YAAA,UAAU,GAAG,CAAA,IAAA,EAAO,QAAQ,CAAA,KAAA,CAAO;QACrC;AAEA,QAAA,MAAM,SAAS,GAAG,CAAA;;iBAEL,UAAU,CAAA;iBACV,QAAQ,CAAA;iBACR,UAAU,CAAA;;KAEtB;;AAGD,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,uBAAuB,CAAC;QAChE,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;cAqBnB,kBAAkB,CAAA;cAClB,SAAS,CAAA;;;;;;;;;AAShB,MAAA,CAAA,CAAC;AACF,YAAA,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC5B,WAAW,CAAC,KAAK,EAAE;QACrB;IACF;;AAGQ,IAAA,kBAAkB,CAAC,OAAwB,EAAA;AACjD,QAAA,OAAO;aACJ,GAAG,CAAC,MAAM,IAAG;YACZ,IAAI,KAAK,GAAG,EAAE;AACd,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,gBAAA,KAAK,IAAI,CAAA,YAAA,EAAe,MAAM,CAAC,SAAS,GAAG;YAC7C;AACA,YAAA,IAAI,MAAM,CAAC,IAAI,EAAE;gBACf,KAAK,IAAI,oBAAoB;YAC/B;AACA,YAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,gBAAA,KAAK,IAAI,CAAA,WAAA,EAAc,MAAM,CAAC,QAAQ,KAAK;YAC7C;AACA,YAAA,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,gBAAA,KAAK,IAAI,CAAA,eAAA,EAAkB,MAAM,CAAC,YAAY,KAAK;YACrD;AACA,YAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,gBAAA,KAAK,IAAI,CAAA,eAAA,EAAkB,MAAM,CAAC,SAAS,KAAK;YAClD;AAEA,YAAA,OAAO,aAAa,KAAK,CAAA,EAAA,EAAK,MAAM,CAAC,OAAO,MAAM;AACpD,QAAA,CAAC;aACA,IAAI,CAAC,EAAE,CAAC;IACb;uGA9QW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ICmBW;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,eAAA,CAAA,GAAA,aAA6B;AAC7B,IAAA,aAAA,CAAA,iBAAA,CAAA,GAAA,gBAAkC;AACpC,CAAC,EAJW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;MCrBZ,cAAc,CAAA;AAChB,IAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACvC,IAAA,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;AACnC,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAE3C,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,CAAe,EAAE,GAAC;AACzC,IAAA,2BAA2B,GAAG,KAAK,CAAU,KAAK,uEAAC;IAEnD,MAAM,GAAG,MAAM,EAAgC;AAE/C,IAAA,eAAe,GAAG,MAAM,CAAU,KAAK,2DAAC;AAE/C,IAAA,SAAS;AAEF,IAAA,mBAAmB;AACnB,IAAA,mBAAmB;AAE1B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;AAC7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;IAC/B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;QACvC;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;AACzD,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;QAC1E;QAEA,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,uBAAuB,EAAE;QAE9B,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,YAAY,CAAC;QAC5E,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACvD;IACF;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACtC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;AAChC,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACxE;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE;AAChG,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;AAC5E,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,IAAI,EAAE;AACrF,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAC9F;iBAAO;AACL,gBAAA,IAAI,CAAC,mBAAmB,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE;YAC7F;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE;YAChG,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;AACtE,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1F,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,YAAY,IAAI,EAAE;gBACrG;qBAAO;AACL,oBAAA,IAAI,CAAC,mBAAmB,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;gBAC3G;YACF;QACF;IACF;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,CAAC;IAC3D;uGAzEW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,waCZ3B,qsLAkHA,EAAA,MAAA,EAAA,CAAA,w+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDtGa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,KAAK,EAAA,QAAA,EAAA,qsLAAA,EAAA,MAAA,EAAA,CAAA,w+CAAA,CAAA,EAAA;;;MEgBN,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAX,WAAW,EAAA,YAAA,EAAA,CAfP,cAAc,CAAA,EAAA,OAAA,EAAA,CAE3B,YAAY;YACZ,wBAAwB;YACxB,WAAW;YACX,mBAAmB;YACnB,UAAU;YACV,YAAY;YACZ,aAAa;YACb,qBAAqB;YACrB,UAAU;AACV,YAAA,WAAW,aAEH,cAAc,CAAA,EAAA,CAAA;AAEb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAbpB,YAAY;YAEZ,WAAW;YACX,mBAAmB;YACnB,UAAU;YACV,YAAY;YACZ,aAAa;YAEb,UAAU;YACV,WAAW,CAAA,EAAA,CAAA;;2FAIF,WAAW,EAAA,UAAA,EAAA,CAAA;kBAhBvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,cAAc,CAAC;AAC9B,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,wBAAwB;wBACxB,WAAW;wBACX,mBAAmB;wBACnB,UAAU;wBACV,YAAY;wBACZ,aAAa;wBACb,qBAAqB;wBACrB,UAAU;wBACV;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,cAAc;AACzB,iBAAA;;;MCDY,SAAS,CAAA;AAWC,IAAA,OAAA;AAVX,IAAA,OAAO,GAAG,IAAI,OAAO,EAAK;;AAG3B,IAAA,YAAY,GAAG,IAAI,OAAO,EAAiB;;IAGlD,WAAW,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;IACtC;AAEA,IAAA,WAAA,CAAmB,OAA8B,EAAA;QAA9B,IAAA,CAAA,OAAO,GAAP,OAAO;IAA2B;AAErD,IAAA,UAAU,CAAC,EAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;IACrB;AAEA,IAAA,KAAK,CAAC,MAAU,EAAA;AACZ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACxB;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC3B;IACJ;AACH;;MCcY,4BAA4B,CAAA;IAC5B,KAAK,GAAW,EAAE;IAClB,OAAO,GAAW,EAAE;IACpB,IAAI,GAA0C,IAAI;IAClD,OAAO,GAAoB,EAAE;IAC7B,UAAU,GAAY,IAAI;IAC1B,SAAS,GAAqB,KAAK;AACnC,IAAA,aAAa;IACb,aAAa,GAAW,CAAC;IACzB,WAAW,GAAY,KAAK;AAE7B,IAAA,OAAO;;AAGP,IAAA,mBAAmB,GAAG,MAAM,CAAmB,IAAI,+DAAC;IAC5D,IAAa,kBAAkB,CAAC,KAAgB,EAAA;AAC5C,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;IACvC;AAEQ,IAAA,mBAAmB,GAAG,MAAM,CAAM,IAAI,+DAAC;IAC/C,IAAa,kBAAkB,CAAC,KAAU,EAAA;AACtC,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;IACvC;AAEsD,IAAA,WAAW;AAChB,IAAA,YAAY;AAE7D,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAC7B,IAAA,YAAY;AACZ,IAAA,aAAa,GAA2B,MAAK,EAAG,CAAC;AAEhC,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,IAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IACrB,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1D,WAAW,GAAG,KAAK;IACnB,UAAU,GAAG,KAAK;AAE1B,IAAA,WAAA,GAAA;;QAEI,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACvC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;gBACzB,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;YACvC,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC9C,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzC;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;QAGtB,IAAI,CAAC,aAAa,EAAE;;AAGpB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;YACf,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;oBAExB,IAAI,CAAC,gBAAgB,EAAE;gBAC3B;YACJ,CAAC,EAAE,EAAE,CAAC;AACV,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QAC/B;IACJ;IAEA,aAAa,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;AAEtD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAG,EAAE;YAC9E,QAAQ,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC;AACpD,SAAA,CAAC;AAEF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACvC,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACxB;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEQ,IAAA,SAAS,CAAC,IAAS,EAAA;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QACxB,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5C;aAAO;YACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;QACnD;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEA,IAAA,aAAa,CAAC,GAAkB,EAAA;;AAE5B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC;AAEA,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,KAAK,EAAE;YAChB;QACJ;AAEA,QAAA,IAAI,GAAG,CAAC,OAAO,EAAE;YACb,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;QAC5C;IACJ;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC;AAC9B,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,SAAS;AACnB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,KAAK,EAAE;QAChB;IACJ;AAEA,IAAA,KAAK,CAAC,MAAY,EAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEA,IAAA,eAAe,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK;YAAE;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAE7B,IAAI,CAAC,KAAK,EAAE;;AAER,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;gBAC7B,UAAU,CAAC,MAAK;AACZ,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACf,wBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,4BAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;wBACpC;AACJ,oBAAA,CAAC,CAAC;gBACN,CAAC,EAAE,GAAG,CAAC;AACX,YAAA,CAAC,CAAC;QACN;IACJ;IAEQ,gBAAgB,GAAA;;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;YAC7B,UAAU,CAAC,MAAK;;AAEZ,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,aAA4B;oBAC9D,MAAM,eAAe,GAAG,IAAI;AAC5B,oBAAA,MAAM,WAAW,GAAG,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC;AACrE,oBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC3E;;gBAGA,MAAM,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;AACnE,gBAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEtB,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAgB;;oBAGrE,MAAM,kBAAkB,GAAG,IAAI;AAC/B,oBAAA,MAAM,cAAc,GAAG,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC3E,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE;gBAC3D;YACJ,CAAC,EAAE,GAAG,CAAC;AACX,QAAA,CAAC,CAAC;IACN;uGAtLS,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAwBH,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACf,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/DnC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EArCW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAuCxC,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA1CxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC;AAClD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCX,EAAA;AACF,iBAAA;;sBAEI;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAMA;;sBAKA;;sBAIA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;sBACnD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;MCjFtC,eAAe,CAAA;AAChB,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACtC,IAAA,gBAAgB;AAChB,IAAA,WAAW,GAAG,IAAI,GAAG,EAAa;AAE1C,IAAA,wBAAwB,CAAC,GAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG;IAC/B;AAEA,IAAA,GAAG,CAAI,MAAqB,EAAA;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAO;AAClC,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAW;QAEjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;;AAG9C,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;AACzB,gBAAA,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO;AACnC,gBAAA,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,KAAI;oBACtB,IAAI,eAAe,EAAE;wBACjB,eAAe,CAAC,OAAO,CAAC;oBAC5B;oBACA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,oBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvB,wBAAA,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC9B;AACJ,gBAAA,CAAC;AACL,YAAA,CAAC,CAAC;QACN;;QAGA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;AACvC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjB,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;gBAC/B,OAAO,CAAC,QAAQ,EAAE;YACtB;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,YAAY,EAAE;IACjC;AAEA,IAAA,KAAK,CAAC,OAAe,EAAE,KAAA,GAAgB,OAAO,EAAA;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAQ;QACnC,IAAI,CAAC,GAAG,CAAC;YACL,KAAK;YACL,OAAO;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,OAAO,EAAE;AACL,gBAAA;AACI,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,MAAK;wBACV,OAAO,CAAC,IAAI,EAAE;wBACd,OAAO,CAAC,QAAQ,EAAE;oBACtB;AACH;AACJ;AACJ,SAAA,CAAC;AACF,QAAA,OAAO,OAAO,CAAC,YAAY,EAAE;IACjC;AAEA,IAAA,OAAO,CAAC,OAAe,EAAE,KAAA,GAAgB,SAAS,EAAA;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAW;QACtC,IAAI,CAAC,GAAG,CAAC;YACL,KAAK;YACL,OAAO;AACP,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,OAAO,EAAE;AACL,gBAAA;AACI,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,KAAK,EAAE,WAAW;oBAClB,OAAO,EAAE,MAAK;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;wBACnB,OAAO,CAAC,QAAQ,EAAE;oBACtB;AACH,iBAAA;AACD,gBAAA;AACI,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,MAAK;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;wBAClB,OAAO,CAAC,QAAQ,EAAE;oBACtB;AACH;AACJ;AACJ,SAAA,CAAC;AACF,QAAA,OAAO,OAAO,CAAC,YAAY,EAAE;IACjC;AAEA,IAAA,IAAI,CAAI,SAAkB,EAAE,MAAA,GAAwB,EAAE,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,OAAO,CAAC,KAAK,CAAC,uFAAuF,CAAC;;YAEtG,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7C;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE;AAEjC,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;AAClC,YAAA,SAAS,EAAE,CAAC;AACR,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,QAAQ,EAAE;iBACb,CAAC;YACF,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;;QAGF,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,4BAA4B,EAAE;YACnF,QAAQ,EAAE,aAAa;AAC1B,SAAA,CAAC;;AAGF,QAAA,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE7D,QAAA,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,aAAa;QACjD,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;;AAGpD,QAAA,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,MAAK;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YAC5B,UAAU,CAAC,OAAO,EAAE;AACxB,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/B,QAAA,OAAO,SAAS;IACpB;;AAGQ,IAAA,UAAU,CAAI,SAAkB,EAAE,MAAA,GAAwB,EAAE,EAAA;AAChE,QAAA,MAAM,UAAU,GAAG,eAAe,CAAC,4BAA4B,EAAE;YAC7D,mBAAmB,EAAE,IAAI,CAAC;AAC7B,SAAA,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE;AACjC,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;AAClC,YAAA,SAAS,EAAE,CAAC;AACR,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,QAAQ,EAAE;iBACb,CAAC;YACF,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;AAEF,QAAA,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,aAAa;AACjD,QAAA,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7D,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;;QAGpD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC3C,MAAM,OAAO,GAAI,UAAU,CAAC,QAAgB,CAAC,SAAS,CAAC,CAAC,CAAgB;AACxE,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;;AAGlC,QAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE;;QAG5C,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,MAAM,KAAI;AAC3C,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC3C,UAAU,CAAC,OAAO,EAAE;YACpB,OAAO,CAAC,MAAM,EAAE;AACpB,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/B,QAAA,OAAO,SAAS;IACpB;AAEQ,IAAA,gBAAgB,CAAC,UAAsD,EAAE,SAAoB,EAAE,MAAqB,EAAA;QACxH,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAC9C,UAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE;QAClD,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI;AAC9C,QAAA,UAAU,CAAC,QAAQ,CAAC,kBAAkB,GAAG,SAAS;QAClD,UAAU,CAAC,QAAQ,CAAC,kBAAkB,GAAG,MAAM,CAAC,IAAI;;AAGpD,QAAA,UAAU,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;AAE7D,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;YAChB,UAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;QAChD;AACA,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;QACtD;AACA,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;YAClB,UAAU,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;QACpD;AACA,QAAA,IAAI,MAAM,CAAC,WAAW,EAAE;YACpB,UAAU,CAAC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;QACxD;IACJ;AAEQ,IAAA,YAAY,CAAC,SAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;IACtC;IAEA,QAAQ,GAAA;;QAEJ,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;IAC5B;uGA7MS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFZ,MAAM,EAAA,CAAA;;2FAET,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACFM,MAAM,YAAY,GAAG;AAC1B,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,aAAa,EAAE,8BAA8B;AAC7C,IAAA,gBAAgB,EAAE,8BAA8B;AAChD,IAAA,gBAAgB,EAAE,8BAA8B;AAChD,IAAA,cAAc,EAAE;CACjB;MAKY,cAAc,CAAA;AACR,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAE1C,MAAM,kBAAkB,CAAC,QAAgB,EAAA;QAC9C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAqD,MAAc,CAAC,MAAkB,CAAC,kBAAkB,GAAG,YAAY,CAAC,UAAU,EAAE;AACvJ,YAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ;AAC7B,SAAA,CAAC,CACH;AACD,QAAA,OAAO,QAAQ;IACjB;IAEO,MAAM,iBAAiB,CAAC,MAAc,EAAA;QAC3C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAsB,MAAc,CAAC,MAAkB,CAAC,kBAAkB,GAAG,YAAY,CAAC,aAAa,EAAE;AAC3H,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM;AACvB,SAAA,CAAC,CACH;AACD,QAAA,OAAO,QAAQ;IACjB;IAEO,MAAM,mBAAmB,CAAC,MAAc,EAAA;QAC7C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAsB,MAAc,CAAC,MAAkB,CAAC,kBAAkB,GAAG,YAAY,CAAC,gBAAgB,EAAE;AAC9H,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM;AACvB,SAAA,CAAC,CACH;AACD,QAAA,OAAO,QAAQ;IACjB;IAEO,MAAM,mBAAmB,CAAC,MAAc,EAAA;QAC7C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAsB,MAAc,CAAC,MAAkB,CAAC,kBAAkB,GAAG,YAAY,CAAC,gBAAgB,EAAE;AAC9H,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM;AACvB,SAAA,CAAC,CACH;AACD,QAAA,OAAO,QAAQ;IACjB;uGArCW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCEY,0BAA0B,CAAA;AACpB,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAE/C,IAAA,kBAAkB;IAClB,eAAe,GAAG,KAAK;AACvB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,qBAAqB,GAAG,MAAM,CAAC,KAAK,iEAAC;AAErC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,CAAwB,EAAE,GAAC;IAClD,MAAM,GAAG,MAAM,EAAgC;AAEtD,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC/C,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ;AACnC,SAAA,CAAC;IACJ;AAEO,IAAA,MAAM,mBAAmB,GAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AACjC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAK,EAAE,CAAC,CAAC;YAC1H,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC7C,MAAM,SAAS,GAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAK;AACtH,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,SAAS,EAAE,MAAM,EAAE;AACrB,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,oBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtC;YACF;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,IAAI,sBAAsB,EAAE,OAAO,CAAC;AAC9E,gBAAA,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAK;AACxB,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,gBAAA,CAAC,CAAC;YACJ;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,aAAa,EAAE,CAAC;IACzD;uGA5CW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBvC,8zGA+DA,EAAA,MAAA,EAAA,CAAA,80CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIrF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,wBAAwB,EAAA,OAAA,EACzB,CAAC,mBAAmB,EAAE,UAAU,EAAE,wBAAwB,EAAE,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,8zGAAA,EAAA,MAAA,EAAA,CAAA,80CAAA,CAAA,EAAA;;;AEbnG;;AAEG;;ACFH;;AAEG;;;;"}
|