@skyux/ag-grid 6.0.0-beta.4 → 6.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/sky-ag-grid.css +16 -12
- package/documentation.json +2 -2
- package/esm2020/lib/modules/ag-grid/ag-grid-data-manager-adapter.directive.mjs +1 -1
- package/esm2020/lib/modules/ag-grid/ag-grid-row-delete.directive.mjs +1 -1
- package/esm2020/lib/modules/ag-grid/ag-grid.service.mjs +1 -11
- package/fesm2015/skyux-ag-grid.mjs +1 -10
- package/fesm2015/skyux-ag-grid.mjs.map +1 -1
- package/fesm2020/skyux-ag-grid.mjs +0 -10
- package/fesm2020/skyux-ag-grid.mjs.map +1 -1
- package/package.json +14 -14
package/css/sky-ag-grid.css
CHANGED
|
@@ -606,6 +606,10 @@ ag-grid, ag-grid-angular, ag-grid-ng2, ag-grid-polymer, ag-grid-aurelia {
|
|
|
606
606
|
height: 100%;
|
|
607
607
|
}
|
|
608
608
|
|
|
609
|
+
.ag-cell-value {
|
|
610
|
+
flex: 1 1 auto;
|
|
611
|
+
}
|
|
612
|
+
|
|
609
613
|
.ag-cell-value, .ag-group-value {
|
|
610
614
|
overflow: hidden;
|
|
611
615
|
text-overflow: ellipsis;
|
|
@@ -3596,7 +3600,7 @@ ag-grid-angular:not(.sky-ag-grid-editable) .ag-rtl .ag-row-drag, ag-grid-angular
|
|
|
3596
3600
|
}
|
|
3597
3601
|
|
|
3598
3602
|
ag-grid-angular:not(.sky-ag-grid-editable) .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {
|
|
3599
|
-
height: min(var(--ag-
|
|
3603
|
+
height: min(var(--ag-line-height, 36px), 36px);
|
|
3600
3604
|
display: flex;
|
|
3601
3605
|
align-items: center;
|
|
3602
3606
|
flex: none;
|
|
@@ -6462,7 +6466,7 @@ ag-grid-angular:not(.sky-ag-grid-editable) .ag-rtl .ag-right-aligned-cell .ag-ce
|
|
|
6462
6466
|
|
|
6463
6467
|
ag-grid-angular:not(.sky-ag-grid-editable) .ag-cell, ag-grid-angular:not(.sky-ag-grid-editable) .ag-full-width-row .ag-cell-wrapper.ag-row-group {
|
|
6464
6468
|
border: 1px solid transparent;
|
|
6465
|
-
line-height: min(var(--ag-
|
|
6469
|
+
line-height: min(var(--ag-line-height, 36px), 36px);
|
|
6466
6470
|
padding-left: 11px;
|
|
6467
6471
|
padding-right: 11px;
|
|
6468
6472
|
-webkit-font-smoothing: subpixel-antialiased;
|
|
@@ -8530,7 +8534,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-rtl .ag-row-drag, ag-grid-angular.sky-a
|
|
|
8530
8534
|
}
|
|
8531
8535
|
|
|
8532
8536
|
ag-grid-angular.sky-ag-grid-editable .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {
|
|
8533
|
-
height: min(var(--ag-
|
|
8537
|
+
height: min(var(--ag-line-height, 36px), 36px);
|
|
8534
8538
|
display: flex;
|
|
8535
8539
|
align-items: center;
|
|
8536
8540
|
flex: none;
|
|
@@ -11391,7 +11395,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-rtl .ag-right-aligned-cell .ag-cell-val
|
|
|
11391
11395
|
|
|
11392
11396
|
ag-grid-angular.sky-ag-grid-editable .ag-cell, ag-grid-angular.sky-ag-grid-editable .ag-full-width-row .ag-cell-wrapper.ag-row-group {
|
|
11393
11397
|
border: 1px solid transparent;
|
|
11394
|
-
line-height: min(var(--ag-
|
|
11398
|
+
line-height: min(var(--ag-line-height, 36px), 36px);
|
|
11395
11399
|
padding-left: 10px;
|
|
11396
11400
|
padding-right: 10px;
|
|
11397
11401
|
-webkit-font-smoothing: subpixel-antialiased;
|
|
@@ -13506,7 +13510,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-row .ag-cell-focus.ag-cell-popup-editin
|
|
|
13506
13510
|
}
|
|
13507
13511
|
|
|
13508
13512
|
.sky-theme-modern:not(.the-editing-theme) ag-grid-angular:not(.sky-ag-grid-editable) .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {
|
|
13509
|
-
height: min(var(--ag-
|
|
13513
|
+
height: min(var(--ag-line-height, 58px), 58px);
|
|
13510
13514
|
display: flex;
|
|
13511
13515
|
align-items: center;
|
|
13512
13516
|
flex: none;
|
|
@@ -16367,7 +16371,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-row .ag-cell-focus.ag-cell-popup-editin
|
|
|
16367
16371
|
|
|
16368
16372
|
.sky-theme-modern:not(.the-editing-theme) ag-grid-angular:not(.sky-ag-grid-editable) .ag-cell, .sky-theme-modern:not(.the-editing-theme) ag-grid-angular:not(.sky-ag-grid-editable) .ag-full-width-row .ag-cell-wrapper.ag-row-group {
|
|
16369
16373
|
border: 1px solid transparent;
|
|
16370
|
-
line-height: min(var(--ag-
|
|
16374
|
+
line-height: min(var(--ag-line-height, 58px), 58px);
|
|
16371
16375
|
padding-left: 11px;
|
|
16372
16376
|
padding-right: 11px;
|
|
16373
16377
|
-webkit-font-smoothing: subpixel-antialiased;
|
|
@@ -18419,7 +18423,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-row .ag-cell-focus.ag-cell-popup-editin
|
|
|
18419
18423
|
}
|
|
18420
18424
|
|
|
18421
18425
|
.sky-theme-modern ag-grid-angular.sky-ag-grid-editable .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {
|
|
18422
|
-
height: min(var(--ag-
|
|
18426
|
+
height: min(var(--ag-line-height, 58px), 58px);
|
|
18423
18427
|
display: flex;
|
|
18424
18428
|
align-items: center;
|
|
18425
18429
|
flex: none;
|
|
@@ -21280,7 +21284,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-row .ag-cell-focus.ag-cell-popup-editin
|
|
|
21280
21284
|
|
|
21281
21285
|
.sky-theme-modern ag-grid-angular.sky-ag-grid-editable .ag-cell, .sky-theme-modern ag-grid-angular.sky-ag-grid-editable .ag-full-width-row .ag-cell-wrapper.ag-row-group {
|
|
21282
21286
|
border: 1px solid transparent;
|
|
21283
|
-
line-height: min(var(--ag-
|
|
21287
|
+
line-height: min(var(--ag-line-height, 58px), 58px);
|
|
21284
21288
|
padding-left: 11px;
|
|
21285
21289
|
padding-right: 11px;
|
|
21286
21290
|
-webkit-font-smoothing: subpixel-antialiased;
|
|
@@ -23367,7 +23371,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-row .ag-cell-focus.ag-cell-popup-editin
|
|
|
23367
23371
|
}
|
|
23368
23372
|
|
|
23369
23373
|
.sky-theme-modern.sky-theme-mode-dark:not(.the-editing-theme) ag-grid-angular:not(.sky-ag-grid-editable) .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {
|
|
23370
|
-
height: min(var(--ag-
|
|
23374
|
+
height: min(var(--ag-line-height, 58px), 58px);
|
|
23371
23375
|
display: flex;
|
|
23372
23376
|
align-items: center;
|
|
23373
23377
|
flex: none;
|
|
@@ -26228,7 +26232,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-row .ag-cell-focus.ag-cell-popup-editin
|
|
|
26228
26232
|
|
|
26229
26233
|
.sky-theme-modern.sky-theme-mode-dark:not(.the-editing-theme) ag-grid-angular:not(.sky-ag-grid-editable) .ag-cell, .sky-theme-modern.sky-theme-mode-dark:not(.the-editing-theme) ag-grid-angular:not(.sky-ag-grid-editable) .ag-full-width-row .ag-cell-wrapper.ag-row-group {
|
|
26230
26234
|
border: 1px solid transparent;
|
|
26231
|
-
line-height: min(var(--ag-
|
|
26235
|
+
line-height: min(var(--ag-line-height, 58px), 58px);
|
|
26232
26236
|
padding-left: 11px;
|
|
26233
26237
|
padding-right: 11px;
|
|
26234
26238
|
-webkit-font-smoothing: subpixel-antialiased;
|
|
@@ -28285,7 +28289,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-row .ag-cell-focus.ag-cell-popup-editin
|
|
|
28285
28289
|
}
|
|
28286
28290
|
|
|
28287
28291
|
.sky-theme-modern.sky-theme-mode-dark ag-grid-angular.sky-ag-grid-editable .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {
|
|
28288
|
-
height: min(var(--ag-
|
|
28292
|
+
height: min(var(--ag-line-height, 58px), 58px);
|
|
28289
28293
|
display: flex;
|
|
28290
28294
|
align-items: center;
|
|
28291
28295
|
flex: none;
|
|
@@ -31146,7 +31150,7 @@ ag-grid-angular.sky-ag-grid-editable .ag-row .ag-cell-focus.ag-cell-popup-editin
|
|
|
31146
31150
|
|
|
31147
31151
|
.sky-theme-modern.sky-theme-mode-dark ag-grid-angular.sky-ag-grid-editable .ag-cell, .sky-theme-modern.sky-theme-mode-dark ag-grid-angular.sky-ag-grid-editable .ag-full-width-row .ag-cell-wrapper.ag-row-group {
|
|
31148
31152
|
border: 1px solid transparent;
|
|
31149
|
-
line-height: min(var(--ag-
|
|
31153
|
+
line-height: min(var(--ag-line-height, 58px), 58px);
|
|
31150
31154
|
padding-left: 11px;
|
|
31151
31155
|
padding-right: 11px;
|
|
31152
31156
|
-webkit-font-smoothing: subpixel-antialiased;
|
package/documentation.json
CHANGED
|
@@ -4058,7 +4058,7 @@
|
|
|
4058
4058
|
{
|
|
4059
4059
|
"fileName": "data-entry-grid-docs-demo.component.ts",
|
|
4060
4060
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-entry-grid/basic/data-entry-grid-docs-demo.component.ts",
|
|
4061
|
-
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { SkyAgGridService, SkyCellType } from '@skyux/ag-grid';\nimport { SkyModalCloseArgs, SkyModalService } from '@skyux/modals';\n\nimport {\n ColDef,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\nimport { SkyDataEntryGridContextMenuComponent } from './data-entry-grid-docs-demo-context-menu.component';\nimport { SKY_AG_GRID_DEMO_DATA } from './data-entry-grid-docs-demo-data';\nimport { SkyDataEntryGridEditModalContext } from './data-entry-grid-docs-demo-edit-modal-context';\nimport { SkyDataEntryGridEditModalComponent } from './data-entry-grid-docs-demo-edit-modal.component';\n\n@Component({\n selector: 'app-data-entry-grid-docs-demo',\n templateUrl: './data-entry-grid-docs-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyDataEntryGridDemoComponent {\n public gridData = SKY_AG_GRID_DEMO_DATA;\n public columnDefs: ColDef[] = [\n {\n field: 'selected',\n type: SkyCellType.RowSelector,\n },\n {\n colId: 'context',\n headerName: '',\n maxWidth: 50,\n sortable: false,\n cellRenderer: SkyDataEntryGridContextMenuComponent,\n },\n {\n field: 'name',\n headerName: 'Name',\n type: SkyCellType.Text,\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value): boolean => String(value).length <= 10,\n validatorMessage: `Value exceeds maximum length`,\n },\n },\n },\n {\n field: 'age',\n headerName: 'Age',\n type: SkyCellType.Number,\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value) => value >= 18,\n validatorMessage: `Age must be 18+`,\n },\n },\n maxWidth: 60,\n },\n {\n field: 'startDate',\n headerName: 'Start date',\n type: SkyCellType.Date,\n sort: 'asc',\n },\n {\n field: 'endDate',\n headerName: 'End date',\n type: SkyCellType.Date,\n valueFormatter: this.endDateFormatter,\n },\n {\n field: 'department',\n headerName: 'Department',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'jobTitle',\n headerName: 'Title',\n type: SkyCellType.Autocomplete,\n },\n {\n colId: 'validationCurrency',\n field: 'validationCurrency',\n headerName: 'Validation currency',\n type: [SkyCellType.CurrencyValidator],\n },\n {\n colId: 'validationDate',\n field: 'validationDate',\n headerName: 'Validation date',\n type: [SkyCellType.Date, SkyCellType.Validator],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: Date) => !!value && value > new Date(1985, 9, 26),\n validatorMessage: 'Please enter a future date',\n },\n },\n },\n ];\n\n public gridApi: GridApi | undefined;\n public gridOptions: GridOptions;\n public searchText = '';\n public noRowsTemplate: string;\n\n constructor(\n private agGridService: SkyAgGridService,\n private modalService: SkyModalService,\n private changeDetection: ChangeDetectorRef\n ) {\n this.noRowsTemplate = `<div class=\"sky-deemphasized\">No results found.</div>`;\n this.gridOptions = {\n columnDefs: this.columnDefs,\n onGridReady: (gridReadyEvent) => this.onGridReady(gridReadyEvent),\n };\n this.gridOptions = this.agGridService.getGridOptions({\n gridOptions: this.gridOptions,\n });\n this.changeDetection.markForCheck();\n }\n\n public onGridReady(gridReadyEvent: GridReadyEvent): void {\n this.gridApi = gridReadyEvent.api;\n this.gridApi.sizeColumnsToFit();\n this.changeDetection.markForCheck();\n }\n\n public openModal(): void {\n const context = new SkyDataEntryGridEditModalContext();\n context.gridData = this.gridData;\n\n const options = {\n providers: [\n { provide: SkyDataEntryGridEditModalContext, useValue: context },\n ],\n ariaDescribedBy: 'docs-edit-grid-modal-content',\n size: 'large',\n };\n\n const modalInstance = this.modalService.open(\n SkyDataEntryGridEditModalComponent,\n options\n );\n\n modalInstance.closed.subscribe((result: SkyModalCloseArgs) => {\n if (result.reason === 'cancel' || result.reason === 'close') {\n alert('Edits canceled!');\n } else {\n this.gridData = result.data;\n if (this.gridApi) {\n this.gridApi.refreshCells();\n }\n alert('Saving data!');\n }\n });\n }\n\n public searchApplied(searchText: string |
|
|
4061
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { SkyAgGridService, SkyCellType } from '@skyux/ag-grid';\nimport { SkyModalCloseArgs, SkyModalService } from '@skyux/modals';\n\nimport {\n ColDef,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\nimport { SkyDataEntryGridContextMenuComponent } from './data-entry-grid-docs-demo-context-menu.component';\nimport { SKY_AG_GRID_DEMO_DATA } from './data-entry-grid-docs-demo-data';\nimport { SkyDataEntryGridEditModalContext } from './data-entry-grid-docs-demo-edit-modal-context';\nimport { SkyDataEntryGridEditModalComponent } from './data-entry-grid-docs-demo-edit-modal.component';\n\n@Component({\n selector: 'app-data-entry-grid-docs-demo',\n templateUrl: './data-entry-grid-docs-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyDataEntryGridDemoComponent {\n public gridData = SKY_AG_GRID_DEMO_DATA;\n public columnDefs: ColDef[] = [\n {\n field: 'selected',\n type: SkyCellType.RowSelector,\n },\n {\n colId: 'context',\n headerName: '',\n maxWidth: 50,\n sortable: false,\n cellRenderer: SkyDataEntryGridContextMenuComponent,\n },\n {\n field: 'name',\n headerName: 'Name',\n type: SkyCellType.Text,\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value): boolean => String(value).length <= 10,\n validatorMessage: `Value exceeds maximum length`,\n },\n },\n },\n {\n field: 'age',\n headerName: 'Age',\n type: SkyCellType.Number,\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value) => value >= 18,\n validatorMessage: `Age must be 18+`,\n },\n },\n maxWidth: 60,\n },\n {\n field: 'startDate',\n headerName: 'Start date',\n type: SkyCellType.Date,\n sort: 'asc',\n },\n {\n field: 'endDate',\n headerName: 'End date',\n type: SkyCellType.Date,\n valueFormatter: this.endDateFormatter,\n },\n {\n field: 'department',\n headerName: 'Department',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'jobTitle',\n headerName: 'Title',\n type: SkyCellType.Autocomplete,\n },\n {\n colId: 'validationCurrency',\n field: 'validationCurrency',\n headerName: 'Validation currency',\n type: [SkyCellType.CurrencyValidator],\n },\n {\n colId: 'validationDate',\n field: 'validationDate',\n headerName: 'Validation date',\n type: [SkyCellType.Date, SkyCellType.Validator],\n cellRendererParams: {\n skyComponentProperties: {\n validator: (value: Date) => !!value && value > new Date(1985, 9, 26),\n validatorMessage: 'Please enter a future date',\n },\n },\n },\n ];\n\n public gridApi: GridApi | undefined;\n public gridOptions: GridOptions;\n public searchText = '';\n public noRowsTemplate: string;\n\n constructor(\n private agGridService: SkyAgGridService,\n private modalService: SkyModalService,\n private changeDetection: ChangeDetectorRef\n ) {\n this.noRowsTemplate = `<div class=\"sky-deemphasized\">No results found.</div>`;\n this.gridOptions = {\n columnDefs: this.columnDefs,\n onGridReady: (gridReadyEvent) => this.onGridReady(gridReadyEvent),\n };\n this.gridOptions = this.agGridService.getGridOptions({\n gridOptions: this.gridOptions,\n });\n this.changeDetection.markForCheck();\n }\n\n public onGridReady(gridReadyEvent: GridReadyEvent): void {\n this.gridApi = gridReadyEvent.api;\n this.gridApi.sizeColumnsToFit();\n this.changeDetection.markForCheck();\n }\n\n public openModal(): void {\n const context = new SkyDataEntryGridEditModalContext();\n context.gridData = this.gridData;\n\n const options = {\n providers: [\n { provide: SkyDataEntryGridEditModalContext, useValue: context },\n ],\n ariaDescribedBy: 'docs-edit-grid-modal-content',\n size: 'large',\n };\n\n const modalInstance = this.modalService.open(\n SkyDataEntryGridEditModalComponent,\n options\n );\n\n modalInstance.closed.subscribe((result: SkyModalCloseArgs) => {\n if (result.reason === 'cancel' || result.reason === 'close') {\n alert('Edits canceled!');\n } else {\n this.gridData = result.data;\n if (this.gridApi) {\n this.gridApi.refreshCells();\n }\n alert('Saving data!');\n }\n });\n }\n\n public searchApplied(searchText: string | void): void {\n if (searchText) {\n this.searchText = searchText;\n } else {\n this.searchText = '';\n }\n if (this.gridApi) {\n this.gridApi.setQuickFilter(this.searchText);\n const displayedRowCount = this.gridApi.getDisplayedRowCount();\n if (displayedRowCount > 0) {\n this.gridApi.hideOverlay();\n } else {\n this.gridApi.showNoRowsOverlay();\n }\n }\n }\n\n private endDateFormatter(params: ValueFormatterParams): string {\n const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };\n return params.value\n ? params.value.toLocaleDateString('en-us', dateConfig)\n : 'N/A';\n }\n}\n"
|
|
4062
4062
|
},
|
|
4063
4063
|
{
|
|
4064
4064
|
"fileName": "data-entry-grid-docs-demo.module.ts",
|
|
@@ -4143,7 +4143,7 @@
|
|
|
4143
4143
|
{
|
|
4144
4144
|
"fileName": "basic-data-grid-docs-demo.component.ts",
|
|
4145
4145
|
"filePath": "/projects/ag-grid/documentation/code-examples/data-grid/basic/basic-data-grid-docs-demo.component.ts",
|
|
4146
|
-
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { SkyAgGridService, SkyCellType } from '@skyux/ag-grid';\n\nimport {\n ColDef,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\nimport { SKY_AG_GRID_DEMO_DATA } from './basic-data-grid-docs-demo-data';\n\n@Component({\n selector: 'app-basic-data-grid-docs-demo',\n templateUrl: './basic-data-grid-docs-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyBasicDataGridDemoComponent {\n public columnDefs: ColDef[] = [\n {\n field: 'selected',\n type: SkyCellType.RowSelector,\n },\n {\n field: 'name',\n headerName: 'Name',\n },\n {\n field: 'age',\n headerName: 'Age',\n type: SkyCellType.Number,\n maxWidth: 60,\n },\n {\n field: 'startDate',\n headerName: 'Start date',\n type: SkyCellType.Date,\n sort: 'asc',\n },\n {\n field: 'endDate',\n headerName: 'End date',\n type: SkyCellType.Date,\n valueFormatter: this.endDateFormatter,\n },\n {\n field: 'department',\n headerName: 'Department',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'jobTitle',\n headerName: 'Title',\n type: SkyCellType.Autocomplete,\n },\n ];\n\n public gridApi: GridApi | undefined;\n public gridData = SKY_AG_GRID_DEMO_DATA;\n public gridOptions: GridOptions;\n public searchText = '';\n public noRowsTemplate: string;\n\n constructor(\n private agGridService: SkyAgGridService,\n private changeDetector: ChangeDetectorRef\n ) {\n this.noRowsTemplate = `<div class=\"sky-deemphasized\">No results found.</div>`;\n this.gridOptions = this.agGridService.getGridOptions({\n gridOptions: {\n columnDefs: this.columnDefs,\n onGridReady: this.onGridReady.bind(this),\n },\n });\n this.changeDetector.markForCheck();\n }\n\n public onGridReady(gridReadyEvent: GridReadyEvent): void {\n this.gridApi = gridReadyEvent.api;\n this.gridApi.sizeColumnsToFit();\n this.changeDetector.markForCheck();\n }\n\n public searchApplied(searchText: string |
|
|
4146
|
+
"rawContents": "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\nimport { SkyAgGridService, SkyCellType } from '@skyux/ag-grid';\n\nimport {\n ColDef,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ValueFormatterParams,\n} from 'ag-grid-community';\n\nimport { SKY_AG_GRID_DEMO_DATA } from './basic-data-grid-docs-demo-data';\n\n@Component({\n selector: 'app-basic-data-grid-docs-demo',\n templateUrl: './basic-data-grid-docs-demo.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyBasicDataGridDemoComponent {\n public columnDefs: ColDef[] = [\n {\n field: 'selected',\n type: SkyCellType.RowSelector,\n },\n {\n field: 'name',\n headerName: 'Name',\n },\n {\n field: 'age',\n headerName: 'Age',\n type: SkyCellType.Number,\n maxWidth: 60,\n },\n {\n field: 'startDate',\n headerName: 'Start date',\n type: SkyCellType.Date,\n sort: 'asc',\n },\n {\n field: 'endDate',\n headerName: 'End date',\n type: SkyCellType.Date,\n valueFormatter: this.endDateFormatter,\n },\n {\n field: 'department',\n headerName: 'Department',\n type: SkyCellType.Autocomplete,\n },\n {\n field: 'jobTitle',\n headerName: 'Title',\n type: SkyCellType.Autocomplete,\n },\n ];\n\n public gridApi: GridApi | undefined;\n public gridData = SKY_AG_GRID_DEMO_DATA;\n public gridOptions: GridOptions;\n public searchText = '';\n public noRowsTemplate: string;\n\n constructor(\n private agGridService: SkyAgGridService,\n private changeDetector: ChangeDetectorRef\n ) {\n this.noRowsTemplate = `<div class=\"sky-deemphasized\">No results found.</div>`;\n this.gridOptions = this.agGridService.getGridOptions({\n gridOptions: {\n columnDefs: this.columnDefs,\n onGridReady: this.onGridReady.bind(this),\n },\n });\n this.changeDetector.markForCheck();\n }\n\n public onGridReady(gridReadyEvent: GridReadyEvent): void {\n this.gridApi = gridReadyEvent.api;\n this.gridApi.sizeColumnsToFit();\n this.changeDetector.markForCheck();\n }\n\n public searchApplied(searchText: string | void): void {\n if (searchText) {\n this.searchText = searchText;\n } else {\n this.searchText = '';\n }\n if (this.gridApi) {\n this.gridApi.setQuickFilter(this.searchText);\n const displayedRowCount = this.gridApi.getDisplayedRowCount();\n if (displayedRowCount > 0) {\n this.gridApi.hideOverlay();\n } else {\n this.gridApi.showNoRowsOverlay();\n }\n }\n }\n\n private endDateFormatter(params: ValueFormatterParams): string {\n const dateConfig = { year: 'numeric', month: '2-digit', day: '2-digit' };\n return params.value\n ? params.value.toLocaleDateString('en-us', dateConfig)\n : 'N/A';\n }\n}\n"
|
|
4147
4147
|
},
|
|
4148
4148
|
{
|
|
4149
4149
|
"fileName": "basic-data-grid-docs-demo.module.ts",
|
|
@@ -208,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
208
208
|
type: ContentChildren,
|
|
209
209
|
args: [SkyAgGridWrapperComponent, { descendants: true }]
|
|
210
210
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYWctZ3JpZC9zcmMvbGliL21vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEdBSXRCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBU2hELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUV4RTs7R0FFRztBQUlILE1BQU0sT0FBTyxvQ0FBb0M7SUFtQi9DLFlBQ1UsY0FBaUMsRUFDakMsY0FBcUM7UUFEckMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUp2QyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFLbkMsQ0FBQztJQUVHLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUks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QUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7O2lJQTNRVSxvQ0FBb0M7cUhBQXBDLG9DQUFvQyw4SEFNOUIsYUFBYSwwRUFHYix5QkFBeUI7MkZBVC9CLG9DQUFvQztrQkFIaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO2lCQUMxQzs0SUFLUSxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsZUFBZTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUk5QyxvQkFBb0I7c0JBRDFCLGVBQWU7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24sXG4gIFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gIFNreURhdGFWaWV3Q29uZmlnLFxufSBmcm9tICdAc2t5dXgvZGF0YS1tYW5hZ2VyJztcblxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDb2x1bW5BcGksXG4gIENvbHVtbk1vdmVkRXZlbnQsXG4gIENvbHVtblN0YXRlLFxuICBEcmFnU3RhcnRlZEV2ZW50LFxuICBEcmFnU3RvcHBlZEV2ZW50LFxuICBSb3dTZWxlY3RlZEV2ZW50LFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXdyYXBwZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KClcbiAgcHVibGljIHZpZXdJZDogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQWdHcmlkQW5ndWxhciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgYWdHcmlkTGlzdDogUXVlcnlMaXN0PEFnR3JpZEFuZ3VsYXI+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgc2t5QWdHcmlkV3JhcHBlckxpc3Q6IFF1ZXJ5TGlzdDxTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGN1cnJlbnRBZ0dyaWQ6IEFnR3JpZEFuZ3VsYXI7XG4gIHByaXZhdGUgY3VycmVudERhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZTtcbiAgcHJpdmF0ZSBjdXJyZW50U2t5QWdHcmlkV3JhcHBlcjogU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBkYXRhU3RhdGVTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZztcbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRhdGFNYW5hZ2VyU3ZjOiBTa3lEYXRhTWFuYWdlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhTWFuYWdlclN2Yy5zZXRWaWV3a2VlcGVyQ2xhc3Nlcyh0aGlzLnZpZXdJZCwgWycuYWctaGVhZGVyJ10pO1xuXG4gICAgdGhpcy52aWV3Q29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRWaWV3QnlJZCh0aGlzLnZpZXdJZCk7XG4gICAgdGhpcy5jaGVja0ZvckFnR3JpZCgpO1xuICAgIHRoaXMuY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk7XG5cbiAgICB0aGlzLmFnR3JpZExpc3QuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tGb3JBZ0dyaWQoKSk7XG5cbiAgICB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckFnR3JpZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWRDb3VudCA9IHRoaXMuYWdHcmlkTGlzdC5sZW5ndGg7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChhZ0dyaWRDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFnR3JpZExpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudEFnR3JpZCkge1xuICAgICAgdGhpcy5yZWdpc3RlckFnR3JpZCgpO1xuICAgIH1cblxuICAgIGlmIChhZ0dyaWRDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNreUFnR3JpZFdyYXBwZXJDb3VudCA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QubGVuZ3RoO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXJcbiAgICApIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHNreUFnR3JpZFdyYXBwZXJDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlckFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy5kYXRhU3RhdGVTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN0YXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuXG4gICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlciA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3Q7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIudmlld2tlZXBlckNsYXNzZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG5cbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG5cbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSBhZ0dyaWQ7XG5cbiAgICBhZ0dyaWQuZ3JpZFJlYWR5LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnZpZXdDb25maWcub25TZWxlY3RBbGxDbGljayA9IHRoaXMuc2VsZWN0QWxsLmJpbmQodGhpcyk7XG4gICAgICB0aGlzLnZpZXdDb25maWcub25DbGVhckFsbENsaWNrID0gdGhpcy5jbGVhckFsbC5iaW5kKHRoaXMpO1xuXG4gICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZVZpZXdDb25maWcodGhpcy52aWV3Q29uZmlnKTtcblxuICAgICAgdGhpcy5kYXRhU3RhdGVTdWIgPSB0aGlzLmRhdGFNYW5hZ2VyU3ZjXG4gICAgICAgIC5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMudmlld0NvbmZpZy5pZClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZSA9IGRhdGFTdGF0ZTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9KTtcblxuICAgIGFnR3JpZC5jb2x1bW5Nb3ZlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKGV2ZW50OiBDb2x1bW5Nb3ZlZEV2ZW50KSA9PlxuICAgICAgICAgICAgIVtcbiAgICAgICAgICAgICAgJ2dyaWRJbml0aWFsaXppbmcnLFxuICAgICAgICAgICAgICAndWlDb2x1bW5SZXNpemVkJyxcbiAgICAgICAgICAgICAgJ3VpQ29sdW1uRHJhZ2dlZCcsXG4gICAgICAgICAgICAgICdhcGknLFxuICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5zb3VyY2UpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBDb2x1bW5Nb3ZlZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZSh2YWx1ZS5jb2x1bW5BcGkpO1xuICAgICAgfSk7XG4gICAgbGV0IGN1cnJlbnRDb2x1bW5zOiBzdHJpbmdbXTtcbiAgICBhZ0dyaWQuZHJhZ1N0YXJ0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdGFydGVkRXZlbnQpID0+IHtcbiAgICAgICAgY3VycmVudENvbHVtbnMgPSB0aGlzLmdldENvbHVtbk9yZGVyKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICB9KTtcbiAgICBhZ0dyaWQuZHJhZ1N0b3BwZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdG9wcGVkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IHRoaXMuZ2V0Q29sdW1uT3JkZXIodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9IGN1cnJlbnRDb2x1bW5zLmZpbmRJbmRleChcbiAgICAgICAgICAoY29sSWQsIGkpID0+IGNvbElkICE9PSBuZXdDb2x1bW5zW2ldXG4gICAgICAgICk7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkID4gLTEpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBhZ0dyaWQucm93U2VsZWN0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJvd1NlbGVjdGVkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgcm93ID0gZXZlbnQubm9kZTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLmN1cnJlbnREYXRhU3RhdGUuc2VsZWN0ZWRJZHMgfHwgW107XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gc2VsZWN0ZWRJZHMuaW5kZXhPZihyb3cuZGF0YS5pZCk7XG5cbiAgICAgICAgaWYgKHJvdy5pc1NlbGVjdGVkKCkgJiYgcm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChyb3cuZGF0YS5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXJvdy5pc1NlbGVjdGVkKCkgJiYgcm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMuc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyA9IHNlbGVjdGVkSWRzO1xuICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUsXG4gICAgICAgICAgdGhpcy52aWV3Q29uZmlnLmlkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGFnR3JpZC5zb3J0Q2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgZ3JpZENvbHVtblN0YXRlczogQ29sdW1uU3RhdGVbXSA9IGFnR3JpZC5jb2x1bW5BcGkuZ2V0Q29sdW1uU3RhdGUoKTtcbiAgICAgIGxldCBzb3J0T3B0aW9uOiBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb247XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZ3JpZENvbHVtblN0YXRlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlU29ydENvbHVtblN0YXRlID0gZ3JpZENvbHVtblN0YXRlcy5maW5kKFxuICAgICAgICAgIChhR3JpZENvbHVtblN0YXRlKSA9PiBhR3JpZENvbHVtblN0YXRlLnNvcnRJbmRleCA9PT0gMFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRhdGFNYW5hZ2VyQ29uZmlnID1cbiAgICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLmdldEN1cnJlbnREYXRhTWFuYWdlckNvbmZpZygpO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChkYXRhTWFuYWdlckNvbmZpZy5zb3J0T3B0aW9ucyAmJiBhY3RpdmVTb3J0Q29sdW1uU3RhdGUpIHtcbiAgICAgICAgICBzb3J0T3B0aW9uID0gZGF0YU1hbmFnZXJDb25maWcuc29ydE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChvcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIG9wdGlvbi5wcm9wZXJ0eU5hbWUgPT09IGFjdGl2ZVNvcnRDb2x1bW5TdGF0ZS5jb2xJZCAmJlxuICAgICAgICAgICAgICAgIG9wdGlvbi5kZXNjZW5kaW5nID09PSAoYWN0aXZlU29ydENvbHVtblN0YXRlLnNvcnQgPT09ICdkZXNjJylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNvcnRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uID0gc29ydE9wdGlvbjtcbiAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUsXG4gICAgICAgIHRoaXMudmlld0NvbmZpZy5pZFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZShjb2x1bW5BcGk6IENvbHVtbkFwaSkge1xuICAgIGNvbnN0IGNvbHVtbk9yZGVyID0gdGhpcy5nZXRDb2x1bW5PcmRlcihjb2x1bW5BcGkpO1xuXG4gICAgY29uc3Qgdmlld1N0YXRlID0gdGhpcy5jdXJyZW50RGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQoXG4gICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICApO1xuICAgIHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPSBjb2x1bW5PcmRlcjtcblxuICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyh0aGlzLnZpZXdDb25maWcuaWQsIHZpZXdTdGF0ZSksXG4gICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5PcmRlcihjb2x1bW5BcGk6IENvbHVtbkFwaSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gY29sdW1uQXBpXG4gICAgICAuZ2V0QWxsRGlzcGxheWVkVmlydHVhbENvbHVtbnMoKVxuICAgICAgLm1hcCgoY29sKSA9PiBjb2wuZ2V0Q29sRGVmKCkuY29sSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmN1cnJlbnRBZ0dyaWQ7XG4gICAgY29uc3Qgdmlld1N0YXRlID0gZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICBsZXQgZGlzcGxheWVkQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzKSB7XG4gICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMgPSB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5zID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRBbGxDb2x1bW5zKCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCBjb2xJZCA9IGNvbHVtbi5nZXRDb2xJZCgpO1xuICAgICAgY29uc3QgY29sSW5kZXggPSBkaXNwbGF5ZWRDb2x1bW5JZHMuaW5kZXhPZihjb2xJZCk7XG5cbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkuc2V0Q29sdW1uVmlzaWJsZShjb2xJZCwgY29sSW5kZXggIT09IC0xKTtcbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkubW92ZUNvbHVtbihjb2xJZCwgY29sSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcbiAgICBhZ0dyaWQuYXBpLnNlbGVjdEFsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG4gICAgYWdHcmlkLmFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG59XG4iXX0=
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYWctZ3JpZC9zcmMvbGliL21vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEdBSXRCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBU2hELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUV4RTs7R0FFRztBQUlILE1BQU0sT0FBTyxvQ0FBb0M7SUFtQi9DLFlBQ1UsY0FBaUMsRUFDakMsY0FBcUM7UUFEckMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUp2QyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLekMsQ0FBQztJQUVHLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUks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QUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7O2lJQTNRVSxvQ0FBb0M7cUhBQXBDLG9DQUFvQyw4SEFNOUIsYUFBYSwwRUFHYix5QkFBeUI7MkZBVC9CLG9DQUFvQztrQkFIaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO2lCQUMxQzs0SUFLUSxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsZUFBZTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUk5QyxvQkFBb0I7c0JBRDFCLGVBQWU7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24sXG4gIFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gIFNreURhdGFWaWV3Q29uZmlnLFxufSBmcm9tICdAc2t5dXgvZGF0YS1tYW5hZ2VyJztcblxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDb2x1bW5BcGksXG4gIENvbHVtbk1vdmVkRXZlbnQsXG4gIENvbHVtblN0YXRlLFxuICBEcmFnU3RhcnRlZEV2ZW50LFxuICBEcmFnU3RvcHBlZEV2ZW50LFxuICBSb3dTZWxlY3RlZEV2ZW50LFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXdyYXBwZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KClcbiAgcHVibGljIHZpZXdJZDogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQWdHcmlkQW5ndWxhciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgYWdHcmlkTGlzdDogUXVlcnlMaXN0PEFnR3JpZEFuZ3VsYXI+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgc2t5QWdHcmlkV3JhcHBlckxpc3Q6IFF1ZXJ5TGlzdDxTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGN1cnJlbnRBZ0dyaWQ6IEFnR3JpZEFuZ3VsYXI7XG4gIHByaXZhdGUgY3VycmVudERhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZTtcbiAgcHJpdmF0ZSBjdXJyZW50U2t5QWdHcmlkV3JhcHBlcjogU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBkYXRhU3RhdGVTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZztcbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRhdGFNYW5hZ2VyU3ZjOiBTa3lEYXRhTWFuYWdlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhTWFuYWdlclN2Yy5zZXRWaWV3a2VlcGVyQ2xhc3Nlcyh0aGlzLnZpZXdJZCwgWycuYWctaGVhZGVyJ10pO1xuXG4gICAgdGhpcy52aWV3Q29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRWaWV3QnlJZCh0aGlzLnZpZXdJZCk7XG4gICAgdGhpcy5jaGVja0ZvckFnR3JpZCgpO1xuICAgIHRoaXMuY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk7XG5cbiAgICB0aGlzLmFnR3JpZExpc3QuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tGb3JBZ0dyaWQoKSk7XG5cbiAgICB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckFnR3JpZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWRDb3VudCA9IHRoaXMuYWdHcmlkTGlzdC5sZW5ndGg7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChhZ0dyaWRDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFnR3JpZExpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudEFnR3JpZCkge1xuICAgICAgdGhpcy5yZWdpc3RlckFnR3JpZCgpO1xuICAgIH1cblxuICAgIGlmIChhZ0dyaWRDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNreUFnR3JpZFdyYXBwZXJDb3VudCA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QubGVuZ3RoO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXJcbiAgICApIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHNreUFnR3JpZFdyYXBwZXJDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlckFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy5kYXRhU3RhdGVTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN0YXRlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuXG4gICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlciA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QuZmlyc3Q7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIudmlld2tlZXBlckNsYXNzZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG5cbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG5cbiAgICB0aGlzLmN1cnJlbnRBZ0dyaWQgPSBhZ0dyaWQ7XG5cbiAgICBhZ0dyaWQuZ3JpZFJlYWR5LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnZpZXdDb25maWcub25TZWxlY3RBbGxDbGljayA9IHRoaXMuc2VsZWN0QWxsLmJpbmQodGhpcyk7XG4gICAgICB0aGlzLnZpZXdDb25maWcub25DbGVhckFsbENsaWNrID0gdGhpcy5jbGVhckFsbC5iaW5kKHRoaXMpO1xuXG4gICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZVZpZXdDb25maWcodGhpcy52aWV3Q29uZmlnKTtcblxuICAgICAgdGhpcy5kYXRhU3RhdGVTdWIgPSB0aGlzLmRhdGFNYW5hZ2VyU3ZjXG4gICAgICAgIC5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMudmlld0NvbmZpZy5pZClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZSA9IGRhdGFTdGF0ZTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZ0dyaWQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9KTtcblxuICAgIGFnR3JpZC5jb2x1bW5Nb3ZlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKGV2ZW50OiBDb2x1bW5Nb3ZlZEV2ZW50KSA9PlxuICAgICAgICAgICAgIVtcbiAgICAgICAgICAgICAgJ2dyaWRJbml0aWFsaXppbmcnLFxuICAgICAgICAgICAgICAndWlDb2x1bW5SZXNpemVkJyxcbiAgICAgICAgICAgICAgJ3VpQ29sdW1uRHJhZ2dlZCcsXG4gICAgICAgICAgICAgICdhcGknLFxuICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5zb3VyY2UpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBDb2x1bW5Nb3ZlZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZSh2YWx1ZS5jb2x1bW5BcGkpO1xuICAgICAgfSk7XG4gICAgbGV0IGN1cnJlbnRDb2x1bW5zOiBzdHJpbmdbXTtcbiAgICBhZ0dyaWQuZHJhZ1N0YXJ0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdGFydGVkRXZlbnQpID0+IHtcbiAgICAgICAgY3VycmVudENvbHVtbnMgPSB0aGlzLmdldENvbHVtbk9yZGVyKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICB9KTtcbiAgICBhZ0dyaWQuZHJhZ1N0b3BwZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IERyYWdTdG9wcGVkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IHRoaXMuZ2V0Q29sdW1uT3JkZXIodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9IGN1cnJlbnRDb2x1bW5zLmZpbmRJbmRleChcbiAgICAgICAgICAoY29sSWQsIGkpID0+IGNvbElkICE9PSBuZXdDb2x1bW5zW2ldXG4gICAgICAgICk7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkID4gLTEpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBhZ0dyaWQucm93U2VsZWN0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFJvd1NlbGVjdGVkRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgcm93ID0gZXZlbnQubm9kZTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLmN1cnJlbnREYXRhU3RhdGUuc2VsZWN0ZWRJZHMgfHwgW107XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gc2VsZWN0ZWRJZHMuaW5kZXhPZihyb3cuZGF0YS5pZCk7XG5cbiAgICAgICAgaWYgKHJvdy5pc1NlbGVjdGVkKCkgJiYgcm93SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChyb3cuZGF0YS5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXJvdy5pc1NlbGVjdGVkKCkgJiYgcm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMuc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyA9IHNlbGVjdGVkSWRzO1xuICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUsXG4gICAgICAgICAgdGhpcy52aWV3Q29uZmlnLmlkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGFnR3JpZC5zb3J0Q2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgZ3JpZENvbHVtblN0YXRlczogQ29sdW1uU3RhdGVbXSA9IGFnR3JpZC5jb2x1bW5BcGkuZ2V0Q29sdW1uU3RhdGUoKTtcbiAgICAgIGxldCBzb3J0T3B0aW9uOiBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb247XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZ3JpZENvbHVtblN0YXRlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlU29ydENvbHVtblN0YXRlID0gZ3JpZENvbHVtblN0YXRlcy5maW5kKFxuICAgICAgICAgIChhR3JpZENvbHVtblN0YXRlKSA9PiBhR3JpZENvbHVtblN0YXRlLnNvcnRJbmRleCA9PT0gMFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRhdGFNYW5hZ2VyQ29uZmlnID1cbiAgICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLmdldEN1cnJlbnREYXRhTWFuYWdlckNvbmZpZygpO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChkYXRhTWFuYWdlckNvbmZpZy5zb3J0T3B0aW9ucyAmJiBhY3RpdmVTb3J0Q29sdW1uU3RhdGUpIHtcbiAgICAgICAgICBzb3J0T3B0aW9uID0gZGF0YU1hbmFnZXJDb25maWcuc29ydE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChvcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIG9wdGlvbi5wcm9wZXJ0eU5hbWUgPT09IGFjdGl2ZVNvcnRDb2x1bW5TdGF0ZS5jb2xJZCAmJlxuICAgICAgICAgICAgICAgIG9wdGlvbi5kZXNjZW5kaW5nID09PSAoYWN0aXZlU29ydENvbHVtblN0YXRlLnNvcnQgPT09ICdkZXNjJylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNvcnRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uID0gc29ydE9wdGlvbjtcbiAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUsXG4gICAgICAgIHRoaXMudmlld0NvbmZpZy5pZFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uc0luQ3VycmVudERhdGFTdGF0ZShjb2x1bW5BcGk6IENvbHVtbkFwaSkge1xuICAgIGNvbnN0IGNvbHVtbk9yZGVyID0gdGhpcy5nZXRDb2x1bW5PcmRlcihjb2x1bW5BcGkpO1xuXG4gICAgY29uc3Qgdmlld1N0YXRlID0gdGhpcy5jdXJyZW50RGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQoXG4gICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICApO1xuICAgIHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPSBjb2x1bW5PcmRlcjtcblxuICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKFxuICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyh0aGlzLnZpZXdDb25maWcuaWQsIHZpZXdTdGF0ZSksXG4gICAgICB0aGlzLnZpZXdDb25maWcuaWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5PcmRlcihjb2x1bW5BcGk6IENvbHVtbkFwaSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gY29sdW1uQXBpXG4gICAgICAuZ2V0QWxsRGlzcGxheWVkVmlydHVhbENvbHVtbnMoKVxuICAgICAgLm1hcCgoY29sKSA9PiBjb2wuZ2V0Q29sRGVmKCkuY29sSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Q29sdW1ucyhkYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmN1cnJlbnRBZ0dyaWQ7XG4gICAgY29uc3Qgdmlld1N0YXRlID0gZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICBsZXQgZGlzcGxheWVkQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzKSB7XG4gICAgICBkaXNwbGF5ZWRDb2x1bW5JZHMgPSB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5zID0gYWdHcmlkLmNvbHVtbkFwaS5nZXRBbGxDb2x1bW5zKCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCBjb2xJZCA9IGNvbHVtbi5nZXRDb2xJZCgpO1xuICAgICAgY29uc3QgY29sSW5kZXggPSBkaXNwbGF5ZWRDb2x1bW5JZHMuaW5kZXhPZihjb2xJZCk7XG5cbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkuc2V0Q29sdW1uVmlzaWJsZShjb2xJZCwgY29sSW5kZXggIT09IC0xKTtcbiAgICAgIGFnR3JpZC5jb2x1bW5BcGkubW92ZUNvbHVtbihjb2xJZCwgY29sSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcbiAgICBhZ0dyaWQuYXBpLnNlbGVjdEFsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG4gICAgYWdHcmlkLmFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -217,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
217
217
|
type: ContentChild,
|
|
218
218
|
args: [AgGridAngular]
|
|
219
219
|
}] } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yb3ctZGVsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2FnLWdyaWQtcm93LWRlbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixlQUFlLEVBRWYsaUJBQWlCLEdBQ2xCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBUzdFLE1BQU0sT0FBTywyQkFBMkI7SUE4SHRDLFlBQ1UsWUFBNkIsRUFDN0IsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsY0FBaUMsRUFDakMsZ0JBQWtDO1FBSmxDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZDNUM7O1dBRUc7UUFFSSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBRTFFOztXQUVHO1FBRUkscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWlDLENBQUM7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QyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLDhIQUE4SDtnQkFDOUgsbUJBQW1CO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN2RTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzt3SEE3UFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsMlFBcUh4QixhQUFhOzJGQXJIaEIsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzhOQVFLLFlBQVk7c0JBRGYsS0FBSztnQkEwRkMsZUFBZTtzQkFEckIsTUFBTTtnQkFPQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0Esa0JBQWtCO3NCQUR4QixNQUFNO2dCQVdBLE1BQU07c0JBRFosWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreUFmZml4ZXIsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXJvdy1kZWxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3MgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jYW5jZWwtYXJncyc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRSb3dEZWxldGVDb25maWcgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb25maWcnO1xuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3MgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb25maXJtLWFyZ3MnO1xuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29udGVudHMgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb250ZW50cyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZ0dyaWRSb3dEZWxldGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkUm93RGVsZXRlRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGlkcyBvZiB0aGUgZGF0YSBpbiB0aGUgcm93cyBvbiB3aGljaCBpbmxpbmUgZGVsZXRlJ3Mgc2hvdWxkIGJlIHNob3duLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHJvd0RlbGV0ZUlkcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9yb3dEZWxldGVJZHMgPSB2YWx1ZTtcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIHRoaXMucm93RGVsZXRlQ29uZmlncykge1xuICAgICAgICB0aGlzLmRlc3Ryb3lSb3dEZWxldGUoY29uZmlnLmlkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaWQgb2YgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbmQoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCA9PT0gaWRcbiAgICAgICk7XG4gICAgICBpZiAoZXhpc3RpbmdDb25maWcpIHtcbiAgICAgICAgZXhpc3RpbmdDb25maWcucGVuZGluZyA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb3dEZWxldGVDb25maWdzLnB1c2goe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBwZW5kaW5nOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICAgICAgc2hvd0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgICBlbmFibGVDbG9zZTogZmFsc2UsXG4gICAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZShcbiAgICAgICAgICB0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudC5pbmxpbmVEZWxldGVUZW1wbGF0ZVJlZixcbiAgICAgICAgICB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGlkKSxcbiAgICAgICAgICAgIHRhYmxlV2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFibGVXaWR0aDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSb3dEZWxldGVJdGVtOiAocm93OiBSb3dOb2RlKSA9PiB0aGlzLmdldFJvd0RlbGV0ZUl0ZW0ocm93KSxcbiAgICAgICAgICAgIGNhbmNlbFJvd0RlbGV0ZTogKHJvdzogUm93Tm9kZSkgPT4gdGhpcy5jYW5jZWxSb3dEZWxldGUocm93KSxcbiAgICAgICAgICAgIGNvbmZpcm1Sb3dEZWxldGU6IChyb3c6IFJvd05vZGUpID0+IHRoaXMuY29uZmlybVJvd0RlbGV0ZShyb3cpLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2UgYXJlIG1hbnVhbGx5IHNldHRpbmcgdGhlIHotaW5kZXggaGVyZSBiZWNhdXNlIG92ZXJsYXlzIHdpbGwgYWx3YXlzIGJlIG9uIHRvcCBvZlxuICAgICAgICAgKiB0aGUgb21uaWJhci4gVGhpcyBtYW51YWwgc2V0dGluZyBpcyAyIGxlc3MgdGhhbiB0aGUgb21uaWJhcidzIHotaW5kZXggb2YgMTAwMCBhbmQgb25lIGxlc3MgdGhhblxuICAgICAgICAgKiB0aGUgaGVhZGVyIHJvdydzIHZpZXdrZWVwZXIgd2hpY2ggaXMgOTk5LiBXZSBkaXNjdXNzZWQgY2hhbmdpbmcgdGhlIG92ZXJsYXkgc2VydmljZSB0byBhbGxvdyBmb3IgdGhpc1xuICAgICAgICAgKiBidXQgZGVjaWRlZCBhZ2FpbnN0IHRoYXQgY2hhbmdlIGF0IHRoaXMgdGltZSBkdWUgdG8gaXRzIG5pY2hlIG5hdHVyZS5cbiAgICAgICAgICovXG4gICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9ICc5OTgnO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlubGluZURlbGV0ZVJlZiA9IHRoaXMucm93RGVsZXRlQ29tcG9uZW50LmlubGluZURlbGV0ZVJlZnNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5maW5kKChlbFJlZikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZWxSZWYubmF0aXZlRWxlbWVudC5pZCA9PT0gJ3Jvdy1kZWxldGUtcmVmLScgKyBpZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLmFmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKGlubGluZURlbGV0ZVJlZik7XG5cbiAgICAgICAgICB0aGlzLmFmZml4VG9Sb3coYWZmaXhlciwgaWQpO1xuXG4gICAgICAgICAgdGhpcy5yb3dEZWxldGVDb250ZW50c1tpZF0gPSB7XG4gICAgICAgICAgICBhZmZpeGVyOiBhZmZpeGVyLFxuICAgICAgICAgICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MpIHtcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKGNvbmZpZy5pZCkgPCAwKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShjb25maWcuaWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93RGVsZXRlSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcm93RGVsZXRlSWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgYFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3NgIG9iamVjdCB3aGVuIGEgcm93J3MgaW5saW5lIGRlbGV0ZSBpcyBjYW5jZWxsZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QWdHcmlkUm93RGVsZXRlQ2FuY2VsQXJncz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYSBgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3NgIG9iamVjdCB3aGVuIGEgcm93J3MgaW5saW5lIGRlbGV0ZSBpcyBjb25maXJtZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNvbmZpcm0gPSBuZXcgRXZlbnRFbWl0dGVyPFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpcm1BcmdzPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBsaXN0IG9mIGlkcyBvZiB0aGUgZGF0YSBpbiB0aGUgcm93cyB3aGVyZSBpbmxpbmUgZGVsZXRlcyBhcmUgc2hvd24gY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcm93RGVsZXRlSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBwdWJsaWMgcm93RGVsZXRlQ29uZmlnczogU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnW10gPSBbXTtcblxuICBwdWJsaWMgZ2V0IHRhYmxlV2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5za3ktYWctZ3JpZCcpWzBdXG4gICAgICAub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBAQ29udGVudENoaWxkKEFnR3JpZEFuZ3VsYXIpXG4gIHB1YmxpYyBhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXI7XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByb3dEZWxldGVDb21wb25lbnQ6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbXBvbmVudDtcbiAgcHJpdmF0ZSByb3dEZWxldGVDb250ZW50czogeyBbaWQ6IHN0cmluZ106IFNreUFnR3JpZFJvd0RlbGV0ZUNvbnRlbnRzIH0gPSB7fTtcblxuICBwcml2YXRlIF9yb3dEZWxldGVJZHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICBTa3lBZ0dyaWRSb3dEZWxldGVDb21wb25lbnRcbiAgICApLmluc3RhbmNlO1xuXG4gICAgdGhpcy5hZ0dyaWQucm93RGF0YUNoYW5nZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUm93RGVsZXRlU3RhdGVzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWdHcmlkLnJvd0RhdGFVcGRhdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd0RlbGV0ZVN0YXRlcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFnR3JpZC5zb3J0Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZ0dyaWQuZmlsdGVyQ2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzKS5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxSb3dEZWxldGUocm93OiBSb3dOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzID0gdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbHRlcihcbiAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCAhPT0gcm93LmlkXG4gICAgKTtcbiAgICB0aGlzLnJvd0RlbGV0ZUNhbmNlbC5lbWl0KHsgaWQ6IHJvdy5pZCB9KTtcblxuICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShyb3cuaWQpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpcm1Sb3dEZWxldGUocm93OiBSb3dOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbmQoKGNvbmZpZykgPT4gY29uZmlnLmlkID09PSByb3cuaWQpLnBlbmRpbmcgPSB0cnVlO1xuICAgIHRoaXMucm93RGVsZXRlQ29uZmlybS5lbWl0KHsgaWQ6IHJvdy5pZCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEZWxldGVJdGVtKHJvdzogUm93Tm9kZSk6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMucm93RGVsZXRlQ29uZmlncy5maW5kKChyb3dEZWxldGUpID0+IHJvd0RlbGV0ZS5pZCA9PT0gcm93LmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYWZmaXhUb1JvdyhhZmZpeGVyOiBTa3lBZmZpeGVyLCBpZDogc3RyaW5nKSB7XG4gICAgbGV0IHJvd0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgXG4gICAgICBbcm93LWlkPVwiJHtpZH1cIl0gZGl2W2FyaWEtY29saW5kZXg9XCIxXCJdLFxuICAgICAgLmFnLXJvdy5za3ktYWctZ3JpZC1yb3ctJHtpZH0gZGl2W2FyaWEtY29saW5kZXg9XCIxXCJdXG4gICAgYCk7XG5cbiAgICAvLyBUaGlzIGNvdmVycyBjYXNlcyB3aGVyZSBBRyBHcmlkIHBsYWNlcyB0aGUgY29sdW1uIGluZGV4IG9uIGFuIGlubmVyIGVsZW1lbnQgKHN1Y2ggYXMgd2l0aCB0aGUgYGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uYCBvcHRpb24pXG4gICAgLy8gVGhpcyBhcHBlYXJzIHRvIGhhdmUgYmVlbiBmaXhlZCBieSBBRyBHcmlkIGluIHZlcnNpb24gMjQgYW5kIHNvIGl0IGlzIG5vdCB0ZXN0YWJsZSBhZnRlciB0aGF0IHZlcnNpb24uXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFyb3dFbGVtZW50KSB7XG4gICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ1tyb3ctaWQ9XCInICsgaWQgKyAnXCJdID4gZGl2J1xuICAgICAgKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjb2x1bW5zW2ldLnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLWNvbGluZGV4PVwiMVwiXScpKSB7XG4gICAgICAgICAgcm93RWxlbWVudCA9IGNvbHVtbnNbaV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhZmZpeGVyLmFmZml4VG8ocm93RWxlbWVudCwge1xuICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgIHBsYWNlbWVudDogJ2Fib3ZlJyxcbiAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAndG9wJyxcbiAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgIGVuYWJsZUF1dG9GaXQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95Um93RGVsZXRlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByb3dEZWxldGVDb250ZW50cyA9IHRoaXMucm93RGVsZXRlQ29udGVudHNbaWRdO1xuXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocm93RGVsZXRlQ29udGVudHMpIHtcbiAgICAgIHJvd0RlbGV0ZUNvbnRlbnRzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZShyb3dEZWxldGVDb250ZW50cy5vdmVybGF5KTtcbiAgICAgIGRlbGV0ZSB0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzW2lkXTtcbiAgICAgIHRoaXMucm93RGVsZXRlQ29uZmlncyA9IHRoaXMucm93RGVsZXRlQ29uZmlncy5maWx0ZXIoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICB0aGlzLl9yb3dEZWxldGVJZHMgPSB0aGlzLnJvd0RlbGV0ZUlkcz8uZmlsdGVyKFxuICAgICAgICAoYXJyYXlJZCkgPT4gYXJyYXlJZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICB0aGlzLnJvd0RlbGV0ZUlkc0NoYW5nZS5lbWl0KHRoaXMuX3Jvd0RlbGV0ZUlkcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzLmZvckVhY2goKGNvbmZpZzogU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGNvbmZpZy5pZCkpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGNvbmZpZy5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBtdXN0IHJlYWZmaXggdGhpbmdzIHdoZW4gdGhlIGRhdGEgY2hhbmdlcyBiZWNhdXNlIHRoZSByb3dzIHJlcmVuZGVyIGFuZCB0aGUgcHJldmlvdXMgZWxlbWVudCB0aGF0IHRoZSBkZWxldGUgd2FzIGFmZml4ZWRcbiAgICAgICAgLy8gdG8gaXMgZGVzdHJveWVkLlxuICAgICAgICB0aGlzLmFmZml4VG9Sb3codGhpcy5yb3dEZWxldGVDb250ZW50c1tjb25maWcuaWRdLmFmZml4ZXIsIGNvbmZpZy5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yb3ctZGVsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hZy1ncmlkL3NyYy9saWIvbW9kdWxlcy9hZy1ncmlkL2FnLWdyaWQtcm93LWRlbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixlQUFlLEVBRWYsaUJBQWlCLEdBQ2xCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBUzdFLE1BQU0sT0FBTywyQkFBMkI7SUE4SHRDLFlBQ1UsWUFBNkIsRUFDN0IsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsY0FBaUMsRUFDakMsZ0JBQWtDO1FBSmxDLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZDNUM7O1dBRUc7UUFFSSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBRTFFOztXQUVHO1FBRUkscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWlDLENBQUM7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QyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLDhIQUE4SDtnQkFDOUgsbUJBQW1CO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN2RTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDOzt3SEE3UFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsMlFBcUh4QixhQUFhOzJGQXJIaEIsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzhOQVFLLFlBQVk7c0JBRGYsS0FBSztnQkEwRkMsZUFBZTtzQkFEckIsTUFBTTtnQkFPQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0Esa0JBQWtCO3NCQUR4QixNQUFNO2dCQVdBLE1BQU07c0JBRFosWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreUFmZml4ZXIsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hZy1ncmlkLXJvdy1kZWxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3MgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jYW5jZWwtYXJncyc7XG5pbXBvcnQgeyBTa3lBZ0dyaWRSb3dEZWxldGVDb25maWcgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb25maWcnO1xuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3MgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb25maXJtLWFyZ3MnO1xuaW1wb3J0IHsgU2t5QWdHcmlkUm93RGVsZXRlQ29udGVudHMgfSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb250ZW50cyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZ0dyaWRSb3dEZWxldGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkUm93RGVsZXRlRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGlkcyBvZiB0aGUgZGF0YSBpbiB0aGUgcm93cyBvbiB3aGljaCBpbmxpbmUgZGVsZXRlJ3Mgc2hvdWxkIGJlIHNob3duLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHJvd0RlbGV0ZUlkcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9yb3dEZWxldGVJZHMgPSB2YWx1ZTtcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIHRoaXMucm93RGVsZXRlQ29uZmlncykge1xuICAgICAgICB0aGlzLmRlc3Ryb3lSb3dEZWxldGUoY29uZmlnLmlkKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgaWQgb2YgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbmQoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCA9PT0gaWRcbiAgICAgICk7XG4gICAgICBpZiAoZXhpc3RpbmdDb25maWcpIHtcbiAgICAgICAgZXhpc3RpbmdDb25maWcucGVuZGluZyA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb3dEZWxldGVDb25maWdzLnB1c2goe1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBwZW5kaW5nOiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgICBlbmFibGVTY3JvbGw6IHRydWUsXG4gICAgICAgICAgc2hvd0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgICBlbmFibGVDbG9zZTogZmFsc2UsXG4gICAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZShcbiAgICAgICAgICB0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudC5pbmxpbmVEZWxldGVUZW1wbGF0ZVJlZixcbiAgICAgICAgICB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGlkKSxcbiAgICAgICAgICAgIHRhYmxlV2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFibGVXaWR0aDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSb3dEZWxldGVJdGVtOiAocm93OiBSb3dOb2RlKSA9PiB0aGlzLmdldFJvd0RlbGV0ZUl0ZW0ocm93KSxcbiAgICAgICAgICAgIGNhbmNlbFJvd0RlbGV0ZTogKHJvdzogUm93Tm9kZSkgPT4gdGhpcy5jYW5jZWxSb3dEZWxldGUocm93KSxcbiAgICAgICAgICAgIGNvbmZpcm1Sb3dEZWxldGU6IChyb3c6IFJvd05vZGUpID0+IHRoaXMuY29uZmlybVJvd0RlbGV0ZShyb3cpLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2UgYXJlIG1hbnVhbGx5IHNldHRpbmcgdGhlIHotaW5kZXggaGVyZSBiZWNhdXNlIG92ZXJsYXlzIHdpbGwgYWx3YXlzIGJlIG9uIHRvcCBvZlxuICAgICAgICAgKiB0aGUgb21uaWJhci4gVGhpcyBtYW51YWwgc2V0dGluZyBpcyAyIGxlc3MgdGhhbiB0aGUgb21uaWJhcidzIHotaW5kZXggb2YgMTAwMCBhbmQgb25lIGxlc3MgdGhhblxuICAgICAgICAgKiB0aGUgaGVhZGVyIHJvdydzIHZpZXdrZWVwZXIgd2hpY2ggaXMgOTk5LiBXZSBkaXNjdXNzZWQgY2hhbmdpbmcgdGhlIG92ZXJsYXkgc2VydmljZSB0byBhbGxvdyBmb3IgdGhpc1xuICAgICAgICAgKiBidXQgZGVjaWRlZCBhZ2FpbnN0IHRoYXQgY2hhbmdlIGF0IHRoaXMgdGltZSBkdWUgdG8gaXRzIG5pY2hlIG5hdHVyZS5cbiAgICAgICAgICovXG4gICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9ICc5OTgnO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlubGluZURlbGV0ZVJlZiA9IHRoaXMucm93RGVsZXRlQ29tcG9uZW50LmlubGluZURlbGV0ZVJlZnNcbiAgICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAgIC5maW5kKChlbFJlZikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZWxSZWYubmF0aXZlRWxlbWVudC5pZCA9PT0gJ3Jvdy1kZWxldGUtcmVmLScgKyBpZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLmFmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKGlubGluZURlbGV0ZVJlZik7XG5cbiAgICAgICAgICB0aGlzLmFmZml4VG9Sb3coYWZmaXhlciwgaWQpO1xuXG4gICAgICAgICAgdGhpcy5yb3dEZWxldGVDb250ZW50c1tpZF0gPSB7XG4gICAgICAgICAgICBhZmZpeGVyOiBhZmZpeGVyLFxuICAgICAgICAgICAgb3ZlcmxheTogb3ZlcmxheSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MpIHtcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKGNvbmZpZy5pZCkgPCAwKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShjb25maWcuaWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93RGVsZXRlSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcm93RGVsZXRlSWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgYFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3NgIG9iamVjdCB3aGVuIGEgcm93J3MgaW5saW5lIGRlbGV0ZSBpcyBjYW5jZWxsZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QWdHcmlkUm93RGVsZXRlQ2FuY2VsQXJncz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYSBgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3NgIG9iamVjdCB3aGVuIGEgcm93J3MgaW5saW5lIGRlbGV0ZSBpcyBjb25maXJtZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNvbmZpcm0gPSBuZXcgRXZlbnRFbWl0dGVyPFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpcm1BcmdzPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBsaXN0IG9mIGlkcyBvZiB0aGUgZGF0YSBpbiB0aGUgcm93cyB3aGVyZSBpbmxpbmUgZGVsZXRlcyBhcmUgc2hvd24gY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcm93RGVsZXRlSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBwdWJsaWMgcm93RGVsZXRlQ29uZmlnczogU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnW10gPSBbXTtcblxuICBwdWJsaWMgZ2V0IHRhYmxlV2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5za3ktYWctZ3JpZCcpWzBdXG4gICAgICAub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBAQ29udGVudENoaWxkKEFnR3JpZEFuZ3VsYXIpXG4gIHB1YmxpYyBhZ0dyaWQ6IEFnR3JpZEFuZ3VsYXI7XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByb3dEZWxldGVDb21wb25lbnQ6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbXBvbmVudDtcbiAgcHJpdmF0ZSByb3dEZWxldGVDb250ZW50czogeyBbaWQ6IHN0cmluZ106IFNreUFnR3JpZFJvd0RlbGV0ZUNvbnRlbnRzIH0gPSB7fTtcblxuICBwcml2YXRlIF9yb3dEZWxldGVJZHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICBTa3lBZ0dyaWRSb3dEZWxldGVDb21wb25lbnRcbiAgICApLmluc3RhbmNlO1xuXG4gICAgdGhpcy5hZ0dyaWQucm93RGF0YUNoYW5nZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUm93RGVsZXRlU3RhdGVzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWdHcmlkLnJvd0RhdGFVcGRhdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd0RlbGV0ZVN0YXRlcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFnR3JpZC5zb3J0Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZ0dyaWQuZmlsdGVyQ2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzKS5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxSb3dEZWxldGUocm93OiBSb3dOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzID0gdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbHRlcihcbiAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCAhPT0gcm93LmlkXG4gICAgKTtcbiAgICB0aGlzLnJvd0RlbGV0ZUNhbmNlbC5lbWl0KHsgaWQ6IHJvdy5pZCB9KTtcblxuICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShyb3cuaWQpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpcm1Sb3dEZWxldGUocm93OiBSb3dOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbmQoKGNvbmZpZykgPT4gY29uZmlnLmlkID09PSByb3cuaWQpLnBlbmRpbmcgPSB0cnVlO1xuICAgIHRoaXMucm93RGVsZXRlQ29uZmlybS5lbWl0KHsgaWQ6IHJvdy5pZCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEZWxldGVJdGVtKHJvdzogUm93Tm9kZSk6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMucm93RGVsZXRlQ29uZmlncy5maW5kKChyb3dEZWxldGUpID0+IHJvd0RlbGV0ZS5pZCA9PT0gcm93LmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYWZmaXhUb1JvdyhhZmZpeGVyOiBTa3lBZmZpeGVyLCBpZDogc3RyaW5nKSB7XG4gICAgbGV0IHJvd0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgXG4gICAgICBbcm93LWlkPVwiJHtpZH1cIl0gZGl2W2FyaWEtY29saW5kZXg9XCIxXCJdLFxuICAgICAgLmFnLXJvdy5za3ktYWctZ3JpZC1yb3ctJHtpZH0gZGl2W2FyaWEtY29saW5kZXg9XCIxXCJdXG4gICAgYCk7XG5cbiAgICAvLyBUaGlzIGNvdmVycyBjYXNlcyB3aGVyZSBBRyBHcmlkIHBsYWNlcyB0aGUgY29sdW1uIGluZGV4IG9uIGFuIGlubmVyIGVsZW1lbnQgKHN1Y2ggYXMgd2l0aCB0aGUgYGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uYCBvcHRpb24pXG4gICAgLy8gVGhpcyBhcHBlYXJzIHRvIGhhdmUgYmVlbiBmaXhlZCBieSBBRyBHcmlkIGluIHZlcnNpb24gMjQgYW5kIHNvIGl0IGlzIG5vdCB0ZXN0YWJsZSBhZnRlciB0aGF0IHZlcnNpb24uXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFyb3dFbGVtZW50KSB7XG4gICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ1tyb3ctaWQ9XCInICsgaWQgKyAnXCJdID4gZGl2J1xuICAgICAgKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjb2x1bW5zW2ldLnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLWNvbGluZGV4PVwiMVwiXScpKSB7XG4gICAgICAgICAgcm93RWxlbWVudCA9IGNvbHVtbnNbaV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhZmZpeGVyLmFmZml4VG8ocm93RWxlbWVudCwge1xuICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgIHBsYWNlbWVudDogJ2Fib3ZlJyxcbiAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAndG9wJyxcbiAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgIGVuYWJsZUF1dG9GaXQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95Um93RGVsZXRlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByb3dEZWxldGVDb250ZW50cyA9IHRoaXMucm93RGVsZXRlQ29udGVudHNbaWRdO1xuXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocm93RGVsZXRlQ29udGVudHMpIHtcbiAgICAgIHJvd0RlbGV0ZUNvbnRlbnRzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZShyb3dEZWxldGVDb250ZW50cy5vdmVybGF5KTtcbiAgICAgIGRlbGV0ZSB0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzW2lkXTtcbiAgICAgIHRoaXMucm93RGVsZXRlQ29uZmlncyA9IHRoaXMucm93RGVsZXRlQ29uZmlncy5maWx0ZXIoXG4gICAgICAgIChjb25maWcpID0+IGNvbmZpZy5pZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICB0aGlzLl9yb3dEZWxldGVJZHMgPSB0aGlzLnJvd0RlbGV0ZUlkcz8uZmlsdGVyKFxuICAgICAgICAoYXJyYXlJZCkgPT4gYXJyYXlJZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICB0aGlzLnJvd0RlbGV0ZUlkc0NoYW5nZS5lbWl0KHRoaXMuX3Jvd0RlbGV0ZUlkcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzLmZvckVhY2goKGNvbmZpZzogU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGNvbmZpZy5pZCkpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGNvbmZpZy5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBtdXN0IHJlYWZmaXggdGhpbmdzIHdoZW4gdGhlIGRhdGEgY2hhbmdlcyBiZWNhdXNlIHRoZSByb3dzIHJlcmVuZGVyIGFuZCB0aGUgcHJldmlvdXMgZWxlbWVudCB0aGF0IHRoZSBkZWxldGUgd2FzIGFmZml4ZWRcbiAgICAgICAgLy8gdG8gaXMgZGVzdHJveWVkLlxuICAgICAgICB0aGlzLmFmZml4VG9Sb3codGhpcy5yb3dEZWxldGVDb250ZW50c1tjb25maWcuaWRdLmFmZml4ZXIsIGNvbmZpZy5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
|