@elite.framework/ng.ui.core 1.0.93 → 1.0.94
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.
|
@@ -553,6 +553,12 @@ class GenericCrudTableComponent {
|
|
|
553
553
|
/** أرسل إلى الأب لأتمتة شكل البحث إذا يحتاج */
|
|
554
554
|
// from generic-crud-table.component.ts
|
|
555
555
|
/** بدّل applySearch لتبث pageChange مباشرةً */
|
|
556
|
+
resetPage(filters) {
|
|
557
|
+
// this.genericTable.applyFilter(global);
|
|
558
|
+
this.first = 0;
|
|
559
|
+
this.rows = 10;
|
|
560
|
+
}
|
|
561
|
+
/** بدّل applySearch لتبث pageChange مباشرةً */
|
|
556
562
|
applySearch(filters) {
|
|
557
563
|
// this.genericTable.applyFilter(global);
|
|
558
564
|
this.onSearch.emit(filters);
|
|
@@ -589,7 +595,7 @@ class GenericCrudTableComponent {
|
|
|
589
595
|
});
|
|
590
596
|
}
|
|
591
597
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
592
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudTableComponent, isStandalone: true, selector: "app-generic-crud-table", inputs: { data: "data", formFields: "formFields", columns: "columns", dialogMaxWidth: "dialogMaxWidth", isViewMode: "isViewMode", displayMode: "displayMode", useConfirmOnSave: "useConfirmOnSave", isEditMode: "isEditMode", drawerVisible: "drawerVisible", dialogVisible: "dialogVisible", model: "model", loading: "loading", errorMsg: "errorMsg", errorMessage: "errorMessage", actions: "actions", actionsMode: "actionsMode", beforeSaveTransform: "beforeSaveTransform", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords", rowSelectable: "rowSelectable", scrollHeight: "scrollHeight", paginator: "paginator", service: "service", apiName: "apiName", idField: "idField", showRowSelectionCheckbox: "showRowSelectionCheckbox", showAddButton: "showAddButton", addPermissionName: "addPermissionName", addButtonConfigs: "addButtonConfigs", createEditActions: "createEditActions", supportSubPage: "supportSubPage", tabs: "tabs", bulkActionButtons: "bulkActionButtons", singleActionButtons: "singleActionButtons", breadcrumb: "breadcrumb", mode: "mode", forceState: "forceState", hideTable: "hideTable", autoShowForm: "autoShowForm", rowStyleFn: "rowStyleFn", rowClassFn: "rowClassFn", disableRowCheckboxFn: "disableRowCheckboxFn" }, outputs: { action: "action", bulkAction: "bulkAction", singleAction: "singleAction", afterSave: "afterSave", afterDelete: "afterDelete", beforeSave: "beforeSave", beforeDelete: "beforeDelete", formCancel: "formCancel", formInit: "formInit", dataLoaded: "dataLoaded", selectionChange: "selectionChange", error: "error", search: "search", pageChange: "pageChange", onSearch: "onSearch", visibleChange: "visibleChange", rowSelect: "rowSelect" }, viewQueries: [{ propertyName: "genericTable", first: true, predicate: ["genericTable"], descendants: true }, { propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0, template: "<div\r\n [class]=\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [apiName]=\"service.apiName\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"applySearch($event)
|
|
598
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericCrudTableComponent, isStandalone: true, selector: "app-generic-crud-table", inputs: { data: "data", formFields: "formFields", columns: "columns", dialogMaxWidth: "dialogMaxWidth", isViewMode: "isViewMode", displayMode: "displayMode", useConfirmOnSave: "useConfirmOnSave", isEditMode: "isEditMode", drawerVisible: "drawerVisible", dialogVisible: "dialogVisible", model: "model", loading: "loading", errorMsg: "errorMsg", errorMessage: "errorMessage", actions: "actions", actionsMode: "actionsMode", beforeSaveTransform: "beforeSaveTransform", filters: "filters", filterModel: "filterModel", showSearch: "showSearch", first: "first", rows: "rows", totalRecords: "totalRecords", rowSelectable: "rowSelectable", scrollHeight: "scrollHeight", paginator: "paginator", service: "service", apiName: "apiName", idField: "idField", showRowSelectionCheckbox: "showRowSelectionCheckbox", showAddButton: "showAddButton", addPermissionName: "addPermissionName", addButtonConfigs: "addButtonConfigs", createEditActions: "createEditActions", supportSubPage: "supportSubPage", tabs: "tabs", bulkActionButtons: "bulkActionButtons", singleActionButtons: "singleActionButtons", breadcrumb: "breadcrumb", mode: "mode", forceState: "forceState", hideTable: "hideTable", autoShowForm: "autoShowForm", rowStyleFn: "rowStyleFn", rowClassFn: "rowClassFn", disableRowCheckboxFn: "disableRowCheckboxFn" }, outputs: { action: "action", bulkAction: "bulkAction", singleAction: "singleAction", afterSave: "afterSave", afterDelete: "afterDelete", beforeSave: "beforeSave", beforeDelete: "beforeDelete", formCancel: "formCancel", formInit: "formInit", dataLoaded: "dataLoaded", selectionChange: "selectionChange", error: "error", search: "search", pageChange: "pageChange", onSearch: "onSearch", visibleChange: "visibleChange", rowSelect: "rowSelect" }, viewQueries: [{ propertyName: "genericTable", first: true, predicate: ["genericTable"], descendants: true }, { propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0, template: "<div\r\n [class]=\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [apiName]=\"service.apiName\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"resetPage($event);applySearch($event);\"\r\n (resetSearch)=\"resetPage($event);applySearch('');\"\r\n (paginateChange)=\"onHeaderPaginateChange($event)\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n/>\r\n\r\n @if (!hideTable) {\r\n <lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (onAddNew)=\"action.emit({ name: 'add', row: null! })\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n ></lib-generic-table>\r\n\r\n }\r\n\r\n <app-generic-dialog\r\n #dialog\r\n [service]=\"service\"\r\n [apiName]=\"service.apiName\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [dialogMaxWidth]=\"dialogMaxWidth\"\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [forceState]=\"forceState\"\r\n [drawerVisible]=\"drawerVisible\"\r\n [dialogVisible]=\"dialogVisible\"\r\n [isViewMode]=\"isViewMode\"\r\n [isEditMode]=\"isEditMode\"\r\n [useConfirmOnSave]=\"useConfirmOnSave\"\r\n [loading]=\"loading\"\r\n [errorMsg]=\"errorMsg\"\r\n [errorMessage]=\"errorMessage\"\r\n [beforeSaveTransform]=\"beforeSaveTransform\"\r\n (action)=\"action.emit($event)\"\r\n (afterSave)=\"afterSave.emit($event);onSubmit();\"\r\n (afterDelete)=\"afterDelete.emit($event)\"\r\n (beforeSave)=\"beforeSave.emit($event)\"\r\n (beforeDelete)=\"beforeDelete.emit($event)\"\r\n (formCancel)=\"formCancel.emit()\"\r\n (formInit)=\"formInit.emit($event)\"\r\n (dataLoaded)=\"dataLoaded.emit($event)\"\r\n (selectionChange)=\"selectionChange.emit($event)\"\r\n (error)=\"error.emit($event)\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n <app-detail-view\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [title]=\"breadcrumb_?.[0]?.label || 'Detail'\"\r\n [service]=\"service\"\r\n [apiName]=\"service.apiName\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [actions]=\"actions\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [tabs]=\"tabs\"\r\n [loading]=\"loading\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [createEditActions]=\"createEditActions\"\r\n (action)=\"action.emit($event)\"\r\n >\r\n </app-detail-view>\r\n\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: GenericTable, selector: "lib-generic-table", inputs: ["data", "columns", "loading", "actions", "actionsPosition", "actionsMode", "first", "rows", "totalRecords", "sortField", "sortOrder", "globalFilterFields", "addButtonConfigs", "scrollHeight", "rowSelectable", "rowStyleFn", "rowClassFn", "disableRowCheckboxFn", "selection", "paginator", "showRowSelectionCheckbox"], outputs: ["action", "pageChange", "onAddNew", "rowSelect", "selectionChange"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: DividerModule }, { kind: "ngmodule", type: IconFieldModule }, { kind: "ngmodule", type: DrawerModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MessageModule }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["form", "service", "formFields", "model", "apiName", "idField", "dialogMaxWidth", "displayMode", "mode", "forceState", "drawerVisible", "dialogVisible", "isViewMode", "isEditMode", "useConfirmOnSave", "loading", "errorMsg", "errorMessage", "beforeSaveTransform", "hideTable", "autoShowForm"], outputs: ["action", "afterSave", "afterDelete", "beforeSave", "beforeDelete", "formCancel", "formInit", "dataLoaded", "selectionChange", "error", "visibleChange"] }, { kind: "component", type: GenericCrudHeaderComponent, selector: "app-generic-crud-header", inputs: ["mode", "breadcrumb", "isSingleItemSelected", "selectedItems", "singleActionButtons", "bulkActionButtons", "addButtonConfigs", "filters", "filterModel", "showSearch", "first", "rows", "totalRecords", "apiName", "actions"], outputs: ["singleItemAction", "bulkAction", "search", "resetSearch", "action", "paginateChange"] }, { kind: "component", type: GenericViewComponent, selector: "app-detail-view", inputs: ["title", "actions", "createEditActions", "tabs", "viewMode", "breadcrumb", "service", "formFields", "apiName", "idField", "standaloneMode", "isViewMode", "isCreateMode", "isEditMode", "model", "displayMode", "mode", "loading"], outputs: ["action", "afterDelete"] }] });
|
|
593
599
|
}
|
|
594
600
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericCrudTableComponent, decorators: [{
|
|
595
601
|
type: Component,
|
|
@@ -612,7 +618,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
612
618
|
GenericViewComponent
|
|
613
619
|
], host: {
|
|
614
620
|
class: ''
|
|
615
|
-
}, template: "<div\r\n [class]=\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [apiName]=\"service.apiName\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"applySearch($event)
|
|
621
|
+
}, template: "<div\r\n [class]=\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\"\r\n>\r\n <app-generic-crud-header\r\n [mode]=\"mode\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [isSingleItemSelected]=\"isSingleItemSelected\"\r\n [selectedItems]=\"_selectedRows\"\r\n [singleActionButtons]=\"singleActionButtons\"\r\n [bulkActionButtons]=\"bulkActionButtons\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [apiName]=\"service.apiName\"\r\n [filters]=\"filters\"\r\n [filterModel]=\"filterModel\"\r\n [showSearch]=\"showSearch\"\r\n (singleItemAction)=\"onSingleItemAction($event)\"\r\n (bulkAction)=\"onInternalBulkAction($event)\"\r\n (action)=\"action.emit($event)\"\r\n (search)=\"resetPage($event);applySearch($event);\"\r\n (resetSearch)=\"resetPage($event);applySearch('');\"\r\n (paginateChange)=\"onHeaderPaginateChange($event)\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n/>\r\n\r\n @if (!hideTable) {\r\n <lib-generic-table\r\n [data]=\"data\"\r\n [columns]=\"columns\"\r\n [paginator]=\"paginator\"\r\n [loading]=\"loading\"\r\n [actions]=\"actions\"\r\n [actionsMode]=\"actionsMode\"\r\n [first]=\"first\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [addButtonConfigs]=\"addButtonConfigs\"\r\n [globalFilterFields]=\"globalFilterFields\"\r\n [scrollHeight]=\"scrollHeight\"\r\n [showRowSelectionCheckbox]=\"showRowSelectionCheckbox\"\r\n (action)=\"action.emit($event)\"\r\n (onAddNew)=\"action.emit({ name: 'add', row: null! })\"\r\n (pageChange)=\"onLazyLoad($event)\"\r\n [rowSelectable]=\"rowSelectable\"\r\n (rowSelect)=\"onRowClick($event)\"\r\n [(selection)]=\"_selectedRows\"\r\n #genericTable\r\n ></lib-generic-table>\r\n\r\n }\r\n\r\n <app-generic-dialog\r\n #dialog\r\n [service]=\"service\"\r\n [apiName]=\"service.apiName\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [dialogMaxWidth]=\"dialogMaxWidth\"\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [forceState]=\"forceState\"\r\n [drawerVisible]=\"drawerVisible\"\r\n [dialogVisible]=\"dialogVisible\"\r\n [isViewMode]=\"isViewMode\"\r\n [isEditMode]=\"isEditMode\"\r\n [useConfirmOnSave]=\"useConfirmOnSave\"\r\n [loading]=\"loading\"\r\n [errorMsg]=\"errorMsg\"\r\n [errorMessage]=\"errorMessage\"\r\n [beforeSaveTransform]=\"beforeSaveTransform\"\r\n (action)=\"action.emit($event)\"\r\n (afterSave)=\"afterSave.emit($event);onSubmit();\"\r\n (afterDelete)=\"afterDelete.emit($event)\"\r\n (beforeSave)=\"beforeSave.emit($event)\"\r\n (beforeDelete)=\"beforeDelete.emit($event)\"\r\n (formCancel)=\"formCancel.emit()\"\r\n (formInit)=\"formInit.emit($event)\"\r\n (dataLoaded)=\"dataLoaded.emit($event)\"\r\n (selectionChange)=\"selectionChange.emit($event)\"\r\n (error)=\"error.emit($event)\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n >\r\n </app-generic-dialog>\r\n\r\n <app-detail-view\r\n [displayMode]=\"displayMode\"\r\n [mode]=\"mode\"\r\n [title]=\"breadcrumb_?.[0]?.label || 'Detail'\"\r\n [service]=\"service\"\r\n [apiName]=\"service.apiName\"\r\n [apiName]=\"apiName\"\r\n [idField]=\"idField\"\r\n [actions]=\"actions\"\r\n [formFields]=\"formFields\"\r\n [model]=\"model\"\r\n [tabs]=\"tabs\"\r\n [loading]=\"loading\"\r\n [breadcrumb]=\"breadcrumb_\"\r\n [createEditActions]=\"createEditActions\"\r\n (action)=\"action.emit($event)\"\r\n >\r\n </app-detail-view>\r\n\r\n</div>\r\n" }]
|
|
616
622
|
}], propDecorators: { genericTable: [{
|
|
617
623
|
type: ViewChild,
|
|
618
624
|
args: ['genericTable']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.ui.core-generic-crud-table.mjs","sources":["../tmp-esm2022/generic-crud-table/lib/generic-crud-table-module.js","../tmp-esm2022/generic-crud-table/lib/generic-crud-header.js","../tmp-esm2022/generic-crud-table/lib/generic-crud-table.js","../tmp-esm2022/generic-crud-table/elite.framework-ng.ui.core-generic-crud-table.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GenericButtonModule } from '@elite.framework/ng.ui.core/generic-button';\nimport * as i0 from \"@angular/core\";\nexport class GenericCrudTableModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, imports: [CommonModule, GenericButtonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, imports: [CommonModule, GenericButtonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, GenericButtonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLXRhYmxlLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtdGFibGUtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUtqRixNQUFNLE9BQU8sc0JBQXNCO3VHQUF0QixzQkFBc0I7d0dBQXRCLHNCQUFzQixZQUZ2QixZQUFZLEVBQUMsbUJBQW1CO3dHQUUvQixzQkFBc0IsWUFGdkIsWUFBWSxFQUFDLG1CQUFtQjs7MkZBRS9CLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsbUJBQW1CLENBQUM7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHZW5lcmljQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtYnV0dG9uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxHZW5lcmljQnV0dG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0NydWRUYWJsZU1vZHVsZSB7fVxuIl19","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { GenericButton } from '@elite.framework/ng.ui.core/generic-button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { Menu } from 'primeng/menu';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { BreadcrumbComponent } from '@elite.framework/ng.ui.core/breadcrumb';\nimport { GenericSearchAdvanced } from '@elite.framework/ng.ui.core/generic-search-advanced';\nimport { GenericReportComponent } from '@elite.framework/ng.ui.core/generic-report';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/button\";\nimport * as i2 from \"primeng/divider\";\nimport * as i3 from \"primeng/tooltip\";\nimport * as i4 from \"@ngx-translate/core\";\nexport class GenericCrudHeaderComponent {\n translate = inject(TranslateService);\n dialogService = inject(DialogService);\n // 🟢 Inputs\n mode = 'full';\n breadcrumb;\n isSingleItemSelected = false;\n selectedItems = [];\n singleActionButtons = [];\n bulkActionButtons = [];\n addButtonConfigs = [];\n filters;\n filterModel = {};\n showSearch = true;\n first = 0; // Add input for current 'first' index\n rows = 10; // Add input for current 'rows' per page\n totalRecords = 0; // Add input for total records\n apiName = '';\n actions = [\n {\n label: this.translate.instant('REPORT'),\n icon: 'pi pi-file-export',\n command: (e) => {\n this.openReportDialog();\n }\n }\n ];\n // 🟢 Outputs\n singleItemAction = new EventEmitter();\n bulkAction = new EventEmitter();\n search = new EventEmitter();\n resetSearch = new EventEmitter();\n action = new EventEmitter();\n paginateChange = new EventEmitter(); // NEW OUTPUT\n // 🟢 Helpers\n trackByIdx = (index) => index;\n // 🟢 Actions\n onSingleItemAction(btn) {\n this.singleItemAction.emit(btn);\n }\n onInternalBulkAction(btn) {\n this.bulkAction.emit(btn);\n }\n paginationChange(value) {\n this.rows = value.top;\n }\n applySearch(value) {\n this.search.emit(value);\n }\n reset() {\n this.resetSearch.emit();\n }\n // Go to previous page\n // 🟢 Actions (Keep or adapt your existing pagination logic)\n totalPages() {\n if (this.totalRecords === 0 || this.rows === 0)\n return 0;\n return Math.ceil(this.totalRecords / this.rows);\n }\n pageInput = null;\n showPageMenu = false;\n // Get current page number (1-based)\n get currentPage() {\n return Math.floor(this.first / this.rows) + 1;\n }\n // Go to specific page from menu\n goToPageMenu() {\n if (this.pageInput && this.pageInput >= 1 && this.pageInput <= this.totalPages()) {\n const newFirst = (this.pageInput - 1) * this.rows;\n this.paginateChange.emit({ first: newFirst, rows: this.rows });\n this.pageInput = null;\n this.showPageMenu = false; // Close menu after navigation\n }\n }\n // Go to specific page (original method)\n goToPage() {\n this.goToPageMenu(); // Reuse the same logic\n }\n // Go to first page\n goFirst() {\n this.paginateChange.emit({ first: 0, rows: this.rows }); // EMIT EVENT\n }\n // Go to last page\n goLast() {\n const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);\n this.paginateChange.emit({ first: maxFirst, rows: this.rows }); // EMIT EVENT\n }\n // Go to previous page\n goPrev() {\n const newFirst = Math.max(this.first - this.rows, 0);\n this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT\n }\n // Go to next page\n goNext() {\n const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);\n const newFirst = Math.min(this.first + this.rows, maxFirst);\n this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT\n }\n // Check first/last page\n isFirstPage() {\n return this.first === 0;\n }\n isLastPage() {\n return this.first + this.rows >= this.totalRecords;\n }\n // Detect RTL direction\n get isRTL() {\n return document.documentElement.dir === 'rtl' ||\n document.body.dir === 'rtl' ||\n // this.translateService?.currentLang === 'ar' || // if using translation\n false; // default to LTR\n }\n /**\n * Handles button click in a unified way.\n * - If btn.action is defined, execute it.\n * - Otherwise, emit event with actionName or default 'add'.\n */\n async handleButtonClick(btn) {\n try {\n if (btn.action) {\n // Execute the provided action\n await btn.action(null); // You can pass row or context here\n }\n else {\n // Fallback to emitting event\n this.action.emit({\n name: btn.actionName ?? 'add',\n row: null, // provide row if available\n });\n }\n }\n catch (err) {\n console.error('Button action error', err);\n }\n }\n openReportDialog() {\n const ref = this.dialogService.open(GenericReportComponent, {\n header: this.translate.instant('REPORT'),\n showHeader: false,\n width: '90%',\n height: 'auto',\n modal: true,\n focusOnShow: false,\n data: {\n apiName: this.apiName,\n filterFields: this.filters,\n filterModel: { /* status: 'Active' */},\n defaultFileName: this.translate.instant('REPORT') + ' ' + this.translate.instant(this.breadcrumb?.length ? this.breadcrumb[this.breadcrumb.length - 1].label ?? '' : '')\n }\n });\n ref.onClose.subscribe((exportConfig) => {\n if (exportConfig) {\n console.log('Export configuration:', exportConfig);\n // Handle the export - call your API service here\n this.handleExport(exportConfig);\n }\n });\n }\n handleExport(config) {\n // Your export logic here\n // if (config.exportType === 'EXCEL') {\n // this.exportToExcel(config);\n // } else if (config.exportType === 'PDF') {\n // this.exportToPdf(config);\n // }\n // etc.\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericCrudHeaderComponent, isStandalone: true, selector: \"app-generic-crud-header\", inputs: { mode: \"mode\", breadcrumb: \"breadcrumb\", isSingleItemSelected: \"isSingleItemSelected\", selectedItems: \"selectedItems\", singleActionButtons: \"singleActionButtons\", bulkActionButtons: \"bulkActionButtons\", addButtonConfigs: \"addButtonConfigs\", filters: \"filters\", filterModel: \"filterModel\", showSearch: \"showSearch\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", apiName: \"apiName\", actions: \"actions\" }, outputs: { singleItemAction: \"singleItemAction\", bulkAction: \"bulkAction\", search: \"search\", resetSearch: \"resetSearch\", action: \"action\", paginateChange: \"paginateChange\" }, providers: [DialogService], ngImport: i0, template: \"@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"flex items-start gap-2 justify-between\\\">\\r\\n <div>\\r\\n <app-breadcrumb\\r\\n class=\\\"xs:block hidden\\\"\\r\\n [breadcrumb]=\\\"breadcrumb\\\"\\r\\n ></app-breadcrumb>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"flex items-center gap-2 justify-end flex-wrap\\\">\\r\\n @if (mode === 'full') {\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 \\u0627\\u0644\\u0645\\u0641\\u0631\\u062F\\u0629 -->\\r\\n @if (isSingleItemSelected) {\\r\\n @for (btn of singleActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onSingleItemAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0645\\u062A\\u0639\\u062F\\u062F\\u0629 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 -->\\r\\n @if (selectedItems.length > 0) {\\r\\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onInternalBulkAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0629 -->\\r\\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleButtonClick(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\\r\\n@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"mt-2 mb-4 flex items-center justify-between\\\">\\r\\n <!-- \\u0627\\u0644\\u0628\\u062D\\u062B -->\\r\\n @if (showSearch && filters) {\\r\\n <lib-generic-search-advanced\\r\\n [model]=\\\"filterModel\\\"\\r\\n [fields]=\\\"filters\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (paginationChange)=\\\"paginationChange($event)\\\"\\r\\n >\\r\\n</lib-generic-search-advanced>\\r\\n } @else {\\r\\n <div></div>\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u062F\\u0648\\u0627\\u062A \\u0625\\u0636\\u0627\\u0641\\u064A\\u0629 -->\\r\\n <div class=\\\"flex items-center gap-3 rtl:space-x-reverse\\\">\\r\\n <!-- Refresh Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-refresh\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (onClick)=\\\"reset()\\\"\\r\\n />\\r\\n\\r\\n <p-divider layout=\\\"vertical\\\" class=\\\"m-0 p-0 hidden xs:block\\\" />\\r\\n\\r\\n\\r\\n <p-button (click)=\\\"menu.toggle($event)\\\" class=\\\"xs:block\\\" severity=\\\"secondary\\\" outlined icon=\\\"pi pi-ellipsis-v\\\"/>\\r\\n <p-menu #menu [model]=\\\"actions\\\" [popup]=\\\"true\\\" />\\r\\n <!-- Pagination Controls -->\\r\\n <div class=\\\"flex items-center gap-1 rtl:space-x-reverse\\\">\\r\\n <!-- First Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goFirst()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Previous Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goPrev()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n\\r\\n <!-- Current Page Display with Dropdown -->\\r\\n <div class=\\\"relative\\\">\\r\\n\\r\\n <p-button\\r\\n [label]=\\\"currentPage + ' / ' + totalPages()\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"showPageMenu = !showPageMenu\\\"\\r\\n pTooltip=\\\"{{totalRecords}}\\\"\\r\\n tooltipPosition=\\\"top\\\"\\r\\n />\\r\\n\\r\\n\\r\\n </div>\\r\\n <!-- Next Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goNext()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Last Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goLast()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\", dependencies: [{ kind: \"component\", type: GenericButton, selector: \"lib-generic-button\", inputs: [\"model\", \"type\", \"icon\", \"label\", \"variant\", \"severity\", \"size\", \"iconPosition\", \"disabled\", \"loading\", \"ariaLabel\", \"extraClasses\", \"permission\"], outputs: [\"clicked\", \"itemClick\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"component\", type: BreadcrumbComponent, selector: \"app-breadcrumb\", inputs: [\"breadcrumb\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i1.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: DividerModule }, { kind: \"component\", type: i2.Divider, selector: \"p-divider\", inputs: [\"styleClass\", \"layout\", \"type\", \"align\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i3.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"component\", type: Menu, selector: \"p-menu\", inputs: [\"model\", \"popup\", \"style\", \"styleClass\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaLabel\", \"ariaLabelledBy\", \"id\", \"tabindex\", \"appendTo\"], outputs: [\"onShow\", \"onHide\", \"onBlur\", \"onFocus\"] }, { kind: \"component\", type: GenericSearchAdvanced, selector: \"lib-generic-search-advanced\", inputs: [\"model\", \"fields\", \"enableSelect\", \"enableGroup\", \"odataConfig\"], outputs: [\"search\", \"paginationChange\", \"odataSearch\"] }, { kind: \"pipe\", type: i4.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudHeaderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-generic-crud-header', standalone: true, imports: [\n GenericButton,\n TranslateModule,\n BreadcrumbComponent,\n CommonModule,\n ButtonModule,\n DividerModule,\n FormsModule,\n ReactiveFormsModule,\n TooltipModule,\n Menu,\n GenericSearchAdvanced\n ], providers: [DialogService], template: \"@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"flex items-start gap-2 justify-between\\\">\\r\\n <div>\\r\\n <app-breadcrumb\\r\\n class=\\\"xs:block hidden\\\"\\r\\n [breadcrumb]=\\\"breadcrumb\\\"\\r\\n ></app-breadcrumb>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"flex items-center gap-2 justify-end flex-wrap\\\">\\r\\n @if (mode === 'full') {\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 \\u0627\\u0644\\u0645\\u0641\\u0631\\u062F\\u0629 -->\\r\\n @if (isSingleItemSelected) {\\r\\n @for (btn of singleActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onSingleItemAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0645\\u062A\\u0639\\u062F\\u062F\\u0629 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 -->\\r\\n @if (selectedItems.length > 0) {\\r\\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onInternalBulkAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0629 -->\\r\\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleButtonClick(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\\r\\n@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"mt-2 mb-4 flex items-center justify-between\\\">\\r\\n <!-- \\u0627\\u0644\\u0628\\u062D\\u062B -->\\r\\n @if (showSearch && filters) {\\r\\n <lib-generic-search-advanced\\r\\n [model]=\\\"filterModel\\\"\\r\\n [fields]=\\\"filters\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (paginationChange)=\\\"paginationChange($event)\\\"\\r\\n >\\r\\n</lib-generic-search-advanced>\\r\\n } @else {\\r\\n <div></div>\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u062F\\u0648\\u0627\\u062A \\u0625\\u0636\\u0627\\u0641\\u064A\\u0629 -->\\r\\n <div class=\\\"flex items-center gap-3 rtl:space-x-reverse\\\">\\r\\n <!-- Refresh Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-refresh\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (onClick)=\\\"reset()\\\"\\r\\n />\\r\\n\\r\\n <p-divider layout=\\\"vertical\\\" class=\\\"m-0 p-0 hidden xs:block\\\" />\\r\\n\\r\\n\\r\\n <p-button (click)=\\\"menu.toggle($event)\\\" class=\\\"xs:block\\\" severity=\\\"secondary\\\" outlined icon=\\\"pi pi-ellipsis-v\\\"/>\\r\\n <p-menu #menu [model]=\\\"actions\\\" [popup]=\\\"true\\\" />\\r\\n <!-- Pagination Controls -->\\r\\n <div class=\\\"flex items-center gap-1 rtl:space-x-reverse\\\">\\r\\n <!-- First Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goFirst()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Previous Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goPrev()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n\\r\\n <!-- Current Page Display with Dropdown -->\\r\\n <div class=\\\"relative\\\">\\r\\n\\r\\n <p-button\\r\\n [label]=\\\"currentPage + ' / ' + totalPages()\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"showPageMenu = !showPageMenu\\\"\\r\\n pTooltip=\\\"{{totalRecords}}\\\"\\r\\n tooltipPosition=\\\"top\\\"\\r\\n />\\r\\n\\r\\n\\r\\n </div>\\r\\n <!-- Next Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goNext()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Last Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goLast()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { mode: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], isSingleItemSelected: [{\n type: Input\n }], selectedItems: [{\n type: Input\n }], singleActionButtons: [{\n type: Input\n }], bulkActionButtons: [{\n type: Input\n }], addButtonConfigs: [{\n type: Input\n }], filters: [{\n type: Input\n }], filterModel: [{\n type: Input\n }], showSearch: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], apiName: [{\n type: Input\n }], actions: [{\n type: Input\n }], singleItemAction: [{\n type: Output\n }], bulkAction: [{\n type: Output\n }], search: [{\n type: Output\n }], resetSearch: [{\n type: Output\n }], action: [{\n type: Output\n }], paginateChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLWhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtaGVhZGVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvbGliL2dlbmVyaWMtY3J1ZC1oZWFkZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQXNCcEYsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxTQUFTLEdBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdEMsYUFBYSxHQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QyxZQUFZO0lBQ0gsSUFBSSxHQUFtRCxNQUFNLENBQUM7SUFDOUQsVUFBVSxDQUF5QjtJQUNuQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDN0IsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUMxQixtQkFBbUIsR0FBbUIsRUFBRSxDQUFDO0lBQ3pDLGlCQUFpQixHQUFtQixFQUFFLENBQUM7SUFDdkMsZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQUN0QyxPQUFPLENBQU07SUFDYixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDakIsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztJQUNsRCxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsd0NBQXdDO0lBQ25ELFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7SUFDaEQsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNwQixPQUFPLEdBQWM7UUFDckI7WUFDWSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLElBQUksRUFBRSxtQkFBbUI7WUFDekIsT0FBTyxFQUFDLENBQUMsQ0FBSyxFQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNKO0tBQ1osQ0FBQztJQUdSLGFBQWE7SUFDSCxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztJQUNwRCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7SUFDOUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDakMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDdkMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBQ3pELGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQyxDQUFDLGFBQWE7SUFLNUYsYUFBYTtJQUNiLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBRXRDLGFBQWE7SUFDYixrQkFBa0IsQ0FBQyxHQUFpQjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxHQUFpQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ0gsZ0JBQWdCLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBR0Msc0JBQXNCO0lBQ3hCLDREQUE0RDtJQUM1RCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNGLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQy9CLFlBQVksR0FBWSxLQUFLLENBQUM7SUFFOUIsb0NBQW9DO0lBQ3BDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLDhCQUE4QjtRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsdUJBQXVCO0lBQzlDLENBQUM7SUFFRCxtQkFBbUI7SUFDckIsT0FBTztRQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO0lBQ3hFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsTUFBTTtRQUNKLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtJQUMvRSxDQUFDO0lBRUMsc0JBQXNCO0lBQ3RCLE1BQU07UUFDSixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtJQUMvRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU07UUFDSixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWE7SUFDL0UsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDckQsQ0FBQztJQUdELHVCQUF1QjtJQUN2QixJQUFJLEtBQUs7UUFDUCxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLEtBQUs7WUFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSztZQUM1QiwwRUFBMEU7WUFDekUsS0FBSyxDQUFDLENBQUMsaUJBQWlCO0lBQ2pDLENBQUM7SUFDQTs7OztNQUlFO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQWlCO1FBQ3ZDLElBQUksQ0FBQztZQUNILElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNmLDhCQUE4QjtnQkFDOUIsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUNBQW1DO1lBQzdELENBQUM7aUJBQU0sQ0FBQztnQkFDTiw2QkFBNkI7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNmLElBQUksRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEtBQUs7b0JBQzdCLEdBQUcsRUFBRSxJQUFLLEVBQUUsMkJBQTJCO2lCQUN4QyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDMUQsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUN4QyxVQUFVLEVBQUMsS0FBSztZQUNoQixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUMsS0FBSztZQUNqQixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFDLElBQUksQ0FBQyxPQUFPO2dCQUNwQixZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQzFCLFdBQVcsRUFBRSxFQUFFLHVCQUF1QixDQUFDO2dCQUN6QyxlQUFlLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBRyxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUVwSztTQUNGLENBQUMsQ0FBQztRQUVILEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQzFDLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ25ELGlEQUFpRDtnQkFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BQVc7UUFDOUIseUJBQXlCO1FBQ3pCLHVDQUF1QztRQUN2QyxnQ0FBZ0M7UUFDaEMsNENBQTRDO1FBQzVDLDhCQUE4QjtRQUM5QixJQUFJO1FBQ0osT0FBTztJQUNULENBQUM7dUdBNUxRLDBCQUEwQjsyRkFBMUIsMEJBQTBCLCtwQkFIekIsQ0FBQyxhQUFhLENBQUMsMEJDakM3Qix3OUtBK0pBLDRDRDNJSSxhQUFhLDhQQUNiLGVBQWUsK0JBQ2YsbUJBQW1CLGtGQUNuQixZQUFZLDhCQUNaLFlBQVksaWJBQ1osYUFBYSxpSkFDYixXQUFXLDhCQUNYLG1CQUFtQiw4QkFDbkIsYUFBYSxzWEFDYixJQUFJLHFTQUNKLHFCQUFxQjs7MkZBTVosMEJBQTBCO2tCQXBCdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLElBQUk7d0JBQ0oscUJBQXFCO3FCQUN0QixhQUVXLENBQUMsYUFBYSxDQUFDOzhCQVFsQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLEtBQUs7c0JBQWIsS0FBSztnQkFDRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksT0FBTztzQkFBZixLQUFLO2dCQVlHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQnV0dG9uQ29uZmlnIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEdlbmVyaWNCdXR0b24gfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBEaXZpZGVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaXZpZGVyJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvYnJlYWRjcnVtYic7XHJcbmltcG9ydCB7IEdlbmVyaWNTZWFyY2hBZHZhbmNlZCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZCc7XHJcbmltcG9ydCB7IEdlbmVyaWNSZXBvcnRDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1yZXBvcnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZ2VuZXJpYy1jcnVkLWhlYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBHZW5lcmljQnV0dG9uLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgQnJlYWRjcnVtYkNvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIERpdmlkZXJNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudSxcclxuICAgIEdlbmVyaWNTZWFyY2hBZHZhbmNlZFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtY3J1ZC1oZWFkZXIuaHRtbCcsXHJcbiAgIHByb3ZpZGVyczogW0RpYWxvZ1NlcnZpY2VdLFxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNDcnVkSGVhZGVyQ29tcG9uZW50IHtcclxuXHJcbiAgdHJhbnNsYXRlICA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBkaWFsb2dTZXJ2aWNlICA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICAvLyDwn5+iIElucHV0c1xyXG4gIEBJbnB1dCgpIG1vZGU6ICdmdWxsJyB8ICdmb3JtLW9ubHknIHwgJ3RhYmxlLW9ubHknIHwgJ2RldGFpbCcgPSAnZnVsbCc7XHJcbiAgQElucHV0KCkgYnJlYWRjcnVtYjogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBpc1NpbmdsZUl0ZW1TZWxlY3RlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgc2luZ2xlQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBidWxrQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBhZGRCdXR0b25Db25maWdzOiBCdXR0b25Db25maWdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IGFueTtcclxuICBASW5wdXQoKSBmaWx0ZXJNb2RlbDogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaCA9IHRydWU7XHJcbiAgIEBJbnB1dCgpIGZpcnN0ID0gMDsgLy8gQWRkIGlucHV0IGZvciBjdXJyZW50ICdmaXJzdCcgaW5kZXhcclxuICBASW5wdXQoKSByb3dzID0gMTA7IC8vIEFkZCBpbnB1dCBmb3IgY3VycmVudCAncm93cycgcGVyIHBhZ2VcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwOyAvLyBBZGQgaW5wdXQgZm9yIHRvdGFsIHJlY29yZHNcclxuICBASW5wdXQoKSBhcGlOYW1lOiBzdHJpbmcgPSAnJztcclxuICAgQElucHV0KCkgYWN0aW9uczpNZW51SXRlbVtdID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWZpbGUtZXhwb3J0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDooZTphbnkpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUmVwb3J0RGlhbG9nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuXHJcblxyXG4gIC8vIPCfn6IgT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBzaW5nbGVJdGVtQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25Db25maWc+KCk7XHJcbiAgQE91dHB1dCgpIGJ1bGtBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNvbmZpZz4oKTtcclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJlc2V0U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IGFueSB9PigpO1xyXG4gQE91dHB1dCgpIHBhZ2luYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpcnN0OiBudW1iZXI7IHJvd3M6IG51bWJlciB9PigpOyAvLyBORVcgT1VUUFVUXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIPCfn6IgSGVscGVyc1xyXG4gIHRyYWNrQnlJZHggPSAoaW5kZXg6IG51bWJlcikgPT4gaW5kZXg7XHJcblxyXG4gIC8vIPCfn6IgQWN0aW9uc1xyXG4gIG9uU2luZ2xlSXRlbUFjdGlvbihidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdGhpcy5zaW5nbGVJdGVtQWN0aW9uLmVtaXQoYnRuKTtcclxuICB9XHJcbiAgb25JbnRlcm5hbEJ1bGtBY3Rpb24oYnRuOiBCdXR0b25Db25maWcpIHtcclxuICAgIHRoaXMuYnVsa0FjdGlvbi5lbWl0KGJ0bik7XHJcbiAgfVxyXG5wYWdpbmF0aW9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMucm93cyA9IHZhbHVlLnRvcDtcclxuICB9XHJcbiAgYXBwbHlTZWFyY2godmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZWFyY2guZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5yZXNldFNlYXJjaC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgICAvLyBHbyB0byBwcmV2aW91cyBwYWdlXHJcbiAgLy8g8J+foiBBY3Rpb25zIChLZWVwIG9yIGFkYXB0IHlvdXIgZXhpc3RpbmcgcGFnaW5hdGlvbiBsb2dpYylcclxuICB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy50b3RhbFJlY29yZHMgPT09IDAgfHwgdGhpcy5yb3dzID09PSAwKSByZXR1cm4gMDtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMgLyB0aGlzLnJvd3MpO1xyXG4gIH1cclxuIHBhZ2VJbnB1dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd1BhZ2VNZW51OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIEdldCBjdXJyZW50IHBhZ2UgbnVtYmVyICgxLWJhc2VkKVxyXG4gIGdldCBjdXJyZW50UGFnZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5maXJzdCAvIHRoaXMucm93cykgKyAxO1xyXG4gIH1cclxuXHJcbiAgLy8gR28gdG8gc3BlY2lmaWMgcGFnZSBmcm9tIG1lbnVcclxuICBnb1RvUGFnZU1lbnUoKSB7XHJcbiAgICBpZiAodGhpcy5wYWdlSW5wdXQgJiYgdGhpcy5wYWdlSW5wdXQgPj0gMSAmJiB0aGlzLnBhZ2VJbnB1dCA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xyXG4gICAgICBjb25zdCBuZXdGaXJzdCA9ICh0aGlzLnBhZ2VJbnB1dCAtIDEpICogdGhpcy5yb3dzO1xyXG4gICAgICB0aGlzLnBhZ2luYXRlQ2hhbmdlLmVtaXQoeyBmaXJzdDogbmV3Rmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTtcclxuICAgICAgdGhpcy5wYWdlSW5wdXQgPSBudWxsO1xyXG4gICAgICB0aGlzLnNob3dQYWdlTWVudSA9IGZhbHNlOyAvLyBDbG9zZSBtZW51IGFmdGVyIG5hdmlnYXRpb25cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEdvIHRvIHNwZWNpZmljIHBhZ2UgKG9yaWdpbmFsIG1ldGhvZClcclxuICBnb1RvUGFnZSgpIHtcclxuICAgIHRoaXMuZ29Ub1BhZ2VNZW51KCk7IC8vIFJldXNlIHRoZSBzYW1lIGxvZ2ljXHJcbiAgfVxyXG5cclxuICAvLyBHbyB0byBmaXJzdCBwYWdlXHJcbmdvRmlyc3QoKSB7XHJcbiAgdGhpcy5wYWdpbmF0ZUNoYW5nZS5lbWl0KHsgZmlyc3Q6IDAsIHJvd3M6IHRoaXMucm93cyB9KTsgLy8gRU1JVCBFVkVOVFxyXG59XHJcblxyXG4vLyBHbyB0byBsYXN0IHBhZ2VcclxuZ29MYXN0KCkge1xyXG4gIGNvbnN0IG1heEZpcnN0ID0gTWF0aC5tYXgoMCwgKHRoaXMudG90YWxQYWdlcygpIC0gMSkgKiB0aGlzLnJvd3MpO1xyXG4gIHRoaXMucGFnaW5hdGVDaGFuZ2UuZW1pdCh7IGZpcnN0OiBtYXhGaXJzdCwgcm93czogdGhpcy5yb3dzIH0pOyAvLyBFTUlUIEVWRU5UXHJcbn1cclxuXHJcbiAgLy8gR28gdG8gcHJldmlvdXMgcGFnZVxyXG4gIGdvUHJldigpIHtcclxuICAgIGNvbnN0IG5ld0ZpcnN0ID0gTWF0aC5tYXgodGhpcy5maXJzdCAtIHRoaXMucm93cywgMCk7XHJcbiAgICB0aGlzLnBhZ2luYXRlQ2hhbmdlLmVtaXQoeyBmaXJzdDogbmV3Rmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTsgLy8gRU1JVCBFVkVOVFxyXG4gIH1cclxuXHJcbiAgLy8gR28gdG8gbmV4dCBwYWdlXHJcbiAgZ29OZXh0KCkge1xyXG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCAodGhpcy50b3RhbFBhZ2VzKCkgLSAxKSAqIHRoaXMucm93cyk7XHJcbiAgICBjb25zdCBuZXdGaXJzdCA9IE1hdGgubWluKHRoaXMuZmlyc3QgKyB0aGlzLnJvd3MsIG1heEZpcnN0KTtcclxuICAgIHRoaXMucGFnaW5hdGVDaGFuZ2UuZW1pdCh7IGZpcnN0OiBuZXdGaXJzdCwgcm93czogdGhpcy5yb3dzIH0pOyAvLyBFTUlUIEVWRU5UXHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBmaXJzdC9sYXN0IHBhZ2VcclxuICBpc0ZpcnN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0ID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaXNMYXN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0ICsgdGhpcy5yb3dzID49IHRoaXMudG90YWxSZWNvcmRzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIERldGVjdCBSVEwgZGlyZWN0aW9uXHJcbiAgZ2V0IGlzUlRMKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPT09ICdydGwnIHx8XHJcbiAgICAgICAgICAgZG9jdW1lbnQuYm9keS5kaXIgPT09ICdydGwnIHx8XHJcbiAgICAgICAgICAvLyAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlPy5jdXJyZW50TGFuZyA9PT0gJ2FyJyB8fCAvLyBpZiB1c2luZyB0cmFuc2xhdGlvblxyXG4gICAgICAgICAgIGZhbHNlOyAvLyBkZWZhdWx0IHRvIExUUlxyXG4gIH1cclxuICAgLyoqXHJcbiAgICogSGFuZGxlcyBidXR0b24gY2xpY2sgaW4gYSB1bmlmaWVkIHdheS5cclxuICAgKiAtIElmIGJ0bi5hY3Rpb24gaXMgZGVmaW5lZCwgZXhlY3V0ZSBpdC5cclxuICAgKiAtIE90aGVyd2lzZSwgZW1pdCBldmVudCB3aXRoIGFjdGlvbk5hbWUgb3IgZGVmYXVsdCAnYWRkJy5cclxuICAgKi9cclxuICBhc3luYyBoYW5kbGVCdXR0b25DbGljayhidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGJ0bi5hY3Rpb24pIHtcclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBwcm92aWRlZCBhY3Rpb25cclxuICAgICAgICBhd2FpdCBidG4uYWN0aW9uKG51bGwpOyAvLyBZb3UgY2FuIHBhc3Mgcm93IG9yIGNvbnRleHQgaGVyZVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEZhbGxiYWNrIHRvIGVtaXR0aW5nIGV2ZW50XHJcbiAgICAgICAgdGhpcy5hY3Rpb24uZW1pdCh7XHJcbiAgICAgICAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnYWRkJyxcclxuICAgICAgICAgIHJvdzogbnVsbCEsIC8vIHByb3ZpZGUgcm93IGlmIGF2YWlsYWJsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignQnV0dG9uIGFjdGlvbiBlcnJvcicsIGVycik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuUmVwb3J0RGlhbG9nKCkge1xyXG4gICAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihHZW5lcmljUmVwb3J0Q29tcG9uZW50LCB7XHJcbiAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSxcclxuICAgICAgICBzaG93SGVhZGVyOmZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiAnOTAlJyxcclxuICAgICAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgICAgICBtb2RhbDogdHJ1ZSxcclxuICAgICAgICBmb2N1c09uU2hvdzpmYWxzZSxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBhcGlOYW1lOnRoaXMuYXBpTmFtZSxcclxuICAgICAgICAgIGZpbHRlckZpZWxkczogdGhpcy5maWx0ZXJzLFxyXG4gICAgICAgICAgZmlsdGVyTW9kZWw6IHsgLyogc3RhdHVzOiAnQWN0aXZlJyAgKi99LFxyXG4gICAgICAgIGRlZmF1bHRGaWxlTmFtZTp0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSArICcgJyArIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5icmVhZGNydW1iPy5sZW5ndGggPyB0aGlzLmJyZWFkY3J1bWJbdGhpcy5icmVhZGNydW1iLmxlbmd0aCAtIDFdLmxhYmVsID8/Jyc6ICcnKVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChleHBvcnRDb25maWc6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChleHBvcnRDb25maWcpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeHBvcnQgY29uZmlndXJhdGlvbjonLCBleHBvcnRDb25maWcpO1xyXG4gICAgICAgICAgLy8gSGFuZGxlIHRoZSBleHBvcnQgLSBjYWxsIHlvdXIgQVBJIHNlcnZpY2UgaGVyZVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFeHBvcnQoZXhwb3J0Q29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXhwb3J0KGNvbmZpZzogYW55KSB7XHJcbiAgICAgIC8vIFlvdXIgZXhwb3J0IGxvZ2ljIGhlcmVcclxuICAgICAgLy8gaWYgKGNvbmZpZy5leHBvcnRUeXBlID09PSAnRVhDRUwnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5leHBvcnRUb0V4Y2VsKGNvbmZpZyk7XHJcbiAgICAgIC8vIH0gZWxzZSBpZiAoY29uZmlnLmV4cG9ydFR5cGUgPT09ICdQREYnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5leHBvcnRUb1BkZihjb25maWcpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGV0Yy5cclxuICAgIH1cclxuXHJcbn1cclxuIiwiQGlmIChtb2RlICE9PSAnZm9ybS1vbmx5JyAmJiBtb2RlICE9PSAnZGV0YWlsJykge1xyXG48ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBnYXAtMiBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICA8ZGl2PlxyXG4gICAgPGFwcC1icmVhZGNydW1iXHJcbiAgICAgIGNsYXNzPVwieHM6YmxvY2sgaGlkZGVuXCJcclxuICAgICAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiXHJcbiAgICA+PC9hcHAtYnJlYWRjcnVtYj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGp1c3RpZnktZW5kIGZsZXgtd3JhcFwiPlxyXG4gICAgQGlmIChtb2RlID09PSAnZnVsbCcpIHtcclxuICAgICAgPCEtLSDYo9iy2LHYp9ixINin2YTYudmG2KfYtdixINin2YTZhdmB2LHYr9ipIC0tPlxyXG4gICAgICBAaWYgKGlzU2luZ2xlSXRlbVNlbGVjdGVkKSB7XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIHNpbmdsZUFjdGlvbkJ1dHRvbnM7IHRyYWNrIHRyYWNrQnlJZHgoJGluZGV4KSkge1xyXG4gICAgICAgICAgQGlmICghYnRuLnZpc2libGUgfHwgKGJ0bi52aXNpYmxlICYmIGJ0bi52aXNpYmxlID09PSB0cnVlKSkge1xyXG4gICAgICAgICAgICA8bGliLWdlbmVyaWMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJidG4ubGFiZWwgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgIFt2YXJpYW50XT1cImJ0bi52YXJpYW50XCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImJ0bi5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgICAgW21vZGVsXT1cImJ0bi5zcGxpdEFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNpbmdsZUl0ZW1BY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0g2KPYstix2KfYsSDZhdiq2LnYr9iv2Kkg2KfZhNi52YbYp9i12LEgLS0+XHJcbiAgICAgIEBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIGJ1bGtBY3Rpb25CdXR0b25zOyB0cmFjayB0cmFja0J5SWR4KCRpbmRleCkpIHtcclxuICAgICAgICAgIEBpZiAoIWJ0bi52aXNpYmxlIHx8IChidG4udmlzaWJsZSAmJiBidG4udmlzaWJsZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICAgICAgPGxpYi1nZW5lcmljLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtpY29uXT1cImJ0bi5pY29uXCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBbdmFyaWFudF09XCJidG4udmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiYnRuLnNpemVcIlxyXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJidG4uc3BsaXRBY3Rpb25zXCJcclxuICAgICAgICAgICAgICBbcGVybWlzc2lvbl09XCJidG4ucGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25JbnRlcm5hbEJ1bGtBY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0g2KPYstix2KfYsSDYp9mE2KXYttin2YHYqSAtLT5cclxuICAgICAgQGZvciAoYnRuIG9mIGFkZEJ1dHRvbkNvbmZpZ3M7IHRyYWNrIHRyYWNrQnlJZHgoJGluZGV4KSkge1xyXG4gICAgICAgIEBpZiAoIWJ0bi52aXNpYmxlIHx8IChidG4udmlzaWJsZSAmJiBidG4udmlzaWJsZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICAgIDxsaWItZ2VuZXJpYy1idXR0b25cclxuICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuLnZhcmlhbnRcIlxyXG4gICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICBbbW9kZWxdPVwiYnRuLnNwbGl0QWN0aW9uc1wiXHJcbiAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnRuKVwiXHJcbiAgICAgICAgICA+PC9saWItZ2VuZXJpYy1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG59XHJcblxyXG5AaWYgKG1vZGUgIT09ICdmb3JtLW9ubHknICYmIG1vZGUgIT09ICdkZXRhaWwnKSB7XHJcbjxkaXYgY2xhc3M9XCJtdC0yIG1iLTQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgPCEtLSDYp9mE2KjYrdirIC0tPlxyXG4gIEBpZiAoc2hvd1NlYXJjaCAmJiBmaWx0ZXJzKSB7XHJcbiAgICA8bGliLWdlbmVyaWMtc2VhcmNoLWFkdmFuY2VkXHJcbiAgICBbbW9kZWxdPVwiZmlsdGVyTW9kZWxcIlxyXG4gIFtmaWVsZHNdPVwiZmlsdGVyc1wiXHJcbiAgKHNlYXJjaCk9XCJhcHBseVNlYXJjaCgkZXZlbnQpXCJcclxuICAocGFnaW5hdGlvbkNoYW5nZSk9XCJwYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gID5cclxuPC9saWItZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQ+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2PjwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPCEtLSDYo9iv2YjYp9iqINil2LbYp9mB2YrYqSAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcnRsOnNwYWNlLXgtcmV2ZXJzZVwiPlxyXG4gICAgPCEtLSBSZWZyZXNoIEJ1dHRvbiAtLT5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBpY29uPVwicGkgcGktcmVmcmVzaFwiXHJcbiAgICAgIG91dGxpbmVkXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgY2xhc3M9XCJoaWRkZW4geHM6YmxvY2tcIlxyXG4gICAgICAob25DbGljayk9XCJyZXNldCgpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiIGNsYXNzPVwibS0wIHAtMCBoaWRkZW4geHM6YmxvY2tcIiAvPlxyXG5cclxuXHJcbiAgICA8cC1idXR0b24gKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudClcIiAgY2xhc3M9XCJ4czpibG9ja1wiICBzZXZlcml0eT1cInNlY29uZGFyeVwiIG91dGxpbmVkIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCIvPlxyXG4gICAgPHAtbWVudSAjbWVudSBbbW9kZWxdPVwiYWN0aW9uc1wiIFtwb3B1cF09XCJ0cnVlXCIgLz5cclxuICAgIDwhLS0gUGFnaW5hdGlvbiBDb250cm9scyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBydGw6c3BhY2UteC1yZXZlcnNlXCI+XHJcbiAgICAgIDwhLS0gRmlyc3QgUGFnZSBCdXR0b24gLS0+XHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIFtpY29uXT1cImlzUlRMID8gJ3BpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodCcgOiAncGkgcGktYW5nbGUtZG91YmxlLWxlZnQnXCJcclxuICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICBjbGFzcz1cImhpZGRlbiB4czpibG9ja1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImdvRmlyc3QoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gUHJldmlvdXMgUGFnZSBCdXR0b24gLS0+XHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIFtpY29uXT1cImlzUlRMID8gJ3BpIHBpLWNoZXZyb24tcmlnaHQnIDogJ3BpIHBpLWNoZXZyb24tbGVmdCdcIlxyXG4gICAgICAgIG91dGxpbmVkXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwieHM6YmxvY2tcIlxyXG4gICAgICAgIChjbGljayk9XCJnb1ByZXYoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcblxyXG4gICAgICAgPCEtLSBDdXJyZW50IFBhZ2UgRGlzcGxheSB3aXRoIERyb3Bkb3duIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxyXG5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBbbGFiZWxdPVwiY3VycmVudFBhZ2UgKyAnIC8gJyArIHRvdGFsUGFnZXMoKVwiXHJcbiAgICAgIG91dGxpbmVkXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgY2xhc3M9XCJoaWRkZW4geHM6YmxvY2tcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd1BhZ2VNZW51ID0gIXNob3dQYWdlTWVudVwiXHJcbiAgICAgICAgcFRvb2x0aXA9XCJ7e3RvdGFsUmVjb3Jkc319XCJcclxuICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgIC8+XHJcblxyXG5cclxuICA8L2Rpdj5cclxuICAgICAgPCEtLSBOZXh0IFBhZ2UgQnV0dG9uIC0tPlxyXG4gICAgICA8cC1idXR0b25cclxuICAgICAgICBbaWNvbl09XCJpc1JUTCA/ICdwaSBwaS1jaGV2cm9uLWxlZnQnIDogJ3BpIHBpLWNoZXZyb24tcmlnaHQnXCJcclxuICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICBjbGFzcz1cInhzOmJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gTGFzdCBQYWdlIEJ1dHRvbiAtLT5cclxuICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgW2ljb25dPVwiaXNSVEwgPyAncGkgcGktYW5nbGUtZG91YmxlLWxlZnQnIDogJ3BpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodCdcIlxyXG4gICAgICAgIG91dGxpbmVkXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuIHhzOmJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwiZ29MYXN0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG4iXX0=","/* eslint-disable @angular-eslint/no-output-on-prefix */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { DividerModule } from 'primeng/divider';\nimport { Component, Input, Output, EventEmitter, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MessageModule } from 'primeng/message';\nimport { ButtonModule } from 'primeng/button';\nimport { TableModule } from 'primeng/table';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { DrawerModule } from 'primeng/drawer';\nimport { DialogModule } from 'primeng/dialog';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { BaseService } from '@elite.framework/ng.core/services';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { GenericCrudHeaderComponent } from './generic-crud-header';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { GenericTable } from '@elite.framework/ng.ui.core/generic-table';\nimport { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';\nimport { GenericViewComponent } from '@elite.framework/ng.ui.core/generic-view';\nimport { QueryBuilderService } from '@elite.framework/ng.ui.core/generic-search-advanced';\nimport * as i0 from \"@angular/core\";\n/**\n * مكون جدول CRUD عام يمكن إعادة استخدامه\n * يدعم العمليات الأساسية: إنشاء، قراءة، تحديث، حذف\n * مع إمكانية التخصيص عبر عدة أوضاع وعرض\n */\nexport class GenericCrudTableComponent {\n genericTable;\n dialog;\n translate = inject(TranslateService);\n swalService = inject(SwalService);\n queryBuilder = inject(QueryBuilderService);\n home = { icon: 'pi pi-home', routerLink: '/' };\n data = [];\n formFields_ = []; // <-- هنا\n formFields = []; // <-- هنا\n columns = []; // <-- هنا\n dialogMaxWidth = '40rem'; // unset , fit-content\n isViewMode = false;\n displayMode = 'drawer';\n useConfirmOnSave = false;\n isEditMode = false;\n drawerVisible = false;\n dialogVisible = false;\n form = new UntypedFormGroup({});\n model;\n model_ = {};\n loading = false;\n errorMsg = '';\n errorMessage = '';\n options = {};\n actions = [];\n /** تحدد طريقة العرض: 'buttons' أو 'menu' */\n actionsMode = 'buttons';\n action = new EventEmitter();\n bulkAction = new EventEmitter();\n singleAction = new EventEmitter();\n beforeSaveTransform; // ⚡ دوال مخصصة قبل الحفظ\n afterSave = new EventEmitter();\n afterDelete = new EventEmitter();\n beforeSave = new EventEmitter();\n beforeDelete = new EventEmitter();\n formCancel = new EventEmitter();\n formInit = new EventEmitter();\n dataLoaded = new EventEmitter();\n selectionChange = new EventEmitter();\n error = new EventEmitter();\n // البحث\n // Search\n filters;\n filterModel = {};\n search = new EventEmitter();\n /** للتحكم بإظهار/إخفاء قسم البحث */\n showSearch = true;\n /** Pagination Inputs */\n first = 0;\n rows = 10;\n totalRecords = 0;\n pageChange = new EventEmitter();\n onSearch = new EventEmitter();\n visibleChange = new EventEmitter();\n ;\n // @Output() visibleChange = new EventEmitter<boolean>();\n /** لجعل الجدول قابل لاختيار الصفوف (افتراضي false) */\n rowSelectable = false;\n /** حدث يخرج الصف المحدّد */\n rowSelect = new EventEmitter();\n selection = null;\n // الفرز\n sortField;\n sortOrder = 1;\n scrollHeight = '400px';\n paginator = true;\n service = inject(BaseService);\n apiName = '';\n idField = 'id';\n showRowSelectionCheckbox = false;\n showAddButton = true;\n addPermissionName;\n addButtonConfigs = [\n {\n icon: 'pi pi-plus',\n label: 'ADD',\n variant: 'raised',\n severity: 'primary',\n size: 'small',\n actionName: 'add',\n visible: this.showAddButton,\n permission: this.addPermissionName,\n },\n ];\n createEditActions = [\n {\n icon: 'pi pi-check',\n label: 'SAVE',\n variant: 'raised',\n severity: 'primary',\n size: 'small',\n actionName: 'save',\n type: 'submit',\n splitActions: [\n {\n label: this.translate.instant('SAVE_AND_ADD'),\n icon: 'pi pi-save',\n actionName: 'saveAndAdd'\n }\n ]\n },\n {\n icon: 'pi pi-times',\n label: 'CANCEL',\n variant: 'raised',\n severity: 'danger',\n size: 'small',\n actionName: 'cancel',\n type: 'button',\n },\n ];\n supportSubPage = true;\n tabs = [];\n bulkActionButtons = [];\n singleActionButtons = [];\n _selectedRows = [];\n get isSingleItemSelected() {\n return this._selectedRows.length === 1;\n }\n get isMultipleItemSelected() {\n return this._selectedRows.length > 1;\n }\n get selectedItems() {\n return this._selectedRows;\n }\n breadcrumb;\n get breadcrumb_() {\n return this.breadcrumb?.map(v => ({\n ...v,\n label: this.translate.instant(v.label ?? '')\n }));\n }\n get rtl() {\n try {\n return document?.documentElement?.dir === 'rtl';\n }\n catch (error) {\n return true;\n }\n }\n /**\n * Modes to control what parts of the component are visible\n * - 'full': Table + CRUD operations (default)\n * - 'form-only': Only show form (for create/edit/view)\n * - 'table-only': Only show table (read-only mode)\n */\n mode = 'full';\n /** Force the component to show specific state */\n forceState = null;\n /** Hide table completely when in form-only mode */\n get hideTable() {\n return (this.mode === 'form-only' || this.mode === 'detail' || (this.forceState && this.mode !== 'table-only')) ?? false;\n }\n /** Auto-show form when in form-only mode with forceState */\n get autoShowForm() {\n return this.mode === 'form-only' && !!this.forceState;\n }\n //لتغيير لون صف معيّن\n rowStyleFn;\n // ✅ لتعيين كلاس CSS أو Tailwind على الصف\n rowClassFn;\n //آخر لتجميد / تعطيل checkbox الاختيار\n disableRowCheckboxFn;\n tableClass = 'h-full flex-1 flex flex-col overflow-hidden border border-surface rounded-2xl xs:rounded-2xl p-4 bg-white';\n route = inject(ActivatedRoute);\n router = inject(Router);\n currentId;\n ngOnInit() {\n if (this.apiName && this.apiName != '') {\n this.service.apiName = this.apiName;\n }\n if (this.apiName) {\n this.service.apiName = this.apiName;\n }\n if (this.tabs.length == 0) {\n this.formFields_ = this.formFields;\n this.tabs.push({ header: 'التفاصيل', icon: 'pi pi-info-circle', fields: this.formFields_, model: this.model });\n }\n if (this.supportSubPage) {\n this.route.paramMap.subscribe(params => {\n const id = params.get(this.idField);\n if (id) {\n this.currentId = id;\n this.mode = 'detail';\n this.loadDetail(id);\n }\n else {\n this.currentId = undefined;\n }\n });\n }\n }\n // 3. Handle Header's Paginate Change Event\n onHeaderPaginateChange(event) {\n this.first = event.first; // Update the 'first' index\n this.rows = event.rows;\n const lazyLoadEvent = {\n first: this.first,\n rows: this.rows,\n // You'd typically include current sorting and filtering state here\n sortField: this.sortField,\n sortOrder: 1,\n filters: this.filters,\n globalFilter: null, // or your current global filter value\n };\n this.onLazyLoad(lazyLoadEvent);\n }\n loadDetail(id) {\n this.service.get(id).subscribe({\n next: res => {\n this.model = res;\n }\n });\n }\n // Helper method to open form programmatically\n openForm(mode, model) {\n this.dialog.openForm(mode, model);\n }\n // private destroy$ = new Subject<void>();\n /** الآن يتلقّى pagination + sort في حدث واحد */\n onLazyLoad(event) {\n // this.model_= this.model ?? {};\n this.model = this.model ?? {};\n this.formFields_ = this.formFields;\n const first = event.first ?? this.first;\n const rows = event.rows ?? this.rows;\n const sortField = typeof event.sortField === 'string'\n ? event.sortField\n : this.sortField;\n const sortOrder = event.sortOrder === -1 ? -1 : 1;\n const filters = {};\n if (event.filters) {\n Object.entries(event.filters).forEach(([field, meta]) => {\n const value = meta.value;\n if (value != null && value !== '') {\n filters[field] = value;\n }\n });\n }\n var queryString = '';\n // Default query\n if (!filters['query']) {\n // Use the new QueryBuilderService methods\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.filterModel, this.formFields_);\n // this.odataSearch.emit(odataParams);\n // Generate query string using the unified method\n queryString = this.queryBuilder.toODataQueryString(odataParams);\n // console.log('OData Query String:', queryString);\n }\n this.first = first;\n this.rows = rows;\n this.sortField = sortField;\n this.sortOrder = sortOrder;\n const dir = sortOrder === 1 ? 'asc' : 'desc';\n const sort = sortField ? `${sortField} ${dir}` : undefined;\n // this.pageChange.emit({ first, rows ,sort, filters });\n this.applySearch({\n filter: this.model['filter'],\n query: queryString,\n sorting: sort,\n skipCount: first,\n maxResultCount: rows,\n });\n // يبني النص وإرساله\n }\n /** تصيير البيانات حسب الصفحة */\n get pagedData() {\n // return this.data ? this.data.slice(this.first, this.first + this.rows) : [];\n return this.data;\n }\n get globalFilterFields() {\n return this.columns.map(c => String(c.key));\n }\n /** أرسل إلى الأب لأتمتة شكل البحث إذا يحتاج */\n // from generic-crud-table.component.ts\n /** بدّل applySearch لتبث pageChange مباشرةً */\n applySearch(filters) {\n // this.genericTable.applyFilter(global);\n this.onSearch.emit(filters);\n }\n /** دالة تنفّذ عند النقر على صف */\n onRowClick(row) {\n if (this.rowSelectable) {\n this.rowSelect.emit(row);\n }\n }\n onSubmit() {\n if (this.mode != 'form-only') {\n this.applySearch('');\n }\n }\n trackByIdx(index, item) {\n return index;\n }\n onSingleItemAction(btn) {\n if (!this.isSingleItemSelected)\n return;\n const selectedItem = this._selectedRows[0];\n this.singleAction.emit({\n name: btn.actionName ?? 'singleAction',\n item: selectedItem\n });\n }\n onInternalBulkAction(btn) {\n if (!this.isMultipleItemSelected)\n return;\n this.bulkAction.emit({\n name: btn.actionName ?? 'bulkAction',\n items: [...this._selectedRows] // نرسل نسخة من المصفوفة\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericCrudTableComponent, isStandalone: true, selector: \"app-generic-crud-table\", inputs: { data: \"data\", formFields: \"formFields\", columns: \"columns\", dialogMaxWidth: \"dialogMaxWidth\", isViewMode: \"isViewMode\", displayMode: \"displayMode\", useConfirmOnSave: \"useConfirmOnSave\", isEditMode: \"isEditMode\", drawerVisible: \"drawerVisible\", dialogVisible: \"dialogVisible\", model: \"model\", loading: \"loading\", errorMsg: \"errorMsg\", errorMessage: \"errorMessage\", actions: \"actions\", actionsMode: \"actionsMode\", beforeSaveTransform: \"beforeSaveTransform\", filters: \"filters\", filterModel: \"filterModel\", showSearch: \"showSearch\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", rowSelectable: \"rowSelectable\", scrollHeight: \"scrollHeight\", paginator: \"paginator\", service: \"service\", apiName: \"apiName\", idField: \"idField\", showRowSelectionCheckbox: \"showRowSelectionCheckbox\", showAddButton: \"showAddButton\", addPermissionName: \"addPermissionName\", addButtonConfigs: \"addButtonConfigs\", createEditActions: \"createEditActions\", supportSubPage: \"supportSubPage\", tabs: \"tabs\", bulkActionButtons: \"bulkActionButtons\", singleActionButtons: \"singleActionButtons\", breadcrumb: \"breadcrumb\", mode: \"mode\", forceState: \"forceState\", hideTable: \"hideTable\", autoShowForm: \"autoShowForm\", rowStyleFn: \"rowStyleFn\", rowClassFn: \"rowClassFn\", disableRowCheckboxFn: \"disableRowCheckboxFn\" }, outputs: { action: \"action\", bulkAction: \"bulkAction\", singleAction: \"singleAction\", afterSave: \"afterSave\", afterDelete: \"afterDelete\", beforeSave: \"beforeSave\", beforeDelete: \"beforeDelete\", formCancel: \"formCancel\", formInit: \"formInit\", dataLoaded: \"dataLoaded\", selectionChange: \"selectionChange\", error: \"error\", search: \"search\", pageChange: \"pageChange\", onSearch: \"onSearch\", visibleChange: \"visibleChange\", rowSelect: \"rowSelect\" }, viewQueries: [{ propertyName: \"genericTable\", first: true, predicate: [\"genericTable\"], descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true }], ngImport: i0, template: \"<div\\r\\n [class]=\\\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\\\"\\r\\n>\\r\\n <app-generic-crud-header\\r\\n [mode]=\\\"mode\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [isSingleItemSelected]=\\\"isSingleItemSelected\\\"\\r\\n [selectedItems]=\\\"_selectedRows\\\"\\r\\n [singleActionButtons]=\\\"singleActionButtons\\\"\\r\\n [bulkActionButtons]=\\\"bulkActionButtons\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [filters]=\\\"filters\\\"\\r\\n [filterModel]=\\\"filterModel\\\"\\r\\n [showSearch]=\\\"showSearch\\\"\\r\\n (singleItemAction)=\\\"onSingleItemAction($event)\\\"\\r\\n (bulkAction)=\\\"onInternalBulkAction($event)\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (resetSearch)=\\\"applySearch('')\\\"\\r\\n (paginateChange)=\\\"onHeaderPaginateChange($event)\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n/>\\r\\n\\r\\n @if (!hideTable) {\\r\\n <lib-generic-table\\r\\n [data]=\\\"data\\\"\\r\\n [columns]=\\\"columns\\\"\\r\\n [paginator]=\\\"paginator\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [actionsMode]=\\\"actionsMode\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n [sortField]=\\\"sortField\\\"\\r\\n [sortOrder]=\\\"sortOrder\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [globalFilterFields]=\\\"globalFilterFields\\\"\\r\\n [scrollHeight]=\\\"scrollHeight\\\"\\r\\n [rowStyleFn]=\\\"rowStyleFn\\\"\\r\\n [rowClassFn]=\\\"rowClassFn\\\"\\r\\n [disableRowCheckboxFn]=\\\"disableRowCheckboxFn\\\"\\r\\n [showRowSelectionCheckbox]=\\\"showRowSelectionCheckbox\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (onAddNew)=\\\"action.emit({ name: 'add', row: null! })\\\"\\r\\n (pageChange)=\\\"onLazyLoad($event)\\\"\\r\\n [rowSelectable]=\\\"rowSelectable\\\"\\r\\n (rowSelect)=\\\"onRowClick($event)\\\"\\r\\n [(selection)]=\\\"_selectedRows\\\"\\r\\n #genericTable\\r\\n ></lib-generic-table>\\r\\n\\r\\n }\\r\\n\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [dialogMaxWidth]=\\\"dialogMaxWidth\\\"\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [forceState]=\\\"forceState\\\"\\r\\n [drawerVisible]=\\\"drawerVisible\\\"\\r\\n [dialogVisible]=\\\"dialogVisible\\\"\\r\\n [isViewMode]=\\\"isViewMode\\\"\\r\\n [isEditMode]=\\\"isEditMode\\\"\\r\\n [useConfirmOnSave]=\\\"useConfirmOnSave\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [errorMsg]=\\\"errorMsg\\\"\\r\\n [errorMessage]=\\\"errorMessage\\\"\\r\\n [beforeSaveTransform]=\\\"beforeSaveTransform\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (afterSave)=\\\"afterSave.emit($event);onSubmit();\\\"\\r\\n (afterDelete)=\\\"afterDelete.emit($event)\\\"\\r\\n (beforeSave)=\\\"beforeSave.emit($event)\\\"\\r\\n (beforeDelete)=\\\"beforeDelete.emit($event)\\\"\\r\\n (formCancel)=\\\"formCancel.emit()\\\"\\r\\n (formInit)=\\\"formInit.emit($event)\\\"\\r\\n (dataLoaded)=\\\"dataLoaded.emit($event)\\\"\\r\\n (selectionChange)=\\\"selectionChange.emit($event)\\\"\\r\\n (error)=\\\"error.emit($event)\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n\\r\\n <app-detail-view\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [title]=\\\"breadcrumb_?.[0]?.label || 'Detail'\\\"\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [tabs]=\\\"tabs\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [createEditActions]=\\\"createEditActions\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n >\\r\\n </app-detail-view>\\r\\n\\r\\n</div>\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: TableModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: GenericTable, selector: \"lib-generic-table\", inputs: [\"data\", \"columns\", \"loading\", \"actions\", \"actionsPosition\", \"actionsMode\", \"first\", \"rows\", \"totalRecords\", \"sortField\", \"sortOrder\", \"globalFilterFields\", \"addButtonConfigs\", \"scrollHeight\", \"rowSelectable\", \"rowStyleFn\", \"rowClassFn\", \"disableRowCheckboxFn\", \"selection\", \"paginator\", \"showRowSelectionCheckbox\"], outputs: [\"action\", \"pageChange\", \"onAddNew\", \"rowSelect\", \"selectionChange\"] }, { kind: \"ngmodule\", type: ToolbarModule }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: DividerModule }, { kind: \"ngmodule\", type: IconFieldModule }, { kind: \"ngmodule\", type: DrawerModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: MessageModule }, { kind: \"ngmodule\", type: DialogModule }, { kind: \"component\", type: GenericDialogComponent, selector: \"app-generic-dialog\", inputs: [\"form\", \"service\", \"formFields\", \"model\", \"apiName\", \"idField\", \"dialogMaxWidth\", \"displayMode\", \"mode\", \"forceState\", \"drawerVisible\", \"dialogVisible\", \"isViewMode\", \"isEditMode\", \"useConfirmOnSave\", \"loading\", \"errorMsg\", \"errorMessage\", \"beforeSaveTransform\", \"hideTable\", \"autoShowForm\"], outputs: [\"action\", \"afterSave\", \"afterDelete\", \"beforeSave\", \"beforeDelete\", \"formCancel\", \"formInit\", \"dataLoaded\", \"selectionChange\", \"error\", \"visibleChange\"] }, { kind: \"component\", type: GenericCrudHeaderComponent, selector: \"app-generic-crud-header\", inputs: [\"mode\", \"breadcrumb\", \"isSingleItemSelected\", \"selectedItems\", \"singleActionButtons\", \"bulkActionButtons\", \"addButtonConfigs\", \"filters\", \"filterModel\", \"showSearch\", \"first\", \"rows\", \"totalRecords\", \"apiName\", \"actions\"], outputs: [\"singleItemAction\", \"bulkAction\", \"search\", \"resetSearch\", \"action\", \"paginateChange\"] }, { kind: \"component\", type: GenericViewComponent, selector: \"app-detail-view\", inputs: [\"title\", \"actions\", \"createEditActions\", \"tabs\", \"viewMode\", \"breadcrumb\", \"service\", \"formFields\", \"apiName\", \"idField\", \"standaloneMode\", \"isViewMode\", \"isCreateMode\", \"isEditMode\", \"model\", \"displayMode\", \"mode\", \"loading\"], outputs: [\"action\", \"afterDelete\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-generic-crud-table', standalone: true, imports: [\n CommonModule,\n TableModule,\n ButtonModule,\n GenericTable,\n ToolbarModule,\n TranslateModule,\n DividerModule,\n IconFieldModule,\n DrawerModule,\n ReactiveFormsModule,\n FormsModule,\n MessageModule,\n DialogModule,\n GenericDialogComponent,\n GenericCrudHeaderComponent,\n GenericViewComponent\n ], host: {\n class: ''\n }, template: \"<div\\r\\n [class]=\\\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\\\"\\r\\n>\\r\\n <app-generic-crud-header\\r\\n [mode]=\\\"mode\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [isSingleItemSelected]=\\\"isSingleItemSelected\\\"\\r\\n [selectedItems]=\\\"_selectedRows\\\"\\r\\n [singleActionButtons]=\\\"singleActionButtons\\\"\\r\\n [bulkActionButtons]=\\\"bulkActionButtons\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [filters]=\\\"filters\\\"\\r\\n [filterModel]=\\\"filterModel\\\"\\r\\n [showSearch]=\\\"showSearch\\\"\\r\\n (singleItemAction)=\\\"onSingleItemAction($event)\\\"\\r\\n (bulkAction)=\\\"onInternalBulkAction($event)\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (resetSearch)=\\\"applySearch('')\\\"\\r\\n (paginateChange)=\\\"onHeaderPaginateChange($event)\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n/>\\r\\n\\r\\n @if (!hideTable) {\\r\\n <lib-generic-table\\r\\n [data]=\\\"data\\\"\\r\\n [columns]=\\\"columns\\\"\\r\\n [paginator]=\\\"paginator\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [actionsMode]=\\\"actionsMode\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n [sortField]=\\\"sortField\\\"\\r\\n [sortOrder]=\\\"sortOrder\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [globalFilterFields]=\\\"globalFilterFields\\\"\\r\\n [scrollHeight]=\\\"scrollHeight\\\"\\r\\n [rowStyleFn]=\\\"rowStyleFn\\\"\\r\\n [rowClassFn]=\\\"rowClassFn\\\"\\r\\n [disableRowCheckboxFn]=\\\"disableRowCheckboxFn\\\"\\r\\n [showRowSelectionCheckbox]=\\\"showRowSelectionCheckbox\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (onAddNew)=\\\"action.emit({ name: 'add', row: null! })\\\"\\r\\n (pageChange)=\\\"onLazyLoad($event)\\\"\\r\\n [rowSelectable]=\\\"rowSelectable\\\"\\r\\n (rowSelect)=\\\"onRowClick($event)\\\"\\r\\n [(selection)]=\\\"_selectedRows\\\"\\r\\n #genericTable\\r\\n ></lib-generic-table>\\r\\n\\r\\n }\\r\\n\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [dialogMaxWidth]=\\\"dialogMaxWidth\\\"\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [forceState]=\\\"forceState\\\"\\r\\n [drawerVisible]=\\\"drawerVisible\\\"\\r\\n [dialogVisible]=\\\"dialogVisible\\\"\\r\\n [isViewMode]=\\\"isViewMode\\\"\\r\\n [isEditMode]=\\\"isEditMode\\\"\\r\\n [useConfirmOnSave]=\\\"useConfirmOnSave\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [errorMsg]=\\\"errorMsg\\\"\\r\\n [errorMessage]=\\\"errorMessage\\\"\\r\\n [beforeSaveTransform]=\\\"beforeSaveTransform\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (afterSave)=\\\"afterSave.emit($event);onSubmit();\\\"\\r\\n (afterDelete)=\\\"afterDelete.emit($event)\\\"\\r\\n (beforeSave)=\\\"beforeSave.emit($event)\\\"\\r\\n (beforeDelete)=\\\"beforeDelete.emit($event)\\\"\\r\\n (formCancel)=\\\"formCancel.emit()\\\"\\r\\n (formInit)=\\\"formInit.emit($event)\\\"\\r\\n (dataLoaded)=\\\"dataLoaded.emit($event)\\\"\\r\\n (selectionChange)=\\\"selectionChange.emit($event)\\\"\\r\\n (error)=\\\"error.emit($event)\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n\\r\\n <app-detail-view\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [title]=\\\"breadcrumb_?.[0]?.label || 'Detail'\\\"\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [tabs]=\\\"tabs\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [createEditActions]=\\\"createEditActions\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n >\\r\\n </app-detail-view>\\r\\n\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { genericTable: [{\n type: ViewChild,\n args: ['genericTable']\n }], dialog: [{\n type: ViewChild,\n args: ['dialog']\n }], data: [{\n type: Input\n }], formFields: [{\n type: Input\n }], columns: [{\n type: Input\n }], dialogMaxWidth: [{\n type: Input\n }], isViewMode: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], useConfirmOnSave: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], drawerVisible: [{\n type: Input\n }], dialogVisible: [{\n type: Input\n }], model: [{\n type: Input\n }], loading: [{\n type: Input\n }], errorMsg: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], actions: [{\n type: Input\n }], actionsMode: [{\n type: Input\n }], action: [{\n type: Output\n }], bulkAction: [{\n type: Output\n }], singleAction: [{\n type: Output\n }], beforeSaveTransform: [{\n type: Input\n }], afterSave: [{\n type: Output\n }], afterDelete: [{\n type: Output\n }], beforeSave: [{\n type: Output\n }], beforeDelete: [{\n type: Output\n }], formCancel: [{\n type: Output\n }], formInit: [{\n type: Output\n }], dataLoaded: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], error: [{\n type: Output\n }], filters: [{\n type: Input\n }], filterModel: [{\n type: Input\n }], search: [{\n type: Output\n }], showSearch: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], onSearch: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }], rowSelectable: [{\n type: Input\n }], rowSelect: [{\n type: Output\n }], scrollHeight: [{\n type: Input\n }], paginator: [{\n type: Input\n }], service: [{\n type: Input\n }], apiName: [{\n type: Input\n }], idField: [{\n type: Input\n }], showRowSelectionCheckbox: [{\n type: Input\n }], showAddButton: [{\n type: Input\n }], addPermissionName: [{\n type: Input\n }], addButtonConfigs: [{\n type: Input\n }], createEditActions: [{\n type: Input\n }], supportSubPage: [{\n type: Input\n }], tabs: [{\n type: Input\n }], bulkActionButtons: [{\n type: Input\n }], singleActionButtons: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], mode: [{\n type: Input\n }], forceState: [{\n type: Input\n }], hideTable: [{\n type: Input\n }], autoShowForm: [{\n type: Input\n }], rowStyleFn: [{\n type: Input\n }], rowClassFn: [{\n type: Input\n }], disableRowCheckboxFn: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvbGliL2dlbmVyaWMtY3J1ZC10YWJsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtdGFibGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFDeEQscURBQXFEO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTyxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFRLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEYsT0FB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c0JBQVosS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sWUFBWTtzQkFBeEIsS0FBSztnQkFJRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXggKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmUgKi9cclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lc3NhZ2VNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lc3NhZ2UnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IFBhZ2luYXRvclN0YXRlIH0gZnJvbSAncHJpbWVuZy9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSxUYWJsZUxhenlMb2FkRXZlbnQgIH0gIGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBUb29sYmFyTW9kdWxlIH0gICBmcm9tICdwcmltZW5nL3Rvb2xiYXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEljb25GaWVsZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaWNvbmZpZWxkJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERyYXdlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJhd2VyJztcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCdXR0b25Db25maWcgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBY3Rpb25EZWYgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgR2VuZXJpY0NydWRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyaWMtY3J1ZC1oZWFkZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgR2VuZXJpY1RhYmxlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtdGFibGUnO1xyXG5pbXBvcnQgeyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtZGlhbG9nJztcclxuaW1wb3J0IHsgRGV0YWlsVGFiLCBHZW5lcmljVmlld0NvbXBvbmVudCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLXZpZXcnO1xyXG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUNoYW5nZVBheWxvYWQgZXh0ZW5kcyBQYWdpbmF0b3JTdGF0ZSB7XHJcbnNvcnQ/OiBzdHJpbmc7XHJcbmZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25zTW9kZSA9ICdidXR0b25zJyB8ICdtZW51JztcclxuXHJcbi8qKlxyXG4gKiDZhdmD2YjZhiDYrNiv2YjZhCBDUlVEINi52KfZhSDZitmF2YPZhiDYpdi52KfYr9ipINin2LPYqtiu2K/Yp9mF2YdcclxuICog2YrYr9i52YUg2KfZhNi52YXZhNmK2KfYqiDYp9mE2KPYs9in2LPZitipOiDYpdmG2LTYp9ih2Iwg2YLYsdin2KHYqdiMINiq2K3Yr9mK2KvYjCDYrdiw2YFcclxuICog2YXYuSDYpdmF2YPYp9mG2YrYqSDYp9mE2KrYrti12YrYtSDYudio2LEg2LnYr9ipINij2YjYttin2Lkg2YjYudix2LZcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyaWMtY3J1ZC10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIEdlbmVyaWNUYWJsZSxcclxuICAgIFRvb2xiYXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBEaXZpZGVyTW9kdWxlLFxyXG4gICAgSWNvbkZpZWxkTW9kdWxlLFxyXG4gICAgRHJhd2VyTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWVzc2FnZU1vZHVsZSxcclxuICAgIERpYWxvZ01vZHVsZSxcclxuICAgIEdlbmVyaWNEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZW5lcmljQ3J1ZEhlYWRlckNvbXBvbmVudCxcclxuICAgIEdlbmVyaWNWaWV3Q29tcG9uZW50XHJcbl0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtY3J1ZC10YWJsZS5odG1sJyxcclxuICAgaG9zdDoge1xyXG4gICAgICAgIGNsYXNzOiAnJ1xyXG4gICAgfSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljQ3J1ZFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuIEBWaWV3Q2hpbGQoJ2dlbmVyaWNUYWJsZScpIGdlbmVyaWNUYWJsZSE6IEdlbmVyaWNUYWJsZTxUPjtcclxuIEBWaWV3Q2hpbGQoJ2RpYWxvZycpIGRpYWxvZyE6IEdlbmVyaWNEaWFsb2dDb21wb25lbnQ7XHJcbiB0cmFuc2xhdGU6VHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuIHByaXZhdGUgc3dhbFNlcnZpY2UgPSBpbmplY3QoU3dhbFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcXVlcnlCdWlsZGVyID0gaW5qZWN0KFF1ZXJ5QnVpbGRlclNlcnZpY2UpO1xyXG5cclxuICAgIGhvbWU6IE1lbnVJdGVtIHwgdW5kZWZpbmVkID0geyBpY29uOiAncGkgcGktaG9tZScsIHJvdXRlckxpbms6ICcvJyB9O1xyXG4gIEBJbnB1dCgpIGRhdGE6IFRbXSA9IFtdO1xyXG4gICBmb3JtRmllbGRzXzogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdOyAgLy8gPC0tINmH2YbYp1xyXG4gIEBJbnB1dCgpIGZvcm1GaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTsgIC8vIDwtLSDZh9mG2KdcclxuICBASW5wdXQoKSBjb2x1bW5zOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107ICAvLyA8LS0g2YfZhtinXHJcbiAgQElucHV0KCkgZGlhbG9nTWF4V2lkdGggPSAnNDByZW0nOyAvLyB1bnNldCAsIGZpdC1jb250ZW50XHJcbiAgQElucHV0KCkgaXNWaWV3TW9kZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzcGxheU1vZGU6XHJcbiAgICB8ICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSdcclxuICAgIHwgUGFydGlhbDxSZWNvcmQ8J2FkZCcgfCAnZWRpdCcgfCAndmlldycsICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSc+PlxyXG4gICAgPSAnZHJhd2VyJztcclxuICBASW5wdXQoKSB1c2VDb25maXJtT25TYXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRyYXdlclZpc2libGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaWFsb2dWaXNpYmxlID0gZmFsc2U7XHJcbiAgIGZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcbiBASW5wdXQoKSBtb2RlbDogYW55O1xyXG4gIG1vZGVsXzogYW55ID0ge307XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVycm9yTXNnID0gJyc7XHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmd8YW55ID0gJyc7XHJcblxyXG5vcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHt9O1xyXG5cclxuICBASW5wdXQoKSBhY3Rpb25zOiBBY3Rpb25EZWY8VD5bXSA9IFtdO1xyXG4gICAgLyoqINiq2K3Yr9ivINi32LHZitmC2Kkg2KfZhNi52LHYtjogJ2J1dHRvbnMnINij2YggJ21lbnUnICovXHJcbiAgQElucHV0KCkgYWN0aW9uc01vZGU6IEFjdGlvbnNNb2RlID0gJ2J1dHRvbnMnO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IFQgfT4oKTtcclxuICBAT3V0cHV0KCkgYnVsa0FjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IGl0ZW1zOiBUW10gfT4oKTtcclxuICBAT3V0cHV0KCkgc2luZ2xlQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IG5hbWU6IHN0cmluZzsgaXRlbTogVCB9PigpO1xyXG4gIEBJbnB1dCgpIGJlZm9yZVNhdmVUcmFuc2Zvcm0/OiAocmVjb3JkOiBhbnksIGlzRWRpdDogYm9vbGVhbikgPT4gYW55OyAvLyDimqEg2K/ZiNin2YQg2YXYrti12LXYqSDZgtio2YQg2KfZhNit2YHYuFxyXG5cclxuXHJcbiAgIEBPdXRwdXQoKSBhZnRlclNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBUOyBpc0VkaXQ6IGJvb2xlYW47IHJlc3BvbnNlPzogYW55IH0+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogVDsgcmVzcG9uc2U/OiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgYmVmb3JlU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IFQ7IGlzRWRpdDogYm9vbGVhbiB9PigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBUIH0+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZvcm06IFVudHlwZWRGb3JtR3JvdXA7IG1vZGVsOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgZGF0YUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBUW107IHRvdGFsOiBudW1iZXIgfT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHNlbGVjdGVkOiBUW107IHNlbGVjdGVkQ291bnQ6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8eyBlcnJvcjogYW55OyBjb250ZXh0OiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgLy8g2KfZhNio2K3Yq1xyXG4vLyBTZWFyY2hcclxuICBASW5wdXQoKSBmaWx0ZXJzOiBhbnk7XHJcbiAgIEBJbnB1dCgpIGZpbHRlck1vZGVsOiBhbnkgPSB7fTtcclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBzdHJpbmc7IGdsb2JhbDogc3RyaW5nIH0+KCk7XHJcblxyXG4vKiog2YTZhNiq2K3Zg9mFINio2KXYuNmH2KfYsS/Ypdiu2YHYp9ihINmC2LPZhSDYp9mE2KjYrdirICovXHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaCA9IHRydWU7XHJcblxyXG4gIC8qKiBQYWdpbmF0aW9uIElucHV0cyAqL1xyXG4gIEBJbnB1dCgpIGZpcnN0ID0gMDtcclxuICBASW5wdXQoKSByb3dzID0gMTA7XHJcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzID0gMDtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUNoYW5nZVBheWxvYWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5AT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpOztcclxuLy8gQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgIC8qKiDZhNis2LnZhCDYp9mE2KzYr9mI2YQg2YLYp9io2YQg2YTYp9iu2KrZitin2LEg2KfZhNi12YHZiNmBICjYp9mB2KrYsdin2LbZiiBmYWxzZSkgKi9cclxuICBASW5wdXQoKSByb3dTZWxlY3RhYmxlID0gZmFsc2U7XHJcbiAgLyoqINit2K/YqyDZitiu2LHYrCDYp9mE2LXZgSDYp9mE2YXYrdiv2ZHYryAqL1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcblxyXG4gIHNlbGVjdGlvbjogVCB8IG51bGwgPSBudWxsO1xyXG5cclxuIC8vINin2YTZgdix2LJcclxuICBzb3J0RmllbGQ/OiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyOiAxIHwgLTEgPSAxO1xyXG5cclxuQElucHV0KCkgc2Nyb2xsSGVpZ2h0ID0gJzQwMHB4JztcclxuXHJcbiBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlO1xyXG5cclxuQElucHV0KCkgc2VydmljZTogQmFzZVNlcnZpY2UgPSBpbmplY3QoQmFzZVNlcnZpY2UpO1xyXG5ASW5wdXQoKSBhcGlOYW1lID0gJyc7XHJcbkBJbnB1dCgpIGlkRmllbGQgPSAnaWQnO1xyXG5cclxuIEBJbnB1dCgpIHNob3dSb3dTZWxlY3Rpb25DaGVja2JveCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzaG93QWRkQnV0dG9uID0gdHJ1ZTtcclxuXHJcbkBJbnB1dCgpIGFkZFBlcm1pc3Npb25OYW1lPzpzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGFkZEJ1dHRvbkNvbmZpZ3M6IEJ1dHRvbkNvbmZpZ1tdID0gW1xyXG4gIHtcclxuICAgIGljb246ICdwaSBwaS1wbHVzJyxcclxuICAgIGxhYmVsOiAnQUREJyxcclxuICAgIHZhcmlhbnQ6ICdyYWlzZWQnLFxyXG4gICAgc2V2ZXJpdHk6ICdwcmltYXJ5JyxcclxuICAgIHNpemU6ICdzbWFsbCcsXHJcbiAgICBhY3Rpb25OYW1lOiAnYWRkJyxcclxuICAgIHZpc2libGU6IHRoaXMuc2hvd0FkZEJ1dHRvbixcclxuICAgIHBlcm1pc3Npb246IHRoaXMuYWRkUGVybWlzc2lvbk5hbWUsXHJcbiAgfSxcclxuXTtcclxuXHJcbiBASW5wdXQoKSBjcmVhdGVFZGl0QWN0aW9uczogQnV0dG9uQ29uZmlnW10gPSBbXHJcbiAge1xyXG4gICAgaWNvbjogJ3BpIHBpLWNoZWNrJyxcclxuICAgIGxhYmVsOiAnU0FWRScsXHJcbiAgICB2YXJpYW50OiAncmFpc2VkJyxcclxuICAgIHNldmVyaXR5OiAncHJpbWFyeScsXHJcbiAgICBzaXplOiAnc21hbGwnLFxyXG4gICAgYWN0aW9uTmFtZTogJ3NhdmUnLFxyXG4gICAgdHlwZTogJ3N1Ym1pdCcsXHJcbiAgICBzcGxpdEFjdGlvbnM6IFtcclxuICAgICB7XHJcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdTQVZFX0FORF9BREQnKSxcclxuICAgICAgaWNvbjogJ3BpIHBpLXNhdmUnLFxyXG4gICAgICAgYWN0aW9uTmFtZTogJ3NhdmVBbmRBZGQnXHJcbiAgICB9XHJcbiAgXVxyXG4gIH0sXHJcbiAgIHtcclxuICAgIGljb246ICdwaSBwaS10aW1lcycsXHJcbiAgICBsYWJlbDogJ0NBTkNFTCcsXHJcbiAgICB2YXJpYW50OiAncmFpc2VkJyxcclxuICAgIHNldmVyaXR5OiAnZGFuZ2VyJyxcclxuICAgIHNpemU6ICdzbWFsbCcsXHJcbiAgICBhY3Rpb25OYW1lOiAnY2FuY2VsJyxcclxuICAgIHR5cGU6ICdidXR0b24nLFxyXG4gIH0sXHJcbl07XHJcblxyXG4gQElucHV0KCkgc3VwcG9ydFN1YlBhZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuIEBJbnB1dCgpIHRhYnM6IERldGFpbFRhYltdID0gW107XHJcbiAgQElucHV0KCkgYnVsa0FjdGlvbkJ1dHRvbnM6IEJ1dHRvbkNvbmZpZ1tdID0gW107XHJcbiAgQElucHV0KCkgc2luZ2xlQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuXHJcbiBfc2VsZWN0ZWRSb3dzOiBUW10gPSBbXTtcclxuXHJcbmdldCBpc1NpbmdsZUl0ZW1TZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PT0gMTtcclxufVxyXG5cclxuZ2V0IGlzTXVsdGlwbGVJdGVtU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUm93cy5sZW5ndGggPiAxO1xyXG59XHJcblxyXG5nZXQgc2VsZWN0ZWRJdGVtcygpOiBUW10ge1xyXG4gIHJldHVybiB0aGlzLl9zZWxlY3RlZFJvd3M7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5ASW5wdXQoKSBicmVhZGNydW1iOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuXHJcbmdldCBicmVhZGNydW1iXygpOiBNZW51SXRlbVtdIHwgdW5kZWZpbmVkIHtcclxuICByZXR1cm4gdGhpcy5icmVhZGNydW1iPy5tYXAodiA9PiAoe1xyXG4gICAgLi4udixcclxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHYubGFiZWwgPz8gJycpXHJcbiAgfSkpO1xyXG59XHJcbmdldCBydGwoKTogYm9vbGVhbiB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBkb2N1bWVudD8uZG9jdW1lbnRFbGVtZW50Py5kaXIgPT09ICdydGwnO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbiAvKipcclxuICAgKiBNb2RlcyB0byBjb250cm9sIHdoYXQgcGFydHMgb2YgdGhlIGNvbXBvbmVudCBhcmUgdmlzaWJsZVxyXG4gICAqIC0gJ2Z1bGwnOiBUYWJsZSArIENSVUQgb3BlcmF0aW9ucyAoZGVmYXVsdClcclxuICAgKiAtICdmb3JtLW9ubHknOiBPbmx5IHNob3cgZm9ybSAoZm9yIGNyZWF0ZS9lZGl0L3ZpZXcpXHJcbiAgICogLSAndGFibGUtb25seSc6IE9ubHkgc2hvdyB0YWJsZSAocmVhZC1vbmx5IG1vZGUpXHJcbiAgICovXHJcbiAgQElucHV0KCkgbW9kZTogJ2Z1bGwnIHwgJ2Zvcm0tb25seScgfCAndGFibGUtb25seScgfCAnZGV0YWlsJyA9ICdmdWxsJztcclxuXHJcbiAgLyoqIEZvcmNlIHRoZSBjb21wb25lbnQgdG8gc2hvdyBzcGVjaWZpYyBzdGF0ZSAqL1xyXG4gIEBJbnB1dCgpIGZvcmNlU3RhdGU6ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBIaWRlIHRhYmxlIGNvbXBsZXRlbHkgd2hlbiBpbiBmb3JtLW9ubHkgbW9kZSAqL1xyXG4gIEBJbnB1dCgpIGdldCBoaWRlVGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScgfHwgdGhpcy5tb2RlID09PSAnZGV0YWlsJyB8fCAodGhpcy5mb3JjZVN0YXRlICYmIHRoaXMubW9kZSAhPT0gJ3RhYmxlLW9ubHknKSApPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKiogQXV0by1zaG93IGZvcm0gd2hlbiBpbiBmb3JtLW9ubHkgbW9kZSB3aXRoIGZvcmNlU3RhdGUgKi9cclxuICBASW5wdXQoKSBnZXQgYXV0b1Nob3dGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgISF0aGlzLmZvcmNlU3RhdGU7XHJcbiAgfVxyXG4vL9mE2KrYutmK2YrYsSDZhNmI2YYg2LXZgSDZhdi52YrZkdmGXHJcbiAgQElucHV0KCkgcm93U3R5bGVGbj86IChyb3c6IFQpID0+IGFueTtcclxuXHJcbiAgLy8g4pyFINmE2KrYudmK2YrZhiDZg9mE2KfYsyBDU1Mg2KPZiCBUYWlsd2luZCDYudmE2Ykg2KfZhNi12YFcclxuICBASW5wdXQoKSByb3dDbGFzc0ZuPzogKHJvdzogVCkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBTZXQ8c3RyaW5nPjtcclxuXHJcbiAgLy/Yotiu2LEg2YTYqtis2YXZitivIC8g2KrYudi32YrZhCBjaGVja2JveCDYp9mE2KfYrtiq2YrYp9ixXHJcbiAgQElucHV0KCkgZGlzYWJsZVJvd0NoZWNrYm94Rm4/OiAocm93OiBUKSA9PiBib29sZWFuO1xyXG4gdGFibGVDbGFzcyA9ICdoLWZ1bGwgZmxleC0xIGZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItc3VyZmFjZSByb3VuZGVkLTJ4bCB4czpyb3VuZGVkLTJ4bCBwLTQgYmctd2hpdGUnO1xyXG5cclxuIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG5wcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5jdXJyZW50SWQ/OiBzdHJpbmcgfCBudW1iZXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYodGhpcy5hcGlOYW1lICYmIHRoaXMuYXBpTmFtZSAhPSAnJyl7XHJcbiAgICAgIHRoaXMuc2VydmljZS5hcGlOYW1lID0gdGhpcy5hcGlOYW1lIDtcclxuICAgIH1cclxuICAgICBpZiAodGhpcy5hcGlOYW1lKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuYXBpTmFtZSA9IHRoaXMuYXBpTmFtZTtcclxuICB9XHJcblxyXG4gIGlmKHRoaXMudGFicy5sZW5ndGggPT0gMCl7XHJcbiAgICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gICAgdGhpcy50YWJzLnB1c2goeyBoZWFkZXI6ICfYp9mE2KrZgdin2LXZitmEJyxpY29uOidwaSBwaS1pbmZvLWNpcmNsZScsIGZpZWxkczogdGhpcy5mb3JtRmllbGRzXywgbW9kZWw6IHRoaXMubW9kZWwgfSk7XHJcbiAgfVxyXG4gICAgaWYgKHRoaXMuc3VwcG9ydFN1YlBhZ2UpIHtcclxuICB0aGlzLnJvdXRlLnBhcmFtTWFwLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgY29uc3QgaWQgPSBwYXJhbXMuZ2V0KHRoaXMuaWRGaWVsZCk7XHJcbiAgICBpZiAoaWQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50SWQgPSBpZDtcclxuICAgICAgdGhpcy5tb2RlID0gJ2RldGFpbCc7XHJcbiAgICAgIHRoaXMubG9hZERldGFpbChpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4gIH1cclxuXHJcbiAgIC8vIDMuIEhhbmRsZSBIZWFkZXIncyBQYWdpbmF0ZSBDaGFuZ2UgRXZlbnRcclxuICBvbkhlYWRlclBhZ2luYXRlQ2hhbmdlKGV2ZW50OiB7IGZpcnN0OiBudW1iZXI7IHJvd3M6IG51bWJlciB9KSB7XHJcbiAgICB0aGlzLmZpcnN0ID0gZXZlbnQuZmlyc3Q7IC8vIFVwZGF0ZSB0aGUgJ2ZpcnN0JyBpbmRleFxyXG4gICAgdGhpcy5yb3dzID0gZXZlbnQucm93cztcclxuXHJcblxyXG4gICAgICAgY29uc3QgbGF6eUxvYWRFdmVudDogVGFibGVMYXp5TG9hZEV2ZW50ID0ge1xyXG4gICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxyXG4gICAgICAgIHJvd3M6IHRoaXMucm93cyxcclxuICAgICAgICAvLyBZb3UnZCB0eXBpY2FsbHkgaW5jbHVkZSBjdXJyZW50IHNvcnRpbmcgYW5kIGZpbHRlcmluZyBzdGF0ZSBoZXJlXHJcbiAgICAgICAgc29ydEZpZWxkOiB0aGlzLnNvcnRGaWVsZCxcclxuICAgICAgICBzb3J0T3JkZXI6IDEsXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5maWx0ZXJzICxcclxuICAgICAgICBnbG9iYWxGaWx0ZXI6IG51bGwsIC8vIG9yIHlvdXIgY3VycmVudCBnbG9iYWwgZmlsdGVyIHZhbHVlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vbkxhenlMb2FkKGxhenlMb2FkRXZlbnQpO1xyXG4gIH1cclxuICBsb2FkRGV0YWlsKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICB0aGlzLnNlcnZpY2UuZ2V0KGlkIGFzIGFueSkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IHJlcyA9PiB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSByZXM7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8vIEhlbHBlciBtZXRob2QgdG8gb3BlbiBmb3JtIHByb2dyYW1tYXRpY2FsbHlcclxub3BlbkZvcm0obW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgfCAndmlldycsIG1vZGVsPzogYW55KSB7XHJcbiAgdGhpcy5kaWFsb2cub3BlbkZvcm0obW9kZSxtb2RlbCk7XHJcbn1cclxuXHJcblxyXG4vLyAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAvKiog2KfZhNii2YYg2YrYqtmE2YLZkdmJIHBhZ2luYXRpb24gKyBzb3J0INmB2Yog2K3Yr9irINmI2KfYrdivICovXHJcbm9uTGF6eUxvYWQoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCkge1xyXG4gIC8vIHRoaXMubW9kZWxfPSB0aGlzLm1vZGVsID8/IHt9O1xyXG5cclxuICB0aGlzLm1vZGVsPSB0aGlzLm1vZGVsID8/IHt9O1xyXG5cclxuICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gIGNvbnN0IGZpcnN0ICAgICA9IGV2ZW50LmZpcnN0ICA/PyB0aGlzLmZpcnN0O1xyXG4gIGNvbnN0IHJvd3MgICAgICA9IGV2ZW50LnJvd3MgICA/PyB0aGlzLnJvd3M7XHJcbiAgY29uc3Qgc29ydEZpZWxkID0gdHlwZW9mIGV2ZW50LnNvcnRGaWVsZCA9PT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgICA/IGV2ZW50LnNvcnRGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5zb3J0RmllbGQ7XHJcbiAgY29uc3Qgc29ydE9yZGVyID0gZXZlbnQuc29ydE9yZGVyID09PSAtMSA/IC0xIDogMTtcclxuXHJcblxyXG4gIGNvbnN0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgIGlmIChldmVudC5maWx0ZXJzKSB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKGV2ZW50LmZpbHRlcnMpLmZvckVhY2goKFtmaWVsZCwgbWV0YV0pID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IChtZXRhIGFzIGFueSkudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XHJcbiAgICAgICAgICBmaWx0ZXJzW2ZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHF1ZXJ5U3RyaW5nID0gJyc7XHJcbiAgICAvLyBEZWZhdWx0IHF1ZXJ5XHJcbiAgaWYoIWZpbHRlcnNbJ3F1ZXJ5J10pe1xyXG4gICAgICAgLy8gVXNlIHRoZSBuZXcgUXVlcnlCdWlsZGVyU2VydmljZSBtZXRob2RzXHJcbiAgICBjb25zdCBvZGF0YVBhcmFtcyA9IHRoaXMucXVlcnlCdWlsZGVyLmJ1aWxkT0RhdGFGcm9tUXVlcnlNb2RlbCh0aGlzLmZpbHRlck1vZGVsLCB0aGlzLmZvcm1GaWVsZHNfKTtcclxuICAgIC8vIHRoaXMub2RhdGFTZWFyY2guZW1pdChvZGF0YVBhcmFtcyk7XHJcblxyXG4gICAgLy8gR2VuZXJhdGUgcXVlcnkgc3RyaW5nIHVzaW5nIHRoZSB1bmlmaWVkIG1ldGhvZFxyXG4gICAgIHF1ZXJ5U3RyaW5nID0gdGhpcy5xdWVyeUJ1aWxkZXIudG9PRGF0YVF1ZXJ5U3RyaW5nKG9kYXRhUGFyYW1zKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdPRGF0YSBRdWVyeSBTdHJpbmc6JywgcXVlcnlTdHJpbmcpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICB0aGlzLmZpcnN0ICAgICA9IGZpcnN0O1xyXG4gIHRoaXMucm93cyAgICAgID0gcm93cztcclxuICB0aGlzLnNvcnRGaWVsZCA9IHNvcnRGaWVsZDtcclxuICB0aGlzLnNvcnRPcmRlciA9IHNvcnRPcmRlciBhcyAxfCAtMTtcclxuY29uc3QgZGlyID0gc29ydE9yZGVyID09PSAxID8gJ2FzYycgOiAnZGVzYyc7XHJcbiBjb25zdCBzb3J0ID0gc29ydEZpZWxkID8gYCR7c29ydEZpZWxkfSAke2Rpcn1gIDogdW5kZWZpbmVkO1xyXG5cclxuICAvLyB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IGZpcnN0LCByb3dzICxzb3J0LCBmaWx0ZXJzIH0pO1xyXG4gICB0aGlzLmFwcGx5U2VhcmNoKFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsdGVyOnRoaXMubW9kZWxbJ2ZpbHRlciddLFxyXG4gICAgICAgIHF1ZXJ5OnF1ZXJ5U3RyaW5nLFxyXG4gICAgICAgIHNvcnRpbmc6c29ydCxcclxuICAgICAgICBza2lwQ291bnQ6Zmlyc3QsXHJcbiAgICAgICAgbWF4UmVzdWx0Q291bnQ6cm93cyxcclxuXHJcbiAgICB9XHJcbiAgKTtcclxuXHJcblxyXG4gIC8vINmK2KjZhtmKINin2YTZhti1INmI2KXYsdiz2KfZhNmHXHJcblxyXG59XHJcblxyXG5cclxuICAvKiog2KrYtdmK2YrYsSDYp9mE2KjZitin2YbYp9iqINit2LPYqCDYp9mE2LXZgdit2KkgKi9cclxuICBnZXQgcGFnZWREYXRhKCk6IFRbXSB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5kYXRhID8gdGhpcy5kYXRhLnNsaWNlKHRoaXMuZmlyc3QsIHRoaXMuZmlyc3QgKyB0aGlzLnJvd3MpIDogW107XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcclxuICB9XHJcblxyXG5cclxuXHJcbmdldCBnbG9iYWxGaWx0ZXJGaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gIHJldHVybiB0aGlzLmNvbHVtbnMubWFwKGMgPT4gU3RyaW5nKGMua2V5KSk7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8qKiDYo9ix2LPZhCDYpdmE2Ykg2KfZhNij2Kgg2YTYo9iq2YXYqtipINi02YPZhCDYp9mE2KjYrdirINil2LDYpyDZitit2KrYp9isICovXHJcbi8vIGZyb20gZ2VuZXJpYy1jcnVkLXRhYmxlLmNvbXBvbmVudC50c1xyXG5cclxuLyoqINio2K/ZkdmEIGFwcGx5U2VhcmNoINmE2KrYqNirIHBhZ2VDaGFuZ2Ug2YXYqNin2LTYsdip2YsgKi9cclxuIGFwcGx5U2VhcmNoKGZpbHRlcnM6IGFueSkge1xyXG4gICAgLy8gdGhpcy5nZW5lcmljVGFibGUuYXBwbHlGaWx0ZXIoZ2xvYmFsKTtcclxuICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGZpbHRlcnMpO1xyXG4gIH1cclxuXHJcblxyXG4gLyoqINiv2KfZhNipINiq2YbZgdmR2LAg2LnZhtivINin2YTZhtmC2LEg2LnZhNmJINi12YEgKi9cclxuICBvblJvd0NsaWNrKHJvdzogVCkge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSkge1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdC5lbWl0KHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG5vblN1Ym1pdCgpIHtcclxuIGlmICh0aGlzLm1vZGUgIT0gJ2Zvcm0tb25seScpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLmFwcGx5U2VhcmNoKCcnKTtcclxuICAgICAgICB9XHJcbn1cclxuXHJcbiAgICAgdHJhY2tCeUlkeChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBudW1iZXIge1xyXG4gIHJldHVybiBpbmRleDtcclxuIH1cclxuXHJcbm9uU2luZ2xlSXRlbUFjdGlvbihidG46IEJ1dHRvbkNvbmZpZyk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5pc1NpbmdsZUl0ZW1TZWxlY3RlZCkgcmV0dXJuO1xyXG5cclxuICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9zZWxlY3RlZFJvd3NbMF07XHJcbiAgdGhpcy5zaW5nbGVBY3Rpb24uZW1pdCh7XHJcbiAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnc2luZ2xlQWN0aW9uJyxcclxuICAgIGl0ZW06IHNlbGVjdGVkSXRlbVxyXG4gIH0pO1xyXG59XHJcblxyXG5vbkludGVybmFsQnVsa0FjdGlvbihidG46IEJ1dHRvbkNvbmZpZyk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5pc011bHRpcGxlSXRlbVNlbGVjdGVkKSByZXR1cm47XHJcblxyXG4gIHRoaXMuYnVsa0FjdGlvbi5lbWl0KHtcclxuICAgIG5hbWU6IGJ0bi5hY3Rpb25OYW1lID8/ICdidWxrQWN0aW9uJyxcclxuICAgIGl0ZW1zOiBbLi4udGhpcy5fc2VsZWN0ZWRSb3dzXSAgLy8g2YbYsdiz2YQg2YbYs9iu2Kkg2YXZhiDYp9mE2YXYtdmB2YjZgdipXHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG59XHJcbiIsIjxkaXZcclxuICBbY2xhc3NdPVwibW9kZSAhPT0gJ2Zvcm0tb25seScgJiYgbW9kZSAhPT0gJ2RldGFpbCcgID8gdGFibGVDbGFzcyA6ICcnXCJcclxuPlxyXG4gPGFwcC1nZW5lcmljLWNydWQtaGVhZGVyXHJcbiAgW21vZGVdPVwibW9kZVwiXHJcbiAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYl9cIlxyXG4gIFtpc1NpbmdsZUl0ZW1TZWxlY3RlZF09XCJpc1NpbmdsZUl0ZW1TZWxlY3RlZFwiXHJcbiAgW3NlbGVjdGVkSXRlbXNdPVwiX3NlbGVjdGVkUm93c1wiXHJcbiAgW3NpbmdsZUFjdGlvbkJ1dHRvbnNdPVwic2luZ2xlQWN0aW9uQnV0dG9uc1wiXHJcbiAgW2J1bGtBY3Rpb25CdXR0b25zXT1cImJ1bGtBY3Rpb25CdXR0b25zXCJcclxuICBbYWRkQnV0dG9uQ29uZmlnc109XCJhZGRCdXR0b25Db25maWdzXCJcclxuICBbYXBpTmFtZV09XCJzZXJ2aWNlLmFwaU5hbWVcIlxyXG4gIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gIFtmaWx0ZXJNb2RlbF09XCJmaWx0ZXJNb2RlbFwiXHJcbiAgW3Nob3dTZWFyY2hdPVwic2hvd1NlYXJjaFwiXHJcbiAgKHNpbmdsZUl0ZW1BY3Rpb24pPVwib25TaW5nbGVJdGVtQWN0aW9uKCRldmVudClcIlxyXG4gIChidWxrQWN0aW9uKT1cIm9uSW50ZXJuYWxCdWxrQWN0aW9uKCRldmVudClcIlxyXG4gIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgKHNlYXJjaCk9XCJhcHBseVNlYXJjaCgkZXZlbnQpXCJcclxuICAocmVzZXRTZWFyY2gpPVwiYXBwbHlTZWFyY2goJycpXCJcclxuICAocGFnaW5hdGVDaGFuZ2UpPVwib25IZWFkZXJQYWdpbmF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICBbZmlyc3RdPVwiZmlyc3RcIlxyXG4gIFtyb3dzXT1cInJvd3NcIlxyXG4gIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuLz5cclxuXHJcbiAgIEBpZiAoIWhpZGVUYWJsZSkge1xyXG4gIDxsaWItZ2VuZXJpYy10YWJsZVxyXG4gICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcclxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXHJcbiAgICBbYWN0aW9uc01vZGVdPVwiYWN0aW9uc01vZGVcIlxyXG4gICAgW2ZpcnN0XT1cImZpcnN0XCJcclxuICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4gICAgW3NvcnRGaWVsZF09XCJzb3J0RmllbGRcIlxyXG4gICAgW3NvcnRPcmRlcl09XCJzb3J0T3JkZXJcIlxyXG4gICAgW2FkZEJ1dHRvbkNvbmZpZ3NdPVwiYWRkQnV0dG9uQ29uZmlnc1wiXHJcbiAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiXHJcbiAgICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXHJcbiAgICBbcm93U3R5bGVGbl09XCJyb3dTdHlsZUZuXCJcclxuICAgIFtyb3dDbGFzc0ZuXT1cInJvd0NsYXNzRm5cIlxyXG4gICAgW2Rpc2FibGVSb3dDaGVja2JveEZuXT1cImRpc2FibGVSb3dDaGVja2JveEZuXCJcclxuICAgIFtzaG93Um93U2VsZWN0aW9uQ2hlY2tib3hdPVwic2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94XCJcclxuICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAob25BZGROZXcpPVwiYWN0aW9uLmVtaXQoeyBuYW1lOiAnYWRkJywgcm93OiBudWxsISB9KVwiXHJcbiAgICAocGFnZUNoYW5nZSk9XCJvbkxhenlMb2FkKCRldmVudClcIlxyXG4gICAgW3Jvd1NlbGVjdGFibGVdPVwicm93U2VsZWN0YWJsZVwiXHJcbiAgICAocm93U2VsZWN0KT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgICBbKHNlbGVjdGlvbildPVwiX3NlbGVjdGVkUm93c1wiXHJcbiAgICAjZ2VuZXJpY1RhYmxlXHJcbiAgPjwvbGliLWdlbmVyaWMtdGFibGU+XHJcblxyXG4gIH1cclxuXHJcbiAgPGFwcC1nZW5lcmljLWRpYWxvZ1xyXG4gICAgI2RpYWxvZ1xyXG4gICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxyXG4gICBbYXBpTmFtZV09XCJzZXJ2aWNlLmFwaU5hbWVcIlxyXG4gICAgW2Zvcm1GaWVsZHNdPVwiZm9ybUZpZWxkc1wiXHJcbiAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgW2FwaU5hbWVdPVwiYXBpTmFtZVwiXHJcbiAgICBbaWRGaWVsZF09XCJpZEZpZWxkXCJcclxuICAgIFtkaWFsb2dNYXhXaWR0aF09XCJkaWFsb2dNYXhXaWR0aFwiXHJcbiAgICBbZGlzcGxheU1vZGVdPVwiZGlzcGxheU1vZGVcIlxyXG4gICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICBbZm9yY2VTdGF0ZV09XCJmb3JjZVN0YXRlXCJcclxuICAgIFtkcmF3ZXJWaXNpYmxlXT1cImRyYXdlclZpc2libGVcIlxyXG4gICAgW2RpYWxvZ1Zpc2libGVdPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgICBbaXNWaWV3TW9kZV09XCJpc1ZpZXdNb2RlXCJcclxuICAgIFtpc0VkaXRNb2RlXT1cImlzRWRpdE1vZGVcIlxyXG4gICAgW3VzZUNvbmZpcm1PblNhdmVdPVwidXNlQ29uZmlybU9uU2F2ZVwiXHJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgIFtlcnJvck1zZ109XCJlcnJvck1zZ1wiXHJcbiAgICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiXHJcbiAgICBbYmVmb3JlU2F2ZVRyYW5zZm9ybV09XCJiZWZvcmVTYXZlVHJhbnNmb3JtXCJcclxuICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYWZ0ZXJTYXZlKT1cImFmdGVyU2F2ZS5lbWl0KCRldmVudCk7b25TdWJtaXQoKTtcIlxyXG4gICAgKGFmdGVyRGVsZXRlKT1cImFmdGVyRGVsZXRlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmVmb3JlU2F2ZSk9XCJiZWZvcmVTYXZlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmVmb3JlRGVsZXRlKT1cImJlZm9yZURlbGV0ZS5lbWl0KCRldmVudClcIlxyXG4gICAgKGZvcm1DYW5jZWwpPVwiZm9ybUNhbmNlbC5lbWl0KClcIlxyXG4gICAgKGZvcm1Jbml0KT1cImZvcm1Jbml0LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZGF0YUxvYWRlZCk9XCJkYXRhTG9hZGVkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgKGVycm9yKT1cImVycm9yLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAodmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvYXBwLWdlbmVyaWMtZGlhbG9nPlxyXG5cclxuICAgPGFwcC1kZXRhaWwtdmlld1xyXG4gICAgW2Rpc3BsYXlNb2RlXT1cImRpc3BsYXlNb2RlXCJcclxuICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgW3RpdGxlXT1cImJyZWFkY3J1bWJfPy5bMF0/LmxhYmVsIHx8ICdEZXRhaWwnXCJcclxuICAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcclxuICAgW2FwaU5hbWVdPVwic2VydmljZS5hcGlOYW1lXCJcclxuICAgIFthcGlOYW1lXT1cImFwaU5hbWVcIlxyXG4gICAgW2lkRmllbGRdPVwiaWRGaWVsZFwiXHJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcclxuICAgIFtmb3JtRmllbGRzXT1cImZvcm1GaWVsZHNcIlxyXG4gICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgIFt0YWJzXT1cInRhYnNcIlxyXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICBbYnJlYWRjcnVtYl09XCJicmVhZGNydW1iX1wiXHJcbiAgICBbY3JlYXRlRWRpdEFjdGlvbnNdPVwiY3JlYXRlRWRpdEFjdGlvbnNcIlxyXG4gICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgPC9hcHAtZGV0YWlsLXZpZXc+XHJcblxyXG48L2Rpdj5cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jcnVkLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jcnVkLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.ui.core-generic-crud-table.mjs","sources":["../tmp-esm2022/generic-crud-table/lib/generic-crud-table-module.js","../tmp-esm2022/generic-crud-table/lib/generic-crud-header.js","../tmp-esm2022/generic-crud-table/lib/generic-crud-table.js","../tmp-esm2022/generic-crud-table/elite.framework-ng.ui.core-generic-crud-table.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GenericButtonModule } from '@elite.framework/ng.ui.core/generic-button';\nimport * as i0 from \"@angular/core\";\nexport class GenericCrudTableModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, imports: [CommonModule, GenericButtonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, imports: [CommonModule, GenericButtonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, GenericButtonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLXRhYmxlLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtdGFibGUtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUtqRixNQUFNLE9BQU8sc0JBQXNCO3VHQUF0QixzQkFBc0I7d0dBQXRCLHNCQUFzQixZQUZ2QixZQUFZLEVBQUMsbUJBQW1CO3dHQUUvQixzQkFBc0IsWUFGdkIsWUFBWSxFQUFDLG1CQUFtQjs7MkZBRS9CLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUMsbUJBQW1CLENBQUM7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHZW5lcmljQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtYnV0dG9uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxHZW5lcmljQnV0dG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0NydWRUYWJsZU1vZHVsZSB7fVxuIl19","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { GenericButton } from '@elite.framework/ng.ui.core/generic-button';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { Menu } from 'primeng/menu';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { BreadcrumbComponent } from '@elite.framework/ng.ui.core/breadcrumb';\nimport { GenericSearchAdvanced } from '@elite.framework/ng.ui.core/generic-search-advanced';\nimport { GenericReportComponent } from '@elite.framework/ng.ui.core/generic-report';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/button\";\nimport * as i2 from \"primeng/divider\";\nimport * as i3 from \"primeng/tooltip\";\nimport * as i4 from \"@ngx-translate/core\";\nexport class GenericCrudHeaderComponent {\n translate = inject(TranslateService);\n dialogService = inject(DialogService);\n // 🟢 Inputs\n mode = 'full';\n breadcrumb;\n isSingleItemSelected = false;\n selectedItems = [];\n singleActionButtons = [];\n bulkActionButtons = [];\n addButtonConfigs = [];\n filters;\n filterModel = {};\n showSearch = true;\n first = 0; // Add input for current 'first' index\n rows = 10; // Add input for current 'rows' per page\n totalRecords = 0; // Add input for total records\n apiName = '';\n actions = [\n {\n label: this.translate.instant('REPORT'),\n icon: 'pi pi-file-export',\n command: (e) => {\n this.openReportDialog();\n }\n }\n ];\n // 🟢 Outputs\n singleItemAction = new EventEmitter();\n bulkAction = new EventEmitter();\n search = new EventEmitter();\n resetSearch = new EventEmitter();\n action = new EventEmitter();\n paginateChange = new EventEmitter(); // NEW OUTPUT\n // 🟢 Helpers\n trackByIdx = (index) => index;\n // 🟢 Actions\n onSingleItemAction(btn) {\n this.singleItemAction.emit(btn);\n }\n onInternalBulkAction(btn) {\n this.bulkAction.emit(btn);\n }\n paginationChange(value) {\n this.rows = value.top;\n }\n applySearch(value) {\n this.search.emit(value);\n }\n reset() {\n this.resetSearch.emit();\n }\n // Go to previous page\n // 🟢 Actions (Keep or adapt your existing pagination logic)\n totalPages() {\n if (this.totalRecords === 0 || this.rows === 0)\n return 0;\n return Math.ceil(this.totalRecords / this.rows);\n }\n pageInput = null;\n showPageMenu = false;\n // Get current page number (1-based)\n get currentPage() {\n return Math.floor(this.first / this.rows) + 1;\n }\n // Go to specific page from menu\n goToPageMenu() {\n if (this.pageInput && this.pageInput >= 1 && this.pageInput <= this.totalPages()) {\n const newFirst = (this.pageInput - 1) * this.rows;\n this.paginateChange.emit({ first: newFirst, rows: this.rows });\n this.pageInput = null;\n this.showPageMenu = false; // Close menu after navigation\n }\n }\n // Go to specific page (original method)\n goToPage() {\n this.goToPageMenu(); // Reuse the same logic\n }\n // Go to first page\n goFirst() {\n this.paginateChange.emit({ first: 0, rows: this.rows }); // EMIT EVENT\n }\n // Go to last page\n goLast() {\n const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);\n this.paginateChange.emit({ first: maxFirst, rows: this.rows }); // EMIT EVENT\n }\n // Go to previous page\n goPrev() {\n const newFirst = Math.max(this.first - this.rows, 0);\n this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT\n }\n // Go to next page\n goNext() {\n const maxFirst = Math.max(0, (this.totalPages() - 1) * this.rows);\n const newFirst = Math.min(this.first + this.rows, maxFirst);\n this.paginateChange.emit({ first: newFirst, rows: this.rows }); // EMIT EVENT\n }\n // Check first/last page\n isFirstPage() {\n return this.first === 0;\n }\n isLastPage() {\n return this.first + this.rows >= this.totalRecords;\n }\n // Detect RTL direction\n get isRTL() {\n return document.documentElement.dir === 'rtl' ||\n document.body.dir === 'rtl' ||\n // this.translateService?.currentLang === 'ar' || // if using translation\n false; // default to LTR\n }\n /**\n * Handles button click in a unified way.\n * - If btn.action is defined, execute it.\n * - Otherwise, emit event with actionName or default 'add'.\n */\n async handleButtonClick(btn) {\n try {\n if (btn.action) {\n // Execute the provided action\n await btn.action(null); // You can pass row or context here\n }\n else {\n // Fallback to emitting event\n this.action.emit({\n name: btn.actionName ?? 'add',\n row: null, // provide row if available\n });\n }\n }\n catch (err) {\n console.error('Button action error', err);\n }\n }\n openReportDialog() {\n const ref = this.dialogService.open(GenericReportComponent, {\n header: this.translate.instant('REPORT'),\n showHeader: false,\n width: '90%',\n height: 'auto',\n modal: true,\n focusOnShow: false,\n data: {\n apiName: this.apiName,\n filterFields: this.filters,\n filterModel: { /* status: 'Active' */},\n defaultFileName: this.translate.instant('REPORT') + ' ' + this.translate.instant(this.breadcrumb?.length ? this.breadcrumb[this.breadcrumb.length - 1].label ?? '' : '')\n }\n });\n ref.onClose.subscribe((exportConfig) => {\n if (exportConfig) {\n console.log('Export configuration:', exportConfig);\n // Handle the export - call your API service here\n this.handleExport(exportConfig);\n }\n });\n }\n handleExport(config) {\n // Your export logic here\n // if (config.exportType === 'EXCEL') {\n // this.exportToExcel(config);\n // } else if (config.exportType === 'PDF') {\n // this.exportToPdf(config);\n // }\n // etc.\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericCrudHeaderComponent, isStandalone: true, selector: \"app-generic-crud-header\", inputs: { mode: \"mode\", breadcrumb: \"breadcrumb\", isSingleItemSelected: \"isSingleItemSelected\", selectedItems: \"selectedItems\", singleActionButtons: \"singleActionButtons\", bulkActionButtons: \"bulkActionButtons\", addButtonConfigs: \"addButtonConfigs\", filters: \"filters\", filterModel: \"filterModel\", showSearch: \"showSearch\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", apiName: \"apiName\", actions: \"actions\" }, outputs: { singleItemAction: \"singleItemAction\", bulkAction: \"bulkAction\", search: \"search\", resetSearch: \"resetSearch\", action: \"action\", paginateChange: \"paginateChange\" }, providers: [DialogService], ngImport: i0, template: \"@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"flex items-start gap-2 justify-between\\\">\\r\\n <div>\\r\\n <app-breadcrumb\\r\\n class=\\\"xs:block hidden\\\"\\r\\n [breadcrumb]=\\\"breadcrumb\\\"\\r\\n ></app-breadcrumb>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"flex items-center gap-2 justify-end flex-wrap\\\">\\r\\n @if (mode === 'full') {\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 \\u0627\\u0644\\u0645\\u0641\\u0631\\u062F\\u0629 -->\\r\\n @if (isSingleItemSelected) {\\r\\n @for (btn of singleActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onSingleItemAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0645\\u062A\\u0639\\u062F\\u062F\\u0629 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 -->\\r\\n @if (selectedItems.length > 0) {\\r\\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onInternalBulkAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0629 -->\\r\\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleButtonClick(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\\r\\n@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"mt-2 mb-4 flex items-center justify-between\\\">\\r\\n <!-- \\u0627\\u0644\\u0628\\u062D\\u062B -->\\r\\n @if (showSearch && filters) {\\r\\n <lib-generic-search-advanced\\r\\n [model]=\\\"filterModel\\\"\\r\\n [fields]=\\\"filters\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (paginationChange)=\\\"paginationChange($event)\\\"\\r\\n >\\r\\n</lib-generic-search-advanced>\\r\\n } @else {\\r\\n <div></div>\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u062F\\u0648\\u0627\\u062A \\u0625\\u0636\\u0627\\u0641\\u064A\\u0629 -->\\r\\n <div class=\\\"flex items-center gap-3 rtl:space-x-reverse\\\">\\r\\n <!-- Refresh Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-refresh\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (onClick)=\\\"reset()\\\"\\r\\n />\\r\\n\\r\\n <p-divider layout=\\\"vertical\\\" class=\\\"m-0 p-0 hidden xs:block\\\" />\\r\\n\\r\\n\\r\\n <p-button (click)=\\\"menu.toggle($event)\\\" class=\\\"xs:block\\\" severity=\\\"secondary\\\" outlined icon=\\\"pi pi-ellipsis-v\\\"/>\\r\\n <p-menu #menu [model]=\\\"actions\\\" [popup]=\\\"true\\\" />\\r\\n <!-- Pagination Controls -->\\r\\n <div class=\\\"flex items-center gap-1 rtl:space-x-reverse\\\">\\r\\n <!-- First Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goFirst()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Previous Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goPrev()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n\\r\\n <!-- Current Page Display with Dropdown -->\\r\\n <div class=\\\"relative\\\">\\r\\n\\r\\n <p-button\\r\\n [label]=\\\"currentPage + ' / ' + totalPages()\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"showPageMenu = !showPageMenu\\\"\\r\\n pTooltip=\\\"{{totalRecords}}\\\"\\r\\n tooltipPosition=\\\"top\\\"\\r\\n />\\r\\n\\r\\n\\r\\n </div>\\r\\n <!-- Next Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goNext()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Last Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goLast()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\", dependencies: [{ kind: \"component\", type: GenericButton, selector: \"lib-generic-button\", inputs: [\"model\", \"type\", \"icon\", \"label\", \"variant\", \"severity\", \"size\", \"iconPosition\", \"disabled\", \"loading\", \"ariaLabel\", \"extraClasses\", \"permission\"], outputs: [\"clicked\", \"itemClick\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"component\", type: BreadcrumbComponent, selector: \"app-breadcrumb\", inputs: [\"breadcrumb\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i1.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: DividerModule }, { kind: \"component\", type: i2.Divider, selector: \"p-divider\", inputs: [\"styleClass\", \"layout\", \"type\", \"align\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i3.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"component\", type: Menu, selector: \"p-menu\", inputs: [\"model\", \"popup\", \"style\", \"styleClass\", \"autoZIndex\", \"baseZIndex\", \"showTransitionOptions\", \"hideTransitionOptions\", \"ariaLabel\", \"ariaLabelledBy\", \"id\", \"tabindex\", \"appendTo\"], outputs: [\"onShow\", \"onHide\", \"onBlur\", \"onFocus\"] }, { kind: \"component\", type: GenericSearchAdvanced, selector: \"lib-generic-search-advanced\", inputs: [\"model\", \"fields\", \"enableSelect\", \"enableGroup\", \"odataConfig\"], outputs: [\"search\", \"paginationChange\", \"odataSearch\"] }, { kind: \"pipe\", type: i4.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudHeaderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-generic-crud-header', standalone: true, imports: [\n GenericButton,\n TranslateModule,\n BreadcrumbComponent,\n CommonModule,\n ButtonModule,\n DividerModule,\n FormsModule,\n ReactiveFormsModule,\n TooltipModule,\n Menu,\n GenericSearchAdvanced\n ], providers: [DialogService], template: \"@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"flex items-start gap-2 justify-between\\\">\\r\\n <div>\\r\\n <app-breadcrumb\\r\\n class=\\\"xs:block hidden\\\"\\r\\n [breadcrumb]=\\\"breadcrumb\\\"\\r\\n ></app-breadcrumb>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"flex items-center gap-2 justify-end flex-wrap\\\">\\r\\n @if (mode === 'full') {\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 \\u0627\\u0644\\u0645\\u0641\\u0631\\u062F\\u0629 -->\\r\\n @if (isSingleItemSelected) {\\r\\n @for (btn of singleActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onSingleItemAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0645\\u062A\\u0639\\u062F\\u062F\\u0629 \\u0627\\u0644\\u0639\\u0646\\u0627\\u0635\\u0631 -->\\r\\n @if (selectedItems.length > 0) {\\r\\n @for (btn of bulkActionButtons; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"onInternalBulkAction(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u0632\\u0631\\u0627\\u0631 \\u0627\\u0644\\u0625\\u0636\\u0627\\u0641\\u0629 -->\\r\\n @for (btn of addButtonConfigs; track trackByIdx($index)) {\\r\\n @if (!btn.visible || (btn.visible && btn.visible === true)) {\\r\\n <lib-generic-button\\r\\n [icon]=\\\"btn.icon\\\"\\r\\n [label]=\\\"btn.label | translate\\\"\\r\\n [variant]=\\\"btn.variant\\\"\\r\\n [size]=\\\"btn.size\\\"\\r\\n [severity]=\\\"btn.severity\\\"\\r\\n [model]=\\\"btn.splitActions\\\"\\r\\n [permission]=\\\"btn.permission\\\"\\r\\n (clicked)=\\\"handleButtonClick(btn)\\\"\\r\\n ></lib-generic-button>\\r\\n }\\r\\n }\\r\\n }\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\\r\\n@if (mode !== 'form-only' && mode !== 'detail') {\\r\\n<div class=\\\"mt-2 mb-4 flex items-center justify-between\\\">\\r\\n <!-- \\u0627\\u0644\\u0628\\u062D\\u062B -->\\r\\n @if (showSearch && filters) {\\r\\n <lib-generic-search-advanced\\r\\n [model]=\\\"filterModel\\\"\\r\\n [fields]=\\\"filters\\\"\\r\\n (search)=\\\"applySearch($event)\\\"\\r\\n (paginationChange)=\\\"paginationChange($event)\\\"\\r\\n >\\r\\n</lib-generic-search-advanced>\\r\\n } @else {\\r\\n <div></div>\\r\\n }\\r\\n\\r\\n <!-- \\u0623\\u062F\\u0648\\u0627\\u062A \\u0625\\u0636\\u0627\\u0641\\u064A\\u0629 -->\\r\\n <div class=\\\"flex items-center gap-3 rtl:space-x-reverse\\\">\\r\\n <!-- Refresh Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-refresh\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (onClick)=\\\"reset()\\\"\\r\\n />\\r\\n\\r\\n <p-divider layout=\\\"vertical\\\" class=\\\"m-0 p-0 hidden xs:block\\\" />\\r\\n\\r\\n\\r\\n <p-button (click)=\\\"menu.toggle($event)\\\" class=\\\"xs:block\\\" severity=\\\"secondary\\\" outlined icon=\\\"pi pi-ellipsis-v\\\"/>\\r\\n <p-menu #menu [model]=\\\"actions\\\" [popup]=\\\"true\\\" />\\r\\n <!-- Pagination Controls -->\\r\\n <div class=\\\"flex items-center gap-1 rtl:space-x-reverse\\\">\\r\\n <!-- First Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-right' : 'pi pi-angle-double-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goFirst()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Previous Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-right' : 'pi pi-chevron-left'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goPrev()\\\"\\r\\n [disabled]=\\\"isFirstPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n\\r\\n <!-- Current Page Display with Dropdown -->\\r\\n <div class=\\\"relative\\\">\\r\\n\\r\\n <p-button\\r\\n [label]=\\\"currentPage + ' / ' + totalPages()\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"showPageMenu = !showPageMenu\\\"\\r\\n pTooltip=\\\"{{totalRecords}}\\\"\\r\\n tooltipPosition=\\\"top\\\"\\r\\n />\\r\\n\\r\\n\\r\\n </div>\\r\\n <!-- Next Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-chevron-left' : 'pi pi-chevron-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"xs:block\\\"\\r\\n (click)=\\\"goNext()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n\\r\\n <!-- Last Page Button -->\\r\\n <p-button\\r\\n [icon]=\\\"isRTL ? 'pi pi-angle-double-left' : 'pi pi-angle-double-right'\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n class=\\\"hidden xs:block\\\"\\r\\n (click)=\\\"goLast()\\\"\\r\\n [disabled]=\\\"isLastPage()\\\"\\r\\n ></p-button>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { mode: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], isSingleItemSelected: [{\n type: Input\n }], selectedItems: [{\n type: Input\n }], singleActionButtons: [{\n type: Input\n }], bulkActionButtons: [{\n type: Input\n }], addButtonConfigs: [{\n type: Input\n }], filters: [{\n type: Input\n }], filterModel: [{\n type: Input\n }], showSearch: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], apiName: [{\n type: Input\n }], actions: [{\n type: Input\n }], singleItemAction: [{\n type: Output\n }], bulkAction: [{\n type: Output\n }], search: [{\n type: Output\n }], resetSearch: [{\n type: Output\n }], action: [{\n type: Output\n }], paginateChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLWhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtaGVhZGVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvbGliL2dlbmVyaWMtY3J1ZC1oZWFkZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQXNCcEYsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxTQUFTLEdBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdEMsYUFBYSxHQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2QyxZQUFZO0lBQ0gsSUFBSSxHQUFtRCxNQUFNLENBQUM7SUFDOUQsVUFBVSxDQUF5QjtJQUNuQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDN0IsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUMxQixtQkFBbUIsR0FBbUIsRUFBRSxDQUFDO0lBQ3pDLGlCQUFpQixHQUFtQixFQUFFLENBQUM7SUFDdkMsZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQUN0QyxPQUFPLENBQU07SUFDYixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDakIsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztJQUNsRCxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsd0NBQXdDO0lBQ25ELFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7SUFDaEQsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNwQixPQUFPLEdBQWM7UUFDckI7WUFDWSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLElBQUksRUFBRSxtQkFBbUI7WUFDekIsT0FBTyxFQUFDLENBQUMsQ0FBSyxFQUFDLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNKO0tBQ1osQ0FBQztJQUdSLGFBQWE7SUFDSCxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztJQUNwRCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7SUFDOUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDakMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDdkMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBQ3pELGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQyxDQUFDLGFBQWE7SUFLNUYsYUFBYTtJQUNiLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBRXRDLGFBQWE7SUFDYixrQkFBa0IsQ0FBQyxHQUFpQjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxHQUFpQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ0gsZ0JBQWdCLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBR0Msc0JBQXNCO0lBQ3hCLDREQUE0RDtJQUM1RCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNGLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQy9CLFlBQVksR0FBWSxLQUFLLENBQUM7SUFFOUIsb0NBQW9DO0lBQ3BDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLDhCQUE4QjtRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsdUJBQXVCO0lBQzlDLENBQUM7SUFFRCxtQkFBbUI7SUFDckIsT0FBTztRQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO0lBQ3hFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsTUFBTTtRQUNKLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtJQUMvRSxDQUFDO0lBRUMsc0JBQXNCO0lBQ3RCLE1BQU07UUFDSixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtJQUMvRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE1BQU07UUFDSixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWE7SUFDL0UsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDckQsQ0FBQztJQUdELHVCQUF1QjtJQUN2QixJQUFJLEtBQUs7UUFDUCxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLEtBQUs7WUFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSztZQUM1QiwwRUFBMEU7WUFDekUsS0FBSyxDQUFDLENBQUMsaUJBQWlCO0lBQ2pDLENBQUM7SUFDQTs7OztNQUlFO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQWlCO1FBQ3ZDLElBQUksQ0FBQztZQUNILElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNmLDhCQUE4QjtnQkFDOUIsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUNBQW1DO1lBQzdELENBQUM7aUJBQU0sQ0FBQztnQkFDTiw2QkFBNkI7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNmLElBQUksRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEtBQUs7b0JBQzdCLEdBQUcsRUFBRSxJQUFLLEVBQUUsMkJBQTJCO2lCQUN4QyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDMUQsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUN4QyxVQUFVLEVBQUMsS0FBSztZQUNoQixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUMsS0FBSztZQUNqQixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFDLElBQUksQ0FBQyxPQUFPO2dCQUNwQixZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQzFCLFdBQVcsRUFBRSxFQUFFLHVCQUF1QixDQUFDO2dCQUN6QyxlQUFlLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBRyxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUVwSztTQUNGLENBQUMsQ0FBQztRQUVILEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQzFDLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ25ELGlEQUFpRDtnQkFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BQVc7UUFDOUIseUJBQXlCO1FBQ3pCLHVDQUF1QztRQUN2QyxnQ0FBZ0M7UUFDaEMsNENBQTRDO1FBQzVDLDhCQUE4QjtRQUM5QixJQUFJO1FBQ0osT0FBTztJQUNULENBQUM7dUdBNUxRLDBCQUEwQjsyRkFBMUIsMEJBQTBCLCtwQkFIekIsQ0FBQyxhQUFhLENBQUMsMEJDakM3Qix3OUtBK0pBLDRDRDNJSSxhQUFhLDhQQUNiLGVBQWUsK0JBQ2YsbUJBQW1CLGtGQUNuQixZQUFZLDhCQUNaLFlBQVksaWJBQ1osYUFBYSxpSkFDYixXQUFXLDhCQUNYLG1CQUFtQiw4QkFDbkIsYUFBYSxzWEFDYixJQUFJLHFTQUNKLHFCQUFxQjs7MkZBTVosMEJBQTBCO2tCQXBCdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLElBQUk7d0JBQ0oscUJBQXFCO3FCQUN0QixhQUVXLENBQUMsYUFBYSxDQUFDOzhCQVFsQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLEtBQUs7c0JBQWIsS0FBSztnQkFDRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksT0FBTztzQkFBZixLQUFLO2dCQVlHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQnV0dG9uQ29uZmlnIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IEdlbmVyaWNCdXR0b24gfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1idXR0b24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBEaXZpZGVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaXZpZGVyJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvYnJlYWRjcnVtYic7XHJcbmltcG9ydCB7IEdlbmVyaWNTZWFyY2hBZHZhbmNlZCB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZCc7XHJcbmltcG9ydCB7IEdlbmVyaWNSZXBvcnRDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1yZXBvcnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZ2VuZXJpYy1jcnVkLWhlYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBHZW5lcmljQnV0dG9uLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgQnJlYWRjcnVtYkNvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIERpdmlkZXJNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudSxcclxuICAgIEdlbmVyaWNTZWFyY2hBZHZhbmNlZFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtY3J1ZC1oZWFkZXIuaHRtbCcsXHJcbiAgIHByb3ZpZGVyczogW0RpYWxvZ1NlcnZpY2VdLFxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNDcnVkSGVhZGVyQ29tcG9uZW50IHtcclxuXHJcbiAgdHJhbnNsYXRlICA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBkaWFsb2dTZXJ2aWNlICA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICAvLyDwn5+iIElucHV0c1xyXG4gIEBJbnB1dCgpIG1vZGU6ICdmdWxsJyB8ICdmb3JtLW9ubHknIHwgJ3RhYmxlLW9ubHknIHwgJ2RldGFpbCcgPSAnZnVsbCc7XHJcbiAgQElucHV0KCkgYnJlYWRjcnVtYjogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBpc1NpbmdsZUl0ZW1TZWxlY3RlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgc2luZ2xlQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBidWxrQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBhZGRCdXR0b25Db25maWdzOiBCdXR0b25Db25maWdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IGFueTtcclxuICBASW5wdXQoKSBmaWx0ZXJNb2RlbDogYW55ID0ge307XHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaCA9IHRydWU7XHJcbiAgIEBJbnB1dCgpIGZpcnN0ID0gMDsgLy8gQWRkIGlucHV0IGZvciBjdXJyZW50ICdmaXJzdCcgaW5kZXhcclxuICBASW5wdXQoKSByb3dzID0gMTA7IC8vIEFkZCBpbnB1dCBmb3IgY3VycmVudCAncm93cycgcGVyIHBhZ2VcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwOyAvLyBBZGQgaW5wdXQgZm9yIHRvdGFsIHJlY29yZHNcclxuICBASW5wdXQoKSBhcGlOYW1lOiBzdHJpbmcgPSAnJztcclxuICAgQElucHV0KCkgYWN0aW9uczpNZW51SXRlbVtdID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ3BpIHBpLWZpbGUtZXhwb3J0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDooZTphbnkpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUmVwb3J0RGlhbG9nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuXHJcblxyXG4gIC8vIPCfn6IgT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBzaW5nbGVJdGVtQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxCdXR0b25Db25maWc+KCk7XHJcbiAgQE91dHB1dCgpIGJ1bGtBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEJ1dHRvbkNvbmZpZz4oKTtcclxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHJlc2V0U2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IGFueSB9PigpO1xyXG4gQE91dHB1dCgpIHBhZ2luYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpcnN0OiBudW1iZXI7IHJvd3M6IG51bWJlciB9PigpOyAvLyBORVcgT1VUUFVUXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIPCfn6IgSGVscGVyc1xyXG4gIHRyYWNrQnlJZHggPSAoaW5kZXg6IG51bWJlcikgPT4gaW5kZXg7XHJcblxyXG4gIC8vIPCfn6IgQWN0aW9uc1xyXG4gIG9uU2luZ2xlSXRlbUFjdGlvbihidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdGhpcy5zaW5nbGVJdGVtQWN0aW9uLmVtaXQoYnRuKTtcclxuICB9XHJcbiAgb25JbnRlcm5hbEJ1bGtBY3Rpb24oYnRuOiBCdXR0b25Db25maWcpIHtcclxuICAgIHRoaXMuYnVsa0FjdGlvbi5lbWl0KGJ0bik7XHJcbiAgfVxyXG5wYWdpbmF0aW9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMucm93cyA9IHZhbHVlLnRvcDtcclxuICB9XHJcbiAgYXBwbHlTZWFyY2godmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZWFyY2guZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5yZXNldFNlYXJjaC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgICAvLyBHbyB0byBwcmV2aW91cyBwYWdlXHJcbiAgLy8g8J+foiBBY3Rpb25zIChLZWVwIG9yIGFkYXB0IHlvdXIgZXhpc3RpbmcgcGFnaW5hdGlvbiBsb2dpYylcclxuICB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy50b3RhbFJlY29yZHMgPT09IDAgfHwgdGhpcy5yb3dzID09PSAwKSByZXR1cm4gMDtcclxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMgLyB0aGlzLnJvd3MpO1xyXG4gIH1cclxuIHBhZ2VJbnB1dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd1BhZ2VNZW51OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIEdldCBjdXJyZW50IHBhZ2UgbnVtYmVyICgxLWJhc2VkKVxyXG4gIGdldCBjdXJyZW50UGFnZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5maXJzdCAvIHRoaXMucm93cykgKyAxO1xyXG4gIH1cclxuXHJcbiAgLy8gR28gdG8gc3BlY2lmaWMgcGFnZSBmcm9tIG1lbnVcclxuICBnb1RvUGFnZU1lbnUoKSB7XHJcbiAgICBpZiAodGhpcy5wYWdlSW5wdXQgJiYgdGhpcy5wYWdlSW5wdXQgPj0gMSAmJiB0aGlzLnBhZ2VJbnB1dCA8PSB0aGlzLnRvdGFsUGFnZXMoKSkge1xyXG4gICAgICBjb25zdCBuZXdGaXJzdCA9ICh0aGlzLnBhZ2VJbnB1dCAtIDEpICogdGhpcy5yb3dzO1xyXG4gICAgICB0aGlzLnBhZ2luYXRlQ2hhbmdlLmVtaXQoeyBmaXJzdDogbmV3Rmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTtcclxuICAgICAgdGhpcy5wYWdlSW5wdXQgPSBudWxsO1xyXG4gICAgICB0aGlzLnNob3dQYWdlTWVudSA9IGZhbHNlOyAvLyBDbG9zZSBtZW51IGFmdGVyIG5hdmlnYXRpb25cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEdvIHRvIHNwZWNpZmljIHBhZ2UgKG9yaWdpbmFsIG1ldGhvZClcclxuICBnb1RvUGFnZSgpIHtcclxuICAgIHRoaXMuZ29Ub1BhZ2VNZW51KCk7IC8vIFJldXNlIHRoZSBzYW1lIGxvZ2ljXHJcbiAgfVxyXG5cclxuICAvLyBHbyB0byBmaXJzdCBwYWdlXHJcbmdvRmlyc3QoKSB7XHJcbiAgdGhpcy5wYWdpbmF0ZUNoYW5nZS5lbWl0KHsgZmlyc3Q6IDAsIHJvd3M6IHRoaXMucm93cyB9KTsgLy8gRU1JVCBFVkVOVFxyXG59XHJcblxyXG4vLyBHbyB0byBsYXN0IHBhZ2VcclxuZ29MYXN0KCkge1xyXG4gIGNvbnN0IG1heEZpcnN0ID0gTWF0aC5tYXgoMCwgKHRoaXMudG90YWxQYWdlcygpIC0gMSkgKiB0aGlzLnJvd3MpO1xyXG4gIHRoaXMucGFnaW5hdGVDaGFuZ2UuZW1pdCh7IGZpcnN0OiBtYXhGaXJzdCwgcm93czogdGhpcy5yb3dzIH0pOyAvLyBFTUlUIEVWRU5UXHJcbn1cclxuXHJcbiAgLy8gR28gdG8gcHJldmlvdXMgcGFnZVxyXG4gIGdvUHJldigpIHtcclxuICAgIGNvbnN0IG5ld0ZpcnN0ID0gTWF0aC5tYXgodGhpcy5maXJzdCAtIHRoaXMucm93cywgMCk7XHJcbiAgICB0aGlzLnBhZ2luYXRlQ2hhbmdlLmVtaXQoeyBmaXJzdDogbmV3Rmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTsgLy8gRU1JVCBFVkVOVFxyXG4gIH1cclxuXHJcbiAgLy8gR28gdG8gbmV4dCBwYWdlXHJcbiAgZ29OZXh0KCkge1xyXG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCAodGhpcy50b3RhbFBhZ2VzKCkgLSAxKSAqIHRoaXMucm93cyk7XHJcbiAgICBjb25zdCBuZXdGaXJzdCA9IE1hdGgubWluKHRoaXMuZmlyc3QgKyB0aGlzLnJvd3MsIG1heEZpcnN0KTtcclxuICAgIHRoaXMucGFnaW5hdGVDaGFuZ2UuZW1pdCh7IGZpcnN0OiBuZXdGaXJzdCwgcm93czogdGhpcy5yb3dzIH0pOyAvLyBFTUlUIEVWRU5UXHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBmaXJzdC9sYXN0IHBhZ2VcclxuICBpc0ZpcnN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0ID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaXNMYXN0UGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0ICsgdGhpcy5yb3dzID49IHRoaXMudG90YWxSZWNvcmRzO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIERldGVjdCBSVEwgZGlyZWN0aW9uXHJcbiAgZ2V0IGlzUlRMKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPT09ICdydGwnIHx8XHJcbiAgICAgICAgICAgZG9jdW1lbnQuYm9keS5kaXIgPT09ICdydGwnIHx8XHJcbiAgICAgICAgICAvLyAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlPy5jdXJyZW50TGFuZyA9PT0gJ2FyJyB8fCAvLyBpZiB1c2luZyB0cmFuc2xhdGlvblxyXG4gICAgICAgICAgIGZhbHNlOyAvLyBkZWZhdWx0IHRvIExUUlxyXG4gIH1cclxuICAgLyoqXHJcbiAgICogSGFuZGxlcyBidXR0b24gY2xpY2sgaW4gYSB1bmlmaWVkIHdheS5cclxuICAgKiAtIElmIGJ0bi5hY3Rpb24gaXMgZGVmaW5lZCwgZXhlY3V0ZSBpdC5cclxuICAgKiAtIE90aGVyd2lzZSwgZW1pdCBldmVudCB3aXRoIGFjdGlvbk5hbWUgb3IgZGVmYXVsdCAnYWRkJy5cclxuICAgKi9cclxuICBhc3luYyBoYW5kbGVCdXR0b25DbGljayhidG46IEJ1dHRvbkNvbmZpZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGJ0bi5hY3Rpb24pIHtcclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBwcm92aWRlZCBhY3Rpb25cclxuICAgICAgICBhd2FpdCBidG4uYWN0aW9uKG51bGwpOyAvLyBZb3UgY2FuIHBhc3Mgcm93IG9yIGNvbnRleHQgaGVyZVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEZhbGxiYWNrIHRvIGVtaXR0aW5nIGV2ZW50XHJcbiAgICAgICAgdGhpcy5hY3Rpb24uZW1pdCh7XHJcbiAgICAgICAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnYWRkJyxcclxuICAgICAgICAgIHJvdzogbnVsbCEsIC8vIHByb3ZpZGUgcm93IGlmIGF2YWlsYWJsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignQnV0dG9uIGFjdGlvbiBlcnJvcicsIGVycik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuUmVwb3J0RGlhbG9nKCkge1xyXG4gICAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihHZW5lcmljUmVwb3J0Q29tcG9uZW50LCB7XHJcbiAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSxcclxuICAgICAgICBzaG93SGVhZGVyOmZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiAnOTAlJyxcclxuICAgICAgICBoZWlnaHQ6ICdhdXRvJyxcclxuICAgICAgICBtb2RhbDogdHJ1ZSxcclxuICAgICAgICBmb2N1c09uU2hvdzpmYWxzZSxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBhcGlOYW1lOnRoaXMuYXBpTmFtZSxcclxuICAgICAgICAgIGZpbHRlckZpZWxkczogdGhpcy5maWx0ZXJzLFxyXG4gICAgICAgICAgZmlsdGVyTW9kZWw6IHsgLyogc3RhdHVzOiAnQWN0aXZlJyAgKi99LFxyXG4gICAgICAgIGRlZmF1bHRGaWxlTmFtZTp0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdSRVBPUlQnKSArICcgJyArIHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5icmVhZGNydW1iPy5sZW5ndGggPyB0aGlzLmJyZWFkY3J1bWJbdGhpcy5icmVhZGNydW1iLmxlbmd0aCAtIDFdLmxhYmVsID8/Jyc6ICcnKVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChleHBvcnRDb25maWc6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChleHBvcnRDb25maWcpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeHBvcnQgY29uZmlndXJhdGlvbjonLCBleHBvcnRDb25maWcpO1xyXG4gICAgICAgICAgLy8gSGFuZGxlIHRoZSBleHBvcnQgLSBjYWxsIHlvdXIgQVBJIHNlcnZpY2UgaGVyZVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFeHBvcnQoZXhwb3J0Q29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXhwb3J0KGNvbmZpZzogYW55KSB7XHJcbiAgICAgIC8vIFlvdXIgZXhwb3J0IGxvZ2ljIGhlcmVcclxuICAgICAgLy8gaWYgKGNvbmZpZy5leHBvcnRUeXBlID09PSAnRVhDRUwnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5leHBvcnRUb0V4Y2VsKGNvbmZpZyk7XHJcbiAgICAgIC8vIH0gZWxzZSBpZiAoY29uZmlnLmV4cG9ydFR5cGUgPT09ICdQREYnKSB7XHJcbiAgICAgIC8vICAgdGhpcy5leHBvcnRUb1BkZihjb25maWcpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGV0Yy5cclxuICAgIH1cclxuXHJcbn1cclxuIiwiQGlmIChtb2RlICE9PSAnZm9ybS1vbmx5JyAmJiBtb2RlICE9PSAnZGV0YWlsJykge1xyXG48ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBnYXAtMiBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICA8ZGl2PlxyXG4gICAgPGFwcC1icmVhZGNydW1iXHJcbiAgICAgIGNsYXNzPVwieHM6YmxvY2sgaGlkZGVuXCJcclxuICAgICAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlwiXHJcbiAgICA+PC9hcHAtYnJlYWRjcnVtYj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGp1c3RpZnktZW5kIGZsZXgtd3JhcFwiPlxyXG4gICAgQGlmIChtb2RlID09PSAnZnVsbCcpIHtcclxuICAgICAgPCEtLSDYo9iy2LHYp9ixINin2YTYudmG2KfYtdixINin2YTZhdmB2LHYr9ipIC0tPlxyXG4gICAgICBAaWYgKGlzU2luZ2xlSXRlbVNlbGVjdGVkKSB7XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIHNpbmdsZUFjdGlvbkJ1dHRvbnM7IHRyYWNrIHRyYWNrQnlJZHgoJGluZGV4KSkge1xyXG4gICAgICAgICAgQGlmICghYnRuLnZpc2libGUgfHwgKGJ0bi52aXNpYmxlICYmIGJ0bi52aXNpYmxlID09PSB0cnVlKSkge1xyXG4gICAgICAgICAgICA8bGliLWdlbmVyaWMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJidG4ubGFiZWwgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgIFt2YXJpYW50XT1cImJ0bi52YXJpYW50XCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImJ0bi5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgICAgW21vZGVsXT1cImJ0bi5zcGxpdEFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNpbmdsZUl0ZW1BY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0g2KPYstix2KfYsSDZhdiq2LnYr9iv2Kkg2KfZhNi52YbYp9i12LEgLS0+XHJcbiAgICAgIEBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgQGZvciAoYnRuIG9mIGJ1bGtBY3Rpb25CdXR0b25zOyB0cmFjayB0cmFja0J5SWR4KCRpbmRleCkpIHtcclxuICAgICAgICAgIEBpZiAoIWJ0bi52aXNpYmxlIHx8IChidG4udmlzaWJsZSAmJiBidG4udmlzaWJsZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICAgICAgPGxpYi1nZW5lcmljLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtpY29uXT1cImJ0bi5pY29uXCJcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBbdmFyaWFudF09XCJidG4udmFyaWFudFwiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiYnRuLnNpemVcIlxyXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJidG4uc3BsaXRBY3Rpb25zXCJcclxuICAgICAgICAgICAgICBbcGVybWlzc2lvbl09XCJidG4ucGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25JbnRlcm5hbEJ1bGtBY3Rpb24oYnRuKVwiXHJcbiAgICAgICAgICAgID48L2xpYi1nZW5lcmljLWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDwhLS0g2KPYstix2KfYsSDYp9mE2KXYttin2YHYqSAtLT5cclxuICAgICAgQGZvciAoYnRuIG9mIGFkZEJ1dHRvbkNvbmZpZ3M7IHRyYWNrIHRyYWNrQnlJZHgoJGluZGV4KSkge1xyXG4gICAgICAgIEBpZiAoIWJ0bi52aXNpYmxlIHx8IChidG4udmlzaWJsZSAmJiBidG4udmlzaWJsZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgICAgIDxsaWItZ2VuZXJpYy1idXR0b25cclxuICAgICAgICAgICAgW2ljb25dPVwiYnRuLmljb25cIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiYnRuLmxhYmVsIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiYnRuLnZhcmlhbnRcIlxyXG4gICAgICAgICAgICBbc2l6ZV09XCJidG4uc2l6ZVwiXHJcbiAgICAgICAgICAgIFtzZXZlcml0eV09XCJidG4uc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICBbbW9kZWxdPVwiYnRuLnNwbGl0QWN0aW9uc1wiXHJcbiAgICAgICAgICAgIFtwZXJtaXNzaW9uXT1cImJ0bi5wZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ2xpY2soYnRuKVwiXHJcbiAgICAgICAgICA+PC9saWItZ2VuZXJpYy1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG59XHJcblxyXG5AaWYgKG1vZGUgIT09ICdmb3JtLW9ubHknICYmIG1vZGUgIT09ICdkZXRhaWwnKSB7XHJcbjxkaXYgY2xhc3M9XCJtdC0yIG1iLTQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgPCEtLSDYp9mE2KjYrdirIC0tPlxyXG4gIEBpZiAoc2hvd1NlYXJjaCAmJiBmaWx0ZXJzKSB7XHJcbiAgICA8bGliLWdlbmVyaWMtc2VhcmNoLWFkdmFuY2VkXHJcbiAgICBbbW9kZWxdPVwiZmlsdGVyTW9kZWxcIlxyXG4gIFtmaWVsZHNdPVwiZmlsdGVyc1wiXHJcbiAgKHNlYXJjaCk9XCJhcHBseVNlYXJjaCgkZXZlbnQpXCJcclxuICAocGFnaW5hdGlvbkNoYW5nZSk9XCJwYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gID5cclxuPC9saWItZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQ+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2PjwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPCEtLSDYo9iv2YjYp9iqINil2LbYp9mB2YrYqSAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgcnRsOnNwYWNlLXgtcmV2ZXJzZVwiPlxyXG4gICAgPCEtLSBSZWZyZXNoIEJ1dHRvbiAtLT5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBpY29uPVwicGkgcGktcmVmcmVzaFwiXHJcbiAgICAgIG91dGxpbmVkXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgY2xhc3M9XCJoaWRkZW4geHM6YmxvY2tcIlxyXG4gICAgICAob25DbGljayk9XCJyZXNldCgpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiIGNsYXNzPVwibS0wIHAtMCBoaWRkZW4geHM6YmxvY2tcIiAvPlxyXG5cclxuXHJcbiAgICA8cC1idXR0b24gKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudClcIiAgY2xhc3M9XCJ4czpibG9ja1wiICBzZXZlcml0eT1cInNlY29uZGFyeVwiIG91dGxpbmVkIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCIvPlxyXG4gICAgPHAtbWVudSAjbWVudSBbbW9kZWxdPVwiYWN0aW9uc1wiIFtwb3B1cF09XCJ0cnVlXCIgLz5cclxuICAgIDwhLS0gUGFnaW5hdGlvbiBDb250cm9scyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBydGw6c3BhY2UteC1yZXZlcnNlXCI+XHJcbiAgICAgIDwhLS0gRmlyc3QgUGFnZSBCdXR0b24gLS0+XHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIFtpY29uXT1cImlzUlRMID8gJ3BpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodCcgOiAncGkgcGktYW5nbGUtZG91YmxlLWxlZnQnXCJcclxuICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICBjbGFzcz1cImhpZGRlbiB4czpibG9ja1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImdvRmlyc3QoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gUHJldmlvdXMgUGFnZSBCdXR0b24gLS0+XHJcbiAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgIFtpY29uXT1cImlzUlRMID8gJ3BpIHBpLWNoZXZyb24tcmlnaHQnIDogJ3BpIHBpLWNoZXZyb24tbGVmdCdcIlxyXG4gICAgICAgIG91dGxpbmVkXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwieHM6YmxvY2tcIlxyXG4gICAgICAgIChjbGljayk9XCJnb1ByZXYoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcblxyXG4gICAgICAgPCEtLSBDdXJyZW50IFBhZ2UgRGlzcGxheSB3aXRoIERyb3Bkb3duIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxyXG5cclxuICAgIDxwLWJ1dHRvblxyXG4gICAgICBbbGFiZWxdPVwiY3VycmVudFBhZ2UgKyAnIC8gJyArIHRvdGFsUGFnZXMoKVwiXHJcbiAgICAgIG91dGxpbmVkXHJcbiAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgY2xhc3M9XCJoaWRkZW4geHM6YmxvY2tcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd1BhZ2VNZW51ID0gIXNob3dQYWdlTWVudVwiXHJcbiAgICAgICAgcFRvb2x0aXA9XCJ7e3RvdGFsUmVjb3Jkc319XCJcclxuICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuICAgIC8+XHJcblxyXG5cclxuICA8L2Rpdj5cclxuICAgICAgPCEtLSBOZXh0IFBhZ2UgQnV0dG9uIC0tPlxyXG4gICAgICA8cC1idXR0b25cclxuICAgICAgICBbaWNvbl09XCJpc1JUTCA/ICdwaSBwaS1jaGV2cm9uLWxlZnQnIDogJ3BpIHBpLWNoZXZyb24tcmlnaHQnXCJcclxuICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICBjbGFzcz1cInhzOmJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgIDwhLS0gTGFzdCBQYWdlIEJ1dHRvbiAtLT5cclxuICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgW2ljb25dPVwiaXNSVEwgPyAncGkgcGktYW5nbGUtZG91YmxlLWxlZnQnIDogJ3BpIHBpLWFuZ2xlLWRvdWJsZS1yaWdodCdcIlxyXG4gICAgICAgIG91dGxpbmVkXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwiaGlkZGVuIHhzOmJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwiZ29MYXN0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxyXG4gICAgICA+PC9wLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG4iXX0=","/* eslint-disable @angular-eslint/no-output-on-prefix */\n/* eslint-disable @angular-eslint/no-output-native */\nimport { DividerModule } from 'primeng/divider';\nimport { Component, Input, Output, EventEmitter, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MessageModule } from 'primeng/message';\nimport { ButtonModule } from 'primeng/button';\nimport { TableModule } from 'primeng/table';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { DrawerModule } from 'primeng/drawer';\nimport { DialogModule } from 'primeng/dialog';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { BaseService } from '@elite.framework/ng.core/services';\nimport { SwalService } from '@elite.framework/ng.core/services';\nimport { GenericCrudHeaderComponent } from './generic-crud-header';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { GenericTable } from '@elite.framework/ng.ui.core/generic-table';\nimport { GenericDialogComponent } from '@elite.framework/ng.ui.core/generic-dialog';\nimport { GenericViewComponent } from '@elite.framework/ng.ui.core/generic-view';\nimport { QueryBuilderService } from '@elite.framework/ng.ui.core/generic-search-advanced';\nimport * as i0 from \"@angular/core\";\n/**\n * مكون جدول CRUD عام يمكن إعادة استخدامه\n * يدعم العمليات الأساسية: إنشاء، قراءة، تحديث، حذف\n * مع إمكانية التخصيص عبر عدة أوضاع وعرض\n */\nexport class GenericCrudTableComponent {\n genericTable;\n dialog;\n translate = inject(TranslateService);\n swalService = inject(SwalService);\n queryBuilder = inject(QueryBuilderService);\n home = { icon: 'pi pi-home', routerLink: '/' };\n data = [];\n formFields_ = []; // <-- هنا\n formFields = []; // <-- هنا\n columns = []; // <-- هنا\n dialogMaxWidth = '40rem'; // unset , fit-content\n isViewMode = false;\n displayMode = 'drawer';\n useConfirmOnSave = false;\n isEditMode = false;\n drawerVisible = false;\n dialogVisible = false;\n form = new UntypedFormGroup({});\n model;\n model_ = {};\n loading = false;\n errorMsg = '';\n errorMessage = '';\n options = {};\n actions = [];\n /** تحدد طريقة العرض: 'buttons' أو 'menu' */\n actionsMode = 'buttons';\n action = new EventEmitter();\n bulkAction = new EventEmitter();\n singleAction = new EventEmitter();\n beforeSaveTransform; // ⚡ دوال مخصصة قبل الحفظ\n afterSave = new EventEmitter();\n afterDelete = new EventEmitter();\n beforeSave = new EventEmitter();\n beforeDelete = new EventEmitter();\n formCancel = new EventEmitter();\n formInit = new EventEmitter();\n dataLoaded = new EventEmitter();\n selectionChange = new EventEmitter();\n error = new EventEmitter();\n // البحث\n // Search\n filters;\n filterModel = {};\n search = new EventEmitter();\n /** للتحكم بإظهار/إخفاء قسم البحث */\n showSearch = true;\n /** Pagination Inputs */\n first = 0;\n rows = 10;\n totalRecords = 0;\n pageChange = new EventEmitter();\n onSearch = new EventEmitter();\n visibleChange = new EventEmitter();\n ;\n // @Output() visibleChange = new EventEmitter<boolean>();\n /** لجعل الجدول قابل لاختيار الصفوف (افتراضي false) */\n rowSelectable = false;\n /** حدث يخرج الصف المحدّد */\n rowSelect = new EventEmitter();\n selection = null;\n // الفرز\n sortField;\n sortOrder = 1;\n scrollHeight = '400px';\n paginator = true;\n service = inject(BaseService);\n apiName = '';\n idField = 'id';\n showRowSelectionCheckbox = false;\n showAddButton = true;\n addPermissionName;\n addButtonConfigs = [\n {\n icon: 'pi pi-plus',\n label: 'ADD',\n variant: 'raised',\n severity: 'primary',\n size: 'small',\n actionName: 'add',\n visible: this.showAddButton,\n permission: this.addPermissionName,\n },\n ];\n createEditActions = [\n {\n icon: 'pi pi-check',\n label: 'SAVE',\n variant: 'raised',\n severity: 'primary',\n size: 'small',\n actionName: 'save',\n type: 'submit',\n splitActions: [\n {\n label: this.translate.instant('SAVE_AND_ADD'),\n icon: 'pi pi-save',\n actionName: 'saveAndAdd'\n }\n ]\n },\n {\n icon: 'pi pi-times',\n label: 'CANCEL',\n variant: 'raised',\n severity: 'danger',\n size: 'small',\n actionName: 'cancel',\n type: 'button',\n },\n ];\n supportSubPage = true;\n tabs = [];\n bulkActionButtons = [];\n singleActionButtons = [];\n _selectedRows = [];\n get isSingleItemSelected() {\n return this._selectedRows.length === 1;\n }\n get isMultipleItemSelected() {\n return this._selectedRows.length > 1;\n }\n get selectedItems() {\n return this._selectedRows;\n }\n breadcrumb;\n get breadcrumb_() {\n return this.breadcrumb?.map(v => ({\n ...v,\n label: this.translate.instant(v.label ?? '')\n }));\n }\n get rtl() {\n try {\n return document?.documentElement?.dir === 'rtl';\n }\n catch (error) {\n return true;\n }\n }\n /**\n * Modes to control what parts of the component are visible\n * - 'full': Table + CRUD operations (default)\n * - 'form-only': Only show form (for create/edit/view)\n * - 'table-only': Only show table (read-only mode)\n */\n mode = 'full';\n /** Force the component to show specific state */\n forceState = null;\n /** Hide table completely when in form-only mode */\n get hideTable() {\n return (this.mode === 'form-only' || this.mode === 'detail' || (this.forceState && this.mode !== 'table-only')) ?? false;\n }\n /** Auto-show form when in form-only mode with forceState */\n get autoShowForm() {\n return this.mode === 'form-only' && !!this.forceState;\n }\n //لتغيير لون صف معيّن\n rowStyleFn;\n // ✅ لتعيين كلاس CSS أو Tailwind على الصف\n rowClassFn;\n //آخر لتجميد / تعطيل checkbox الاختيار\n disableRowCheckboxFn;\n tableClass = 'h-full flex-1 flex flex-col overflow-hidden border border-surface rounded-2xl xs:rounded-2xl p-4 bg-white';\n route = inject(ActivatedRoute);\n router = inject(Router);\n currentId;\n ngOnInit() {\n if (this.apiName && this.apiName != '') {\n this.service.apiName = this.apiName;\n }\n if (this.apiName) {\n this.service.apiName = this.apiName;\n }\n if (this.tabs.length == 0) {\n this.formFields_ = this.formFields;\n this.tabs.push({ header: 'التفاصيل', icon: 'pi pi-info-circle', fields: this.formFields_, model: this.model });\n }\n if (this.supportSubPage) {\n this.route.paramMap.subscribe(params => {\n const id = params.get(this.idField);\n if (id) {\n this.currentId = id;\n this.mode = 'detail';\n this.loadDetail(id);\n }\n else {\n this.currentId = undefined;\n }\n });\n }\n }\n // 3. Handle Header's Paginate Change Event\n onHeaderPaginateChange(event) {\n this.first = event.first; // Update the 'first' index\n this.rows = event.rows;\n const lazyLoadEvent = {\n first: this.first,\n rows: this.rows,\n // You'd typically include current sorting and filtering state here\n sortField: this.sortField,\n sortOrder: 1,\n filters: this.filters,\n globalFilter: null, // or your current global filter value\n };\n this.onLazyLoad(lazyLoadEvent);\n }\n loadDetail(id) {\n this.service.get(id).subscribe({\n next: res => {\n this.model = res;\n }\n });\n }\n // Helper method to open form programmatically\n openForm(mode, model) {\n this.dialog.openForm(mode, model);\n }\n // private destroy$ = new Subject<void>();\n /** الآن يتلقّى pagination + sort في حدث واحد */\n onLazyLoad(event) {\n // this.model_= this.model ?? {};\n this.model = this.model ?? {};\n this.formFields_ = this.formFields;\n const first = event.first ?? this.first;\n const rows = event.rows ?? this.rows;\n const sortField = typeof event.sortField === 'string'\n ? event.sortField\n : this.sortField;\n const sortOrder = event.sortOrder === -1 ? -1 : 1;\n const filters = {};\n if (event.filters) {\n Object.entries(event.filters).forEach(([field, meta]) => {\n const value = meta.value;\n if (value != null && value !== '') {\n filters[field] = value;\n }\n });\n }\n var queryString = '';\n // Default query\n if (!filters['query']) {\n // Use the new QueryBuilderService methods\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.filterModel, this.formFields_);\n // this.odataSearch.emit(odataParams);\n // Generate query string using the unified method\n queryString = this.queryBuilder.toODataQueryString(odataParams);\n // console.log('OData Query String:', queryString);\n }\n this.first = first;\n this.rows = rows;\n this.sortField = sortField;\n this.sortOrder = sortOrder;\n const dir = sortOrder === 1 ? 'asc' : 'desc';\n const sort = sortField ? `${sortField} ${dir}` : undefined;\n // this.pageChange.emit({ first, rows ,sort, filters });\n this.applySearch({\n filter: this.model['filter'],\n query: queryString,\n sorting: sort,\n skipCount: first,\n maxResultCount: rows,\n });\n // يبني النص وإرساله\n }\n /** تصيير البيانات حسب الصفحة */\n get pagedData() {\n // return this.data ? this.data.slice(this.first, this.first + this.rows) : [];\n return this.data;\n }\n get globalFilterFields() {\n return this.columns.map(c => String(c.key));\n }\n /** أرسل إلى الأب لأتمتة شكل البحث إذا يحتاج */\n // from generic-crud-table.component.ts\n /** بدّل applySearch لتبث pageChange مباشرةً */\n resetPage(filters) {\n // this.genericTable.applyFilter(global);\n this.first = 0;\n this.rows = 10;\n }\n /** بدّل applySearch لتبث pageChange مباشرةً */\n applySearch(filters) {\n // this.genericTable.applyFilter(global);\n this.onSearch.emit(filters);\n }\n /** دالة تنفّذ عند النقر على صف */\n onRowClick(row) {\n if (this.rowSelectable) {\n this.rowSelect.emit(row);\n }\n }\n onSubmit() {\n if (this.mode != 'form-only') {\n this.applySearch('');\n }\n }\n trackByIdx(index, item) {\n return index;\n }\n onSingleItemAction(btn) {\n if (!this.isSingleItemSelected)\n return;\n const selectedItem = this._selectedRows[0];\n this.singleAction.emit({\n name: btn.actionName ?? 'singleAction',\n item: selectedItem\n });\n }\n onInternalBulkAction(btn) {\n if (!this.isMultipleItemSelected)\n return;\n this.bulkAction.emit({\n name: btn.actionName ?? 'bulkAction',\n items: [...this._selectedRows] // نرسل نسخة من المصفوفة\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericCrudTableComponent, isStandalone: true, selector: \"app-generic-crud-table\", inputs: { data: \"data\", formFields: \"formFields\", columns: \"columns\", dialogMaxWidth: \"dialogMaxWidth\", isViewMode: \"isViewMode\", displayMode: \"displayMode\", useConfirmOnSave: \"useConfirmOnSave\", isEditMode: \"isEditMode\", drawerVisible: \"drawerVisible\", dialogVisible: \"dialogVisible\", model: \"model\", loading: \"loading\", errorMsg: \"errorMsg\", errorMessage: \"errorMessage\", actions: \"actions\", actionsMode: \"actionsMode\", beforeSaveTransform: \"beforeSaveTransform\", filters: \"filters\", filterModel: \"filterModel\", showSearch: \"showSearch\", first: \"first\", rows: \"rows\", totalRecords: \"totalRecords\", rowSelectable: \"rowSelectable\", scrollHeight: \"scrollHeight\", paginator: \"paginator\", service: \"service\", apiName: \"apiName\", idField: \"idField\", showRowSelectionCheckbox: \"showRowSelectionCheckbox\", showAddButton: \"showAddButton\", addPermissionName: \"addPermissionName\", addButtonConfigs: \"addButtonConfigs\", createEditActions: \"createEditActions\", supportSubPage: \"supportSubPage\", tabs: \"tabs\", bulkActionButtons: \"bulkActionButtons\", singleActionButtons: \"singleActionButtons\", breadcrumb: \"breadcrumb\", mode: \"mode\", forceState: \"forceState\", hideTable: \"hideTable\", autoShowForm: \"autoShowForm\", rowStyleFn: \"rowStyleFn\", rowClassFn: \"rowClassFn\", disableRowCheckboxFn: \"disableRowCheckboxFn\" }, outputs: { action: \"action\", bulkAction: \"bulkAction\", singleAction: \"singleAction\", afterSave: \"afterSave\", afterDelete: \"afterDelete\", beforeSave: \"beforeSave\", beforeDelete: \"beforeDelete\", formCancel: \"formCancel\", formInit: \"formInit\", dataLoaded: \"dataLoaded\", selectionChange: \"selectionChange\", error: \"error\", search: \"search\", pageChange: \"pageChange\", onSearch: \"onSearch\", visibleChange: \"visibleChange\", rowSelect: \"rowSelect\" }, viewQueries: [{ propertyName: \"genericTable\", first: true, predicate: [\"genericTable\"], descendants: true }, { propertyName: \"dialog\", first: true, predicate: [\"dialog\"], descendants: true }], ngImport: i0, template: \"<div\\r\\n [class]=\\\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\\\"\\r\\n>\\r\\n <app-generic-crud-header\\r\\n [mode]=\\\"mode\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [isSingleItemSelected]=\\\"isSingleItemSelected\\\"\\r\\n [selectedItems]=\\\"_selectedRows\\\"\\r\\n [singleActionButtons]=\\\"singleActionButtons\\\"\\r\\n [bulkActionButtons]=\\\"bulkActionButtons\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [filters]=\\\"filters\\\"\\r\\n [filterModel]=\\\"filterModel\\\"\\r\\n [showSearch]=\\\"showSearch\\\"\\r\\n (singleItemAction)=\\\"onSingleItemAction($event)\\\"\\r\\n (bulkAction)=\\\"onInternalBulkAction($event)\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (search)=\\\"resetPage($event);applySearch($event);\\\"\\r\\n (resetSearch)=\\\"resetPage($event);applySearch('');\\\"\\r\\n (paginateChange)=\\\"onHeaderPaginateChange($event)\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n/>\\r\\n\\r\\n @if (!hideTable) {\\r\\n <lib-generic-table\\r\\n [data]=\\\"data\\\"\\r\\n [columns]=\\\"columns\\\"\\r\\n [paginator]=\\\"paginator\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [actionsMode]=\\\"actionsMode\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n [sortField]=\\\"sortField\\\"\\r\\n [sortOrder]=\\\"sortOrder\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [globalFilterFields]=\\\"globalFilterFields\\\"\\r\\n [scrollHeight]=\\\"scrollHeight\\\"\\r\\n [showRowSelectionCheckbox]=\\\"showRowSelectionCheckbox\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (onAddNew)=\\\"action.emit({ name: 'add', row: null! })\\\"\\r\\n (pageChange)=\\\"onLazyLoad($event)\\\"\\r\\n [rowSelectable]=\\\"rowSelectable\\\"\\r\\n (rowSelect)=\\\"onRowClick($event)\\\"\\r\\n [(selection)]=\\\"_selectedRows\\\"\\r\\n #genericTable\\r\\n ></lib-generic-table>\\r\\n\\r\\n }\\r\\n\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [dialogMaxWidth]=\\\"dialogMaxWidth\\\"\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [forceState]=\\\"forceState\\\"\\r\\n [drawerVisible]=\\\"drawerVisible\\\"\\r\\n [dialogVisible]=\\\"dialogVisible\\\"\\r\\n [isViewMode]=\\\"isViewMode\\\"\\r\\n [isEditMode]=\\\"isEditMode\\\"\\r\\n [useConfirmOnSave]=\\\"useConfirmOnSave\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [errorMsg]=\\\"errorMsg\\\"\\r\\n [errorMessage]=\\\"errorMessage\\\"\\r\\n [beforeSaveTransform]=\\\"beforeSaveTransform\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (afterSave)=\\\"afterSave.emit($event);onSubmit();\\\"\\r\\n (afterDelete)=\\\"afterDelete.emit($event)\\\"\\r\\n (beforeSave)=\\\"beforeSave.emit($event)\\\"\\r\\n (beforeDelete)=\\\"beforeDelete.emit($event)\\\"\\r\\n (formCancel)=\\\"formCancel.emit()\\\"\\r\\n (formInit)=\\\"formInit.emit($event)\\\"\\r\\n (dataLoaded)=\\\"dataLoaded.emit($event)\\\"\\r\\n (selectionChange)=\\\"selectionChange.emit($event)\\\"\\r\\n (error)=\\\"error.emit($event)\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n\\r\\n <app-detail-view\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [title]=\\\"breadcrumb_?.[0]?.label || 'Detail'\\\"\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [tabs]=\\\"tabs\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [createEditActions]=\\\"createEditActions\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n >\\r\\n </app-detail-view>\\r\\n\\r\\n</div>\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: TableModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: GenericTable, selector: \"lib-generic-table\", inputs: [\"data\", \"columns\", \"loading\", \"actions\", \"actionsPosition\", \"actionsMode\", \"first\", \"rows\", \"totalRecords\", \"sortField\", \"sortOrder\", \"globalFilterFields\", \"addButtonConfigs\", \"scrollHeight\", \"rowSelectable\", \"rowStyleFn\", \"rowClassFn\", \"disableRowCheckboxFn\", \"selection\", \"paginator\", \"showRowSelectionCheckbox\"], outputs: [\"action\", \"pageChange\", \"onAddNew\", \"rowSelect\", \"selectionChange\"] }, { kind: \"ngmodule\", type: ToolbarModule }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: DividerModule }, { kind: \"ngmodule\", type: IconFieldModule }, { kind: \"ngmodule\", type: DrawerModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: MessageModule }, { kind: \"ngmodule\", type: DialogModule }, { kind: \"component\", type: GenericDialogComponent, selector: \"app-generic-dialog\", inputs: [\"form\", \"service\", \"formFields\", \"model\", \"apiName\", \"idField\", \"dialogMaxWidth\", \"displayMode\", \"mode\", \"forceState\", \"drawerVisible\", \"dialogVisible\", \"isViewMode\", \"isEditMode\", \"useConfirmOnSave\", \"loading\", \"errorMsg\", \"errorMessage\", \"beforeSaveTransform\", \"hideTable\", \"autoShowForm\"], outputs: [\"action\", \"afterSave\", \"afterDelete\", \"beforeSave\", \"beforeDelete\", \"formCancel\", \"formInit\", \"dataLoaded\", \"selectionChange\", \"error\", \"visibleChange\"] }, { kind: \"component\", type: GenericCrudHeaderComponent, selector: \"app-generic-crud-header\", inputs: [\"mode\", \"breadcrumb\", \"isSingleItemSelected\", \"selectedItems\", \"singleActionButtons\", \"bulkActionButtons\", \"addButtonConfigs\", \"filters\", \"filterModel\", \"showSearch\", \"first\", \"rows\", \"totalRecords\", \"apiName\", \"actions\"], outputs: [\"singleItemAction\", \"bulkAction\", \"search\", \"resetSearch\", \"action\", \"paginateChange\"] }, { kind: \"component\", type: GenericViewComponent, selector: \"app-detail-view\", inputs: [\"title\", \"actions\", \"createEditActions\", \"tabs\", \"viewMode\", \"breadcrumb\", \"service\", \"formFields\", \"apiName\", \"idField\", \"standaloneMode\", \"isViewMode\", \"isCreateMode\", \"isEditMode\", \"model\", \"displayMode\", \"mode\", \"loading\"], outputs: [\"action\", \"afterDelete\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericCrudTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'app-generic-crud-table', standalone: true, imports: [\n CommonModule,\n TableModule,\n ButtonModule,\n GenericTable,\n ToolbarModule,\n TranslateModule,\n DividerModule,\n IconFieldModule,\n DrawerModule,\n ReactiveFormsModule,\n FormsModule,\n MessageModule,\n DialogModule,\n GenericDialogComponent,\n GenericCrudHeaderComponent,\n GenericViewComponent\n ], host: {\n class: ''\n }, template: \"<div\\r\\n [class]=\\\"mode !== 'form-only' && mode !== 'detail' ? tableClass : ''\\\"\\r\\n>\\r\\n <app-generic-crud-header\\r\\n [mode]=\\\"mode\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [isSingleItemSelected]=\\\"isSingleItemSelected\\\"\\r\\n [selectedItems]=\\\"_selectedRows\\\"\\r\\n [singleActionButtons]=\\\"singleActionButtons\\\"\\r\\n [bulkActionButtons]=\\\"bulkActionButtons\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [filters]=\\\"filters\\\"\\r\\n [filterModel]=\\\"filterModel\\\"\\r\\n [showSearch]=\\\"showSearch\\\"\\r\\n (singleItemAction)=\\\"onSingleItemAction($event)\\\"\\r\\n (bulkAction)=\\\"onInternalBulkAction($event)\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (search)=\\\"resetPage($event);applySearch($event);\\\"\\r\\n (resetSearch)=\\\"resetPage($event);applySearch('');\\\"\\r\\n (paginateChange)=\\\"onHeaderPaginateChange($event)\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n/>\\r\\n\\r\\n @if (!hideTable) {\\r\\n <lib-generic-table\\r\\n [data]=\\\"data\\\"\\r\\n [columns]=\\\"columns\\\"\\r\\n [paginator]=\\\"paginator\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [actionsMode]=\\\"actionsMode\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [rows]=\\\"rows\\\"\\r\\n [totalRecords]=\\\"totalRecords\\\"\\r\\n [sortField]=\\\"sortField\\\"\\r\\n [sortOrder]=\\\"sortOrder\\\"\\r\\n [addButtonConfigs]=\\\"addButtonConfigs\\\"\\r\\n [globalFilterFields]=\\\"globalFilterFields\\\"\\r\\n [scrollHeight]=\\\"scrollHeight\\\"\\r\\n [showRowSelectionCheckbox]=\\\"showRowSelectionCheckbox\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (onAddNew)=\\\"action.emit({ name: 'add', row: null! })\\\"\\r\\n (pageChange)=\\\"onLazyLoad($event)\\\"\\r\\n [rowSelectable]=\\\"rowSelectable\\\"\\r\\n (rowSelect)=\\\"onRowClick($event)\\\"\\r\\n [(selection)]=\\\"_selectedRows\\\"\\r\\n #genericTable\\r\\n ></lib-generic-table>\\r\\n\\r\\n }\\r\\n\\r\\n <app-generic-dialog\\r\\n #dialog\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [dialogMaxWidth]=\\\"dialogMaxWidth\\\"\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [forceState]=\\\"forceState\\\"\\r\\n [drawerVisible]=\\\"drawerVisible\\\"\\r\\n [dialogVisible]=\\\"dialogVisible\\\"\\r\\n [isViewMode]=\\\"isViewMode\\\"\\r\\n [isEditMode]=\\\"isEditMode\\\"\\r\\n [useConfirmOnSave]=\\\"useConfirmOnSave\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [errorMsg]=\\\"errorMsg\\\"\\r\\n [errorMessage]=\\\"errorMessage\\\"\\r\\n [beforeSaveTransform]=\\\"beforeSaveTransform\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n (afterSave)=\\\"afterSave.emit($event);onSubmit();\\\"\\r\\n (afterDelete)=\\\"afterDelete.emit($event)\\\"\\r\\n (beforeSave)=\\\"beforeSave.emit($event)\\\"\\r\\n (beforeDelete)=\\\"beforeDelete.emit($event)\\\"\\r\\n (formCancel)=\\\"formCancel.emit()\\\"\\r\\n (formInit)=\\\"formInit.emit($event)\\\"\\r\\n (dataLoaded)=\\\"dataLoaded.emit($event)\\\"\\r\\n (selectionChange)=\\\"selectionChange.emit($event)\\\"\\r\\n (error)=\\\"error.emit($event)\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n >\\r\\n </app-generic-dialog>\\r\\n\\r\\n <app-detail-view\\r\\n [displayMode]=\\\"displayMode\\\"\\r\\n [mode]=\\\"mode\\\"\\r\\n [title]=\\\"breadcrumb_?.[0]?.label || 'Detail'\\\"\\r\\n [service]=\\\"service\\\"\\r\\n [apiName]=\\\"service.apiName\\\"\\r\\n [apiName]=\\\"apiName\\\"\\r\\n [idField]=\\\"idField\\\"\\r\\n [actions]=\\\"actions\\\"\\r\\n [formFields]=\\\"formFields\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [tabs]=\\\"tabs\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n [breadcrumb]=\\\"breadcrumb_\\\"\\r\\n [createEditActions]=\\\"createEditActions\\\"\\r\\n (action)=\\\"action.emit($event)\\\"\\r\\n >\\r\\n </app-detail-view>\\r\\n\\r\\n</div>\\r\\n\" }]\n }], propDecorators: { genericTable: [{\n type: ViewChild,\n args: ['genericTable']\n }], dialog: [{\n type: ViewChild,\n args: ['dialog']\n }], data: [{\n type: Input\n }], formFields: [{\n type: Input\n }], columns: [{\n type: Input\n }], dialogMaxWidth: [{\n type: Input\n }], isViewMode: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], useConfirmOnSave: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], drawerVisible: [{\n type: Input\n }], dialogVisible: [{\n type: Input\n }], model: [{\n type: Input\n }], loading: [{\n type: Input\n }], errorMsg: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], actions: [{\n type: Input\n }], actionsMode: [{\n type: Input\n }], action: [{\n type: Output\n }], bulkAction: [{\n type: Output\n }], singleAction: [{\n type: Output\n }], beforeSaveTransform: [{\n type: Input\n }], afterSave: [{\n type: Output\n }], afterDelete: [{\n type: Output\n }], beforeSave: [{\n type: Output\n }], beforeDelete: [{\n type: Output\n }], formCancel: [{\n type: Output\n }], formInit: [{\n type: Output\n }], dataLoaded: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], error: [{\n type: Output\n }], filters: [{\n type: Input\n }], filterModel: [{\n type: Input\n }], search: [{\n type: Output\n }], showSearch: [{\n type: Input\n }], first: [{\n type: Input\n }], rows: [{\n type: Input\n }], totalRecords: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], onSearch: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }], rowSelectable: [{\n type: Input\n }], rowSelect: [{\n type: Output\n }], scrollHeight: [{\n type: Input\n }], paginator: [{\n type: Input\n }], service: [{\n type: Input\n }], apiName: [{\n type: Input\n }], idField: [{\n type: Input\n }], showRowSelectionCheckbox: [{\n type: Input\n }], showAddButton: [{\n type: Input\n }], addPermissionName: [{\n type: Input\n }], addButtonConfigs: [{\n type: Input\n }], createEditActions: [{\n type: Input\n }], supportSubPage: [{\n type: Input\n }], tabs: [{\n type: Input\n }], bulkActionButtons: [{\n type: Input\n }], singleActionButtons: [{\n type: Input\n }], breadcrumb: [{\n type: Input\n }], mode: [{\n type: Input\n }], forceState: [{\n type: Input\n }], hideTable: [{\n type: Input\n }], autoShowForm: [{\n type: Input\n }], rowStyleFn: [{\n type: Input\n }], rowClassFn: [{\n type: Input\n }], disableRowCheckboxFn: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jcnVkLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvbGliL2dlbmVyaWMtY3J1ZC10YWJsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWNydWQtdGFibGUvc3JjL2xpYi9nZW5lcmljLWNydWQtdGFibGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFDeEQscURBQXFEO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTyxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFRLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEYsT0FB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QkcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFvQkMsVUFBVTtzQkFBbEIsS0FBSztnQkF1QkssSUFBSTtzQkFBWixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR08sU0FBUztzQkFBckIsS0FBSztnQkFLTyxZQUFZO3NCQUF4QixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZSAqL1xyXG5pbXBvcnQgeyBEaXZpZGVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaXZpZGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWVzc2FnZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvbWVzc2FnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgUGFnaW5hdG9yU3RhdGUgfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFRhYmxlTW9kdWxlLFRhYmxlTGF6eUxvYWRFdmVudCAgfSAgZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IFRvb2xiYXJNb2R1bGUgfSAgIGZyb20gJ3ByaW1lbmcvdG9vbGJhcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybU9wdGlvbnMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgSWNvbkZpZWxkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pY29uZmllbGQnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRHJhd2VyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcmF3ZXInO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbmZpZyB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTd2FsU2VydmljZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEFjdGlvbkRlZiB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcuY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBHZW5lcmljQ3J1ZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZ2VuZXJpYy1jcnVkLWhlYWRlcic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBHZW5lcmljVGFibGUgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy10YWJsZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNEaWFsb2dDb21wb25lbnQgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1kaWFsb2cnO1xyXG5pbXBvcnQgeyBEZXRhaWxUYWIsIEdlbmVyaWNWaWV3Q29tcG9uZW50IH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy51aS5jb3JlL2dlbmVyaWMtdmlldyc7XHJcbmltcG9ydCB7IFF1ZXJ5QnVpbGRlclNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdlQ2hhbmdlUGF5bG9hZCBleHRlbmRzIFBhZ2luYXRvclN0YXRlIHtcclxuc29ydD86IHN0cmluZztcclxuZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFjdGlvbnNNb2RlID0gJ2J1dHRvbnMnIHwgJ21lbnUnO1xyXG5cclxuLyoqXHJcbiAqINmF2YPZiNmGINis2K/ZiNmEIENSVUQg2LnYp9mFINmK2YXZg9mGINil2LnYp9iv2Kkg2KfYs9iq2K7Yr9in2YXZh1xyXG4gKiDZitiv2LnZhSDYp9mE2LnZhdmE2YrYp9iqINin2YTYo9iz2KfYs9mK2Kk6INil2YbYtNin2KHYjCDZgtix2KfYodip2Iwg2KrYrdiv2YrYq9iMINit2LDZgVxyXG4gKiDZhdi5INil2YXZg9in2YbZitipINin2YTYqtiu2LXZiti1INi52KjYsSDYudiv2Kkg2KPZiNi22KfYuSDZiNi52LHYtlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZ2VuZXJpYy1jcnVkLXRhYmxlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRhYmxlTW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgR2VuZXJpY1RhYmxlLFxyXG4gICAgVG9vbGJhck1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIERpdmlkZXJNb2R1bGUsXHJcbiAgICBJY29uRmllbGRNb2R1bGUsXHJcbiAgICBEcmF3ZXJNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNZXNzYWdlTW9kdWxlLFxyXG4gICAgRGlhbG9nTW9kdWxlLFxyXG4gICAgR2VuZXJpY0RpYWxvZ0NvbXBvbmVudCxcclxuICAgIEdlbmVyaWNDcnVkSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgR2VuZXJpY1ZpZXdDb21wb25lbnRcclxuXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1jcnVkLXRhYmxlLmh0bWwnLFxyXG4gICBob3N0OiB7XHJcbiAgICAgICAgY2xhc3M6ICcnXHJcbiAgICB9LFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNDcnVkVGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gQFZpZXdDaGlsZCgnZ2VuZXJpY1RhYmxlJykgZ2VuZXJpY1RhYmxlITogR2VuZXJpY1RhYmxlPFQ+O1xyXG4gQFZpZXdDaGlsZCgnZGlhbG9nJykgZGlhbG9nITogR2VuZXJpY0RpYWxvZ0NvbXBvbmVudDtcclxuIHRyYW5zbGF0ZTpUcmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gcHJpdmF0ZSBzd2FsU2VydmljZSA9IGluamVjdChTd2FsU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBxdWVyeUJ1aWxkZXIgPSBpbmplY3QoUXVlcnlCdWlsZGVyU2VydmljZSk7XHJcblxyXG4gICAgaG9tZTogTWVudUl0ZW0gfCB1bmRlZmluZWQgPSB7IGljb246ICdwaSBwaS1ob21lJywgcm91dGVyTGluazogJy8nIH07XHJcbiAgQElucHV0KCkgZGF0YTogVFtdID0gW107XHJcbiAgIGZvcm1GaWVsZHNfOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107ICAvLyA8LS0g2YfZhtinXHJcbiAgQElucHV0KCkgZm9ybUZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdOyAgLy8gPC0tINmH2YbYp1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTsgIC8vIDwtLSDZh9mG2KdcclxuICBASW5wdXQoKSBkaWFsb2dNYXhXaWR0aCA9ICc0MHJlbSc7IC8vIHVuc2V0ICwgZml0LWNvbnRlbnRcclxuICBASW5wdXQoKSBpc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBkaXNwbGF5TW9kZTpcclxuICAgIHwgJ2RyYXdlcicgfCAnZGlhbG9nJyB8ICdyb3V0ZScgfCAnaW5saW5lJ1xyXG4gICAgfCBQYXJ0aWFsPFJlY29yZDwnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JywgJ2RyYXdlcicgfCAnZGlhbG9nJyB8ICdyb3V0ZScgfCAnaW5saW5lJz4+XHJcbiAgICA9ICdkcmF3ZXInO1xyXG4gIEBJbnB1dCgpIHVzZUNvbmZpcm1PblNhdmUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0VkaXRNb2RlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZHJhd2VyVmlzaWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcclxuICAgZm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcclxuIEBJbnB1dCgpIG1vZGVsOiBhbnk7XHJcbiAgbW9kZWxfOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3JNc2cgPSAnJztcclxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZ3xhbnkgPSAnJztcclxuXHJcbm9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge307XHJcblxyXG4gIEBJbnB1dCgpIGFjdGlvbnM6IEFjdGlvbkRlZjxUPltdID0gW107XHJcbiAgICAvKiog2KrYrdiv2K8g2LfYsdmK2YLYqSDYp9mE2LnYsdi2OiAnYnV0dG9ucycg2KPZiCAnbWVudScgKi9cclxuICBASW5wdXQoKSBhY3Rpb25zTW9kZTogQWN0aW9uc01vZGUgPSAnYnV0dG9ucyc7XHJcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHJvdzogVCB9PigpO1xyXG4gIEBPdXRwdXQoKSBidWxrQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IG5hbWU6IHN0cmluZzsgaXRlbXM6IFRbXSB9PigpO1xyXG4gIEBPdXRwdXQoKSBzaW5nbGVBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyBpdGVtOiBUIH0+KCk7XHJcbiAgQElucHV0KCkgYmVmb3JlU2F2ZVRyYW5zZm9ybT86IChyZWNvcmQ6IGFueSwgaXNFZGl0OiBib29sZWFuKSA9PiBhbnk7IC8vIOKaoSDYr9mI2KfZhCDZhdiu2LXYtdipINmC2KjZhCDYp9mE2K3Zgdi4XHJcblxyXG5cclxuICAgQE91dHB1dCgpIGFmdGVyU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IFQ7IGlzRWRpdDogYm9vbGVhbjsgcmVzcG9uc2U/OiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBUOyByZXNwb25zZT86IGFueSB9PigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogVDsgaXNFZGl0OiBib29sZWFuIH0+KCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZURlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IFQgfT4oKTtcclxuICBAT3V0cHV0KCkgZm9ybUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgZm9ybUluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZm9ybTogVW50eXBlZEZvcm1Hcm91cDsgbW9kZWw6IGFueSB9PigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRhdGE6IFRbXTsgdG90YWw6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc2VsZWN0ZWQ6IFRbXTsgc2VsZWN0ZWRDb3VudDogbnVtYmVyIH0+KCk7XHJcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjx7IGVycm9yOiBhbnk7IGNvbnRleHQ6IHN0cmluZyB9PigpO1xyXG5cclxuICAvLyDYp9mE2KjYrdirXHJcbi8vIFNlYXJjaFxyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IGFueTtcclxuICAgQElucHV0KCkgZmlsdGVyTW9kZWw6IGFueSA9IHt9O1xyXG4gIEBPdXRwdXQoKSBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IHN0cmluZzsgZ2xvYmFsOiBzdHJpbmcgfT4oKTtcclxuXHJcbi8qKiDZhNmE2KrYrdmD2YUg2KjYpdi42YfYp9ixL9il2K7Zgdin2KEg2YLYs9mFINin2YTYqNit2KsgKi9cclxuICBASW5wdXQoKSBzaG93U2VhcmNoID0gdHJ1ZTtcclxuXHJcbiAgLyoqIFBhZ2luYXRpb24gSW5wdXRzICovXHJcbiAgQElucHV0KCkgZmlyc3QgPSAwO1xyXG4gIEBJbnB1dCgpIHJvd3MgPSAxMDtcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwO1xyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlQ2hhbmdlUGF5bG9hZD4oKTtcclxuICBAT3V0cHV0KCkgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbkBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7O1xyXG4vLyBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgLyoqINmE2KzYudmEINin2YTYrNiv2YjZhCDZgtin2KjZhCDZhNin2K7YqtmK2KfYsSDYp9mE2LXZgdmI2YEgKNin2YHYqtix2KfYttmKIGZhbHNlKSAqL1xyXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGFibGUgPSBmYWxzZTtcclxuICAvKiog2K3Yr9irINmK2K7YsdisINin2YTYtdmBINin2YTZhdit2K/ZkdivICovXHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuXHJcbiAgc2VsZWN0aW9uOiBUIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gLy8g2KfZhNmB2LHYslxyXG4gIHNvcnRGaWVsZD86IHN0cmluZztcclxuICBzb3J0T3JkZXI6IDEgfCAtMSA9IDE7XHJcblxyXG5ASW5wdXQoKSBzY3JvbGxIZWlnaHQgPSAnNDAwcHgnO1xyXG5cclxuIEBJbnB1dCgpIHBhZ2luYXRvciA9IHRydWU7XHJcblxyXG5ASW5wdXQoKSBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IGluamVjdChCYXNlU2VydmljZSk7XHJcbkBJbnB1dCgpIGFwaU5hbWUgPSAnJztcclxuQElucHV0KCkgaWRGaWVsZCA9ICdpZCc7XHJcblxyXG4gQElucHV0KCkgc2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94ID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBZGRCdXR0b24gPSB0cnVlO1xyXG5cclxuQElucHV0KCkgYWRkUGVybWlzc2lvbk5hbWU/OnN0cmluZztcclxuXHJcbiAgQElucHV0KCkgYWRkQnV0dG9uQ29uZmlnczogQnV0dG9uQ29uZmlnW10gPSBbXHJcbiAge1xyXG4gICAgaWNvbjogJ3BpIHBpLXBsdXMnLFxyXG4gICAgbGFiZWw6ICdBREQnLFxyXG4gICAgdmFyaWFudDogJ3JhaXNlZCcsXHJcbiAgICBzZXZlcml0eTogJ3ByaW1hcnknLFxyXG4gICAgc2l6ZTogJ3NtYWxsJyxcclxuICAgIGFjdGlvbk5hbWU6ICdhZGQnLFxyXG4gICAgdmlzaWJsZTogdGhpcy5zaG93QWRkQnV0dG9uLFxyXG4gICAgcGVybWlzc2lvbjogdGhpcy5hZGRQZXJtaXNzaW9uTmFtZSxcclxuICB9LFxyXG5dO1xyXG5cclxuIEBJbnB1dCgpIGNyZWF0ZUVkaXRBY3Rpb25zOiBCdXR0b25Db25maWdbXSA9IFtcclxuICB7XHJcbiAgICBpY29uOiAncGkgcGktY2hlY2snLFxyXG4gICAgbGFiZWw6ICdTQVZFJyxcclxuICAgIHZhcmlhbnQ6ICdyYWlzZWQnLFxyXG4gICAgc2V2ZXJpdHk6ICdwcmltYXJ5JyxcclxuICAgIHNpemU6ICdzbWFsbCcsXHJcbiAgICBhY3Rpb25OYW1lOiAnc2F2ZScsXHJcbiAgICB0eXBlOiAnc3VibWl0JyxcclxuICAgIHNwbGl0QWN0aW9uczogW1xyXG4gICAgIHtcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ1NBVkVfQU5EX0FERCcpLFxyXG4gICAgICBpY29uOiAncGkgcGktc2F2ZScsXHJcbiAgICAgICBhY3Rpb25OYW1lOiAnc2F2ZUFuZEFkZCdcclxuICAgIH1cclxuICBdXHJcbiAgfSxcclxuICAge1xyXG4gICAgaWNvbjogJ3BpIHBpLXRpbWVzJyxcclxuICAgIGxhYmVsOiAnQ0FOQ0VMJyxcclxuICAgIHZhcmlhbnQ6ICdyYWlzZWQnLFxyXG4gICAgc2V2ZXJpdHk6ICdkYW5nZXInLFxyXG4gICAgc2l6ZTogJ3NtYWxsJyxcclxuICAgIGFjdGlvbk5hbWU6ICdjYW5jZWwnLFxyXG4gICAgdHlwZTogJ2J1dHRvbicsXHJcbiAgfSxcclxuXTtcclxuXHJcbiBASW5wdXQoKSBzdXBwb3J0U3ViUGFnZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gQElucHV0KCkgdGFiczogRGV0YWlsVGFiW10gPSBbXTtcclxuICBASW5wdXQoKSBidWxrQWN0aW9uQnV0dG9uczogQnV0dG9uQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBzaW5nbGVBY3Rpb25CdXR0b25zOiBCdXR0b25Db25maWdbXSA9IFtdO1xyXG5cclxuIF9zZWxlY3RlZFJvd3M6IFRbXSA9IFtdO1xyXG5cclxuZ2V0IGlzU2luZ2xlSXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiB0aGlzLl9zZWxlY3RlZFJvd3MubGVuZ3RoID09PSAxO1xyXG59XHJcblxyXG5nZXQgaXNNdWx0aXBsZUl0ZW1TZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDE7XHJcbn1cclxuXHJcbmdldCBzZWxlY3RlZEl0ZW1zKCk6IFRbXSB7XHJcbiAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUm93cztcclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcbkBJbnB1dCgpIGJyZWFkY3J1bWI6IE1lbnVJdGVtW10gfCB1bmRlZmluZWQ7XHJcblxyXG5cclxuZ2V0IGJyZWFkY3J1bWJfKCk6IE1lbnVJdGVtW10gfCB1bmRlZmluZWQge1xyXG4gIHJldHVybiB0aGlzLmJyZWFkY3J1bWI/Lm1hcCh2ID0+ICh7XHJcbiAgICAuLi52LFxyXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodi5sYWJlbCA/PyAnJylcclxuICB9KSk7XHJcbn1cclxuZ2V0IHJ0bCgpOiBib29sZWFuIHtcclxuICB0cnkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50Py5kb2N1bWVudEVsZW1lbnQ/LmRpciA9PT0gJ3J0bCc7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG5cclxuIC8qKlxyXG4gICAqIE1vZGVzIHRvIGNvbnRyb2wgd2hhdCBwYXJ0cyBvZiB0aGUgY29tcG9uZW50IGFyZSB2aXNpYmxlXHJcbiAgICogLSAnZnVsbCc6IFRhYmxlICsgQ1JVRCBvcGVyYXRpb25zIChkZWZhdWx0KVxyXG4gICAqIC0gJ2Zvcm0tb25seSc6IE9ubHkgc2hvdyBmb3JtIChmb3IgY3JlYXRlL2VkaXQvdmlldylcclxuICAgKiAtICd0YWJsZS1vbmx5JzogT25seSBzaG93IHRhYmxlIChyZWFkLW9ubHkgbW9kZSlcclxuICAgKi9cclxuICBASW5wdXQoKSBtb2RlOiAnZnVsbCcgfCAnZm9ybS1vbmx5JyB8ICd0YWJsZS1vbmx5JyB8ICdkZXRhaWwnID0gJ2Z1bGwnO1xyXG5cclxuICAvKiogRm9yY2UgdGhlIGNvbXBvbmVudCB0byBzaG93IHNwZWNpZmljIHN0YXRlICovXHJcbiAgQElucHV0KCkgZm9yY2VTdGF0ZTogJ2NyZWF0ZScgfCAnZWRpdCcgfCAndmlldycgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIEhpZGUgdGFibGUgY29tcGxldGVseSB3aGVuIGluIGZvcm0tb25seSBtb2RlICovXHJcbiAgQElucHV0KCkgZ2V0IGhpZGVUYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5tb2RlID09PSAnZm9ybS1vbmx5JyB8fCB0aGlzLm1vZGUgPT09ICdkZXRhaWwnIHx8ICh0aGlzLmZvcmNlU3RhdGUgJiYgdGhpcy5tb2RlICE9PSAndGFibGUtb25seScpICk/PyBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKiBBdXRvLXNob3cgZm9ybSB3aGVuIGluIGZvcm0tb25seSBtb2RlIHdpdGggZm9yY2VTdGF0ZSAqL1xyXG4gIEBJbnB1dCgpIGdldCBhdXRvU2hvd0Zvcm0oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZm9ybS1vbmx5JyAmJiAhIXRoaXMuZm9yY2VTdGF0ZTtcclxuICB9XHJcbi8v2YTYqti62YrZitixINmE2YjZhiDYtdmBINmF2LnZitmR2YZcclxuICBASW5wdXQoKSByb3dTdHlsZUZuPzogKHJvdzogVCkgPT4gYW55O1xyXG5cclxuICAvLyDinIUg2YTYqti52YrZitmGINmD2YTYp9izIENTUyDYo9mIIFRhaWx3aW5kINi52YTZiSDYp9mE2LXZgVxyXG4gIEBJbnB1dCgpIHJvd0NsYXNzRm4/OiAocm93OiBUKSA9PiBzdHJpbmcgfCBzdHJpbmdbXSB8IFNldDxzdHJpbmc+O1xyXG5cclxuICAvL9ii2K7YsSDZhNiq2KzZhdmK2K8gLyDYqti52LfZitmEIGNoZWNrYm94INin2YTYp9iu2KrZitin2LFcclxuICBASW5wdXQoKSBkaXNhYmxlUm93Q2hlY2tib3hGbj86IChyb3c6IFQpID0+IGJvb2xlYW47XHJcbiB0YWJsZUNsYXNzID0gJ2gtZnVsbCBmbGV4LTEgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW4gYm9yZGVyIGJvcmRlci1zdXJmYWNlIHJvdW5kZWQtMnhsIHhzOnJvdW5kZWQtMnhsIHAtNCBiZy13aGl0ZSc7XHJcblxyXG4gcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcbnByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbmN1cnJlbnRJZD86IHN0cmluZyB8IG51bWJlcjtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZih0aGlzLmFwaU5hbWUgJiYgdGhpcy5hcGlOYW1lICE9ICcnKXtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmFwaU5hbWUgPSB0aGlzLmFwaU5hbWUgO1xyXG4gICAgfVxyXG4gICAgIGlmICh0aGlzLmFwaU5hbWUpIHtcclxuICAgIHRoaXMuc2VydmljZS5hcGlOYW1lID0gdGhpcy5hcGlOYW1lO1xyXG4gIH1cclxuXHJcbiAgaWYodGhpcy50YWJzLmxlbmd0aCA9PSAwKXtcclxuICAgIHRoaXMuZm9ybUZpZWxkc18gPSB0aGlzLmZvcm1GaWVsZHM7XHJcbiAgICB0aGlzLnRhYnMucHVzaCh7IGhlYWRlcjogJ9in2YTYqtmB2KfYtdmK2YQnLGljb246J3BpIHBpLWluZm8tY2lyY2xlJywgZmllbGRzOiB0aGlzLmZvcm1GaWVsZHNfLCBtb2RlbDogdGhpcy5tb2RlbCB9KTtcclxuICB9XHJcbiAgICBpZiAodGhpcy5zdXBwb3J0U3ViUGFnZSkge1xyXG4gIHRoaXMucm91dGUucGFyYW1NYXAuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICBjb25zdCBpZCA9IHBhcmFtcy5nZXQodGhpcy5pZEZpZWxkKTtcclxuICAgIGlmIChpZCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRJZCA9IGlkO1xyXG4gICAgICB0aGlzLm1vZGUgPSAnZGV0YWlsJztcclxuICAgICAgdGhpcy5sb2FkRGV0YWlsKGlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudElkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcbiAgfVxyXG5cclxuICAgLy8gMy4gSGFuZGxlIEhlYWRlcidzIFBhZ2luYXRlIENoYW5nZSBFdmVudFxyXG4gIG9uSGVhZGVyUGFnaW5hdGVDaGFuZ2UoZXZlbnQ6IHsgZmlyc3Q6IG51bWJlcjsgcm93czogbnVtYmVyIH0pIHtcclxuICAgIHRoaXMuZmlyc3QgPSBldmVudC5maXJzdDsgLy8gVXBkYXRlIHRoZSAnZmlyc3QnIGluZGV4XHJcbiAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzO1xyXG5cclxuXHJcbiAgICAgICBjb25zdCBsYXp5TG9hZEV2ZW50OiBUYWJsZUxhenlMb2FkRXZlbnQgPSB7XHJcbiAgICAgICAgZmlyc3Q6IHRoaXMuZmlyc3QsXHJcbiAgICAgICAgcm93czogdGhpcy5yb3dzLFxyXG4gICAgICAgIC8vIFlvdSdkIHR5cGljYWxseSBpbmNsdWRlIGN1cnJlbnQgc29ydGluZyBhbmQgZmlsdGVyaW5nIHN0YXRlIGhlcmVcclxuICAgICAgICBzb3J0RmllbGQ6IHRoaXMuc29ydEZpZWxkLFxyXG4gICAgICAgIHNvcnRPcmRlcjogMSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMgLFxyXG4gICAgICAgIGdsb2JhbEZpbHRlcjogbnVsbCwgLy8gb3IgeW91ciBjdXJyZW50IGdsb2JhbCBmaWx0ZXIgdmFsdWVcclxuICAgIH07XHJcbiAgICB0aGlzLm9uTGF6eUxvYWQobGF6eUxvYWRFdmVudCk7XHJcbiAgfVxyXG4gIGxvYWREZXRhaWwoaWQ6IHN0cmluZyB8IG51bWJlcikge1xyXG4gIHRoaXMuc2VydmljZS5nZXQoaWQgYXMgYW55KS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogcmVzID0+IHtcclxuICAgICAgdGhpcy5tb2RlbCA9IHJlcztcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuLy8gSGVscGVyIG1ldGhvZCB0byBvcGVuIGZvcm0gcHJvZ3JhbW1hdGljYWxseVxyXG5vcGVuRm9ybShtb2RlOiAnY3JlYXRlJyB8ICdlZGl0JyB8ICd2aWV3JywgbW9kZWw/OiBhbnkpIHtcclxuICB0aGlzLmRpYWxvZy5vcGVuRm9ybShtb2RlLG1vZGVsKTtcclxufVxyXG5cclxuXHJcbi8vICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuIC8qKiDYp9mE2KLZhiDZitiq2YTZgtmR2YkgcGFnaW5hdGlvbiArIHNvcnQg2YHZiiDYrdiv2Ksg2YjYp9it2K8gKi9cclxub25MYXp5TG9hZChldmVudDogVGFibGVMYXp5TG9hZEV2ZW50KSB7XHJcbiAgLy8gdGhpcy5tb2RlbF89IHRoaXMubW9kZWwgPz8ge307XHJcblxyXG4gIHRoaXMubW9kZWw9IHRoaXMubW9kZWwgPz8ge307XHJcblxyXG4gIHRoaXMuZm9ybUZpZWxkc18gPSB0aGlzLmZvcm1GaWVsZHM7XHJcbiAgY29uc3QgZmlyc3QgICAgID0gZXZlbnQuZmlyc3QgID8/IHRoaXMuZmlyc3Q7XHJcbiAgY29uc3Qgcm93cyAgICAgID0gZXZlbnQucm93cyAgID8/IHRoaXMucm93cztcclxuICBjb25zdCBzb3J0RmllbGQgPSB0eXBlb2YgZXZlbnQuc29ydEZpZWxkID09PSAnc3RyaW5nJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gZXZlbnQuc29ydEZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNvcnRGaWVsZDtcclxuICBjb25zdCBzb3J0T3JkZXIgPSBldmVudC5zb3J0T3JkZXIgPT09IC0xID8gLTEgOiAxO1xyXG5cclxuXHJcbiAgY29uc3QgZmlsdGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgaWYgKGV2ZW50LmZpbHRlcnMpIHtcclxuICAgICAgT2JqZWN0LmVudHJpZXMoZXZlbnQuZmlsdGVycykuZm9yRWFjaCgoW2ZpZWxkLCBtZXRhXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKG1ldGEgYXMgYW55KS52YWx1ZTtcclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcclxuICAgICAgICAgIGZpbHRlcnNbZmllbGRdID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSAnJztcclxuICAgIC8vIERlZmF1bHQgcXVlcnlcclxuICBpZighZmlsdGVyc1sncXVlcnknXSl7XHJcbiAgICAgICAvLyBVc2UgdGhlIG5ldyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIG1ldGhvZHNcclxuICAgIGNvbnN0IG9kYXRhUGFyYW1zID0gdGhpcy5xdWVyeUJ1aWxkZXIuYnVpbGRPRGF0YUZyb21RdWVyeU1vZGVsKHRoaXMuZmlsdGVyTW9kZWwsIHRoaXMuZm9ybUZpZWxkc18pO1xyXG4gICAgLy8gdGhpcy5vZGF0YVNlYXJjaC5lbWl0KG9kYXRhUGFyYW1zKTtcclxuXHJcbiAgICAvLyBHZW5lcmF0ZSBxdWVyeSBzdHJpbmcgdXNpbmcgdGhlIHVuaWZpZWQgbWV0aG9kXHJcbiAgICAgcXVlcnlTdHJpbmcgPSB0aGlzLnF1ZXJ5QnVpbGRlci50b09EYXRhUXVlcnlTdHJpbmcob2RhdGFQYXJhbXMpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ09EYXRhIFF1ZXJ5IFN0cmluZzonLCBxdWVyeVN0cmluZyk7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHRoaXMuZmlyc3QgICAgID0gZmlyc3Q7XHJcbiAgdGhpcy5yb3dzICAgICAgPSByb3dzO1xyXG4gIHRoaXMuc29ydEZpZWxkID0gc29ydEZpZWxkO1xyXG4gIHRoaXMuc29ydE9yZGVyID0gc29ydE9yZGVyIGFzIDF8IC0xO1xyXG5jb25zdCBkaXIgPSBzb3J0T3JkZXIgPT09IDEgPyAnYXNjJyA6ICdkZXNjJztcclxuIGNvbnN0IHNvcnQgPSBzb3J0RmllbGQgPyBgJHtzb3J0RmllbGR9ICR7ZGlyfWAgOiB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIHRoaXMucGFnZUNoYW5nZS5lbWl0KHsgZmlyc3QsIHJvd3MgLHNvcnQsIGZpbHRlcnMgfSk7XHJcbiAgIHRoaXMuYXBwbHlTZWFyY2goXHJcbiAgICAgIHtcclxuICAgICAgICBmaWx0ZXI6dGhpcy5tb2RlbFsnZmlsdGVyJ10sXHJcbiAgICAgICAgcXVlcnk6cXVlcnlTdHJpbmcsXHJcbiAgICAgICAgc29ydGluZzpzb3J0LFxyXG4gICAgICAgIHNraXBDb3VudDpmaXJzdCxcclxuICAgICAgICBtYXhSZXN1bHRDb3VudDpyb3dzLFxyXG5cclxuICAgIH1cclxuICApO1xyXG5cclxuXHJcbiAgLy8g2YrYqNmG2Yog2KfZhNmG2LUg2YjYpdix2LPYp9mE2YdcclxuXHJcbn1cclxuXHJcblxyXG4gIC8qKiDYqti12YrZitixINin2YTYqNmK2KfZhtin2Kog2K3Ys9ioINin2YTYtdmB2K3YqSAqL1xyXG4gIGdldCBwYWdlZERhdGEoKTogVFtdIHtcclxuICAgIC8vIHJldHVybiB0aGlzLmRhdGEgPyB0aGlzLmRhdGEuc2xpY2UodGhpcy5maXJzdCwgdGhpcy5maXJzdCArIHRoaXMucm93cykgOiBbXTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xyXG4gIH1cclxuXHJcblxyXG5cclxuZ2V0IGdsb2JhbEZpbHRlckZpZWxkcygpOiBzdHJpbmdbXSB7XHJcbiAgcmV0dXJuIHRoaXMuY29sdW1ucy5tYXAoYyA9PiBTdHJpbmcoYy5rZXkpKTtcclxufVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLyoqINij2LHYs9mEINil2YTZiSDYp9mE2KPYqCDZhNij2KrZhdiq2Kkg2LTZg9mEINin2YTYqNit2Ksg2KXYsNinINmK2K3Yqtin2KwgKi9cclxuLy8gZnJvbSBnZW5lcmljLWNydWQtdGFibGUuY29tcG9uZW50LnRzXHJcbi8qKiDYqNiv2ZHZhCBhcHBseVNlYXJjaCDZhNiq2KjYqyBwYWdlQ2hhbmdlINmF2KjYp9i02LHYqdmLICovXHJcbnJlc2V0UGFnZShmaWx0ZXJzOiBhbnkpIHtcclxuICAgIC8vIHRoaXMuZ2VuZXJpY1RhYmxlLmFwcGx5RmlsdGVyKGdsb2JhbCk7XHJcbiAgICB0aGlzLmZpcnN0ID0gMDtcclxuICAgIHRoaXMucm93cyA9IDEwO1xyXG4gIH1cclxuLyoqINio2K/ZkdmEIGFwcGx5U2VhcmNoINmE2KrYqNirIHBhZ2VDaGFuZ2Ug2YXYqNin2LTYsdip2YsgKi9cclxuIGFwcGx5U2VhcmNoKGZpbHRlcnM6IGFueSkge1xyXG4gICAgLy8gdGhpcy5nZW5lcmljVGFibGUuYXBwbHlGaWx0ZXIoZ2xvYmFsKTtcclxuICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGZpbHRlcnMpO1xyXG4gIH1cclxuXHJcblxyXG4gLyoqINiv2KfZhNipINiq2YbZgdmR2LAg2LnZhtivINin2YTZhtmC2LEg2LnZhNmJINi12YEgKi9cclxuICBvblJvd0NsaWNrKHJvdzogVCkge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSkge1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdC5lbWl0KHJvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG5vblN1Ym1pdCgpIHtcclxuIGlmICh0aGlzLm1vZGUgIT0gJ2Zvcm0tb25seScpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLmFwcGx5U2VhcmNoKCcnKTtcclxuICAgICAgICB9XHJcbn1cclxuXHJcbiAgICAgdHJhY2tCeUlkeChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpOiBudW1iZXIge1xyXG4gIHJldHVybiBpbmRleDtcclxuIH1cclxuXHJcbm9uU2luZ2xlSXRlbUFjdGlvbihidG46IEJ1dHRvbkNvbmZpZyk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5pc1NpbmdsZUl0ZW1TZWxlY3RlZCkgcmV0dXJuO1xyXG5cclxuICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9zZWxlY3RlZFJvd3NbMF07XHJcbiAgdGhpcy5zaW5nbGVBY3Rpb24uZW1pdCh7XHJcbiAgICBuYW1lOiBidG4uYWN0aW9uTmFtZSA/PyAnc2luZ2xlQWN0aW9uJyxcclxuICAgIGl0ZW06IHNlbGVjdGVkSXRlbVxyXG4gIH0pO1xyXG59XHJcblxyXG5vbkludGVybmFsQnVsa0FjdGlvbihidG46IEJ1dHRvbkNvbmZpZyk6IHZvaWQge1xyXG4gIGlmICghdGhpcy5pc011bHRpcGxlSXRlbVNlbGVjdGVkKSByZXR1cm47XHJcblxyXG4gIHRoaXMuYnVsa0FjdGlvbi5lbWl0KHtcclxuICAgIG5hbWU6IGJ0bi5hY3Rpb25OYW1lID8/ICdidWxrQWN0aW9uJyxcclxuICAgIGl0ZW1zOiBbLi4udGhpcy5fc2VsZWN0ZWRSb3dzXSAgLy8g2YbYsdiz2YQg2YbYs9iu2Kkg2YXZhiDYp9mE2YXYtdmB2YjZgdipXHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG59XHJcbiIsIjxkaXZcclxuICBbY2xhc3NdPVwibW9kZSAhPT0gJ2Zvcm0tb25seScgJiYgbW9kZSAhPT0gJ2RldGFpbCcgID8gdGFibGVDbGFzcyA6ICcnXCJcclxuPlxyXG4gPGFwcC1nZW5lcmljLWNydWQtaGVhZGVyXHJcbiAgW21vZGVdPVwibW9kZVwiXHJcbiAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYl9cIlxyXG4gIFtpc1NpbmdsZUl0ZW1TZWxlY3RlZF09XCJpc1NpbmdsZUl0ZW1TZWxlY3RlZFwiXHJcbiAgW3NlbGVjdGVkSXRlbXNdPVwiX3NlbGVjdGVkUm93c1wiXHJcbiAgW3NpbmdsZUFjdGlvbkJ1dHRvbnNdPVwic2luZ2xlQWN0aW9uQnV0dG9uc1wiXHJcbiAgW2J1bGtBY3Rpb25CdXR0b25zXT1cImJ1bGtBY3Rpb25CdXR0b25zXCJcclxuICBbYWRkQnV0dG9uQ29uZmlnc109XCJhZGRCdXR0b25Db25maWdzXCJcclxuICBbYXBpTmFtZV09XCJzZXJ2aWNlLmFwaU5hbWVcIlxyXG4gIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxyXG4gIFtmaWx0ZXJNb2RlbF09XCJmaWx0ZXJNb2RlbFwiXHJcbiAgW3Nob3dTZWFyY2hdPVwic2hvd1NlYXJjaFwiXHJcbiAgKHNpbmdsZUl0ZW1BY3Rpb24pPVwib25TaW5nbGVJdGVtQWN0aW9uKCRldmVudClcIlxyXG4gIChidWxrQWN0aW9uKT1cIm9uSW50ZXJuYWxCdWxrQWN0aW9uKCRldmVudClcIlxyXG4gIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgKHNlYXJjaCk9XCJyZXNldFBhZ2UoJGV2ZW50KTthcHBseVNlYXJjaCgkZXZlbnQpO1wiXHJcbiAgKHJlc2V0U2VhcmNoKT1cInJlc2V0UGFnZSgkZXZlbnQpO2FwcGx5U2VhcmNoKCcnKTtcIlxyXG4gIChwYWdpbmF0ZUNoYW5nZSk9XCJvbkhlYWRlclBhZ2luYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gIFtmaXJzdF09XCJmaXJzdFwiXHJcbiAgW3Jvd3NdPVwicm93c1wiXHJcbiAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4vPlxyXG5cclxuICAgQGlmICghaGlkZVRhYmxlKSB7XHJcbiAgPGxpYi1nZW5lcmljLXRhYmxlXHJcbiAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIlxyXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcclxuICAgIFthY3Rpb25zTW9kZV09XCJhY3Rpb25zTW9kZVwiXHJcbiAgICBbZmlyc3RdPVwiZmlyc3RcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICBbc29ydEZpZWxkXT1cInNvcnRGaWVsZFwiXHJcbiAgICBbc29ydE9yZGVyXT1cInNvcnRPcmRlclwiXHJcbiAgICBbYWRkQnV0dG9uQ29uZmlnc109XCJhZGRCdXR0b25Db25maWdzXCJcclxuICAgIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiZ2xvYmFsRmlsdGVyRmllbGRzXCJcclxuICAgIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcclxuICAgIFtzaG93Um93U2VsZWN0aW9uQ2hlY2tib3hdPVwic2hvd1Jvd1NlbGVjdGlvbkNoZWNrYm94XCJcclxuICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAob25BZGROZXcpPVwiYWN0aW9uLmVtaXQoeyBuYW1lOiAnYWRkJywgcm93OiBudWxsISB9KVwiXHJcbiAgICAocGFnZUNoYW5nZSk9XCJvbkxhenlMb2FkKCRldmVudClcIlxyXG4gICAgW3Jvd1NlbGVjdGFibGVdPVwicm93U2VsZWN0YWJsZVwiXHJcbiAgICAocm93U2VsZWN0KT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgICBbKHNlbGVjdGlvbildPVwiX3NlbGVjdGVkUm93c1wiXHJcbiAgICAjZ2VuZXJpY1RhYmxlXHJcbiAgPjwvbGliLWdlbmVyaWMtdGFibGU+XHJcblxyXG4gIH1cclxuXHJcbiAgPGFwcC1nZW5lcmljLWRpYWxvZ1xyXG4gICAgI2RpYWxvZ1xyXG4gICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxyXG4gICBbYXBpTmFtZV09XCJzZXJ2aWNlLmFwaU5hbWVcIlxyXG4gICAgW2Zvcm1GaWVsZHNdPVwiZm9ybUZpZWxkc1wiXHJcbiAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgW2FwaU5hbWVdPVwiYXBpTmFtZVwiXHJcbiAgICBbaWRGaWVsZF09XCJpZEZpZWxkXCJcclxuICAgIFtkaWFsb2dNYXhXaWR0aF09XCJkaWFsb2dNYXhXaWR0aFwiXHJcbiAgICBbZGlzcGxheU1vZGVdPVwiZGlzcGxheU1vZGVcIlxyXG4gICAgW21vZGVdPVwibW9kZVwiXHJcbiAgICBbZm9yY2VTdGF0ZV09XCJmb3JjZVN0YXRlXCJcclxuICAgIFtkcmF3ZXJWaXNpYmxlXT1cImRyYXdlclZpc2libGVcIlxyXG4gICAgW2RpYWxvZ1Zpc2libGVdPVwiZGlhbG9nVmlzaWJsZVwiXHJcbiAgICBbaXNWaWV3TW9kZV09XCJpc1ZpZXdNb2RlXCJcclxuICAgIFtpc0VkaXRNb2RlXT1cImlzRWRpdE1vZGVcIlxyXG4gICAgW3VzZUNvbmZpcm1PblNhdmVdPVwidXNlQ29uZmlybU9uU2F2ZVwiXHJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgIFtlcnJvck1zZ109XCJlcnJvck1zZ1wiXHJcbiAgICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiXHJcbiAgICBbYmVmb3JlU2F2ZVRyYW5zZm9ybV09XCJiZWZvcmVTYXZlVHJhbnNmb3JtXCJcclxuICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYWZ0ZXJTYXZlKT1cImFmdGVyU2F2ZS5lbWl0KCRldmVudCk7b25TdWJtaXQoKTtcIlxyXG4gICAgKGFmdGVyRGVsZXRlKT1cImFmdGVyRGVsZXRlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmVmb3JlU2F2ZSk9XCJiZWZvcmVTYXZlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoYmVmb3JlRGVsZXRlKT1cImJlZm9yZURlbGV0ZS5lbWl0KCRldmVudClcIlxyXG4gICAgKGZvcm1DYW5jZWwpPVwiZm9ybUNhbmNlbC5lbWl0KClcIlxyXG4gICAgKGZvcm1Jbml0KT1cImZvcm1Jbml0LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoZGF0YUxvYWRlZCk9XCJkYXRhTG9hZGVkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgKGVycm9yKT1cImVycm9yLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAodmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvYXBwLWdlbmVyaWMtZGlhbG9nPlxyXG5cclxuICAgPGFwcC1kZXRhaWwtdmlld1xyXG4gICAgW2Rpc3BsYXlNb2RlXT1cImRpc3BsYXlNb2RlXCJcclxuICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgW3RpdGxlXT1cImJyZWFkY3J1bWJfPy5bMF0/LmxhYmVsIHx8ICdEZXRhaWwnXCJcclxuICAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcclxuICAgW2FwaU5hbWVdPVwic2VydmljZS5hcGlOYW1lXCJcclxuICAgIFthcGlOYW1lXT1cImFwaU5hbWVcIlxyXG4gICAgW2lkRmllbGRdPVwiaWRGaWVsZFwiXHJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcclxuICAgIFtmb3JtRmllbGRzXT1cImZvcm1GaWVsZHNcIlxyXG4gICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgIFt0YWJzXT1cInRhYnNcIlxyXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICBbYnJlYWRjcnVtYl09XCJicmVhZGNydW1iX1wiXHJcbiAgICBbY3JlYXRlRWRpdEFjdGlvbnNdPVwiY3JlYXRlRWRpdEFjdGlvbnNcIlxyXG4gICAgIChhY3Rpb24pPVwiYWN0aW9uLmVtaXQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgPC9hcHAtZGV0YWlsLXZpZXc+XHJcblxyXG48L2Rpdj5cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jcnVkLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtY3J1ZC10YWJsZS9zcmMvZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1jcnVkLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
@@ -181,6 +181,8 @@ declare class GenericCrudTableComponent<T> implements OnInit {
|
|
|
181
181
|
get globalFilterFields(): string[];
|
|
182
182
|
/** أرسل إلى الأب لأتمتة شكل البحث إذا يحتاج */
|
|
183
183
|
/** بدّل applySearch لتبث pageChange مباشرةً */
|
|
184
|
+
resetPage(filters: any): void;
|
|
185
|
+
/** بدّل applySearch لتبث pageChange مباشرةً */
|
|
184
186
|
applySearch(filters: any): void;
|
|
185
187
|
/** دالة تنفّذ عند النقر على صف */
|
|
186
188
|
onRowClick(row: T): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elite.framework/ng.ui.core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.94",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^20.1.0",
|
|
6
6
|
"@angular/core": "^20.1.0"
|
|
@@ -180,22 +180,22 @@
|
|
|
180
180
|
"types": "./icon-picker/index.d.ts",
|
|
181
181
|
"default": "./fesm2022/elite.framework-ng.ui.core-icon-picker.mjs"
|
|
182
182
|
},
|
|
183
|
-
"./input
|
|
184
|
-
"types": "./input
|
|
185
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-input
|
|
183
|
+
"./input": {
|
|
184
|
+
"types": "./input/index.d.ts",
|
|
185
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-input.mjs"
|
|
186
186
|
},
|
|
187
187
|
"./input-with-icon": {
|
|
188
188
|
"types": "./input-with-icon/index.d.ts",
|
|
189
189
|
"default": "./fesm2022/elite.framework-ng.ui.core-input-with-icon.mjs"
|
|
190
190
|
},
|
|
191
|
+
"./input-switch": {
|
|
192
|
+
"types": "./input-switch/index.d.ts",
|
|
193
|
+
"default": "./fesm2022/elite.framework-ng.ui.core-input-switch.mjs"
|
|
194
|
+
},
|
|
191
195
|
"./label-type": {
|
|
192
196
|
"types": "./label-type/index.d.ts",
|
|
193
197
|
"default": "./fesm2022/elite.framework-ng.ui.core-label-type.mjs"
|
|
194
198
|
},
|
|
195
|
-
"./input": {
|
|
196
|
-
"types": "./input/index.d.ts",
|
|
197
|
-
"default": "./fesm2022/elite.framework-ng.ui.core-input.mjs"
|
|
198
|
-
},
|
|
199
199
|
"./odata-query-builder": {
|
|
200
200
|
"types": "./odata-query-builder/index.d.ts",
|
|
201
201
|
"default": "./fesm2022/elite.framework-ng.ui.core-odata-query-builder.mjs"
|