mat-table-ext 0.0.10 → 1.0.0-beta.0

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.
Files changed (33) hide show
  1. package/README.md +57 -57
  2. package/assets/_theming.scss +7 -7
  3. package/assets/pinLeft.svg +11 -11
  4. package/assets/pinNone.svg +5 -5
  5. package/assets/pinRight.svg +11 -11
  6. package/assets/pinned.svg +6 -2
  7. package/fesm2022/mat-table-ext-test1.mjs +3019 -0
  8. package/fesm2022/mat-table-ext-test1.mjs.map +1 -0
  9. package/index.d.ts +774 -5
  10. package/package.json +13 -21
  11. package/esm2020/lib/components/column-pinning/column-pinning.component.mjs +0 -58
  12. package/esm2020/lib/components/editing/editing.component.mjs +0 -122
  13. package/esm2020/lib/components/filter-columns-component/filter-columns-component.component.mjs +0 -68
  14. package/esm2020/lib/directives/resize-column.directive.mjs +0 -99
  15. package/esm2020/lib/mat-table-ext.component.mjs +0 -1020
  16. package/esm2020/lib/mat-table-ext.module.mjs +0 -237
  17. package/esm2020/lib/mat-table-ext.service.mjs +0 -20
  18. package/esm2020/lib/models/tableExtModels.mjs +0 -2
  19. package/esm2020/mat-table-ext.mjs +0 -5
  20. package/esm2020/public-api.mjs +0 -11
  21. package/fesm2015/mat-table-ext.mjs +0 -1584
  22. package/fesm2015/mat-table-ext.mjs.map +0 -1
  23. package/fesm2020/mat-table-ext.mjs +0 -1581
  24. package/fesm2020/mat-table-ext.mjs.map +0 -1
  25. package/lib/components/column-pinning/column-pinning.component.d.ts +0 -27
  26. package/lib/components/editing/editing.component.d.ts +0 -42
  27. package/lib/components/filter-columns-component/filter-columns-component.component.d.ts +0 -26
  28. package/lib/directives/resize-column.directive.d.ts +0 -27
  29. package/lib/mat-table-ext.component.d.ts +0 -348
  30. package/lib/mat-table-ext.module.d.ts +0 -58
  31. package/lib/mat-table-ext.service.d.ts +0 -11
  32. package/lib/models/tableExtModels.d.ts +0 -76
  33. package/public-api.d.ts +0 -7
@@ -1 +0,0 @@
1
- {"version":3,"file":"mat-table-ext.mjs","sources":["../../../projects/mat-table-ext/src/lib/mat-table-ext.service.ts","../../../projects/mat-table-ext/src/lib/components/editing/editing.component.ts","../../../projects/mat-table-ext/src/lib/components/editing/editing.component.html","../../../projects/mat-table-ext/src/lib/directives/resize-column.directive.ts","../../../projects/mat-table-ext/src/lib/components/column-pinning/column-pinning.component.ts","../../../projects/mat-table-ext/src/lib/components/column-pinning/column-pinning.component.html","../../../projects/mat-table-ext/src/lib/components/filter-columns-component/filter-columns-component.component.ts","../../../projects/mat-table-ext/src/lib/components/filter-columns-component/filter-columns-component.component.html","../../../projects/mat-table-ext/src/lib/mat-table-ext.component.ts","../../../projects/mat-table-ext/src/lib/mat-table-ext.component.html","../../../projects/mat-table-ext/src/lib/mat-table-ext.module.ts","../../../projects/mat-table-ext/src/public-api.ts","../../../projects/mat-table-ext/src/mat-table-ext.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MatTableExtService {\r\n public selectedRow = new BehaviorSubject<any>(null);\r\n public selectedRowIndex = new BehaviorSubject<any>(null);\r\n constructor(public http: HttpClient) { }\r\n}\r\n","import { Component, Inject, OnInit, TemplateRef } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MTExColumn } from '../../models/tableExtModels';\r\nimport { MatTableExtService } from '../../mat-table-ext.service';\r\n\r\n@Component({\r\n selector: 'app-editing',\r\n templateUrl: './editing.component.html',\r\n styleUrls: ['./editing.component.scss'],\r\n})\r\nexport class EditingComponent implements OnInit {\r\n public templateRef!: TemplateRef<any>;\r\n public keys: string[] = [];\r\n public templateKeys: string[] = [];\r\n public types: any = {};\r\n public templateTypes: any = {};\r\n public columns: MTExColumn[] = [];\r\n public templateRow: any = {};\r\n \r\n constructor(\r\n public dialogRef: MatDialogRef<EditingComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n public service: MatTableExtService\r\n ) { }\r\n \r\n ngOnInit(): void {\r\n this.setData(this.dialogData);\r\n }\r\n/**\r\n * @description This method is used to set data for editing.\r\n * @param value dialog Data\r\n */\r\n setData(value: any) {\r\n let row = value.row;\r\n let types: any = {};\r\n this.keys = [];\r\n this.columns = value.columns;\r\n this.columns.forEach((column) => {\r\n this.keys.push(column.field);\r\n if (column.type == 'selection') {\r\n types[column.field] = column.type;\r\n let temp = row[column.field];\r\n row[column.field] = {\r\n value: temp,\r\n options: column.options,\r\n };\r\n } else {\r\n types[column.field] = column.type;\r\n }\r\n });\r\n this.types = types;\r\n this.setTemplateRef(value);\r\n }\r\n/**\r\n * @description This method is used to set the data when data comes in from cus template.\r\n * @param value template value\r\n */\r\n setTemplateRef(value: any) {\r\n if (value.templateRef !== undefined) {\r\n this.templateRow = { ...value.row };\r\n let types: any = {};\r\n this.templateKeys = [];\r\n this.columns.forEach((column) => {\r\n this.templateKeys.push(column.field);\r\n if (column.type == 'selection') {\r\n types[column.field] = column.type;\r\n let temp = this.templateRow[column.field];\r\n this.templateRow[column.field] = {\r\n value: temp,\r\n options: column.options,\r\n };\r\n } else {\r\n types[column.field] = column.type;\r\n }\r\n });\r\n this.templateTypes = types;\r\n this.templateRef = value.templateRef;\r\n }\r\n }\r\n/**\r\n * @description This method is triggered when dialog is closed and also emits the dialog closed event data.\r\n */\r\n closeDialog() {\r\n let rowData = { ...this.dialogData.row };\r\n this.keys.forEach((key: any) => {\r\n if (this.types[key] === 'selection') {\r\n let temp = rowData[key].value;\r\n rowData[key] = temp;\r\n }\r\n });\r\n this.dialogRef.close(rowData);\r\n }\r\n\r\n /**\r\n * @description This method is called when the dialog is closed custom template action.\r\n * @param row row to be edited.\r\n * @param keys keys of columns\r\n * @param types column types\r\n */\r\n closeTemplateDialog(row: any, keys: string[], types: string[]) {\r\n let rowData = { ...row };\r\n keys.forEach((key: any) => {\r\n if (types[key] === 'selection') {\r\n let temp = rowData[key].value;\r\n rowData[key] = temp;\r\n }\r\n });\r\n this.dialogRef.close(rowData);\r\n }\r\n}\r\n","<div *ngIf=\"!templateRef\" style=\"height: 100%;\" class=\"main-dialog-container\">\r\n <div mat-dialog-title class=\"dialog-title-container\">\r\n <h2 style=\"margin: 0;\">Edit Row</h2>\r\n <span class=\"example-spacer\"></span>\r\n <button mat-icon-button aria-label=\"Example icon button with a vertical three dot icon\">\r\n <mat-icon mat-dialog-close style=\"cursor: pointer;\" fxFlex=\"5\">close</mat-icon>\r\n </button>\r\n </div>\r\n <mat-dialog-content style=\"margin-right: 20px;\">\r\n <div style=\"display: flex; flex-direction: column;\">\r\n <ng-container *ngFor=\"let key of keys\">\r\n <!-- Number Type -->\r\n <mat-form-field *ngIf=\"types[key] == 'number'\" appearance=\"outline\" class=\"inline-editing-field\">\r\n <mat-label>{{key | titlecase}}</mat-label>\r\n <input matInput type=\"number\" [(ngModel)]=\"dialogData['row'][key]\" [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n \r\n <!-- String Type -->\r\n \r\n <mat-form-field *ngIf=\"types[key] == 'string'\" appearance=\"outline\" class=\"inline-editing-field\">\r\n <mat-label>{{key | titlecase}}</mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"dialogData['row'][key]\" [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"types[key] == 'date'\" appearance=\"outline\" class=\"inline-editing-field\">\r\n <mat-label>{{key | titlecase}}</mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"dialogData['row'][key]\" [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <!-- Selection Type -->\r\n \r\n <mat-form-field *ngIf=\"types[key] == 'selection'\" appearance=\"outline\" class=\"inline-editing-field\">\r\n <mat-label>{{key | titlecase}}</mat-label>\r\n <mat-select [value]=\"dialogData['row'][key].value\" [(ngModel)]=\"dialogData['row'][key].value\">\r\n <mat-option *ngFor=\"let option of dialogData['row'][key].options\" [value]=\"option\">\r\n {{option}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- Boolean Type -->\r\n <p>\r\n <mat-checkbox *ngIf=\"types[key] == 'boolean'\" color=\"primary\" [(ngModel)]=\"dialogData['row'][key]\">\r\n <mat-label>{{key | titlecase}}</mat-label>\r\n </mat-checkbox>\r\n </p>\r\n </ng-container>\r\n </div>\r\n </mat-dialog-content>\r\n <div class=\"spacer\"></div>\r\n <mat-dialog-actions style=\"margin-top: 20px;\" align=\"end\">\r\n <button mat-raised-button color=\"warn\" mat-dialog-close>\r\n Cancel\r\n </button>\r\n <button mat-raised-button color=\"primary\" (click)=\"closeDialog()\">Save</button>\r\n </mat-dialog-actions>\r\n</div>\r\n<ng-container *ngIf=\"templateRef\" [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{data:{row:templateRow,columns:columns,columnKeys:templateKeys,columnTypes:templateTypes,closeDialog:closeTemplateDialog}}\"></ng-container>","import { Directive, OnInit, Renderer2, Input, ElementRef, OnChanges } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[columnsResizable]\"\r\n})\r\nexport class ResizeColumnDirective implements OnInit, OnChanges {\r\n columnsResizable$: boolean = false;\r\n @Input() set columnsResizable(val: boolean) {\r\n this.columnsResizable$ = val;\r\n }\r\n get columnsResizable() {\r\n return this.columnsResizable$;\r\n }\r\n @Input() index!: number;\r\n private startX!: number;\r\n private startWidth!: number;\r\n private column: HTMLElement;\r\n private table!: HTMLElement;\r\n private pressed!: boolean;\r\n\r\n constructor(private renderer: Renderer2, private el: ElementRef) {\r\n this.column = this.el.nativeElement;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.columnsResizable$) {\r\n const row = this.renderer.parentNode(this.column);\r\n const thead = this.renderer.parentNode(row);\r\n this.table = this.renderer.parentNode(thead);\r\n\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n this.renderer.setAttribute(resizer, 'id', \"resizeHolderSpan\");\r\n this.renderer.appendChild(this.column, resizer);\r\n this.renderer.listen(resizer, \"mousedown\", this.onMouseDown);\r\n this.renderer.listen(this.table, \"mousemove\", this.onMouseMove);\r\n this.renderer.listen(\"document\", \"mouseup\", this.onMouseUp);\r\n }\r\n else {\r\n this.removeDragElementFromDom();\r\n }\r\n }\r\n ngOnChanges() {\r\n if (this.columnsResizable$) {\r\n const row = this.renderer.parentNode(this.column);\r\n const thead = this.renderer.parentNode(row);\r\n const resizer = this.renderer.createElement(\"span\");\r\n this.table = this.renderer.parentNode(thead);\r\n this.renderer.addClass(resizer, \"resize-holder\");\r\n this.renderer.setAttribute(resizer, 'id', \"resizeHolderSpan\");\r\n this.renderer.appendChild(this.column, resizer);\r\n this.renderer.listen(resizer, \"mousedown\", this.onMouseDown);\r\n this.renderer.listen(this.table, \"mousemove\", this.onMouseMove);\r\n this.renderer.listen(\"document\", \"mouseup\", this.onMouseUp);\r\n }\r\n else {\r\n this.removeDragElementFromDom();\r\n }\r\n }\r\n \r\n onMouseDown = (event: MouseEvent) => {\r\n this.pressed = true;\r\n this.startX = event.pageX;\r\n this.startWidth = this.column.offsetWidth;\r\n };\r\n\r\n onMouseMove = (event: MouseEvent) => {\r\n const offset = 5;\r\n if (this.pressed && event.buttons) {\r\n this.renderer.addClass(this.table, \"resizing\");\r\n // Calculate width of column\r\n let width =\r\n this.startWidth + (event.pageX - this.startX - offset);\r\n const tableCells = Array.from(this.table.querySelectorAll(\".mat-row\")).map(\r\n (row: any) => row.querySelectorAll(\".mat-cell\").item(this.index)\r\n );\r\n // Set table header width\r\n this.renderer.setStyle(this.column, \"width\", `${width}px`);\r\n // Set table cells width\r\n for (const cell of tableCells) {\r\n if (cell && cell !== null)\r\n this.renderer.setStyle(cell, \"width\", `${width}px`);\r\n }\r\n }\r\n };\r\n\r\n onMouseUp = (event: MouseEvent) => {\r\n if (this.pressed) {\r\n this.pressed = false;\r\n this.renderer.removeClass(this.table, \"resizing\");\r\n }\r\n };\r\n /**\r\n * @description This method is used remove resizing handlers from the table headers when column resizing is disabled.\r\n */\r\n removeDragElementFromDom() {\r\n let ele = document.getElementById('resizeHolderSpan')\r\n if (ele && ele !== null && ele !== undefined) {\r\n this.renderer.removeChild(this.column, ele);\r\n }\r\n }\r\n}\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MTExColumn } from '../../models/tableExtModels';\r\n\r\n@Component({\r\n selector: 'app-column-pinning',\r\n templateUrl: './column-pinning.component.html',\r\n styleUrls: ['./column-pinning.component.scss'],\r\n})\r\nexport class ColumnPinningComponent implements OnInit {\r\n @Input() columns!: MTExColumn[];\r\n @Output() columnsChanged: EventEmitter<MTExColumn[]> = new EventEmitter();\r\n public icons = {\r\n left: 'pinLeft',\r\n right: 'pinRight',\r\n none: 'pinNone',\r\n };\r\n\r\n constructor() {}\r\n ngOnInit(): void {}\r\n /**\r\n * @description This method is called when pin value changes for a column.\r\n * @param column column of which to set the pin value\r\n */\r\n changeValue(column: MTExColumn) {\r\n if (column.pinned) {\r\n if (column.pinned == 'left') {\r\n this.setColumnPinValue(column, 'right');\r\n } else if (column.pinned == 'right') {\r\n this.setColumnPinValue(column, undefined);\r\n }\r\n } else {\r\n this.setColumnPinValue(column, 'left');\r\n }\r\n this.columnsChanged.emit(this.columns);\r\n }\r\n /**\r\n * @description This method is used to set the column pin value.\r\n * @param column column of which to set the pin value\r\n * @param value pin value to set\r\n */\r\n setColumnPinValue(column: MTExColumn, value: 'left' | 'right' | undefined) {\r\n this.columns.forEach((col) => {\r\n if (column?.header == col.header) {\r\n col.pinned = value;\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"pinning-list-item\" *ngFor=\"let column of columns\" style=\"display: flex; \">\r\n <button mat-icon-button >\r\n <mat-icon (click)=\"changeValue(column)\" matTooltip=\"{{column['pinned'] ? (column['pinned'] | titlecase):'None'}}\"\r\n svgIcon=\"{{column['pinned'] =='left'|| column['pinned'] =='right' ? icons[column['pinned']]:'pinNone'}}\" class=\"pinning-icon\"></mat-icon>\r\n </button>\r\n <span class=\"column-headers\">{{column.header}}</span>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-filter-columns-component',\r\n templateUrl: './filter-columns-component.component.html',\r\n styleUrls: ['./filter-columns-component.component.scss'],\r\n})\r\nexport class FilterColumnsComponentComponent implements OnInit {\r\n @Input() obj!: any;\r\n @Output() filterOutput: EventEmitter<any> = new EventEmitter<any>();\r\n stringCtrl: FormControl = new FormControl();\r\n numberCtrl: FormControl = new FormControl();\r\n dateCtrl: FormControl = new FormControl();\r\n booleanCtrl: FormControl = new FormControl();\r\n selectionCtrl: FormControl = new FormControl();\r\n constructor() {}\r\n ngOnInit(): void {\r\n this.stringCtrl.valueChanges.subscribe((value) => {\r\n this.checkValue(value);\r\n });\r\n this.dateCtrl.valueChanges.subscribe((value) => {\r\n this.checkValue(value);\r\n });\r\n this.numberCtrl.valueChanges.subscribe((value) => {\r\n this.checkValue(value);\r\n });\r\n this.booleanCtrl.valueChanges.subscribe((value) => {\r\n this.checkValue(value);\r\n });\r\n this.selectionCtrl.valueChanges.subscribe((value) => {\r\n this.checkValue(value);\r\n });\r\n }\r\n /**\r\n * @description This method is make value is valid and not null.\r\n * @param value value to check its type.\r\n */\r\n checkValue(value: any) {\r\n if (value || value == '') {\r\n this.emitOutput(value);\r\n } else if (value == null) {\r\n this.emitOutput('');\r\n }\r\n }\r\n/**\r\n * @description This method will emit seach value to parent component.\r\n * @param value value on which base table rows are filtered. \r\n */\r\n emitOutput(value: any) {\r\n let obj = { [this.obj.field]: value };\r\n this.filterOutput.emit(obj);\r\n }\r\n}\r\n","\r\n <ng-container *ngIf=\"obj\">\r\n <!-- Number Type -->\r\n <mat-form-field *ngIf=\"obj.type == 'number'\" appearance=\"outline\" class=\"inline-editing-field\" >\r\n <input matInput type=\"number\" [formControl]=\"numberCtrl\">\r\n </mat-form-field>\r\n \r\n <!-- String Type -->\r\n <mat-form-field *ngIf=\"obj.type == 'string'\" appearance=\"outline\" class=\"inline-editing-field\">\r\n <input matInput type=\"text\" [formControl]=\"stringCtrl\">\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"obj.type == 'date'\" appearance=\"outline\" class=\"inline-editing-field\">\r\n <input matInput type=\"date\" [formControl]=\"dateCtrl\">\r\n </mat-form-field>\r\n <!-- Selection Type -->\r\n <mat-form-field *ngIf=\"obj.type == 'selection'\" appearance=\"outline\" class=\"inline-editing-field\">\r\n <mat-select [value]=\"\" [formControl]=\"selectionCtrl\">\r\n <mat-option *ngFor=\"let option of obj.options\" [value]=\"option\">\r\n {{option}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- Boolean Type -->\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" *ngIf=\"obj.type == 'boolean'\" color=\"primary\" [formControl]=\"booleanCtrl\"></mat-checkbox>\r\n\r\n </ng-container>","import {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n EventEmitter,\r\n Output,\r\n} from '@angular/core';\r\nimport {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { EditingComponent } from '../lib/components/editing/editing.component';\r\nimport {\r\n RowChange,\r\n DisplayColumn,\r\n MTExColumn,\r\n MTExColumnPinOption,\r\n RowSelectionChange,\r\n CellTemplateRefMap,\r\n ExpansionChange,\r\n FilterSearchValue,\r\n MTExRow,\r\n ColumnVisibility,\r\n} from '../lib/models/tableExtModels';\r\nimport { MatTableExtService } from '../lib/mat-table-ext.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport * as XLSX from 'xlsx';\r\n@Component({\r\n selector: 'mat-table-ext',\r\n templateUrl: 'mat-table-ext.component.html',\r\n styleUrls: ['mat-table-ext.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0px', minHeight: '0' })),\r\n state('expanded', style({ height: '*' })),\r\n transition(\r\n 'expanded <=> collapsed',\r\n animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)')\r\n ),\r\n ]),\r\n ],\r\n})\r\nexport class MatTableExtComponent implements OnInit, OnChanges, AfterViewInit {\r\n @ViewChild(MatMenuTrigger) menuTrigger!: MatMenuTrigger;\r\n @ViewChild('columnMenuTrigger') columnMenuTrigger!: MatMenuTrigger;\r\n @ViewChild(MatPaginator) paginator!: MatPaginator;\r\n @ViewChild(MatSort) sort!: MatSort;\r\n\r\n // Table inputs\r\n @Input() dataSource!: MatTableDataSource<any>;\r\n @Input() columns: MTExColumn[] = [];\r\n @Input() columnResizable: boolean = false;\r\n @Input() stripedRows: boolean = false;\r\n @Input() rowHover: boolean = false;\r\n @Input() inlineRowEditing: boolean = false;\r\n @Input() inCellEditing: boolean = false;\r\n @Input() popupRowEditing: boolean = false;\r\n @Input() enableDelete: boolean = false;\r\n @Input() rowSelection: boolean = false;\r\n @Input() multiRowSelection: boolean = false;\r\n @Input() stickyFooter: boolean = false;\r\n @Input() stickyHeader: boolean = false;\r\n @Input() showFooterRow: boolean = false;\r\n @Input() columnFilter: boolean = false;\r\n @Input() loadingIndicator: boolean = false;\r\n @Input() sorting: boolean = false;\r\n @Input() showToolbar: boolean = false;\r\n @Input() toolbarTitle: string = '';\r\n @Input() tableHeight: string = '';\r\n @Input() toolbarHeight: string = '50px';\r\n @Input() tableWidth: string = '100%';\r\n @Input() scrollbarH: boolean = false;\r\n @Input() toolbarTemplate: TemplateRef<any> | undefined;\r\n @Input() columnHidable: boolean = false;\r\n @Input() columnPinnable: boolean = false;\r\n @Input() globalSearch: boolean = false;\r\n @Input() expandRows: boolean = false;\r\n @Input() dndColumns: boolean = false;\r\n @Input() showPaginator: boolean = true;\r\n @Input() showFirstLastButtons: boolean = false;\r\n @Input() exportButtonEnable: boolean = false;\r\n @Input() pageSizeOptions: number[] = [10, 50, 100];\r\n @Input() toolbarTemplateRef!: TemplateRef<any> | undefined;\r\n @Input() headerTemplateRef!: TemplateRef<any> | undefined;\r\n @Input() cellTemplateRef!: TemplateRef<any> | undefined;\r\n @Input() expansionTemplateRef!: TemplateRef<any> | undefined;\r\n @Input() popupEditingTemplateRef!: TemplateRef<any> | undefined;\r\n @Input() inlineEditingTemplateRef!: TemplateRef<any> | undefined;\r\n @Input() cellEditingTemplateRef!: TemplateRef<any> | undefined;\r\n @Input() cellTemplateRefMap: CellTemplateRefMap = {};\r\n\r\n // Table outputs\r\n @Output() inlineChange: EventEmitter<any> = new EventEmitter<RowChange>();\r\n @Output() cellChange: EventEmitter<any> = new EventEmitter<RowChange>();\r\n @Output() popupChange: EventEmitter<any> = new EventEmitter<RowChange>();\r\n @Output() rowDeleted: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() scroll: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() selectionChanged: EventEmitter<RowSelectionChange> =\r\n new EventEmitter<any>();\r\n @Output() expansionChange: EventEmitter<ExpansionChange> =\r\n new EventEmitter<any>();\r\n tableID = new Date().getTime();\r\n columnPinningOptions: MTExColumnPinOption[] = [];\r\n exportMenuCtrl: boolean = false;\r\n columnPinMenuCtrl: boolean = false;\r\n hideShowMenuCtrl: boolean = false;\r\n columnFilterBySelection: any = false;\r\n rowDataTemp: any = {};\r\n inlineEditingTemplateRefData: any = {};\r\n displayedColumns: string[] = [];\r\n showHideColumnsArray: MTExColumn[] = [];\r\n columnsList: string[] = [];\r\n columnsArray: MTExColumn[] = [];\r\n headersFiltersIds: string[] = [];\r\n columnsToDisplayWithExpand: string[] = [];\r\n selection = new SelectionModel<any>(false, []);\r\n hiddenCtrl = new SelectionModel<any>(true, []);\r\n tableData: any = [];\r\n filterValues: any = {};\r\n globalFilter = '';\r\n showHideFilter = '';\r\n individualFilter = '';\r\n toggleFilters = false;\r\n hideRows = false;\r\n expandedElement: any | null;\r\n currentRowIndex: number = -1;\r\n currentRow: any = {};\r\n cellEditing: any = {};\r\n hideShowMenuGroup!: FormGroup;\r\n cellTemplate!: TemplateRef<any>;\r\n menuX: number = 0;\r\n menuY: number = 0;\r\n dynamicDisplayedColumns: any[] = [\r\n { filter: false, name: 'select', show: false },\r\n { filter: false, name: 'edit', show: false },\r\n { filter: false, name: 'popup', show: false },\r\n { filter: false, name: 'delete', show: false },\r\n { filter: false, name: 'expand', show: false },\r\n ];\r\n inputPropertyKeys: string[] = [\r\n 'dataSource',\r\n 'columns',\r\n 'inlineRowEditing',\r\n 'popupRowEditing',\r\n 'enableDelete',\r\n 'rowSelection',\r\n 'multiRowSelection',\r\n 'stickyHeader',\r\n 'stickyFooter',\r\n 'columnFilter',\r\n 'globalSearch',\r\n 'expandRows',\r\n 'sorting',\r\n ];\r\n\r\n constructor(\r\n public dialog: MatDialog,\r\n public service: MatTableExtService,\r\n public formBuildersService: FormBuilder,\r\n public domSanitizer: DomSanitizer,\r\n public matIconRegistry: MatIconRegistry,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.addIconsToRegistry();\r\n if (this.dataSource) {\r\n this.tableData = this.dataSource.data;\r\n }\r\n }\r\n /**\r\n *\r\n * @param changes changes captured each time user changes property value.\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.setPropertyValue(changes);\r\n }\r\n\r\n ngOnInit() {\r\n if (this.dataSource) {\r\n this.dataSource.filterPredicate = this.createFilter();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.dataSource) {\r\n this.dataSource.paginator = this.paginator;\r\n this.dataSource.sort = this.sort;\r\n }\r\n }\r\n /**\r\n * @description checks and updates the the column's hide and show properties.\r\n */\r\n setColumnHideShow() {\r\n if (\r\n this.hideShowMenuGroup !== undefined &&\r\n this.hideShowMenuGroup !== null\r\n ) {\r\n this.updateColumnsHideShow(this.hideShowMenuGroup.value);\r\n }\r\n }\r\n /**\r\n * @description set the properties of the table.\r\n * @param changes changes captured each time user changes property value.\r\n */\r\n setPropertyValue(changes: SimpleChanges) {\r\n let keys = Object.keys(changes);\r\n keys.forEach((property) => {\r\n if (this.inputPropertyKeys.includes(property)) {\r\n this.setPropertiesMap[property](changes[property]);\r\n } else if (property == 'showToolbar') {\r\n if (changes['columns']) {\r\n this.setToolbarMenuControls(changes['columns'].currentValue);\r\n } else {\r\n this.setToolbarMenuControls(this.columnsArray);\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * @description This mapping is used to set and update changesin the table.\r\n */\r\n setPropertiesMap: any = {\r\n dataSource: (value: any) => this.setTableDataSource(value),\r\n columns: (value: any) => this.setColumnsData(value.currentValue),\r\n inlineRowEditing: (value: any) =>\r\n this.showHideColumn('edit', value.currentValue),\r\n popupRowEditing: (value: any) =>\r\n this.showHideColumn('popup', value.currentValue),\r\n enableDelete: (value: any) =>\r\n this.showHideColumn('delete', value.currentValue),\r\n rowSelection: (value: any) => this.setRowSelection(value.currentValue),\r\n multiRowSelection: (value: any) => {\r\n this.selection = new SelectionModel<any>(value.currentValue, []);\r\n },\r\n stickyHeader: (value: any) => {\r\n this.stickyHeader = value.currentValue;\r\n },\r\n stickyFooter: (value: any) => {\r\n this.stickyFooter = value.currentValue;\r\n },\r\n columnFilter: (value: any) => this.setColumnFilter(value.currentValue),\r\n globalSearch: (value: any) =>\r\n (this.dataSource.filterPredicate = this.createFilter()),\r\n expandRows: (value: any) => {\r\n this.loadingIndicator = true;\r\n this.dataSource = new MatTableDataSource(this.tableData);\r\n if (value.currentValue == true) {\r\n if (!this.displayedColumns.includes('expand')) {\r\n this.displayedColumns.push('expand');\r\n this.columnsToDisplayWithExpand = [...this.displayedColumns];\r\n }\r\n } else {\r\n this.columnsToDisplayWithExpand = [...this.displayedColumns];\r\n if (this.displayedColumns.includes('expand')) {\r\n let index = this.displayedColumns.indexOf('expand');\r\n this.displayedColumns.splice(index, 1);\r\n }\r\n this.expandedElement = null;\r\n }\r\n setTimeout(() => {\r\n this.loadingIndicator = false;\r\n }, 200);\r\n },\r\n sorting: (value: any) => (this.dataSource.sort = this.sort),\r\n };\r\n /**\r\n * @description used set data source for table.\r\n * @param value data source value from user.\r\n */\r\n setTableDataSource(value: any) {\r\n if (value.currentValue) {\r\n this.tableData = value.currentValue.data;\r\n this.dataSource = value.currentValue;\r\n this.reCal();\r\n } else {\r\n this.dataSource = new MatTableDataSource([{}]);\r\n }\r\n }\r\n /**\r\n * @description used create seletion model and set selection column visibility.\r\n * @param value boolean value to show or hide selection Column from table.\r\n */\r\n setRowSelection(value: boolean) {\r\n this.selection = new SelectionModel<any>(true, []);\r\n this.updateSelectionColumnVisibility(value);\r\n }\r\n\r\n /**\r\n * @description create filter header row and assigns filter predicate to table data source.\r\n * @param value boolean value to change visibility of column filter row.\r\n */\r\n setColumnFilter(value: boolean) {\r\n if (value) {\r\n let array: string[] = [];\r\n this.columnsArray.forEach((column, i) => {\r\n if (\r\n this.dynamicDisplayedColumns.filter((a) => a.name == column?.field)[0]\r\n .show\r\n ) {\r\n array.push(column?.field + '_' + i);\r\n }\r\n });\r\n this.headersFiltersIds = array;\r\n this.dataSource.filterPredicate = this.createFilter();\r\n } else {\r\n this.headersFiltersIds = [];\r\n this.dataSource.filter = '';\r\n }\r\n this.toggleFilters = value;\r\n }\r\n /**\r\n * @description This method returns the list of visible column names.\r\n * @returns list of visible column names.\r\n */\r\n getDisplayedColumns(): string[] {\r\n let list = this.dynamicDisplayedColumns\r\n .filter((cd) => cd.show)\r\n .map((cd) => cd.name);\r\n return list;\r\n }\r\n /**\r\n * @param menuType type of menu to open from toolbar.\r\n * @param event mouse event to open menu on that location.\r\n */\r\n openMenu(menuType: string, event: MouseEvent) {\r\n this.menuX = event.clientX;\r\n this.menuY = event.clientY;\r\n switch (menuType) {\r\n case 'export': {\r\n this.exportMenuCtrl = true;\r\n this.menuTrigger.openMenu();\r\n break;\r\n }\r\n case 'hideShow': {\r\n this.hideShowMenuCtrl = true;\r\n this.openHideShowMenu(this.columnsArray);\r\n break;\r\n }\r\n case 'columnPin': {\r\n this.columnPinMenuCtrl = true;\r\n this.openHideShowMenu(this.columnsArray);\r\n break;\r\n }\r\n }\r\n }\r\n /**\r\n * @description triggers when menu is closed and reset the required controls.\r\n */\r\n menuClosed() {\r\n this.exportMenuCtrl = false;\r\n }\r\n /**\r\n * @description set list of columns to display in table.\r\n * @param columns columns array from user input.\r\n */\r\n setColumnsData(columns: MTExColumn[]) {\r\n if (columns.length) {\r\n this.columnsArray = [...columns];\r\n this.setColumnsList(columns);\r\n }\r\n }\r\n /**\r\n * @description set list of columns to display in table.\r\n * @param columns columns array from user input with configurations.\r\n */\r\n setColumnsList(columns: MTExColumn[]) {\r\n this.columnsList = [];\r\n this.displayedColumns = ['select', 'edit', 'popup', 'delete'];\r\n let columnsArray: DisplayColumn[] = [];\r\n columns.forEach((col) => {\r\n if (typeof col?.header == 'string') {\r\n this.columnsList.push(col?.header);\r\n this.displayedColumns.push(col?.field);\r\n columnsArray.push({ filter: true, name: col?.field, show: !col.hide });\r\n }\r\n });\r\n this.dynamicDisplayedColumns = [\r\n { filter: false, name: 'select', show: false },\r\n { filter: false, name: 'edit', show: false },\r\n { filter: false, name: 'popup', show: false },\r\n { filter: false, name: 'delete', show: false },\r\n ];\r\n this.dynamicDisplayedColumns = columnsArray.concat(\r\n this.dynamicDisplayedColumns\r\n );\r\n }\r\n /**\r\n * @description Take boolean value and name column and update its visibility status in table.\r\n * @param name name of the column to set visibility.\r\n * @param value boolean value to set visibility of the column.\r\n */\r\n showHideColumn(name: string, value: boolean) {\r\n this.dynamicDisplayedColumns.filter((a) => a.name == name)[0].show = value;\r\n if (this.columnFilter) {\r\n this.setColumnFilter(true);\r\n }\r\n }\r\n /**\r\n * @description This method will position the selection column to first and also update its visibility.\r\n * @param value value used to set visibility of the selection column.\r\n */\r\n updateSelectionColumnVisibility(value: boolean) {\r\n let columnName = 'select';\r\n let column = this.dynamicDisplayedColumns.filter(\r\n (a) => a.name == columnName\r\n )[0];\r\n let index = this.dynamicDisplayedColumns.findIndex(\r\n (column: any) => column.name == columnName\r\n );\r\n if (index > -1) {\r\n this.dynamicDisplayedColumns.splice(index, 1);\r\n this.dynamicDisplayedColumns.unshift(column);\r\n this.dynamicDisplayedColumns.filter(\r\n (column) => column.name == columnName\r\n )[0].show = value;\r\n }\r\n }\r\n /**\r\n * @description This method is used to update the position of column in columns array according to its dropped position.\r\n * @param event CdkDragDrop used to update column position in columns array.\r\n */\r\n onDrop(event: CdkDragDrop<any>) {\r\n if (this.dndColumns) {\r\n let adjustedValue = 0;\r\n if (\r\n this.dynamicDisplayedColumns[0].name == 'select' &&\r\n this.dynamicDisplayedColumns[0].show == false\r\n ) {\r\n adjustedValue = 1;\r\n }\r\n moveItemInArray(\r\n this.dynamicDisplayedColumns,\r\n event.previousIndex + adjustedValue,\r\n event.currentIndex + adjustedValue\r\n );\r\n }\r\n }\r\n /**\r\n * @description This method create filter predicate function which will set search value to table filters\r\n * for both global and individual colum filtering.\r\n * @returns returns boolean value to filter rows in table.\r\n */\r\n createFilter(): (data: any, filter: string) => boolean {\r\n const tableFilterPredicate = (data: any, filter: string): boolean => {\r\n let result: boolean = true;\r\n // search all column fields\r\n if (this.globalFilter) {\r\n let expression = '';\r\n let keys = Object.keys(data);\r\n keys.forEach((key) => {\r\n expression =\r\n expression +\r\n `data.${key}.toString().trim().toLowerCase().indexOf(this.globalFilter.toLowerCase()) !== -1 ||`;\r\n });\r\n if (\r\n expression.charAt(expression.length - 2) +\r\n expression.charAt(expression.length - 1) ==\r\n '||'\r\n ) {\r\n expression = expression.substring(0, expression.length - 2);\r\n }\r\n result = eval(expression);\r\n }\r\n if (!result) {\r\n return false;\r\n }\r\n let searchString = JSON.parse(filter);\r\n //search single column field\r\n if (this.individualFilter) {\r\n return (\r\n data[this.individualFilter]\r\n .toString()\r\n .trim()\r\n .toLowerCase()\r\n .indexOf(\r\n searchString[this.individualFilter].toString().toLowerCase()\r\n ) !== -1\r\n );\r\n }\r\n return true;\r\n };\r\n return tableFilterPredicate;\r\n }\r\n /**\r\n * @description assigns the search value to mat table data source to apply the filter.\r\n * @param searchValue value to be searched from table rows.\r\n */\r\n applyGlobalFilter(searchValue: string) {\r\n this.globalFilter = searchValue;\r\n let columns: any = {};\r\n this.columnsArray.forEach((column: MTExColumn) => {\r\n if (column.field) columns[column.field] = searchValue;\r\n });\r\n this.dataSource.filter = JSON.stringify(columns);\r\n }\r\n /**\r\n * @description This method is used to apply column based filtering\r\n * @param searchValue value to be searched from table rows.\r\n * @param column filter will be applied based on this column field.\r\n */\r\n applyColumnFilter(searchValue: FilterSearchValue, column: MTExColumn) {\r\n this.individualFilter = column.field;\r\n this.filterValues[column.field] = searchValue[column.field];\r\n this.dataSource.filter = JSON.stringify(this.filterValues);\r\n }\r\n /**\r\n * @description This method will take row and its index enable inline editing tools on that row.\r\n * @param row row on which user wants to do edit.\r\n * @param index index of the row where inline editing will be enabled.\r\n */\r\n enableInlineEditing(row: any, index: number) {\r\n const rowData: any = {};\r\n rowData['e' + index] = { ...row };\r\n this.rowDataTemp = rowData;\r\n setTimeout(() => {\r\n this.tableData[index]['editable'] = !this.tableData[index]['editable'];\r\n }, 0);\r\n }\r\n /**\r\n * @description This method will create and return data to inline editing template.\r\n * @param row row on which user wants to do edit.\r\n * @param index index of the row where inline editing will be enabled.\r\n * @param column current column of the table.\r\n */\r\n getInlineEditingData(row: MTExRow, index: number, column: MTExColumn) {\r\n this.inlineEditingTemplateRefData = {\r\n row: { ...row },\r\n column: { ...column },\r\n index: index,\r\n updateFunc: this.updateInlineTemplateData,\r\n };\r\n return this.inlineEditingTemplateRefData;\r\n }\r\n /**\r\n * @description This method will take data from inline editing template and update in table data source.\r\n * @param row updated row from inline editing template.\r\n */\r\n updateInlineTemplateData = (row: MTExRow) => {\r\n this.service.selectedRow.next(row);\r\n };\r\n /**\r\n * @description This method set data for in-cell editing.\r\n * @param row row on which user wants to do edit.\r\n * @param index index of the row where inline editing will be enabled.\r\n */\r\n setCellData(row: MTExRow, index: number) {\r\n this.currentRow = { ...row };\r\n this.currentRowIndex = index;\r\n this.rowDataTemp['e' + index] = { ...row };\r\n }\r\n /**\r\n * @description This will restore the data and cencel the inline editing.\r\n * @param row row on which user wants to do edit.\r\n * @param index index of the row where inline editing will be enabled.\r\n */\r\n cancelInlineEditing(row: MTExRow, index: number) {\r\n this.tableData.filter((a: any, i: number) => i == index)[0]['editable'] =\r\n !this.tableData.filter((a: any, i: number) => i == index)[0]['editable'];\r\n this.dataSource = new MatTableDataSource(this.tableData);\r\n this.rowDataTemp['e' + index] = {};\r\n this.service.selectedRow.next(undefined);\r\n }\r\n /**\r\n * @description This method will save and update the inline editing data and emit the update row and index.\r\n * @param row row on which user wants to do edit.\r\n * @param index index of the row where inline editing will be enabled.\r\n */\r\n saveInlineEditing(row: MTExRow, index: number) {\r\n if (!this.inlineEditingTemplateRef) {\r\n this.tableData[index] = { ...this.rowDataTemp['e' + index] };\r\n row = { ...this.rowDataTemp['e' + index] };\r\n } else {\r\n let changedData = this.service.selectedRow.value;\r\n if (changedData) {\r\n this.tableData[index] = { ...changedData };\r\n }\r\n }\r\n this.dataSource = new MatTableDataSource(this.tableData);\r\n this.rowDataTemp['e' + index] = {};\r\n let data: RowChange = {\r\n row: row,\r\n index: index,\r\n };\r\n this.inlineChange.emit(data);\r\n this.tableData[index]['editable'] = false;\r\n }\r\n /**\r\n * @description This method will save and update the cell editing data and emit the update row and index.\r\n */\r\n saveCellEditing() {\r\n this.cellEditing = {};\r\n let index = this.currentRowIndex;\r\n if (index > -1) {\r\n if (this.cellEditingTemplateRef) {\r\n let changedData = this.service.selectedRow.value;\r\n if (changedData) {\r\n this.tableData[index] = { ...changedData };\r\n }\r\n } else {\r\n this.tableData[index] = { ...this.rowDataTemp['e' + index] };\r\n }\r\n this.dataSource = new MatTableDataSource(this.tableData);\r\n this.rowDataTemp['e' + index] = {};\r\n let data: RowChange = {\r\n row: { ...this.tableData[index] },\r\n index: index,\r\n };\r\n this.currentRowIndex = -1;\r\n this.cellChange.emit(data);\r\n }\r\n }\r\n /**\r\n * @description This method will delete the row from the given index and emit the deleted row and index.\r\n * @param row row to be deleted.\r\n * @param index index of the row to be deleted.\r\n */\r\n deleteRow(row: any, index: number) {\r\n this.tableData.splice(index, 1);\r\n this.dataSource = new MatTableDataSource(this.tableData);\r\n this.dataSource.paginator = this.paginator;\r\n this.dataSource.sort = this.sort;\r\n this.rowDeleted.emit({ removedRow: row, fromIndex: index });\r\n }\r\n\r\n /**\r\n * @description This method will expand or collapse the row and emit expand event.\r\n * @param row row to be expanded or collapsed.\r\n * @param expand value used to expand or collapse the row.\r\n * @param index index of the row.\r\n */\r\n expandRow(row: MTExRow, expand: boolean, index: number) {\r\n if (this.expandRows) {\r\n this.expansionChange.emit({ data: row, expanded: expand, index: index });\r\n this.expandedElement = this.expandedElement === row ? null : row;\r\n }\r\n }\r\n /**\r\n * @description This method is used to set data for popup component and open editing dialog.\r\n * @param row row which used want to edit.\r\n */\r\n openEditingDialog(row: MTExRow) {\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.width = '40%';\r\n dialogConfig.height = '70%';\r\n dialogConfig.maxWidth = '100%';\r\n let rowData = { ...row };\r\n dialogConfig.data = {\r\n row: rowData,\r\n columns: [...this.columnsArray],\r\n templateRef: this.popupEditingTemplateRef,\r\n };\r\n this.dialog\r\n .open(EditingComponent, dialogConfig)\r\n .afterClosed()\r\n .subscribe((data) => {\r\n let index = this.tableData.indexOf(row);\r\n if (data && index > -1) {\r\n this.tableData[index] = data;\r\n this.dataSource = new MatTableDataSource(this.tableData);\r\n let dataChange: RowChange = {\r\n row: data,\r\n index: index,\r\n };\r\n this.popupChange.emit(dataChange);\r\n }\r\n });\r\n }\r\n /**\r\n * @description used to check whether all rows are selected.\r\n */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /**\r\n * @description this method is used to toggle the all and no rows selection.\r\n */\r\n toggleAllRows() {\r\n if (this.isAllSelected()) {\r\n this.selection.clear();\r\n return;\r\n }\r\n this.selection.select(...this.dataSource.data);\r\n }\r\n\r\n /**\r\n * @description This method is used return aria-label for selection column checkboxs.\r\n * @param row row from table.\r\n * @returns labels for selection column checkboxs.\r\n */\r\n checkboxLabel(row?: any): string {\r\n if (!row) {\r\n return `${this.isAllSelected() ? 'deselect' : 'select'} all`;\r\n }\r\n return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${\r\n row.position + 1\r\n }`;\r\n }\r\n\r\n /**\r\n * @description create form control for columns for hiding and and pinning purpose\r\n * @param columns list of columns to be displayed\r\n */\r\n setToolbarMenuControls(columns: MTExColumn[]) {\r\n if (columns.length > 0 && this.showToolbar) {\r\n const group = this.formBuildersService.group({});\r\n columns.forEach((column: MTExColumn) => {\r\n const control = this.formBuildersService.control(true);\r\n group.addControl(column.field, control);\r\n });\r\n this.hideShowMenuGroup = group;\r\n }\r\n }\r\n\r\n /**\r\n * @param column current column\r\n * @param event mouse event used to set the menu position\r\n */\r\n openPinnablePropertyMenu(column: MTExColumn, event: MouseEvent): void {\r\n this.menuX = event.clientX;\r\n this.menuY = event.clientY;\r\n let options: MTExColumnPinOption[] = [\r\n {\r\n label: 'Pin Left',\r\n value: 'left',\r\n selected: false,\r\n field: column.field,\r\n },\r\n {\r\n label: 'Pin Right',\r\n value: 'right',\r\n selected: false,\r\n field: column.field,\r\n },\r\n { label: 'No Pin', value: null, selected: false, field: column.field },\r\n ];\r\n if (column.pinned && column.pinned !== null) {\r\n options.forEach((opt: MTExColumnPinOption) => {\r\n if (opt.value === column.pinned) {\r\n opt.selected = true;\r\n }\r\n });\r\n } else if (column.pinned == null || column.pinned == 'null') {\r\n options[2].selected = true;\r\n }\r\n this.columnPinningOptions = options;\r\n this.columnMenuTrigger.openMenu();\r\n }\r\n /**\r\n * @description This method is used to reset menu checks when required.\r\n */\r\n resetMenuChecks() {\r\n this.hideShowMenuCtrl = false;\r\n this.showHideColumnsArray = [];\r\n this.columnPinMenuCtrl = false;\r\n this.columnPinningOptions = [];\r\n }\r\n /**\r\n * @description This method is used to filter columns for menus like pinning or hide show menu.\r\n * @param value search value to filter colunms\r\n */\r\n filterColumns(value: string) {\r\n if (value !== '') {\r\n this.showHideColumnsArray = this.columnsArray.filter(\r\n (col: MTExColumn) => {\r\n return col.header!.toLowerCase().includes(value.toLowerCase());\r\n }\r\n );\r\n } else {\r\n this.showHideColumnsArray = this.columnsArray;\r\n }\r\n }\r\n /**\r\n * @description This method is used to open hide show column menu.\r\n * @param columns columns array to display in hide show menu.\r\n */\r\n openHideShowMenu(columns: MTExColumn[]) {\r\n this.showHideColumnsArray = [...columns];\r\n this.columnMenuTrigger.openMenu();\r\n }\r\n /**\r\n * @param values columns\r\n */\r\n updateColumnsHideShow(values: ColumnVisibility) {\r\n let keys = Object.keys(values);\r\n keys.forEach((key: string) => {\r\n this.showHideColumn(key, values[key]);\r\n });\r\n }\r\n\r\n /**\r\n * @description This method is called when the table rows are scrolled.\r\n * @param event scroll event\r\n */\r\n onScroll(event: any) {\r\n this.scroll.emit(event);\r\n }\r\n /**\r\n * @param row row to be toggled\r\n * @param index index of toggled row\r\n */\r\n setSelectedRows(row: any, index: number) {\r\n this.selection.toggle(row);\r\n if (this.selection.isSelected(row)) {\r\n this.selectionChanged.emit({ row: row, index: index, isSelected: true });\r\n } else {\r\n this.selectionChanged.emit({ row: row, index: index, isSelected: false });\r\n }\r\n }\r\n/**\r\n * @description This method is used to display all hidden rows.\r\n */\r\n showHiddenRows() {\r\n this.hideRows = false;\r\n this.selection.clear();\r\n this.hiddenCtrl.clear();\r\n }\r\n/**\r\n * @description This method is used to hide all selected rows.\r\n */\r\n hideSelectedRows() {\r\n if (!this.selection.isEmpty()) {\r\n let values = [...this.selection.selected];\r\n values.forEach((value) => {\r\n if (!this.hiddenCtrl.isSelected(value)) {\r\n this.hiddenCtrl.toggle(value);\r\n }\r\n });\r\n this.selection.clear();\r\n this.hideRows = true;\r\n }\r\n }\r\n/**\r\n * @description This method is used to recalculate the required values for table.\r\n */\r\n reCal() {\r\n if (this.showPaginator) {\r\n this.dataSource.paginator = this.paginator;\r\n }\r\n if (this.sorting) {\r\n this.dataSource.sort = this.sort;\r\n }\r\n if (this.columnFilter) {\r\n this.dataSource.filterPredicate = this.createFilter();\r\n }\r\n }\r\n/**\r\n * @description This method is called in constructor method to add SVGs into icon registration.\r\n */\r\n addIconsToRegistry() {\r\n let y = this.domSanitizer.bypassSecurityTrustResourceUrl(\r\n `assets/pinRight.svg`\r\n );\r\n let iconNames = ['pinLeft', 'pinRight', 'pinNone', 'pinned', 'pinIcon'];\r\n iconNames.forEach((icon) => {\r\n this.matIconRegistry.addSvgIcon(\r\n icon,\r\n this.domSanitizer.bypassSecurityTrustResourceUrl(\r\n `assets/${icon}.svg`\r\n )\r\n );\r\n });\r\n }\r\n/**\r\n * @description This method is used to export table data.\r\n * @param type type of file to be exported.\r\n */\r\n exportTable(type: string) {\r\n var element = document.getElementById('matTableExt' + this.tableID);\r\n var ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(element);\r\n ws = this.writeSheetData(ws);\r\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\r\n XLSX.writeFile(wb, `tablesheets.${type}`);\r\n }\r\n /**\r\n * @description This method is used to split name of filter row header to get index.\r\n * @param value value to be splited for index.\r\n * @returns Will return index of column from value.\r\n */\r\n returnIndex(value: string): number {\r\n return Number(value.split('_')[1]);\r\n }\r\n/**\r\n * @description This method is used to manage column filtering, expanded data for exporting.\r\n * @param ws work sheet\r\n * @returns custom generated worksheet to be used in export.\r\n */\r\n writeSheetData(ws: XLSX.WorkSheet): XLSX.WorkSheet {\r\n let displayedColumns = this.getDisplayedColumns();\r\n var nMerges = this.getMergeIndex(ws['!merges'] || []);\r\n var merges = ws['!merges'] || [];\r\n let data: XLSX.WorkSheet = {\r\n '!cols': [],\r\n '!rows': [],\r\n '!merges': nMerges,\r\n };\r\n var range = XLSX.utils.decode_range(ws['!ref'] || '');\r\n let extracolumns = ['popup', 'delete', 'select', 'edit'];\r\n let keys = Object.keys(ws);\r\n let nKey = 'A';\r\n keys.forEach((key, i) => {\r\n if (ws[key]?.v && typeof ws[key]?.v === 'string') {\r\n if (\r\n !extracolumns.includes(ws[key].v.toLowerCase()) &&\r\n displayedColumns.includes(ws[key].v.toLowerCase())\r\n ) {\r\n let lastRowIndex = range?.e?.r;\r\n data[key] = ws[key];\r\n let chr = key.charAt(0);\r\n for (let j = 2; j <= lastRowIndex; j++) {\r\n if (\r\n ws[chr + (j + 1)] !== undefined &&\r\n (typeof ws[chr + (j + 1)].v === 'string' ||\r\n typeof ws[chr + (j + 1)].v === 'number')\r\n ) {\r\n data[nKey + j] = ws[chr + (j + 1)];\r\n }\r\n }\r\n nKey = String.fromCharCode(nKey.charCodeAt(0) + 1);\r\n }\r\n }\r\n });\r\n if (this.rowSelection) {\r\n let chr = 'A';\r\n for (let i = 1; i < range.e.c + 1; i++) {\r\n data[chr + 1] = data[String.fromCharCode(chr.charCodeAt(0) + 1) + 1];\r\n chr = String.fromCharCode(chr.charCodeAt(0) + 1);\r\n if (i == range.e.c) {\r\n data[chr + 1] = undefined;\r\n }\r\n }\r\n }\r\n if (this.rowSelection && this.expandRows) {\r\n merges.forEach((merge) => {\r\n data['A' + merge.s.r] = ws['A' + (merge.s.r + 1)];\r\n });\r\n }\r\n range.e.r--;\r\n let nRef = XLSX.utils.encode_range(range);\r\n data['!ref'] = nRef;\r\n data['!fullref'] = nRef;\r\n return data;\r\n }\r\n getMergeIndex(merges: any[]) {\r\n var arr: any[] = [];\r\n merges.forEach((element: any) => {\r\n arr.push({\r\n e: {\r\n r: element.e.r == 0 ? element.e.r : element.e.r - 1,\r\n c: element.e.c,\r\n },\r\n s: {\r\n r: element.s.r == 0 ? element.s.r : element.s.r - 1,\r\n c: element.s.c,\r\n },\r\n });\r\n });\r\n return arr;\r\n }\r\n}\r\n","<div [style.width]=\"tableWidth\">\r\n <mat-form-field class=\"global-search-field\" appearance=\"fill\" *ngIf=\"globalSearch\">\r\n <mat-label>Search</mat-label>\r\n <input matInput [ngModel]=\"globalFilter\" (ngModelChange)=\"applyGlobalFilter($event)\" placeholder=\"Ex. Mia\" #input>\r\n </mat-form-field>\r\n <mat-toolbar class=\"toolbar-container\" *ngIf=\"showToolbar\" [style.height]=\"toolbarHeight?toolbarHeight:'50px'\">\r\n <span class=\"toolbar-title\" *ngIf=\"toolbarTitle\">{{toolbarTitle}}</span>\r\n <ng-container *ngIf=\"toolbarTemplateRef\" [ngTemplateOutlet]=\"toolbarTemplateRef\"></ng-container>\r\n <span class=\"example-spacer\"></span>\r\n <ng-container *ngIf=\"rowSelection || multiRowSelection\">\r\n <button class=\"hide-button\" mat-stroked-button color=\"primary\" (click)=\"hideSelectedRows()\">\r\n Hide Rows\r\n </button>\r\n <button class=\"hide-button\" mat-stroked-button color=\"primary\" (click)=\"showHiddenRows()\">\r\n Show All Rows\r\n </button>\r\n </ng-container>\r\n <button *ngIf=\"columnHidable\" class=\"hide-button\" mat-stroked-button color=\"primary\"\r\n (click)=\"openMenu('hideShow',$event)\" matTooltip=\"Column Visibility\" matTooltipPosition=\"above\">\r\n <mat-icon>visibility</mat-icon>\r\n </button>\r\n <button *ngIf=\"columnPinnable\" class=\"pin-button\" mat-stroked-button color=\"primary\"\r\n (click)=\"openMenu('columnPin',$event)\" matTooltip=\"Column Pinning\">\r\n <mat-icon svgIcon=\"pinIcon\"></mat-icon>\r\n </button>\r\n <button *ngIf=\"exportButtonEnable\" class=\"export-button\" mat-stroked-button color=\"primary\"\r\n (click)=\"openMenu('export',$event)\" matTooltip=\"Table Data Export\">\r\n <mat-icon>import_export</mat-icon> <span>Export</span>\r\n <mat-icon>expand_more</mat-icon>\r\n </button>\r\n <div style=\"visibility: hidden; position:fixed\" [matMenuTriggerFor]=\"menu\" [style.left.px]=\"menuX\"\r\n [style.top.px]=\"menuY\"></div>\r\n </mat-toolbar>\r\n <mat-menu #menu=\"matMenu\" (closed)=\"menuClosed()\" id=\"exportMenu\">\r\n <ng-container *ngIf=\"exportMenuCtrl\">\r\n <mat-option (click)=\"exportTable('xlsx')\">Export to Excel</mat-option>\r\n <mat-option (click)=\"exportTable('csv')\">Export to CSV</mat-option>\r\n </ng-container>\r\n </mat-menu>\r\n <div style=\"visibility: hidden; position:fixed\" #columnMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"columnMenu\"\r\n [style.left.px]=\"menuX\" [style.top.px]=\"menuY\">\r\n </div>\r\n <mat-menu #columnMenu=\"matMenu\" (closed)=\"resetMenuChecks()\">\r\n <div class=\"toolbar-menu-container\" *ngIf=\"hideShowMenuCtrl\" [formGroup]=\"hideShowMenuGroup\"\r\n (click)=\"$event.stopPropagation()\">\r\n <h4 class=\"column-headers\">Visible Columns</h4>\r\n <mat-form-field appearance=\"fill\" style=\"width: -webkit-fill-available;\">\r\n <mat-label>Filter Columns</mat-label>\r\n <input matInput [(ngModel)]=\"showHideFilter\" (ngModelChange)=\"filterColumns($event)\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <div class=\"showHide-menu-columns-list\">\r\n <div class=\"toolbar-menu-item\" *ngFor=\"let column of showHideColumnsArray\">\r\n <mat-checkbox color=\"primary\" class=\"toolbar-menu-checkbox\" style=\"width: max-content;\"\r\n [formControlName]=\"column.field\" (change)=\"setColumnHideShow()\">{{column.header}}</mat-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"toolbar-menu-container\" *ngIf=\"columnPinMenuCtrl\" (click)=\"$event.stopPropagation()\">\r\n <h4 class=\"column-headers\">Pin Columns</h4>\r\n <form class=\"example-form\">\r\n <mat-form-field appearance=\"fill\" style=\"width: -webkit-fill-available;\">\r\n <mat-label>Filter Columns</mat-label>\r\n <input matInput [(ngModel)]=\"showHideFilter\" (ngModelChange)=\"filterColumns($event)\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n </form>\r\n <div class=\"showHide-menu-columns-list\">\r\n <app-column-pinning [columns]=\"showHideColumnsArray\"></app-column-pinning>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n\r\n <mat-progress-bar *ngIf=\"loadingIndicator\" mode=\"indeterminate\"></mat-progress-bar>\r\n <section id=\"tableContainer\" class=\"mat-table-ext-container\" (scroll)=\"onScroll($event)\"\r\n [style.height]=\"tableHeight ? tableHeight :'max-content'\">\r\n <table mat-table [id]=\"'matTableExt'+tableID\" [dataSource]=\"dataSource\" matSort cdkDropList\r\n cdkDropListOrientation=\"horizontal\" multiTemplateDataRows (cdkDropListDropped)=\"onDrop($event)\"\r\n (click)=\"saveCellEditing()\" [style.width]=\"scrollbarH?'max-content':'100%'\">\r\n <!-- Row selection column -->\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef cdkDragLockAxis=\"x\" cdkDrag [cdkDragDisabled]=\"!dndColumns\">\r\n <mat-checkbox (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\" [aria-label]=\"checkboxLabel()\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row;let i = dataIndex\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? setSelectedRows(row,i) : null\"\r\n [checked]=\"selection.isSelected(row)\" [aria-label]=\"checkboxLabel(row)\">\r\n </mat-checkbox>\r\n </td>\r\n <ng-container *ngIf=\"showFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n </ng-container>\r\n <!--dynamic columns are being generated here-->\r\n <div matColumnDef=\"{{column['field']}}\" [sticky]=\"column.pinned == 'left' ? true:false\"\r\n [stickyEnd]=\"column.pinned == 'right' ? true:false\" *ngFor=\"let column of columnsArray; let i = index\">\r\n <th mat-header-cell *matHeaderCellDef [style.width]=\"column.width\" [style.maxWidth]=\"column.maxWidth\"\r\n [style.minWidth]=\"column.minWidth\" cdkDragLockAxis=\"x\" cdkDrag [cdkDragDisabled]=\"!dndColumns\"\r\n [columnsResizable]=\"columnResizable\" [index]=\"i\">\r\n <span *ngIf=\"!headerTemplateRef\" matTooltip=\"{{column.headerTooltip?.value}}\"\r\n [matTooltipPosition]=\"column?.headerTooltip?.tooltipPosition!\" mat-sort-header\r\n [disabled]=\"!sorting || column.disabled === true\">{{column.header}}</span>\r\n <ng-container *ngIf=\"headerTemplateRef\" [ngTemplateOutlet]=\"headerTemplateRef\"\r\n [ngTemplateOutletContext]=\"{data:column}\"></ng-container>\r\n <ng-container *ngIf=\"column.headerTemplate\" [ngTemplateOutlet]=\"column.headerTemplate\"\r\n [ngTemplateOutletContext]=\"{data:column}\"></ng-container>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row ;let i=dataIndex\">\r\n <div *ngIf=\"!row.editable && !cellEditing[i +'_'+column.field]\"\r\n (dblclick)=\"cellEditing[i +'_'+column.field] = inCellEditing;setCellData(row,i)\"\r\n matTooltip=\"{{column.cellTooltip?.value}}\"\r\n [matTooltipPosition]=\"column?.cellTooltip?.tooltipPosition!\">\r\n <span\r\n *ngIf=\"!cellTemplateRef && !column?.cellTemplate && !cellTemplateRefMap[column.field]\">{{row[column.field]}}</span>\r\n <ng-container *ngIf=\"cellTemplateRefMap[column.field]\"\r\n [ngTemplateOutlet]=\"cellTemplateRefMap[column.field]\"\r\n [ngTemplateOutletContext]=\"{row:row,column:column,index:i}\">\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"cellTemplateRef && column.cellTemplate && !cellTemplateRefMap[column.field]\"\r\n [ngTemplateOutlet]=\"column.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{row:row,column:column,index:i}\">\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"!cellTemplateRef && column.cellTemplate && !cellTemplateRefMap[column.field]\"\r\n [ngTemplateOutlet]=\"column.cellTemplate\"\r\n [ngTemplateOutletContext]=\"{row:row,column:column,index:i}\">\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"cellTemplateRef && !column.cellTemplate && !cellTemplateRefMap[column.field]\"\r\n [ngTemplateOutlet]=\"cellTemplateRef\"\r\n [ngTemplateOutletContext]=\"{row:row,column:column,index:i}\">\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"row.editable || cellEditing[i +'_'+column.field]\" (click)=\"$event.stopPropagation()\">\r\n <ng-container *ngIf=\"inlineEditingTemplateRef && !cellEditing[i +'_'+column.field]\"\r\n [ngTemplateOutlet]=\"inlineEditingTemplateRef\"\r\n [ngTemplateOutletContext]=\"{data:getInlineEditingData(row,i,column)}\"></ng-container>\r\n <ng-container *ngIf=\"cellEditingTemplateRef && !(row.editable)\"\r\n [ngTemplateOutlet]=\"cellEditingTemplateRef\"\r\n [ngTemplateOutletContext]=\"{data:getInlineEditingData(row,i,column)}\"></ng-container>\r\n <ng-container *ngIf=\"!inlineEditingTemplateRef && (row.editable) && rowDataTemp['e'+i]\">\r\n <mat-form-field *ngIf=\"column.type == 'number'\" appearance=\"outline\"\r\n class=\"inline-editing-field\">\r\n <input matInput type=\"number\" [(ngModel)]=\"rowDataTemp['e'+i][column.field]\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" *ngIf=\"column.type == 'string'\" appearance=\"outline\"\r\n class=\"inline-editing-field\">\r\n <input matInput type=\"text\" [(ngModel)]=\"rowDataTemp['e'+i][column.field]\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"column.type == 'date'\" appearance=\"outline\"\r\n class=\"inline-editing-field\">\r\n <input matInput type=\"date\" [(ngModel)]=\"rowDataTemp['e'+i][column.field]\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"column.type == 'selection'\" appearance=\"outline\"\r\n class=\"inline-editing-field\">\r\n <mat-select [value]=\"rowDataTemp['e'+i][column.field]\"\r\n [(ngModel)]=\"rowDataTemp['e'+i][column.field]\">\r\n <mat-option *ngFor=\"let option of column.options\" [value]=\"option\">\r\n {{option}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" *ngIf=\"column.type == 'boolean'\"\r\n color=\"primary\" [(ngModel)]=\"row[column.field]\"></mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"!cellEditingTemplateRef && cellEditing[i +'_'+column.field]\">\r\n <mat-form-field *ngIf=\"column.type == 'number'\" appearance=\"outline\"\r\n class=\"inline-editing-field\">\r\n <input matInput type=\"number\" [(ngModel)]=\"rowDataTemp['e'+i][column.field]\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"column.type == 'string'\" appearance=\"outline\"\r\n class=\"inline-editing-field\">\r\n <input matInput type=\"text\" [(ngModel)]=\"rowDataTemp['e'+i][column.field]\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"column.type == 'date'\" appearance=\"outline\"\r\n class=\"inline-editing-field\">\r\n <input matInput type=\"date\" [(ngModel)]=\"rowDataTemp['e'+i][column.field]\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n </mat-form-field>\r\n <mat-form-field *ngIf=\"column.type == 'selection'\" appearance=\"outline\"\r\n class=\"inline-editing-field\">\r\n <mat-select [value]=\"rowDataTemp['e'+i][column.field]\"\r\n [(ngModel)]=\"rowDataTemp['e'+i][column.field]\">\r\n <mat-option *ngFor=\"let option of column.options\" [value]=\"option\">\r\n {{option}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" *ngIf=\"column.type == 'boolean'\"\r\n color=\"primary\" [(ngModel)]=\"row[column.field]\"></mat-checkbox>\r\n </ng-container>\r\n </div>\r\n </td>\r\n <ng-container *ngIf=\"showFooterRow\">\r\n <td mat-footer-cell *matFooterCellDef> {{column.footerText}} </td>\r\n </ng-container>\r\n </div>\r\n <ng-container matColumnDef=\"edit\" stickyEnd=\"false\">\r\n <th mat-header-cell cdkDragLockAxis=\"x\" cdkDrag [cdkDragDisabled]=\"true\" *matHeaderCellDef\r\n class=\"action-column-cells\"> Edit </th>\r\n <td mat-cell *matCellDef=\"let row; let i = dataIndex\" class=\"inline-edit-column-cell\">\r\n <mat-icon class=\"edit-column-icons\" *ngIf=\"!row.editable && !row.editmodal\" aria-hidden=\"false\"\r\n (click)=\"enableInlineEditing(row,i)\" fontIcon=\"edit_note\">\r\n </mat-icon>\r\n <div class=\"inline-editing-controls\" *ngIf=\"row.editable && !row.editmodal\">\r\n <mat-icon class=\"edit-column-icons\" aria-hidden=\"false\" (click)=\"saveInlineEditing(row,i)\"\r\n fontIcon=\"done\"></mat-icon>\r\n <mat-icon class=\"edit-column-icons\" aria-hidden=\"false\" (click)=\"cancelInlineEditing(row,i)\"\r\n fontIcon=\"close\"></mat-icon>\r\n </div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef> edit </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"popup\" stickyEnd=\"false\">\r\n <th mat-header-cell cdkDragLockAxis=\"x\" cdkDrag [cdkDragDisabled]=\"true\" *matHeaderCellDef\r\n class=\"action-column-cells\"> Popup\r\n </th>\r\n <td mat-cell *matCellDef=\"let row; let i = index\">\r\n <mat-icon aria-hidden=\"false\" (click)=\"openEditingDialog(row)\" fontIcon=\"edit\">\r\n </mat-icon>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"delete\">\r\n <th mat-header-cell cdkDragLockAxis=\"x\" cdkDrag [cdkDragDisabled]=\"true\" *matHeaderCellDef\r\n class=\"action-column-cells\"> Delete\r\n </th>\r\n <td mat-cell *matCellDef=\"let row;let i=dataIndex\">\r\n <mat-icon (click)=\"deleteRow(row,i)\" aria-hidden=\"false\" aria-label=\"Example home icon\"\r\n fontIcon=\"delete\">\r\n </mat-icon>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container *ngIf=\"expandRows\" matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element;let i=dataIndex \"\r\n [attr.colspan]=\"columnsToDisplayWithExpand.length\">\r\n <div class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\">\r\n <ng-container *ngIf=\"expansionTemplateRef\" [ngTemplateOutlet]=\"expansionTemplateRef\"\r\n [ngTemplateOutletContext]=\"{$explicit:element,row:element,index:i}\">\r\n </ng-container>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let ids of headersFiltersIds; let i=index\" [matColumnDef]=\"ids\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <div class=\"filters-container\" [class.animate]=\"toggleFilters\">\r\n <app-filter-columns-component [obj]=\"columnsArray[returnIndex(ids)]\"\r\n (filterOutput)=\"applyColumnFilter($event,columnsArray[returnIndex(ids)])\"></app-filter-columns-component>\r\n </div>\r\n </th>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\" getDisplayedColumns(); sticky: stickyHeader\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns:getDisplayedColumns(); let i=dataIndex;\" class=\"data-row\"\r\n [ngClass]=\"{'data-row':expandRows,'stripedRows':(stripedRows && i % 2 == 1),'hoverClass':rowHover, 'hidden':hiddenCtrl.isSelected(row) && hideRows,'example-expanded-row':expandedElement === row}\"\r\n (click)=\"expandRow(row, row !== expandedElement,i)\">\r\n </tr>\r\n <tr style=\"height: 0px;\" mat-header-row class=\"no-default-height\" *matHeaderRowDef=\"headersFiltersIds\">\r\n </tr>\r\n <ng-container *ngIf=\"expandRows\">\r\n <tr style=\"height: 0px;\" mat-row *matRowDef=\"let row; columns: ['expandedDetail']\"\r\n [ngClass]=\"{'example-detail-row': (expandRows && row === expandedElement),'expand-row':row !== expandedElement}\">\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"showFooterRow\">\r\n <tr mat-footer-row *matFooterRowDef=\"getDisplayedColumns(); sticky: stickyFooter\"></tr>\r\n </ng-container>\r\n </table>\r\n </section>\r\n <mat-paginator *ngIf=\"showPaginator\" [pageSizeOptions]=\"pageSizeOptions\"\r\n [showFirstLastButtons]=\"showFirstLastButtons\">\r\n </mat-paginator>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { MatTableModule } from '@angular/material/table'\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTableExtComponent } from '../lib/mat-table-ext.component';\r\nimport { ResizeColumnDirective } from '../lib/directives/resize-column.directive';\r\nimport { ColumnPinningComponent } from '../lib/components/column-pinning/column-pinning.component';\r\nimport { EditingComponent } from '../lib/components/editing/editing.component';\r\nimport { FilterColumnsComponentComponent } from '../lib/components/filter-columns-component/filter-columns-component.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { CdkStepperModule } from '@angular/cdk/stepper';\r\nimport { CdkTableModule } from '@angular/cdk/table';\r\nimport { CdkTreeModule } from '@angular/cdk/tree';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n MatTableExtComponent,\r\n ResizeColumnDirective,\r\n ColumnPinningComponent,\r\n EditingComponent,\r\n FilterColumnsComponentComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule.forChild(),\r\n MatTableModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatNativeDateModule,\r\n A11yModule,\r\n CdkAccordionModule,\r\n ClipboardModule,\r\n CdkStepperModule,\r\n CdkTableModule,\r\n CdkTreeModule,\r\n DragDropModule,\r\n MatAutocompleteModule,\r\n MatBadgeModule,\r\n MatBottomSheetModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatStepperModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatProgressSpinnerModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatSnackBarModule,\r\n MatSortModule,\r\n MatTabsModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatTreeModule,\r\n PortalModule,\r\n ScrollingModule,\r\n MatFormFieldModule\r\n ],\r\n exports: [\r\n MatTableExtComponent,\r\n ResizeColumnDirective,\r\n ColumnPinningComponent,\r\n EditingComponent,\r\n FilterColumnsComponentComponent,\r\n ],\r\n})\r\nexport class MatTableExtModule { }","/*\r\n * Public API Surface of mat-table-ext\r\n */\r\n\r\nexport * from './lib/mat-table-ext.module';\r\nexport * from './lib/mat-table-ext.service';\r\nexport * from './lib/mat-table-ext.component';\r\nexport * from './lib/components/column-pinning/column-pinning.component';\r\nexport * from './lib/components/editing/editing.component';\r\nexport * from './lib/components/filter-columns-component/filter-columns-component.component';\r\nexport * from './lib/directives/resize-column.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.MatTableExtService","i4","i1","i8","i2","i3","i5","i6","i7","i9","i10","i11","i12","i13","i17","i20","i21.ResizeColumnDirective","i22.ColumnPinningComponent","i23.FilterColumnsComponentComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CAAmB,IAAgB,EAAA;AAAhB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAF5B,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;QAC7C,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;KACjB;;gHAH7B,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCIY,gBAAgB,CAAA;AAS3B,IAAA,WAAA,CACS,SAAyC,EAChB,UAAe,EACxC,OAA2B,EAAA;AAF3B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgC;AAChB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;AACxC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;AAV7B,QAAA,IAAI,CAAA,IAAA,GAAa,EAAE,CAAC;AACpB,QAAA,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;AAC5B,QAAA,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;AAChB,QAAA,IAAa,CAAA,aAAA,GAAQ,EAAE,CAAC;AACxB,QAAA,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;AAC3B,QAAA,IAAW,CAAA,WAAA,GAAQ,EAAE,CAAC;KAMxB;IAEL,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC/B;AACH;;;AAGG;AACD,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACpB,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,YAAA,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW,EAAE;gBAC9B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;gBAClC,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,gBAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;AAClB,oBAAA,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC;AACH,aAAA;AAAM,iBAAA;gBACL,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC5B;AACH;;;AAGG;AACD,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAC,GAAG,CAAE,CAAC;YACpC,IAAI,KAAK,GAAQ,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,gBAAA,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW,EAAE;oBAC9B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;oBAClC,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;AAC/B,wBAAA,KAAK,EAAE,IAAI;wBACX,OAAO,EAAE,MAAM,CAAC,OAAO;qBACxB,CAAC;AACH,iBAAA;AAAM,qBAAA;oBACL,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACtC,SAAA;KACF;AACH;;AAEG;IACD,WAAW,GAAA;QACT,IAAI,OAAO,qBAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;YAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;gBACnC,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAC9B,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC/B;AAED;;;;;AAKG;AACH,IAAA,mBAAmB,CAAC,GAAQ,EAAE,IAAc,EAAE,KAAe,EAAA;AAC3D,QAAA,IAAI,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,GAAG,CAAE,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACxB,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;gBAC9B,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAC9B,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC/B;;AAlGU,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,gDAWjB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAXd,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,mDCV7B,g6GAsDyO,EAAA,MAAA,EAAA,CAAA,gOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD5C5N,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,g6GAAA,EAAA,MAAA,EAAA,CAAA,gOAAA,CAAA,EAAA,CAAA;;;8BAepB,MAAM;+BAAC,eAAe,CAAA;;;;MEhBd,qBAAqB,CAAA;IAe9B,WAAoB,CAAA,QAAmB,EAAU,EAAc,EAAA;AAA3C,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAAU,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAd/D,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AAsDnC,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,KAAiB,KAAI;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC9C,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,KAAiB,KAAI;YAChC,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;gBAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;;AAE/C,gBAAA,IAAI,KAAK,GACL,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAC3D,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CACtE,CAAC,GAAQ,KAAK,GAAG,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CACnE,CAAC;;AAEF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;;AAE3D,gBAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC3B,oBAAA,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI;AACzB,wBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AACvD,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAiB,KAAI;YAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACrD,aAAA;AACL,SAAC,CAAC;QAtEE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;KACvC;IAfD,IAAa,gBAAgB,CAAC,GAAY,EAAA;AACtC,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;KAChC;AACD,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;IAYD,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,SAAA;AACI,aAAA;YACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC,SAAA;KACJ;IACD,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/D,SAAA;AACI,aAAA;YACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC,SAAA;KACJ;AAkCD;;AAEG;IACH,wBAAwB,GAAA;QACpB,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAA;QACrD,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC/C,SAAA;KACJ;;mHA/FQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAArB,qBAAqB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;iBACjC,CAAA;yHAGgB,gBAAgB,EAAA,CAAA;sBAA5B,KAAK;gBAMG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MCLG,sBAAsB,CAAA;AASjC,IAAA,WAAA,GAAA;AAPU,QAAA,IAAA,CAAA,cAAc,GAA+B,IAAI,YAAY,EAAE,CAAC;QACnE,IAAA,CAAA,KAAK,GAAG;AACb,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,IAAI,EAAE,SAAS;SAChB,CAAC;KAEc;AAChB,IAAA,QAAQ,MAAW;AACnB;;;AAGG;AACH,IAAA,WAAW,CAAC,MAAkB,EAAA;QAC5B,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzC,aAAA;AAAM,iBAAA,IAAI,MAAM,CAAC,MAAM,IAAI,OAAO,EAAE;AACnC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxC,SAAA;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACxC;AACD;;;;AAIG;IACH,iBAAiB,CAAC,MAAkB,EAAE,KAAmC,EAAA;QACvE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,YAAA,IAAI,CAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,MAAM,KAAI,GAAG,CAAC,MAAM,EAAE;AAChC,gBAAA,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;oHAtCU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,yICRnC,ufAMM,EAAA,MAAA,EAAA,CAAA,4JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDEO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,ufAAA,EAAA,MAAA,EAAA,CAAA,4JAAA,CAAA,EAAA,CAAA;0EAKrB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;MEFI,+BAA+B,CAAA;AAQ1C,IAAA,WAAA,GAAA;AANU,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAO,CAAC;AACpE,QAAA,IAAA,CAAA,UAAU,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,QAAQ,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,WAAW,EAAE,CAAC;KAC/B;IAChB,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAClD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;AACD;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;aAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACrB,SAAA;KACF;AACH;;;AAGG;AACD,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7B;;6HA5CU,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,uICR5C,24CAyBmB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDjBN,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,24CAAA,EAAA,CAAA;0EAK/B,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEsDI,oBAAoB,CAAA;IAiH/B,WACS,CAAA,MAAiB,EACjB,OAA2B,EAC3B,mBAAgC,EAChC,YAA0B,EAC1B,eAAgC,EAC/B,GAAsB,EAAA;AALvB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AACjB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;AAC3B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAa;AAChC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAC/B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AA/GvB,QAAA,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;AAC3B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAC1B,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAClC,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AACnC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAClC,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AACzB,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AACzB,QAAA,IAAa,CAAA,aAAA,GAAW,MAAM,CAAC;AAC/B,QAAA,IAAU,CAAA,UAAA,GAAW,MAAM,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAE5B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAChC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;AAC9B,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;AACtC,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QACpC,IAAe,CAAA,eAAA,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAQ1C,QAAA,IAAkB,CAAA,kBAAA,GAAuB,EAAE,CAAC;;AAG3C,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAa,CAAC;AAChE,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAa,CAAC;AAC9D,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAa,CAAC;AAC/D,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAO,CAAC;AACxD,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAO,CAAC;AACpD,QAAA,IAAA,CAAA,gBAAgB,GACxB,IAAI,YAAY,EAAO,CAAC;AAChB,QAAA,IAAA,CAAA,eAAe,GACvB,IAAI,YAAY,EAAO,CAAC;QAC1B,IAAA,CAAA,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC/B,QAAA,IAAoB,CAAA,oBAAA,GAA0B,EAAE,CAAC;AACjD,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAChC,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AACnC,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAClC,QAAA,IAAuB,CAAA,uBAAA,GAAQ,KAAK,CAAC;AACrC,QAAA,IAAW,CAAA,WAAA,GAAQ,EAAE,CAAC;AACtB,QAAA,IAA4B,CAAA,4BAAA,GAAQ,EAAE,CAAC;AACvC,QAAA,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;AAChC,QAAA,IAAoB,CAAA,oBAAA,GAAiB,EAAE,CAAC;AACxC,QAAA,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;AAC3B,QAAA,IAAY,CAAA,YAAA,GAAiB,EAAE,CAAC;AAChC,QAAA,IAAiB,CAAA,iBAAA,GAAa,EAAE,CAAC;AACjC,QAAA,IAA0B,CAAA,0BAAA,GAAa,EAAE,CAAC;QAC1C,IAAS,CAAA,SAAA,GAAG,IAAI,cAAc,CAAM,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAU,CAAA,UAAA,GAAG,IAAI,cAAc,CAAM,IAAI,EAAE,EAAE,CAAC,CAAC;AAC/C,QAAA,IAAS,CAAA,SAAA,GAAQ,EAAE,CAAC;AACpB,QAAA,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;AACvB,QAAA,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAClB,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AACpB,QAAA,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AACtB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AACtB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEjB,QAAA,IAAe,CAAA,eAAA,GAAW,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAW,CAAA,WAAA,GAAQ,EAAE,CAAC;AAGtB,QAAA,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;AAClB,QAAA,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;QAClB,IAAA,CAAA,uBAAuB,GAAU;YAC/B,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;YAC9C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;YAC5C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;YAC7C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;YAC9C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;SAC/C,CAAC;QACF,IAAA,CAAA,iBAAiB,GAAa;YAC5B,YAAY;YACZ,SAAS;YACT,kBAAkB;YAClB,iBAAiB;YACjB,cAAc;YACd,cAAc;YACd,mBAAmB;YACnB,cAAc;YACd,cAAc;YACd,cAAc;YACd,cAAc;YACd,YAAY;YACZ,SAAS;SACV,CAAC;AAgEF;;AAEG;QACH,IAAA,CAAA,gBAAgB,GAAQ;YACtB,UAAU,EAAE,CAAC,KAAU,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC1D,YAAA,OAAO,EAAE,CAAC,KAAU,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;AAChE,YAAA,gBAAgB,EAAE,CAAC,KAAU,KAC3B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC;AACjD,YAAA,eAAe,EAAE,CAAC,KAAU,KAC1B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC;AAClD,YAAA,YAAY,EAAE,CAAC,KAAU,KACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;AACnD,YAAA,YAAY,EAAE,CAAC,KAAU,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC;AACtE,YAAA,iBAAiB,EAAE,CAAC,KAAU,KAAI;AAChC,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAM,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;aAClE;AACD,YAAA,YAAY,EAAE,CAAC,KAAU,KAAI;AAC3B,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;aACxC;AACD,YAAA,YAAY,EAAE,CAAC,KAAU,KAAI;AAC3B,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;aACxC;AACD,YAAA,YAAY,EAAE,CAAC,KAAU,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC;AACtE,YAAA,YAAY,EAAE,CAAC,KAAU,MACtB,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACzD,YAAA,UAAU,EAAE,CAAC,KAAU,KAAI;AACzB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,gBAAA,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE;oBAC9B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC7C,wBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACrC,IAAI,CAAC,0BAA0B,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC9D,qBAAA;AACF,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,0BAA0B,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAC7D,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;wBAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;wBACpD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC,qBAAA;AACD,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC7B,iBAAA;gBACD,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;iBAC/B,EAAE,GAAG,CAAC,CAAC;aACT;AACD,YAAA,OAAO,EAAE,CAAC,KAAU,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAC5D,CAAC;AA6QF;;;AAGG;AACH,QAAA,IAAA,CAAA,wBAAwB,GAAG,CAAC,GAAY,KAAI;YAC1C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,SAAC,CAAC;QAvXA,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACvC,SAAA;KACF;AACD;;;AAGG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAChC;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvD,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAClC,SAAA;KACF;AACD;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,IACE,IAAI,CAAC,iBAAiB,KAAK,SAAS;AACpC,YAAA,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAC/B;YACA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAA;KACF;AACD;;;AAGG;AACH,IAAA,gBAAgB,CAAC,OAAsB,EAAA;QACrC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YACxB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC7C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,aAAA;iBAAM,IAAI,QAAQ,IAAI,aAAa,EAAE;AACpC,gBAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;oBACtB,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAC9D,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAgDD;;;AAGG;AACH,IAAA,kBAAkB,CAAC,KAAU,EAAA;QAC3B,IAAI,KAAK,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AACzC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,SAAA;KACF;AACD;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAc,EAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAM,IAAI,EAAE,EAAE,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,KAAK,GAAa,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;gBACtC,IACE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAI,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,KAAK,CAAA,CAAC,CAAC,CAAC,CAAC;AACnE,qBAAA,IAAI,EACP;AACA,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,IAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACrC,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;AAC7B,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AACD;;;AAGG;IACH,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,uBAAuB;aACpC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC;aACvB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;AACD;;;AAGG;IACH,QAAQ,CAAC,QAAgB,EAAE,KAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3B,QAAA,QAAQ,QAAQ;YACd,KAAK,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM;AACP,aAAA;YACD,KAAK,UAAU,EAAE;AACf,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACzC,MAAM;AACP,aAAA;YACD,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACzC,MAAM;AACP,aAAA;AACF,SAAA;KACF;AACD;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;AACD;;;AAGG;AACH,IAAA,cAAc,CAAC,OAAqB,EAAA;QAClC,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC9B,SAAA;KACF;AACD;;;AAGG;AACH,IAAA,cAAc,CAAC,OAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9D,IAAI,YAAY,GAAoB,EAAE,CAAC;AACvC,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACtB,YAAA,IAAI,QAAO,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,MAAM,CAAA,IAAI,QAAQ,EAAE;AAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,MAAM,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,KAAK,CAAC,CAAC;gBACvC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACxE,aAAA;AACH,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,uBAAuB,GAAG;YAC7B,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;YAC9C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;YAC5C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;YAC7C,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;SAC/C,CAAC;QACF,IAAI,CAAC,uBAAuB,GAAG,YAAY,CAAC,MAAM,CAChD,IAAI,CAAC,uBAAuB,CAC7B,CAAC;KACH;AACD;;;;AAIG;IACH,cAAc,CAAC,IAAY,EAAE,KAAc,EAAA;QACzC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3E,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;KACF;AACD;;;AAGG;AACH,IAAA,+BAA+B,CAAC,KAAc,EAAA;QAC5C,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAC9C,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,UAAU,CAC5B,CAAC,CAAC,CAAC,CAAC;AACL,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAChD,CAAC,MAAW,KAAK,MAAM,CAAC,IAAI,IAAI,UAAU,CAC3C,CAAC;AACF,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,uBAAuB,CAAC,MAAM,CACjC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,UAAU,CACtC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;AACnB,SAAA;KACF;AACD;;;AAGG;AACH,IAAA,MAAM,CAAC,KAAuB,EAAA;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,IACE,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ;gBAChD,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,EAC7C;gBACA,aAAa,GAAG,CAAC,CAAC;AACnB,aAAA;AACD,YAAA,eAAe,CACb,IAAI,CAAC,uBAAuB,EAC5B,KAAK,CAAC,aAAa,GAAG,aAAa,EACnC,KAAK,CAAC,YAAY,GAAG,aAAa,CACnC,CAAC;AACH,SAAA;KACF;AACD;;;;AAIG;IACH,YAAY,GAAA;AACV,QAAA,MAAM,oBAAoB,GAAG,CAAC,IAAS,EAAE,MAAc,KAAa;YAClE,IAAI,MAAM,GAAY,IAAI,CAAC;;YAE3B,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,UAAU,GAAG,EAAE,CAAC;gBACpB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,gBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;oBACnB,UAAU;wBACR,UAAU;4BACV,CAAQ,KAAA,EAAA,GAAG,qFAAqF,CAAC;AACrG,iBAAC,CAAC,CAAC;gBACH,IACE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;oBACtC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,oBAAA,IAAI,EACJ;AACA,oBAAA,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7D,iBAAA;AACD,gBAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3B,aAAA;YACD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;YACD,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;YAEtC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,QACE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACxB,qBAAA,QAAQ,EAAE;AACV,qBAAA,IAAI,EAAE;AACN,qBAAA,WAAW,EAAE;AACb,qBAAA,OAAO,CACN,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAC7D,KAAK,CAAC,CAAC,EACV;AACH,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC;AACF,QAAA,OAAO,oBAAoB,CAAC;KAC7B;AACD;;;AAGG;AACH,IAAA,iBAAiB,CAAC,WAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,OAAO,GAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAkB,KAAI;YAC/C,IAAI,MAAM,CAAC,KAAK;AAAE,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;AACxD,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KAClD;AACD;;;;AAIG;IACH,iBAAiB,CAAC,WAA8B,EAAE,MAAkB,EAAA;AAClE,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC5D;AACD;;;;AAIG;IACH,mBAAmB,CAAC,GAAQ,EAAE,KAAa,EAAA;QACzC,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,CAAE,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;SACxE,EAAE,CAAC,CAAC,CAAC;KACP;AACD;;;;;AAKG;AACH,IAAA,oBAAoB,CAAC,GAAY,EAAE,KAAa,EAAE,MAAkB,EAAA;QAClE,IAAI,CAAC,4BAA4B,GAAG;YAClC,GAAG,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,GAAG,CAAE;YACf,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,MAAM,CAAE;AACrB,YAAA,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,IAAI,CAAC,wBAAwB;SAC1C,CAAC;QACF,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC1C;AAQD;;;;AAIG;IACH,WAAW,CAAC,GAAY,EAAE,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,GAAG,CAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,GAAG,CAAE,CAAC;KAC5C;AACD;;;;AAIG;IACH,mBAAmB,CAAC,GAAY,EAAE,KAAa,EAAA;QAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAS,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACrE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAS,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC1C;AACD;;;;AAIG;IACH,iBAAiB,CAAC,GAAY,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC,CAAE,CAAC;YAC7D,GAAG,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC,CAAE,CAAC;AAC5C,SAAA;AAAM,aAAA;YACL,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,YAAA,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,WAAW,CAAE,CAAC;AAC5C,aAAA;AACF,SAAA;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AACnC,QAAA,IAAI,IAAI,GAAc;AACpB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;KAC3C;AACD;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AACjC,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;AACjD,gBAAA,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,WAAW,CAAE,CAAC;AAC5C,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAQ,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC,CAAE,CAAC;AAC9D,aAAA;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AACnC,YAAA,IAAI,IAAI,GAAc;AACpB,gBAAA,GAAG,oBAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAE;AACjC,gBAAA,KAAK,EAAE,KAAK;aACb,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;KACF;AACD;;;;AAIG;IACH,SAAS,CAAC,GAAQ,EAAE,KAAa,EAAA;QAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KAC7D;AAED;;;;;AAKG;AACH,IAAA,SAAS,CAAC,GAAY,EAAE,MAAe,EAAE,KAAa,EAAA;QACpD,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAClE,SAAA;KACF;AACD;;;AAGG;AACH,IAAA,iBAAiB,CAAC,GAAY,EAAA;AAC5B,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;AAC3C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAA,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAA,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAA,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC;AAC/B,QAAA,IAAI,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,GAAG,CAAE,CAAC;QACzB,YAAY,CAAC,IAAI,GAAG;AAClB,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/B,WAAW,EAAE,IAAI,CAAC,uBAAuB;SAC1C,CAAC;AACF,QAAA,IAAI,CAAC,MAAM;AACR,aAAA,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC;AACpC,aAAA,WAAW,EAAE;AACb,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;YAClB,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxC,YAAA,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACtB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,gBAAA,IAAI,UAAU,GAAc;AAC1B,oBAAA,GAAG,EAAE,IAAI;AACT,oBAAA,KAAK,EAAE,KAAK;iBACb,CAAC;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AACD;;AAEG;IACH,aAAa,GAAA;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5C,OAAO,WAAW,KAAK,OAAO,CAAC;KAChC;AAED;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAChD;AAED;;;;AAIG;AACH,IAAA,aAAa,CAAC,GAAS,EAAA;QACrB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,aAAa,EAAE,GAAG,UAAU,GAAG,QAAQ,MAAM,CAAC;AAC9D,SAAA;QACD,OAAO,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,CAC9D,KAAA,EAAA,GAAG,CAAC,QAAQ,GAAG,CACjB,CAAA,CAAE,CAAC;KACJ;AAED;;;AAGG;AACH,IAAA,sBAAsB,CAAC,OAAqB,EAAA;QAC1C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAkB,KAAI;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvD,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1C,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAChC,SAAA;KACF;AAED;;;AAGG;IACH,wBAAwB,CAAC,MAAkB,EAAE,KAAiB,EAAA;AAC5D,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,OAAO,GAA0B;AACnC,YAAA;AACE,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,aAAA;AACD,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;SACvE,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE;AAC3C,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAwB,KAAI;AAC3C,gBAAA,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE;AAC/B,oBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;aAAM,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;AAC3D,YAAA,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC5B,SAAA;AACD,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KACnC;AACD;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;KAChC;AACD;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,IAAI,KAAK,KAAK,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAClD,CAAC,GAAe,KAAI;AAClB,gBAAA,OAAO,GAAG,CAAC,MAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,aAAC,CACF,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/C,SAAA;KACF;AACD;;;AAGG;AACH,IAAA,gBAAgB,CAAC,OAAqB,EAAA;AACpC,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KACnC;AACD;;AAEG;AACH,IAAA,qBAAqB,CAAC,MAAwB,EAAA;QAC5C,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;YAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AACD;;;AAGG;IACH,eAAe,CAAC,GAAQ,EAAE,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1E,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3E,SAAA;KACF;AACH;;AAEG;IACD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;AACH;;AAEG;IACD,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACtC,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtB,SAAA;KACF;AACH;;AAEG;IACD,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAC5C,SAAA;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAClC,SAAA;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACvD,SAAA;KACF;AACH;;AAEG;IACD,kBAAkB,GAAA;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,8BAA8B,CACtD,CAAqB,mBAAA,CAAA,CACtB,CAAC;AACF,QAAA,IAAI,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACxE,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAC7B,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAC9C,CAAA,OAAA,EAAU,IAAI,CAAM,IAAA,CAAA,CACrB,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AACH;;;AAGG;AACD,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,EAAE,GAAmB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC5D,QAAA,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAe,YAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;KAC3C;AACD;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACpC;AACH;;;;AAIG;AACD,IAAA,cAAc,CAAC,EAAkB,EAAA;AAC/B,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAClD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACjC,QAAA,IAAI,IAAI,GAAmB;AACzB,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,SAAS,EAAE,OAAO;SACnB,CAAC;AACF,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,YAAY,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;;YACtB,IAAI,CAAA,MAAA,EAAE,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,CAAC,KAAI,QAAO,CAAA,EAAA,GAAA,EAAE,CAAC,GAAG,CAAC,0CAAE,CAAC,CAAA,KAAK,QAAQ,EAAE;AAChD,gBAAA,IACE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/C,oBAAA,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAClD;AACA,oBAAA,IAAI,YAAY,GAAG,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;oBACpB,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE;wBACtC,IACE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS;AAC/B,6BAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;AACtC,gCAAA,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAC1C;AACA,4BAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpC,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,GAAG,GAAG,GAAG,CAAC;AACd,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,gBAAA,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,oBAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACxC,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACvB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,aAAC,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;AACD,IAAA,aAAa,CAAC,MAAa,EAAA;QACzB,IAAI,GAAG,GAAU,EAAE,CAAC;AACpB,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;YAC9B,GAAG,CAAC,IAAI,CAAC;AACP,gBAAA,CAAC,EAAE;oBACD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,oBAAA,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACf,iBAAA;AACD,gBAAA,CAAC,EAAE;oBACD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,oBAAA,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACf,iBAAA;AACF,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,GAAG,CAAC;KACZ;;kHAv5BU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAApB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,cAAc,EAEd,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAY,uEACZ,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpEpB,w3oBA4RM,EDvOQ,MAAA,EAAA,CAAA,irEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,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,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,OAAO,CAAC,cAAc,EAAE;AACtB,YAAA,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACzC,YAAA,UAAU,CACR,wBAAwB,EACxB,OAAO,CAAC,sCAAsC,CAAC,CAChD;SACF,CAAC;KACH,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGV,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA;wBACV,OAAO,CAAC,cAAc,EAAE;AACtB,4BAAA,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC5D,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACzC,4BAAA,UAAU,CACR,wBAAwB,EACxB,OAAO,CAAC,sCAAsC,CAAC,CAChD;yBACF,CAAC;qBACH,EAAA,QAAA,EAAA,w3oBAAA,EAAA,MAAA,EAAA,CAAA,irEAAA,CAAA,EAAA,CAAA;yPAG0B,WAAW,EAAA,CAAA;sBAArC,SAAS;uBAAC,cAAc,CAAA;gBACO,iBAAiB,EAAA,CAAA;sBAAhD,SAAS;uBAAC,mBAAmB,CAAA;gBACL,SAAS,EAAA,CAAA;sBAAjC,SAAS;uBAAC,YAAY,CAAA;gBACH,IAAI,EAAA,CAAA;sBAAvB,SAAS;uBAAC,OAAO,CAAA;gBAGT,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBACG,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBACG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAGI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAEG,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MEKI,iBAAiB,CAAA;;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAlE1B,oBAAoB;QACpB,qBAAqB;QACrB,sBAAsB;QACtB,gBAAgB;QAChB,+BAA+B,CAAA,EAAA,OAAA,EAAA,CAG/B,YAAY,EAAAhB,IAAA,CAAA,eAAA,EAEZ,cAAc;QACd,WAAW;QACX,mBAAmB;QACnB,mBAAmB;QACnB,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,gBAAgB;QAChB,cAAc;QACd,aAAa;QACb,cAAc;QACd,qBAAqB;QACrB,cAAc;QACd,oBAAoB;QACpB,eAAe;QACf,qBAAqB;QACrB,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB;QACjB,aAAa;QACb,cAAc;QACd,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,kBAAkB;QAClB,oBAAoB;QACpB,wBAAwB;QACxB,cAAc;QACd,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,oBAAoB;QACpB,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,YAAY;QACZ,eAAe;AACf,QAAA,kBAAkB,aAGlB,oBAAoB;QACpB,qBAAqB;QACrB,sBAAsB;QACtB,gBAAgB;QAChB,+BAA+B,CAAA,EAAA,CAAA,CAAA;AAGtB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YA3D1B,YAAY;QACZ,eAAe,CAAC,QAAQ,EAAE;QAC1B,cAAc;QACd,WAAW;QACX,mBAAmB;QACnB,mBAAmB;QACnB,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,gBAAgB;QAChB,cAAc;QACd,aAAa;QACb,cAAc;QACd,qBAAqB;QACrB,cAAc;QACd,oBAAoB;QACpB,eAAe;QACf,qBAAqB;QACrB,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB;QACjB,aAAa;QACb,cAAc;QACd,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,kBAAkB;QAClB,oBAAoB;QACpB,wBAAwB;QACxB,cAAc;QACd,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,oBAAoB;QACpB,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,YAAY;QACZ,eAAe;QACf,kBAAkB,CAAA,EAAA,CAAA,CAAA;4FAUT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApE7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,qBAAqB;wBACrB,sBAAsB;wBACtB,gBAAgB;wBAChB,+BAA+B;AAChC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe,CAAC,QAAQ,EAAE;wBAC1B,cAAc;wBACd,WAAW;wBACX,mBAAmB;wBACnB,mBAAmB;wBACnB,UAAU;wBACV,kBAAkB;wBAClB,eAAe;wBACf,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,qBAAqB;wBACrB,cAAc;wBACd,oBAAoB;wBACpB,eAAe;wBACf,qBAAqB;wBACrB,aAAa;wBACb,iBAAiB;wBACjB,cAAc;wBACd,gBAAgB;wBAChB,mBAAmB;wBACnB,eAAe;wBACf,gBAAgB;wBAChB,kBAAkB;wBAClB,iBAAiB;wBACjB,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,aAAa;wBACb,mBAAmB;wBACnB,kBAAkB;wBAClB,oBAAoB;wBACpB,wBAAwB;wBACxB,cAAc;wBACd,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,eAAe;wBACf,oBAAoB;wBACpB,iBAAiB;wBACjB,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;wBACb,YAAY;wBACZ,eAAe;wBACf,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,qBAAqB;wBACrB,sBAAsB;wBACtB,gBAAgB;wBAChB,+BAA+B;AAChC,qBAAA;iBACF,CAAA;;;AC7HD;;AAEG;;ACFH;;AAEG;;;;"}