@energycap/components 0.25.3 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/energycap-components.umd.js +9 -9
- package/bundles/energycap-components.umd.js.map +1 -1
- package/bundles/energycap-components.umd.min.js +1 -1
- package/bundles/energycap-components.umd.min.js.map +1 -1
- package/energycap-components.metadata.json +1 -1
- package/esm2015/lib/display/table/searchable-table.component.js +4 -4
- package/esm2015/lib/display/table/table-pagination.component.js +7 -7
- package/fesm2015/energycap-components.js +9 -9
- package/fesm2015/energycap-components.js.map +1 -1
- package/lib/display/table/searchable-table.component.d.ts +1 -1
- package/lib/display/table/table-pagination.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -88,7 +88,7 @@ export class SearchableTableComponent {
|
|
|
88
88
|
/**
|
|
89
89
|
* Maximum number of page tabs to show
|
|
90
90
|
*/
|
|
91
|
-
this.
|
|
91
|
+
this.maxTabs = 10;
|
|
92
92
|
/**
|
|
93
93
|
* Makes the searchbox readonly if true.
|
|
94
94
|
*/
|
|
@@ -236,7 +236,7 @@ export class SearchableTableComponent {
|
|
|
236
236
|
SearchableTableComponent.decorators = [
|
|
237
237
|
{ type: Component, args: [{
|
|
238
238
|
selector: 'ec-searchable-table',
|
|
239
|
-
template: "<header *ngIf=\"!hideHeader\"\r\n class=\"d-flex flex-shrink align-items-center mb-3\">\r\n <ec-textbox id=\"{{id}}_searchbox\"\r\n *ngIf=\"!hideSearchControl\"\r\n class=\"mb-0 flex-grow mr-2\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"searchModel\"\r\n [tabindex]=\"searchboxTabIndex\"\r\n [placeholder]=\"searchboxPlaceholder\"\r\n [readonly]=\"searchboxReadonly\"></ec-textbox>\r\n <div class=\"flex-grow\">\r\n <ng-content select=\".searchable-table-controls\"></ng-content>\r\n </div>\r\n</header>\r\n<section id=\"{{id}}_card\"\r\n class=\"card m-0 d-flex flex-column bg-content\"\r\n [class.is-translucent]=\"status.status !== 'error'\"\r\n ecOverlay\r\n [status]=\"status.status\"\r\n [message]=\"status.message\"\r\n [displayAsMask]=\"true\">\r\n <ng-content select=\".card-header\"></ng-content>\r\n <ec-table id=\"{{id}}_table\"\r\n class=\"flex-shrink-max {{tableClasses}}\"\r\n [class.is-fixed]=\"tableLayoutFixed\"\r\n [sortable]=\"sortable\"\r\n [sort]=\"sort\"\r\n (sortChange)=\"onSortChange($event)\"\r\n [resizable]=\"resizable\"\r\n [scrollable]=\"true\"\r\n [selectionContext]=\"selectionContext\"\r\n [selectionToolbarTemplate]=\"selectionToolbarTemplate\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </ec-table>\r\n\r\n <!-- pagination footer visible if table is page-able and there are more than one page of results -->\r\n <footer *ngIf=\"!hideFooter && pageable && searchResults.totalItemsBeforePaging! > pageSize!\" class=\"d-flex flex-shrink align-items-center border-top\">\r\n <ec-table-pagination id=\"{{id}}_pager\"\r\n class=\"font-color-primary\"\r\n [totalItems]=\"searchResults.totalItemsBeforePaging\"\r\n [pageSize]=\"pageSize\"\r\n [
|
|
239
|
+
template: "<header *ngIf=\"!hideHeader\"\r\n class=\"d-flex flex-shrink align-items-center mb-3\">\r\n <ec-textbox id=\"{{id}}_searchbox\"\r\n *ngIf=\"!hideSearchControl\"\r\n class=\"mb-0 flex-grow mr-2\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"searchModel\"\r\n [tabindex]=\"searchboxTabIndex\"\r\n [placeholder]=\"searchboxPlaceholder\"\r\n [readonly]=\"searchboxReadonly\"></ec-textbox>\r\n <div class=\"flex-grow\">\r\n <ng-content select=\".searchable-table-controls\"></ng-content>\r\n </div>\r\n</header>\r\n<section id=\"{{id}}_card\"\r\n class=\"card m-0 d-flex flex-column bg-content\"\r\n [class.is-translucent]=\"status.status !== 'error'\"\r\n ecOverlay\r\n [status]=\"status.status\"\r\n [message]=\"status.message\"\r\n [displayAsMask]=\"true\">\r\n <ng-content select=\".card-header\"></ng-content>\r\n <ec-table id=\"{{id}}_table\"\r\n class=\"flex-shrink-max {{tableClasses}}\"\r\n [class.is-fixed]=\"tableLayoutFixed\"\r\n [sortable]=\"sortable\"\r\n [sort]=\"sort\"\r\n (sortChange)=\"onSortChange($event)\"\r\n [resizable]=\"resizable\"\r\n [scrollable]=\"true\"\r\n [selectionContext]=\"selectionContext\"\r\n [selectionToolbarTemplate]=\"selectionToolbarTemplate\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </ec-table>\r\n\r\n <!-- pagination footer visible if table is page-able and there are more than one page of results -->\r\n <footer *ngIf=\"!hideFooter && pageable && searchResults.totalItemsBeforePaging! > pageSize!\" class=\"d-flex flex-shrink align-items-center border-top\">\r\n <ec-table-pagination id=\"{{id}}_pager\"\r\n class=\"font-color-primary\"\r\n [totalItems]=\"searchResults.totalItemsBeforePaging\"\r\n [pageSize]=\"pageSize\"\r\n [maxTabs]=\"maxTabs\"\r\n [pageNumber]=\"pageInfo?.pageNumber\"\r\n (pageChanged)=\"onPageChange($event)\">\r\n </ec-table-pagination>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto mr-2 font-color-hint text-truncate\" \r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n\r\n <!-- default footer: visible if hideFooter is false and table is not page-able or there are only one page of results (always shows if there is a caption to indicate no results) -->\r\n <footer *ngIf=\"(!hideFooter && (!pageable || searchResults.totalItemsBeforePaging! <= pageSize!)) || tableCaption\"\r\n class=\"p-2 d-flex\"\r\n [class.has-results]=\"searchResults?.items?.length\">\r\n <ng-content *ngIf=\"!tableCaption\"\r\n select=\".searchable-table-footer\"></ng-content>\r\n <div id=\"tableCaption\"\r\n *ngIf=\"tableCaption\"\r\n [innerHTML]=\"tableCaption\"></div>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto text-truncate\"\r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n</section>",
|
|
240
240
|
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:flex;flex:1 1;flex-direction:column;min-height:0}footer{font-size:.75rem;line-height:1rem}footer.has-results{border-top:1px solid rgba(26,26,35,.18);color:rgba(26,26,35,.38);text-align:right}"]
|
|
241
241
|
},] }
|
|
242
242
|
];
|
|
@@ -272,11 +272,11 @@ SearchableTableComponent.propDecorators = {
|
|
|
272
272
|
hideFooter: [{ type: Input }],
|
|
273
273
|
pageable: [{ type: Input }],
|
|
274
274
|
pageSize: [{ type: Input }],
|
|
275
|
-
|
|
275
|
+
maxTabs: [{ type: Input }],
|
|
276
276
|
searchboxReadonly: [{ type: Input }],
|
|
277
277
|
selectionContext: [{ type: Input }],
|
|
278
278
|
selectionToolbarTemplate: [{ type: Input }],
|
|
279
279
|
resizableColumns: [{ type: ContentChildren, args: [ResizableColumnComponent, { descendants: true },] }],
|
|
280
280
|
additionalCountText: [{ type: Input }]
|
|
281
281
|
};
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFpQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWpFLE9BQU8sRUFBYyx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVl4RSxNQUFNLE9BQU8sd0JBQXdCO0lBdUxuQyxZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxZQUEwQjtR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Q0wsS0FBSzt1QkFDTCxLQUFLO21CQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFNTCxLQUFLO3lCQUVMLE1BQU07Z0NBR04sTUFBTSxTQUFDLFlBQVk7bUNBR25CLEtBQUs7d0JBT0wsS0FBSzs0QkFPTCxLQUFLO3FDQVlMLEtBQUs7b0JBVUwsS0FBSzt1QkFXTCxLQUFLO3NCQUdMLEtBQUs7cUJBR0wsS0FBSzsrQkFLTCxLQUFLOzBCQUdMLE1BQU07Z0NBR04sS0FBSzsyQkFHTCxLQUFLO2dDQUdMLEtBQUs7eUJBR0wsS0FBSzt5QkFHTCxLQUFLO3lCQUdMLEtBQUs7dUJBc0JMLEtBQUs7dUJBS0wsS0FBSzt1QkFLTCxLQUFLO2dDQUtMLEtBQUs7K0JBR0wsS0FBSzt1Q0FHTCxLQUFLOytCQUVMLGVBQWUsU0FBQyx3QkFBd0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7a0NBRzdELEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEVNUFRZLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAsIHBsdWNrLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwLCBza2lwVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZXJyb3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi92aWV3LW92ZXJsYXkvdmlldy1vdmVybGF5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU29ydCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnaW5nSW5mbywgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvd0NvdW50UGlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9kaXNwbGF5L3BpcGVzL3Jvdy1jb3VudC5waXBlJztcclxuaW1wb3J0IHsgVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dCB9IGZyb20gJy4vdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9yZXNpemFibGUtY29sdW1uLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgdHlwZSBUYWJsZVNlYXJjaFJlc3VsdHMgPSB7IGl0ZW1zOiB1bmtub3duW10sIHRvdGFsSXRlbXM6IG51bWJlciwgdG90YWxJdGVtc0JlZm9yZVBhZ2luZz86IG51bWJlciB9O1xyXG5leHBvcnQgdHlwZSBTZWFyY2hhYmxlVGFibGVSZWZyZXNoT3B0aW9ucyA9IHsgY2xlYXJTZWFyY2g/OiBib29sZWFuIH07XHJcblxyXG50eXBlIFNlYXJjaGFibGVUYWJsZUZvcm1Nb2RlbCA9IHsgc2VhcmNoTW9kZWw/OiBzdHJpbmcgfTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtc2VhcmNoYWJsZS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaGFibGUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGFibGUtdGFibGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBpZCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJlc2l6YWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc29ydD86IFRhYmxlU29ydDtcclxuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqU2V0IHRvIGEgc3BhY2Utc2VwYXJhdGVkIHNldCBvZiBzdHJpbmdzIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBlYy10YWJsZSBjbGFzcyBhdHRyaWJ1dGVcclxuICAgKiB0aGlzIGFsbG93cyBmaW5lciBjb250cm9sIG92ZXIgc3R5bGluZywgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIHR1cm4gb24gc2VsZWN0YWJsZSBoaWdobGlnaHRzXHJcbiAgICogYnkgaW5jbHVkaW5nIGlzLXNlbGVjdGFibGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJsZUNsYXNzZXM6IHN0cmluZyA9ICcnO1xyXG4gIC8qKiBFbWl0cyB3aGVuIHRhYmxlIHNvcnQgaGFzIGNoYW5nZWQgKi9cclxuICBAT3V0cHV0KCkgc29ydENoYW5nZTogRXZlbnRFbWl0dGVyPFRhYmxlU29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlU29ydD4oKTtcclxuXHJcbiAgLyoqIEVtaXRzIHdoZW4gdGhlIHRhYmxlIHBhZ2UgaGFzIGNoYW5nZWQgKi9cclxuICBAT3V0cHV0KCdwYWdlQ2hhbmdlJykgcGFnZUNoYW5nZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5nSW5mbz4oKTtcclxuXHJcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBzZWFyY2hib3ggKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hQbGFjZWhvbGRlciA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtR3JvdXAgZm9yIHRoZSBzZWFyY2hib3hcclxuICAgKlxyXG4gICAqIFRoZSByZWZlcmVuY2VkIEZvcm1Hcm91cCAqKm11c3QqKiBjb250YWluIGEgRm9ybUNvbnRyb2wgY2FsbGVkICdzZWFyY2hNb2RlbCcuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1Nb2RlbCE6IEZvcm1Hcm91cDtcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheWVkIGluIG92ZXJsYXkgd2hlbiBubyBkYXRhIGlzIHJldHVybmVkICh3aXRob3V0IHNlYXJjaGluZykuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQ1wiXHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9EYXRhTWVzc2FnZTogc3RyaW5nID0gJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXllZCBpbiBvdmVybGF5IHdoZW4gbm8gZGF0YSBpcyByZXR1cm5lZCAoYWZ0ZXIgc2VhcmNoaW5nKS5cclxuICAgKiBFbnN1cmUgdHJhbnNsYXRpb24gaGFzIGFuIGludGVycG9sYXRpb24gcGxhY2Vob2xkZXIgZm9yIFwic2VhcmNoVGV4dFwiLlxyXG4gICAqXHJcbiAgICogRGVmYXVsdHMgdG8gXCJTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob01hdGNoZXNfU0NcIlxyXG4gICAqXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiAvLyA3IHJlcXVpcmVzIHNpbmdsZSBjdXJseSBicmFjZXNcclxuICAgKiBObyBpdGVtcyBmb3VuZCBtYXRjaGluZyA8c3Ryb25nPnt7c2VhcmNoVGV4dH19PC9zdHJvbmc+XHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9TZWFyY2hSZXN1bHRzTWVzc2FnZTogc3RyaW5nID0gJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYXRlcyBob3N0aW5nIHBhZ2UgaXMgcmVhZHkgZm9yIHRoZSB0YWJsZSB0byBsb2FkIGRhdGEuXHJcbiAgICpcclxuICAgKiBOZXh0IGFuZCBDb21wbGV0ZSB0aGlzIG9ic2VydmFibGUgYWZ0ZXIgaG9zdGluZyBwYWdlIGhhcyBtYWRlIGFueSBwcmVsaW1pbmFyeVxyXG4gICAqIEFQSSAob3Igb3RoZXIgYXN5bmNocm9ub3VzKSBjYWxscyB0byBsb2FkIHByZXJlcXVpc2l0ZSBkYXRhIHVwb24gd2hpY2ggdGhlIGNvZGVcclxuICAgKiBpbiB0aGUgYGdldEl0ZW1zYCBmdW5jdGlvbiBkZXBlbmRzLiAgVXNlIGEgYFJlcGxheVN1YmplY3RgIHRvIGVuc3VyZSBldmVyeSBjb21wb25lbnRcclxuICAgKiB0aGF0IHVzZXMgdGhpcyBvYnNlcnZhYmxlIGdldHMgdGhlIE5leHQgYW5kIENvbXBsZXRlIG5vdGlmaWNhdGlvbnMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVhZHkhOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgdG8gZ2V0IGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIHRhYmxlLlxyXG4gICAqIElmIHBhZ2VhYmxlIGlzIHRydWUsIHRoZSBUYWJsZVNlYXJjaFJlc3VsdHMgbmVlZCB0byBpbmNsdWRlIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmcsIHdoaWNoIGlzIHRoZVxyXG4gICAqIGNvdW50IG9mIGl0ZW1zIGJlZm9yZSB5b3UndmUgYXBwbGllZCBhbnkgcGFnaW5hdGlvbiAoaS5lLiB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FtZSBiYWNrIGZyb20gdGhlIHNlYXJjaCkuXHJcbiAgICpcclxuICAgKiBNYWtlIHN1cmUgdG8gYmluZCB0aGUgc2NvcGUgaW4gdGhlIHRlbXBsYXRlXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBbZ2V0SXRlbXNdPVwieW91ckZ1bmN0aW9uLmJpbmQodGhpcylcIlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGdldEl0ZW1zITogKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKSA9PiBPYnNlcnZhYmxlPFRhYmxlU2VhcmNoUmVzdWx0cz47XHJcblxyXG4gIC8qKiBPYnNlcnZhYmxlIHRoYXQgd2lsbCBmb3JjZSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24gdG8gZ2V0IGNhbGxlZCBhZ2FpbiAqL1xyXG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBPYnNlcnZhYmxlPFNlYXJjaGFibGVUYWJsZVJlZnJlc2hPcHRpb25zIHwgdW5kZWZpbmVkPjtcclxuXHJcbiAgLyoqIEFsbG93IHRoZSBob3N0IGNvbXBvbmVudCB0byBzdXBwbHkgYW4gb3ZlcmxheSB0byBjb250cm9sIHRoZSBwZW5kaW5nIHN0YXRlIG9mIHRoZSB0YWJsZSAqL1xyXG4gIEBJbnB1dCgpIHN0YXR1czogT3ZlcmxheSA9IG5ldyBPdmVybGF5KCdoYXNEYXRhJyk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHVuZGVybHlpbmcgdGFibGUncyBsYXlvdXQgdG8gZml4ZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGFibGVMYXlvdXRGaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRW1pdHMgaXRlbXMgcmV0dXJuZWQgYnkgdGhlIGdldEl0ZW1zIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHRvdGFsIGNvdW50ICovXHJcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVTZWFyY2hSZXN1bHRzPiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTZWFyY2hSZXN1bHRzPigpO1xyXG5cclxuICAvKiogT3B0aW9uYWwgdGFiIGluZGV4IGZvciB0aGUgc2VhcmNoYm94ICovXHJcbiAgQElucHV0KCkgc2VhcmNoYm94VGFiSW5kZXg/OiBudW1iZXI7XHJcblxyXG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBzaG93IGluIHRoZSB0YWJsZSAoZGVmYXVsdDogMTAwKSAqL1xyXG4gIEBJbnB1dCgpIG1heEl0ZW1Db3VudDogbnVtYmVyID0gMTAwO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSBzZWFyY2ggYm94IChkb2VzIG5vdCBoaWRlIHRoZSBvdGhlciBzZWFyY2hhYmxlIHRhYmxlIGNvbnRyb2xzICovXHJcbiAgQElucHV0KCkgaGlkZVNlYXJjaENvbnRyb2w6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFNldCB0byB0cnVlIHRvIGhpZGUgdGhlIGVudGlyZSBoZWFkZXIgKi9cclxuICBASW5wdXQoKSBoaWRlSGVhZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBUeXBlIG9mIG9iamVjdCBpbiB0aGUgdGFibGUuIERpc3BsYXllZCBpbiBmb290ZXIgKGRlZmF1bHQ6ICdyZXN1bHRzJykqL1xyXG4gIEBJbnB1dCgpIG9iamVjdFR5cGU6IHN0cmluZyA9ICdyZXN1bHRzJztcclxuXHJcbiAgLyoqIFNldCB0byB0cnVlIHRvIGhpZGUgdGhlIHRhYmxlIGZvb3RlciAqL1xyXG4gIEBJbnB1dCgpIGhpZGVGb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIHBhZ2luZy4gSWYgcGFnaW5nIGlzIGVuYWJsZWQsIHBhZ2VTaXplIG11c3QgYmUgcHJvdmlkZWQuXHJcbiAgICogZ2V0SXRlbXMgd2lsbCBiZSBwYXNzZWQgYm90aCBhIHNlYXJjaCBhbmQgYSBQYWdpbmdJbmZvIG9iamVjdCB3aGVuIGNhbGxlZC4gSXQgbXVzdCBpbmNsdWRlIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmcgaW4gdGhlIFRhYmxlU2VhcmNoUmVzdWx0cyBvdXRwdXQuXHJcbiAgICogSGVyZSBpcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbjogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBnZXRJdGVtcyhzZWFyY2g/OiBzdHJpbmcsIHBhZ2VDaGFuZ2VJbmZvPzogUGFnaW5nSW5mbyk6IE9ic2VydmFibGU8VGFibGVTZWFyY2hSZXN1bHRzPiB7XHJcbiAgICAgIGxldCByZXN1bHRzOiBTaW1wbGVJdGVtW10gPSBbLi4udGhpcy5wYWdpbmF0ZWRUYWJsZUl0ZW1zXTtcclxuICAgICAgLy9hcHBseSBzZWFyY2hcclxuICAgICAgaWYoc2VhcmNoKSB7XHJcbiAgICAgICAgcmVzdWx0cyA9IHRoaXMucGFnaW5hdGVkVGFibGVJdGVtcy5maWx0ZXIoaSA9PiBpLmEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vZ2V0IGNvdW50IGJlZm9yZSBhcHBseWluZyBwYWdpbmdcclxuICAgICAgbGV0IGNvdW50QmVmb3JlUGFnaW5nID0gcmVzdWx0cy5sZW5ndGg7XHJcbiAgICAgIC8vYXBwbHkgcGFnaW5nXHJcbiAgICAgIGlmKHBhZ2VDaGFuZ2VJbmZvKSB7XHJcbiAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuc2xpY2UocGFnZUNoYW5nZUluZm8hLnNraXAsIHBhZ2VDaGFuZ2VJbmZvIS5za2lwICsgcGFnZUNoYW5nZUluZm8hLnBhZ2VTaXplKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb2YoeyBpdGVtczogcmVzdWx0cywgdG90YWxJdGVtczogcmVzdWx0cy5sZW5ndGgsIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmc6IGNvdW50QmVmb3JlUGFnaW5nIH0pO1xyXG4gICAgfVxyXG4gICovXHJcbiAgQElucHV0KCkgcGFnZWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IHNpemUgb2YgYSBwYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICogTWF4aW11bSBudW1iZXIgb2YgcGFnZSB0YWJzIHRvIHNob3dcclxuICovXHJcbiAgQElucHV0KCkgbWF4UGFnZXM/OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgdGhlIHNlYXJjaGJveCByZWFkb25seSBpZiB0cnVlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaGJveFJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBQYXNzZWQgdG8gdGhlIGlubmVyIFRhYmxlQ29tcG9uZW50IHRvIGVuYWJsZSByb3cgc2VsZWN0aW9uICovXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uQ29udGV4dD86IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQ7XHJcblxyXG4gIC8qKiBQYXNzZWQgdG8gdGhlIGlubmVyIFRhYmxlQ29tcG9uZW50IHRvIGRpc3BsYXkgYSB0b29sYmFyIHdoZW4gMSBvciBtb3JlIHJvd3MgYXJlIHNlbGVjdGVkLiBSZXF1aXJlcyBgW3NlbGVjdGlvbkNvbnRleHRdYCB0byBiZSBkZWZpbmVkLiAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgXHJcbiAgQENvbnRlbnRDaGlsZHJlbihSZXNpemFibGVDb2x1bW5Db21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pIHJlc2l6YWJsZUNvbHVtbnMhOiBRdWVyeUxpc3Q8UmVzaXphYmxlQ29sdW1uQ29tcG9uZW50PjtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIHRleHQgdG8gYWRkIHRvIHRoZSByZXN1bHRzIGNvdW50IGluIHRoZSB0YWJsZSBmb290ZXIuIFRoaXMgdGV4dCB3aWxsIGJlIGFkZGVkIGFmdGVyIHRoZSBjb3VudCBhbmQgb2JqZWN0VHlwZS4gKi9cclxuICBASW5wdXQoKSBhZGRpdGlvbmFsQ291bnRUZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogUGFnaW5nSW5mbyBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cclxuICAgKi9cclxuICBwdWJsaWMgcGFnZUluZm8/OiBQYWdpbmdJbmZvO1xyXG5cclxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzZWFyY2hNb2RlbCAqL1xyXG4gIHB1YmxpYyBnZXQgc2VhcmNoTW9kZWwoKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLmNvbnRyb2xzLnNlYXJjaE1vZGVsIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGZvb3Rlci5cclxuICAgKiBTb21ldGltZXMgYG5vRGF0YU1lc3NhZ2VgLCBzb21ldGltZXMgYG5vU2VhcmNoUmVzdWx0c01lc3NhZ2VgXHJcbiAgICovXHJcbiAgcHVibGljIHRhYmxlQ2FwdGlvbjogc3RyaW5nID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuXHJcbiAgLyoqIGNvdW50IG9mIHJlc3VsdHMgZGlzcGxheWVkIGluIHRoZSB0YWJsZSAqL1xyXG4gIHB1YmxpYyByZXN1bHRzQ291bnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogSXRlbXMgcmV0dXJuZWQgYnkgdGhlIGdldEl0ZW1zIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHRvdGFsIGNvdW50ICovXHJcbiAgcHVibGljIHNlYXJjaFJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyA9IHsgaXRlbXM6IFtdLCB0b3RhbEl0ZW1zOiAwIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHBhc3NlZCBhbiBpbnB1dCBmb3IgcmVmcmVzaCwgdHJpZ2dlcnMgcmVsb2FkaW5nIGl0ZW1zLlxyXG4gICAqIE90aGVyd2lzZSwgY29tcGxldGVzIGltbWVkaWF0ZWx5ICh3aWxsIG5ldmVyIHRyaWdnZXIgcmVsb2FkKS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZnJlc2hUcmlnZ2VyOiBPYnNlcnZhYmxlPFNlYXJjaGFibGVUYWJsZUZvcm1Nb2RlbCB8IHVuZGVmaW5lZD4gPSBFTVBUWTtcclxuICBwcml2YXRlIGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHByaXZhdGUgcGFnZUNoYW5nZWQ6IFN1YmplY3Q8U2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIC8qKiBUcmlnZ2VycyB0aGUgaW5pdGlhbCBsb2FkIG9mIHRoZSB0YWJsZSAqL1xyXG4gIHByaXZhdGUgaW5pdFRhYmxlID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZXJyb3JTZXJ2aWNlOiBFcnJvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvd0NvdW50UGlwZTogUm93Q291bnRQaXBlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCAnTG9hZGluZycpO1xyXG4gICAgdGhpcy5zZXRVcFJlZnJlc2hUcmlnZ2VyKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHNlYXJjaGJveC9vdGhlciBjb250cm9sIGNoYW5nZXMgb3IgcmVmcmVzaCByZXF1ZXN0c1xyXG4gICAgY29uc3Qgc2VhcmNoT3JSZWZyZXNoID0gbWVyZ2UoXHJcbiAgICAgIHRoaXMuZm9ybU1vZGVsLnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgIHNraXBVbnRpbCh0aGlzLnJlYWR5KSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKVxyXG4gICAgICApLFxyXG4gICAgICB0aGlzLnJlZnJlc2hUcmlnZ2VyLFxyXG4gICAgICB0aGlzLmluaXRUYWJsZVxyXG4gICAgKS5waXBlKHRhcCgoKT0+IHtcclxuICAgICAgLy9hIGNoYW5nZSB0byBhbnkgZm9ybSBjb250cm9sIG9yIGEgcmVmcmVzaCBzaG91bGQgcmVzZXQgdGhlIHBhZ2VJbmZvIHRvIHRoZSBmaXJzdCBwYWdlIGlmIHRoZSB0YWJsZSBpcyBwYWdlYWJsZS5cclxuICAgICAgLy8oaWYgd2UgZGlkbnQgcmVzZXQgdGhlIHBhZ2VJbmZvLCB3ZSdkIGhhdmUgdG8gY2FsbCBnZXRJdGVtcyB3aXRoIHRoZSBwcmV2aW91cyBwYWdlSW5mbywgd2hpY2ggbWF5IG5vdCBiZSB2YWxpZCBmb3IgdGhlIG5ldyByZXN1bHRzKVxyXG4gICAgICBpZih0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlSW5mbyA9IFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKDEsIHRoaXMucGFnZVNpemUhKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZVJlc3VsdHMgPSBtZXJnZShcclxuICAgICAgc2VhcmNoT3JSZWZyZXNoLFxyXG4gICAgICB0aGlzLnBhZ2VDaGFuZ2VkXHJcbiAgICApXHJcblxyXG4gICAgLy8gQ2FsbCBnZXRJdGVtcyBhbmQgd2F0Y2ggZm9yIGVycm9yc1xyXG4gICAgY29uc3QgZ2V0RGF0YSA9IHVwZGF0ZVJlc3VsdHMucGlwZShcclxuICAgICAgLy8gUGx1Y2sgdGhlIHNlYXJjaE1vZGVsIHZhbHVlIG91dCBvZiB0aGUgZm9ybU1vZGVsXHJcbiAgICAgIHBsdWNrKCdzZWFyY2hNb2RlbCcpLFxyXG5cclxuICAgICAgLy8gRW5zdXJlIHNlYXJjaCBzdHJpbmcgaXMgZGVmaW5lZFxyXG4gICAgICAvLyBUcmltIGFuZCBsb3dlcmNhc2UgaXQgdG8gYWlkIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoaW5nXHJcbiAgICAgIG1hcCgoc2VhcmNoU3RyaW5nPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgbGV0IHNlYXJjaCA9IHNlYXJjaFN0cmluZyB8fCAnJztcclxuICAgICAgICByZXR1cm4gc2VhcmNoLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9KSxcclxuXHJcbiAgICAgIC8vIFNob3cgc3RhdHVzIG92ZXJsYXlcclxuICAgICAgdGFwKCgpID0+IHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsICdMb2FkaW5nJykpLFxyXG5cclxuICAgICAgLy8gQ2FsbCBwYXNzZWQgZnVuY3Rpb25cclxuICAgICAgc3dpdGNoTWFwKChzZWFyY2hTdHJpbmc6IHN0cmluZykgPT4gXHJcbiAgICAgICAgLy9pZiB0aGUgdGFibGUgaXMgcGFnZWFibGUsIHBhZ2VJbmZvIHdpbGwgYmUgZGVmaW5lZC5cclxuICAgICAgICB0aGlzLmdldEl0ZW1zKHNlYXJjaFN0cmluZywgdGhpcy5wYWdlSW5mbylcclxuICAgICAgKSxcclxuXHJcbiAgICAgIC8vIElmIHBhc3NlZCBmdW5jdGlvbiBmYWlscywgc2hvdyBlcnJvciBzdGF0dXNcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ2Vycm9yJywgdGhpcy5lcnJvclNlcnZpY2UucGFyc2VBcGlFcnJvcihlcnIpKTtcclxuICAgICAgICAvLyByZXR1cm4gdGhlIGNhdWdodCBvYnNlcnZhYmxlIHNvIHRoZSBzdWJzY3JpcHRpb24gZG9lc24ndCBjb21wbGV0ZVxyXG4gICAgICAgIHJldHVybiBjYXVnaHQ7XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcclxuICAgICk7XHJcblxyXG4gICAgLy8gSGFuZGxlIHJldHVybmVkIGRhdGEgYW5kIG5vdGlmeSBwYXJlbnRcclxuICAgIGdldERhdGEuc3Vic2NyaWJlKChyZXN1bHRzOiBUYWJsZVNlYXJjaFJlc3VsdHMpID0+IHtcclxuICAgICAgLy8gTGltaXRpbmcgbnVtYmVyIG9mIHJlc3VsdHMgdG8gc2hvdyBpZiBub3QgcGFnZWFibGUgKGlmIHBhZ2VhYmxlIHRoZSBtYXggbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB0YWJsZVxyXG4gICAgICAvLyBjYW4gYmUgbW9kaWZpZWQgYnkgaW5jcmVhc2luZy9kZWNyZWFzaW5nIHRoZSBwYWdlU2l6ZS4pXHJcbiAgICAgIGlmKCF0aGlzLnBhZ2VhYmxlKSB7XHJcbiAgICAgICAgcmVzdWx0cy5pdGVtcyA9IHJlc3VsdHMuaXRlbXMuc2xpY2UoMCwgdGhpcy5tYXhJdGVtQ291bnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOZWVkIHRvIGtub3cgdGhpcyAoYWxvbmcgd2l0aCBpZiB0aGVyZSdzIGEgdmFsdWUgaW4gdGhlIGZvcm1Nb2RlbCkgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gc2hvdyBpbiB0aGUgZm9vdGVyXHJcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cyA9IHJlc3VsdHM7XHJcbiAgICBcclxuICAgICAgdGhpcy50YWJsZUNhcHRpb24gPSB0aGlzLmdldENhcHRpb24ocmVzdWx0cyk7XHJcbiAgICAgIHRoaXMucmVzdWx0c0NvdW50ID0gdGhpcy5wYWdlYWJsZSA/IHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHVuZGVmaW5lZCwgdGhpcy5wYWdlSW5mbyk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93Q291bnRQaXBlLnRyYW5zZm9ybShyZXN1bHRzLCB0aGlzLm9iamVjdFR5cGUsIHRoaXMubWF4SXRlbUNvdW50KTtcclxuXHJcbiAgICAgIC8vIERpc2FibGUgc2VhcmNoYm94IHdoZW4gaW4gbm8tZGF0YSBzdGF0ZVxyXG4gICAgICBpZiAoIXJlc3VsdHMuaXRlbXMubGVuZ3RoICYmICF0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaE1vZGVsLmRpc2FibGVkKSB7XHJcbiAgICAgICAgLy8gcmUtZW5hYmxlIGlmIGl0IHdhcyBkaXNhYmxlZCwgYnV0IG5vdyBoYXMgaXRlbXNcclxuICAgICAgICB0aGlzLnNlYXJjaE1vZGVsLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygnaGFzRGF0YScpO1xyXG4gICAgICAvLyBTZW5kIHRoZSByZXN1bHRzIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XHJcbiAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdChyZXN1bHRzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFdoZW4gJ3JlYWR5JyBpcyBjb21wbGV0ZWQgYnkgdGhlIGhvc3QsIGluaXRpYWxpemUgdGhlIHRhYmxlIHdpdGggdGhlIGN1cnJlbnQgZm9ybSBtb2RlbCB2YWx1ZXNcclxuICAgIHRoaXMucmVhZHkuc3Vic2NyaWJlKHtcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmluaXRUYWJsZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBQYXNzIGFsb25nIHNvcnQgdG8gcGFyZW50IGNvbXBvbmVudCAqL1xyXG4gIG9uU29ydENoYW5nZShzb3J0OiBUYWJsZVNvcnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBhIHBhZ2UgY2hhbmdlcywgc3RvcmUgdGhlIG5ldyBwYWdpbmdJbmZvIGFuZCBlbWl0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtIHRvIHRyaWdnZXIgZ2V0RGF0YS5cclxuICAgKi9cclxuICBvblBhZ2VDaGFuZ2UocGFnaW5nSW5mbzogUGFnaW5nSW5mbykge1xyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuICAgIHRoaXMucGFnZUluZm8gPSBwYWdpbmdJbmZvO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlRW1pdHRlci5lbWl0KHBhZ2luZ0luZm8pO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5uZXh0KHRoaXMuZm9ybU1vZGVsLnZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBXaXJlIHVwIGEgaGFuZGxlciB0byB0aGUgYHJlZnJlc2hgIG9ic2VydmFibGUgc28gdGhhdCB3aGVuXHJcbiAgICogdGhlIGhvc3QgcGFnZSBjb250ZXh0IGNoYW5nZXMgaXQgY2FuIGZvcmNlIHRoZSB0YWJsZSB0byB1cGRhdGUgYXMgd2VsbC5cclxuICAgKlxyXG4gICAqIElmIHRoZSBgcmVmcmVzaGAgb2JzZXJ2YWJsZSBwYXNzZXMgb3B0aW9ucyBhbmQgdGhlIGBjbGVhclNlYXJjaGAgcHJvcGVydHlcclxuICAgKiBpcyBzZXQgdG8gdHJ1ZSwgcmVzZXQgdGhlIHNlYXJjaE1vZGVsIGFuZCBwYXNzIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKlxyXG4gICAqIElmIGByZWZyZXNoYCBvYnNlcnZhYmxlIGRvZXMgbm90IHBhc3Mgb3B0aW9ucyBvciB0aGUgYGNsZWFyU2VhcmNoYCBwcm9wZXJ0eVxyXG4gICAqIGlzIHNldCB0byBmYWxzZSwgcGFzcyBhbG9uZyB0aGUgY3VycmVudCBzZWFyY2hNb2RlbCBWYWx1ZS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldFVwUmVmcmVzaFRyaWdnZXIoKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIgPSB0aGlzLnJlZnJlc2gucGlwZShcclxuICAgICAgICBtYXAob3B0cyA9PiB7XHJcbiAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmNsZWFyU2VhcmNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTW9kZWwucmVzZXQoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5mb3JtTW9kZWwsIHNlYXJjaE1vZGVsOiAnJyB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybU1vZGVsLnZhbHVlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBHZXQgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBmb290ZXIuICovXHJcbiAgcHJpdmF0ZSBnZXRDYXB0aW9uKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cyk6IHN0cmluZyB7XHJcbiAgICBpZiAocmVzdWx0cy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlYXJjaE1vZGVsLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vU2VhcmNoUmVzdWx0c01lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQycsIHsgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hNb2RlbC52YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5ub0RhdGFNZXNzYWdlIHx8ICdTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob0RhdGFfU0MnKTtcclxuICB9XHJcblxyXG59Il19
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS9zZWFyY2hhYmxlLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFpQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWpFLE9BQU8sRUFBYyx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVl4RSxNQUFNLE9BQU8sd0JBQXdCO0lBdUxuQyxZQUNVLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxZQUEwQjtR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Q0wsS0FBSzt1QkFDTCxLQUFLO21CQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFNTCxLQUFLO3lCQUVMLE1BQU07Z0NBR04sTUFBTSxTQUFDLFlBQVk7bUNBR25CLEtBQUs7d0JBT0wsS0FBSzs0QkFPTCxLQUFLO3FDQVlMLEtBQUs7b0JBVUwsS0FBSzt1QkFXTCxLQUFLO3NCQUdMLEtBQUs7cUJBR0wsS0FBSzsrQkFLTCxLQUFLOzBCQUdMLE1BQU07Z0NBR04sS0FBSzsyQkFHTCxLQUFLO2dDQUdMLEtBQUs7eUJBR0wsS0FBSzt5QkFHTCxLQUFLO3lCQUdMLEtBQUs7dUJBc0JMLEtBQUs7dUJBS0wsS0FBSztzQkFLTCxLQUFLO2dDQUtMLEtBQUs7K0JBR0wsS0FBSzt1Q0FHTCxLQUFLOytCQUVMLGVBQWUsU0FBQyx3QkFBd0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7a0NBRzdELEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEVNUFRZLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAsIHBsdWNrLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwLCBza2lwVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZXJyb3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi92aWV3LW92ZXJsYXkvdmlldy1vdmVybGF5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlU29ydCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnaW5nSW5mbywgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvd0NvdW50UGlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9kaXNwbGF5L3BpcGVzL3Jvdy1jb3VudC5waXBlJztcclxuaW1wb3J0IHsgVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dCB9IGZyb20gJy4vdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9yZXNpemFibGUtY29sdW1uLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgdHlwZSBUYWJsZVNlYXJjaFJlc3VsdHMgPSB7IGl0ZW1zOiB1bmtub3duW10sIHRvdGFsSXRlbXM6IG51bWJlciwgdG90YWxJdGVtc0JlZm9yZVBhZ2luZz86IG51bWJlciB9O1xyXG5leHBvcnQgdHlwZSBTZWFyY2hhYmxlVGFibGVSZWZyZXNoT3B0aW9ucyA9IHsgY2xlYXJTZWFyY2g/OiBib29sZWFuIH07XHJcblxyXG50eXBlIFNlYXJjaGFibGVUYWJsZUZvcm1Nb2RlbCA9IHsgc2VhcmNoTW9kZWw/OiBzdHJpbmcgfTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtc2VhcmNoYWJsZS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaGFibGUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaGFibGUtdGFibGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBpZCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJlc2l6YWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc29ydD86IFRhYmxlU29ydDtcclxuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqU2V0IHRvIGEgc3BhY2Utc2VwYXJhdGVkIHNldCBvZiBzdHJpbmdzIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBlYy10YWJsZSBjbGFzcyBhdHRyaWJ1dGVcclxuICAgKiB0aGlzIGFsbG93cyBmaW5lciBjb250cm9sIG92ZXIgc3R5bGluZywgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIHR1cm4gb24gc2VsZWN0YWJsZSBoaWdobGlnaHRzXHJcbiAgICogYnkgaW5jbHVkaW5nIGlzLXNlbGVjdGFibGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJsZUNsYXNzZXM6IHN0cmluZyA9ICcnO1xyXG4gIC8qKiBFbWl0cyB3aGVuIHRhYmxlIHNvcnQgaGFzIGNoYW5nZWQgKi9cclxuICBAT3V0cHV0KCkgc29ydENoYW5nZTogRXZlbnRFbWl0dGVyPFRhYmxlU29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlU29ydD4oKTtcclxuXHJcbiAgLyoqIEVtaXRzIHdoZW4gdGhlIHRhYmxlIHBhZ2UgaGFzIGNoYW5nZWQgKi9cclxuICBAT3V0cHV0KCdwYWdlQ2hhbmdlJykgcGFnZUNoYW5nZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5nSW5mbz4oKTtcclxuXHJcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBzZWFyY2hib3ggKi9cclxuICBASW5wdXQoKSBzZWFyY2hib3hQbGFjZWhvbGRlciA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtR3JvdXAgZm9yIHRoZSBzZWFyY2hib3hcclxuICAgKlxyXG4gICAqIFRoZSByZWZlcmVuY2VkIEZvcm1Hcm91cCAqKm11c3QqKiBjb250YWluIGEgRm9ybUNvbnRyb2wgY2FsbGVkICdzZWFyY2hNb2RlbCcuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1Nb2RlbCE6IEZvcm1Hcm91cDtcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheWVkIGluIG92ZXJsYXkgd2hlbiBubyBkYXRhIGlzIHJldHVybmVkICh3aXRob3V0IHNlYXJjaGluZykuXHJcbiAgICpcclxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQ1wiXHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9EYXRhTWVzc2FnZTogc3RyaW5nID0gJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXllZCBpbiBvdmVybGF5IHdoZW4gbm8gZGF0YSBpcyByZXR1cm5lZCAoYWZ0ZXIgc2VhcmNoaW5nKS5cclxuICAgKiBFbnN1cmUgdHJhbnNsYXRpb24gaGFzIGFuIGludGVycG9sYXRpb24gcGxhY2Vob2xkZXIgZm9yIFwic2VhcmNoVGV4dFwiLlxyXG4gICAqXHJcbiAgICogRGVmYXVsdHMgdG8gXCJTZWFyY2hhYmxlVGFibGVfRGVmYXVsdF9Ob01hdGNoZXNfU0NcIlxyXG4gICAqXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiAvLyA3IHJlcXVpcmVzIHNpbmdsZSBjdXJseSBicmFjZXNcclxuICAgKiBObyBpdGVtcyBmb3VuZCBtYXRjaGluZyA8c3Ryb25nPnt7c2VhcmNoVGV4dH19PC9zdHJvbmc+XHJcbiAgICovXHJcbiAgQElucHV0KCkgbm9TZWFyY2hSZXN1bHRzTWVzc2FnZTogc3RyaW5nID0gJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vTWF0Y2hlc19TQyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYXRlcyBob3N0aW5nIHBhZ2UgaXMgcmVhZHkgZm9yIHRoZSB0YWJsZSB0byBsb2FkIGRhdGEuXHJcbiAgICpcclxuICAgKiBOZXh0IGFuZCBDb21wbGV0ZSB0aGlzIG9ic2VydmFibGUgYWZ0ZXIgaG9zdGluZyBwYWdlIGhhcyBtYWRlIGFueSBwcmVsaW1pbmFyeVxyXG4gICAqIEFQSSAob3Igb3RoZXIgYXN5bmNocm9ub3VzKSBjYWxscyB0byBsb2FkIHByZXJlcXVpc2l0ZSBkYXRhIHVwb24gd2hpY2ggdGhlIGNvZGVcclxuICAgKiBpbiB0aGUgYGdldEl0ZW1zYCBmdW5jdGlvbiBkZXBlbmRzLiAgVXNlIGEgYFJlcGxheVN1YmplY3RgIHRvIGVuc3VyZSBldmVyeSBjb21wb25lbnRcclxuICAgKiB0aGF0IHVzZXMgdGhpcyBvYnNlcnZhYmxlIGdldHMgdGhlIE5leHQgYW5kIENvbXBsZXRlIG5vdGlmaWNhdGlvbnMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVhZHkhOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgdG8gZ2V0IGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIHRhYmxlLlxyXG4gICAqIElmIHBhZ2VhYmxlIGlzIHRydWUsIHRoZSBUYWJsZVNlYXJjaFJlc3VsdHMgbmVlZCB0byBpbmNsdWRlIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmcsIHdoaWNoIGlzIHRoZVxyXG4gICAqIGNvdW50IG9mIGl0ZW1zIGJlZm9yZSB5b3UndmUgYXBwbGllZCBhbnkgcGFnaW5hdGlvbiAoaS5lLiB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FtZSBiYWNrIGZyb20gdGhlIHNlYXJjaCkuXHJcbiAgICpcclxuICAgKiBNYWtlIHN1cmUgdG8gYmluZCB0aGUgc2NvcGUgaW4gdGhlIHRlbXBsYXRlXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBbZ2V0SXRlbXNdPVwieW91ckZ1bmN0aW9uLmJpbmQodGhpcylcIlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGdldEl0ZW1zITogKHNlYXJjaD86IHN0cmluZywgcGFnZUNoYW5nZUluZm8/OiBQYWdpbmdJbmZvKSA9PiBPYnNlcnZhYmxlPFRhYmxlU2VhcmNoUmVzdWx0cz47XHJcblxyXG4gIC8qKiBPYnNlcnZhYmxlIHRoYXQgd2lsbCBmb3JjZSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24gdG8gZ2V0IGNhbGxlZCBhZ2FpbiAqL1xyXG4gIEBJbnB1dCgpIHJlZnJlc2g/OiBPYnNlcnZhYmxlPFNlYXJjaGFibGVUYWJsZVJlZnJlc2hPcHRpb25zIHwgdW5kZWZpbmVkPjtcclxuXHJcbiAgLyoqIEFsbG93IHRoZSBob3N0IGNvbXBvbmVudCB0byBzdXBwbHkgYW4gb3ZlcmxheSB0byBjb250cm9sIHRoZSBwZW5kaW5nIHN0YXRlIG9mIHRoZSB0YWJsZSAqL1xyXG4gIEBJbnB1dCgpIHN0YXR1czogT3ZlcmxheSA9IG5ldyBPdmVybGF5KCdoYXNEYXRhJyk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHVuZGVybHlpbmcgdGFibGUncyBsYXlvdXQgdG8gZml4ZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGFibGVMYXlvdXRGaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRW1pdHMgaXRlbXMgcmV0dXJuZWQgYnkgdGhlIGdldEl0ZW1zIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHRvdGFsIGNvdW50ICovXHJcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVTZWFyY2hSZXN1bHRzPiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTZWFyY2hSZXN1bHRzPigpO1xyXG5cclxuICAvKiogT3B0aW9uYWwgdGFiIGluZGV4IGZvciB0aGUgc2VhcmNoYm94ICovXHJcbiAgQElucHV0KCkgc2VhcmNoYm94VGFiSW5kZXg/OiBudW1iZXI7XHJcblxyXG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBzaG93IGluIHRoZSB0YWJsZSAoZGVmYXVsdDogMTAwKSAqL1xyXG4gIEBJbnB1dCgpIG1heEl0ZW1Db3VudDogbnVtYmVyID0gMTAwO1xyXG5cclxuICAvKiogU2V0IHRvIHRydWUgdG8gaGlkZSBzZWFyY2ggYm94IChkb2VzIG5vdCBoaWRlIHRoZSBvdGhlciBzZWFyY2hhYmxlIHRhYmxlIGNvbnRyb2xzICovXHJcbiAgQElucHV0KCkgaGlkZVNlYXJjaENvbnRyb2w6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFNldCB0byB0cnVlIHRvIGhpZGUgdGhlIGVudGlyZSBoZWFkZXIgKi9cclxuICBASW5wdXQoKSBoaWRlSGVhZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBUeXBlIG9mIG9iamVjdCBpbiB0aGUgdGFibGUuIERpc3BsYXllZCBpbiBmb290ZXIgKGRlZmF1bHQ6ICdyZXN1bHRzJykqL1xyXG4gIEBJbnB1dCgpIG9iamVjdFR5cGU6IHN0cmluZyA9ICdyZXN1bHRzJztcclxuXHJcbiAgLyoqIFNldCB0byB0cnVlIHRvIGhpZGUgdGhlIHRhYmxlIGZvb3RlciAqL1xyXG4gIEBJbnB1dCgpIGhpZGVGb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIHBhZ2luZy4gSWYgcGFnaW5nIGlzIGVuYWJsZWQsIHBhZ2VTaXplIG11c3QgYmUgcHJvdmlkZWQuXHJcbiAgICogZ2V0SXRlbXMgd2lsbCBiZSBwYXNzZWQgYm90aCBhIHNlYXJjaCBhbmQgYSBQYWdpbmdJbmZvIG9iamVjdCB3aGVuIGNhbGxlZC4gSXQgbXVzdCBpbmNsdWRlIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmcgaW4gdGhlIFRhYmxlU2VhcmNoUmVzdWx0cyBvdXRwdXQuXHJcbiAgICogSGVyZSBpcyBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbjogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBnZXRJdGVtcyhzZWFyY2g/OiBzdHJpbmcsIHBhZ2VDaGFuZ2VJbmZvPzogUGFnaW5nSW5mbyk6IE9ic2VydmFibGU8VGFibGVTZWFyY2hSZXN1bHRzPiB7XHJcbiAgICAgIGxldCByZXN1bHRzOiBTaW1wbGVJdGVtW10gPSBbLi4udGhpcy5wYWdpbmF0ZWRUYWJsZUl0ZW1zXTtcclxuICAgICAgLy9hcHBseSBzZWFyY2hcclxuICAgICAgaWYoc2VhcmNoKSB7XHJcbiAgICAgICAgcmVzdWx0cyA9IHRoaXMucGFnaW5hdGVkVGFibGVJdGVtcy5maWx0ZXIoaSA9PiBpLmEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vZ2V0IGNvdW50IGJlZm9yZSBhcHBseWluZyBwYWdpbmdcclxuICAgICAgbGV0IGNvdW50QmVmb3JlUGFnaW5nID0gcmVzdWx0cy5sZW5ndGg7XHJcbiAgICAgIC8vYXBwbHkgcGFnaW5nXHJcbiAgICAgIGlmKHBhZ2VDaGFuZ2VJbmZvKSB7XHJcbiAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuc2xpY2UocGFnZUNoYW5nZUluZm8hLnNraXAsIHBhZ2VDaGFuZ2VJbmZvIS5za2lwICsgcGFnZUNoYW5nZUluZm8hLnBhZ2VTaXplKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb2YoeyBpdGVtczogcmVzdWx0cywgdG90YWxJdGVtczogcmVzdWx0cy5sZW5ndGgsIHRvdGFsSXRlbXNCZWZvcmVQYWdpbmc6IGNvdW50QmVmb3JlUGFnaW5nIH0pO1xyXG4gICAgfVxyXG4gICovXHJcbiAgQElucHV0KCkgcGFnZWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IHNpemUgb2YgYSBwYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICogTWF4aW11bSBudW1iZXIgb2YgcGFnZSB0YWJzIHRvIHNob3dcclxuICovXHJcbiAgQElucHV0KCkgbWF4VGFicz86IG51bWJlciA9IDEwO1xyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyB0aGUgc2VhcmNoYm94IHJlYWRvbmx5IGlmIHRydWUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2VhcmNoYm94UmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFBhc3NlZCB0byB0aGUgaW5uZXIgVGFibGVDb21wb25lbnQgdG8gZW5hYmxlIHJvdyBzZWxlY3Rpb24gKi9cclxuICBASW5wdXQoKSBzZWxlY3Rpb25Db250ZXh0PzogVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dDtcclxuXHJcbiAgLyoqIFBhc3NlZCB0byB0aGUgaW5uZXIgVGFibGVDb21wb25lbnQgdG8gZGlzcGxheSBhIHRvb2xiYXIgd2hlbiAxIG9yIG1vcmUgcm93cyBhcmUgc2VsZWN0ZWQuIFJlcXVpcmVzIGBbc2VsZWN0aW9uQ29udGV4dF1gIHRvIGJlIGRlZmluZWQuICovXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uVG9vbGJhclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICBcclxuICBAQ29udGVudENoaWxkcmVuKFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgcmVzaXphYmxlQ29sdW1ucyE6IFF1ZXJ5TGlzdDxSZXNpemFibGVDb2x1bW5Db21wb25lbnQ+O1xyXG5cclxuICAvKiogT3B0aW9uYWwgdGV4dCB0byBhZGQgdG8gdGhlIHJlc3VsdHMgY291bnQgaW4gdGhlIHRhYmxlIGZvb3Rlci4gVGhpcyB0ZXh0IHdpbGwgYmUgYWRkZWQgYWZ0ZXIgdGhlIGNvdW50IGFuZCBvYmplY3RUeXBlLiAqL1xyXG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxDb3VudFRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBQYWdpbmdJbmZvIGZvciB0aGUgY3VycmVudCBwYWdlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBwYWdlSW5mbz86IFBhZ2luZ0luZm87XHJcblxyXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNlYXJjaE1vZGVsICovXHJcbiAgcHVibGljIGdldCBzZWFyY2hNb2RlbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtTW9kZWwuY29udHJvbHMuc2VhcmNoTW9kZWwgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUZXh0IGRpc3BsYXllZCBpbiB0aGUgZm9vdGVyLlxyXG4gICAqIFNvbWV0aW1lcyBgbm9EYXRhTWVzc2FnZWAsIHNvbWV0aW1lcyBgbm9TZWFyY2hSZXN1bHRzTWVzc2FnZWBcclxuICAgKi9cclxuICBwdWJsaWMgdGFibGVDYXB0aW9uOiBzdHJpbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vRGF0YU1lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQycpO1xyXG5cclxuICAvKiogY291bnQgb2YgcmVzdWx0cyBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlICovXHJcbiAgcHVibGljIHJlc3VsdHNDb3VudDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBJdGVtcyByZXR1cm5lZCBieSB0aGUgZ2V0SXRlbXMgZnVuY3Rpb24sIGFsb25nIHdpdGggdG90YWwgY291bnQgKi9cclxuICBwdWJsaWMgc2VhcmNoUmVzdWx0czogVGFibGVTZWFyY2hSZXN1bHRzID0geyBpdGVtczogW10sIHRvdGFsSXRlbXM6IDAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgcGFzc2VkIGFuIGlucHV0IGZvciByZWZyZXNoLCB0cmlnZ2VycyByZWxvYWRpbmcgaXRlbXMuXHJcbiAgICogT3RoZXJ3aXNlLCBjb21wbGV0ZXMgaW1tZWRpYXRlbHkgKHdpbGwgbmV2ZXIgdHJpZ2dlciByZWxvYWQpLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVmcmVzaFRyaWdnZXI6IE9ic2VydmFibGU8U2VhcmNoYWJsZVRhYmxlRm9ybU1vZGVsIHwgdW5kZWZpbmVkPiA9IEVNUFRZO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBwYWdlQ2hhbmdlZDogU3ViamVjdDxTZWFyY2hhYmxlVGFibGVGb3JtTW9kZWw+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLyoqIFRyaWdnZXJzIHRoZSBpbml0aWFsIGxvYWQgb2YgdGhlIHRhYmxlICovXHJcbiAgcHJpdmF0ZSBpbml0VGFibGUgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlcnJvclNlcnZpY2U6IEVycm9yU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm93Q291bnRQaXBlOiBSb3dDb3VudFBpcGVcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsICdMb2FkaW5nJyk7XHJcbiAgICB0aGlzLnNldFVwUmVmcmVzaFRyaWdnZXIoKTtcclxuXHJcbiAgICAvLyBXYXRjaCBmb3Igc2VhcmNoYm94L290aGVyIGNvbnRyb2wgY2hhbmdlcyBvciByZWZyZXNoIHJlcXVlc3RzXHJcbiAgICBjb25zdCBzZWFyY2hPclJlZnJlc2ggPSBtZXJnZShcclxuICAgICAgdGhpcy5mb3JtTW9kZWwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgc2tpcFVudGlsKHRoaXMucmVhZHkpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApXHJcbiAgICAgICksXHJcbiAgICAgIHRoaXMucmVmcmVzaFRyaWdnZXIsXHJcbiAgICAgIHRoaXMuaW5pdFRhYmxlXHJcbiAgICApLnBpcGUodGFwKCgpPT4ge1xyXG4gICAgICAvL2EgY2hhbmdlIHRvIGFueSBmb3JtIGNvbnRyb2wgb3IgYSByZWZyZXNoIHNob3VsZCByZXNldCB0aGUgcGFnZUluZm8gdG8gdGhlIGZpcnN0IHBhZ2UgaWYgdGhlIHRhYmxlIGlzIHBhZ2VhYmxlLlxyXG4gICAgICAvLyhpZiB3ZSBkaWRudCByZXNldCB0aGUgcGFnZUluZm8sIHdlJ2QgaGF2ZSB0byBjYWxsIGdldEl0ZW1zIHdpdGggdGhlIHByZXZpb3VzIHBhZ2VJbmZvLCB3aGljaCBtYXkgbm90IGJlIHZhbGlkIGZvciB0aGUgbmV3IHJlc3VsdHMpXHJcbiAgICAgIGlmKHRoaXMucGFnZWFibGUpIHtcclxuICAgICAgICB0aGlzLnBhZ2VJbmZvID0gVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LmdldFBhZ2luZ0luZm8oMSwgdGhpcy5wYWdlU2l6ZSEpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgdXBkYXRlUmVzdWx0cyA9IG1lcmdlKFxyXG4gICAgICBzZWFyY2hPclJlZnJlc2gsXHJcbiAgICAgIHRoaXMucGFnZUNoYW5nZWRcclxuICAgIClcclxuXHJcbiAgICAvLyBDYWxsIGdldEl0ZW1zIGFuZCB3YXRjaCBmb3IgZXJyb3JzXHJcbiAgICBjb25zdCBnZXREYXRhID0gdXBkYXRlUmVzdWx0cy5waXBlKFxyXG4gICAgICAvLyBQbHVjayB0aGUgc2VhcmNoTW9kZWwgdmFsdWUgb3V0IG9mIHRoZSBmb3JtTW9kZWxcclxuICAgICAgcGx1Y2soJ3NlYXJjaE1vZGVsJyksXHJcblxyXG4gICAgICAvLyBFbnN1cmUgc2VhcmNoIHN0cmluZyBpcyBkZWZpbmVkXHJcbiAgICAgIC8vIFRyaW0gYW5kIGxvd2VyY2FzZSBpdCB0byBhaWQgY2FzZS1pbnNlbnNpdGl2ZSBzZWFyY2hpbmdcclxuICAgICAgbWFwKChzZWFyY2hTdHJpbmc/OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBsZXQgc2VhcmNoID0gc2VhcmNoU3RyaW5nIHx8ICcnO1xyXG4gICAgICAgIHJldHVybiBzZWFyY2gudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH0pLFxyXG5cclxuICAgICAgLy8gU2hvdyBzdGF0dXMgb3ZlcmxheVxyXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgJ0xvYWRpbmcnKSksXHJcblxyXG4gICAgICAvLyBDYWxsIHBhc3NlZCBmdW5jdGlvblxyXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFN0cmluZzogc3RyaW5nKSA9PiBcclxuICAgICAgICAvL2lmIHRoZSB0YWJsZSBpcyBwYWdlYWJsZSwgcGFnZUluZm8gd2lsbCBiZSBkZWZpbmVkLlxyXG4gICAgICAgIHRoaXMuZ2V0SXRlbXMoc2VhcmNoU3RyaW5nLCB0aGlzLnBhZ2VJbmZvKVxyXG4gICAgICApLFxyXG5cclxuICAgICAgLy8gSWYgcGFzc2VkIGZ1bmN0aW9uIGZhaWxzLCBzaG93IGVycm9yIHN0YXR1c1xyXG4gICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygnZXJyb3InLCB0aGlzLmVycm9yU2VydmljZS5wYXJzZUFwaUVycm9yKGVycikpO1xyXG4gICAgICAgIC8vIHJldHVybiB0aGUgY2F1Z2h0IG9ic2VydmFibGUgc28gdGhlIHN1YnNjcmlwdGlvbiBkb2Vzbid0IGNvbXBsZXRlXHJcbiAgICAgICAgcmV0dXJuIGNhdWdodDtcclxuICAgICAgfSksXHJcblxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpLFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBIYW5kbGUgcmV0dXJuZWQgZGF0YSBhbmQgbm90aWZ5IHBhcmVudFxyXG4gICAgZ2V0RGF0YS5zdWJzY3JpYmUoKHJlc3VsdHM6IFRhYmxlU2VhcmNoUmVzdWx0cykgPT4ge1xyXG4gICAgICAvLyBMaW1pdGluZyBudW1iZXIgb2YgcmVzdWx0cyB0byBzaG93IGlmIG5vdCBwYWdlYWJsZSAoaWYgcGFnZWFibGUgdGhlIG1heCBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHRhYmxlXHJcbiAgICAgIC8vIGNhbiBiZSBtb2RpZmllZCBieSBpbmNyZWFzaW5nL2RlY3JlYXNpbmcgdGhlIHBhZ2VTaXplLilcclxuICAgICAgaWYoIXRoaXMucGFnZWFibGUpIHtcclxuICAgICAgICByZXN1bHRzLml0ZW1zID0gcmVzdWx0cy5pdGVtcy5zbGljZSgwLCB0aGlzLm1heEl0ZW1Db3VudCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE5lZWQgdG8ga25vdyB0aGlzIChhbG9uZyB3aXRoIGlmIHRoZXJlJ3MgYSB2YWx1ZSBpbiB0aGUgZm9ybU1vZGVsKSB0byBkZXRlcm1pbmUgd2hhdCB0byBzaG93IGluIHRoZSBmb290ZXJcclxuICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzID0gcmVzdWx0cztcclxuICAgIFxyXG4gICAgICB0aGlzLnRhYmxlQ2FwdGlvbiA9IHRoaXMuZ2V0Q2FwdGlvbihyZXN1bHRzKTtcclxuICAgICAgdGhpcy5yZXN1bHRzQ291bnQgPSB0aGlzLnBhZ2VhYmxlID8gdGhpcy5yb3dDb3VudFBpcGUudHJhbnNmb3JtKHJlc3VsdHMsIHRoaXMub2JqZWN0VHlwZSwgdW5kZWZpbmVkLCB0aGlzLnBhZ2VJbmZvKTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dDb3VudFBpcGUudHJhbnNmb3JtKHJlc3VsdHMsIHRoaXMub2JqZWN0VHlwZSwgdGhpcy5tYXhJdGVtQ291bnQpO1xyXG5cclxuICAgICAgLy8gRGlzYWJsZSBzZWFyY2hib3ggd2hlbiBpbiBuby1kYXRhIHN0YXRlXHJcbiAgICAgIGlmICghcmVzdWx0cy5pdGVtcy5sZW5ndGggJiYgIXRoaXMuc2VhcmNoTW9kZWwudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaE1vZGVsLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoTW9kZWwuZGlzYWJsZWQpIHtcclxuICAgICAgICAvLyByZS1lbmFibGUgaWYgaXQgd2FzIGRpc2FibGVkLCBidXQgbm93IGhhcyBpdGVtc1xyXG4gICAgICAgIHRoaXMuc2VhcmNoTW9kZWwuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdoYXNEYXRhJyk7XHJcbiAgICAgIC8vIFNlbmQgdGhlIHJlc3VsdHMgdG8gdGhlIHBhcmVudCBjb21wb25lbnRcclxuICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KHJlc3VsdHMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gV2hlbiAncmVhZHknIGlzIGNvbXBsZXRlZCBieSB0aGUgaG9zdCwgaW5pdGlhbGl6ZSB0aGUgdGFibGUgd2l0aCB0aGUgY3VycmVudCBmb3JtIG1vZGVsIHZhbHVlc1xyXG4gICAgdGhpcy5yZWFkeS5zdWJzY3JpYmUoe1xyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdFRhYmxlLm5leHQodGhpcy5mb3JtTW9kZWwudmFsdWUpO1xyXG4gICAgICAgIHRoaXMuaW5pdFRhYmxlLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFBhc3MgYWxvbmcgc29ydCB0byBwYXJlbnQgY29tcG9uZW50ICovXHJcbiAgb25Tb3J0Q2hhbmdlKHNvcnQ6IFRhYmxlU29ydCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoc29ydCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGVuIGEgcGFnZSBjaGFuZ2VzLCBzdG9yZSB0aGUgbmV3IHBhZ2luZ0luZm8gYW5kIGVtaXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZvcm0gdG8gdHJpZ2dlciBnZXREYXRhLlxyXG4gICAqL1xyXG4gIG9uUGFnZUNoYW5nZShwYWdpbmdJbmZvOiBQYWdpbmdJbmZvKSB7XHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCAnTG9hZGluZycpO1xyXG4gICAgdGhpcy5wYWdlSW5mbyA9IHBhZ2luZ0luZm87XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VFbWl0dGVyLmVtaXQocGFnaW5nSW5mbyk7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLm5leHQodGhpcy5mb3JtTW9kZWwudmFsdWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFdpcmUgdXAgYSBoYW5kbGVyIHRvIHRoZSBgcmVmcmVzaGAgb2JzZXJ2YWJsZSBzbyB0aGF0IHdoZW5cclxuICAgKiB0aGUgaG9zdCBwYWdlIGNvbnRleHQgY2hhbmdlcyBpdCBjYW4gZm9yY2UgdGhlIHRhYmxlIHRvIHVwZGF0ZSBhcyB3ZWxsLlxyXG4gICAqXHJcbiAgICogSWYgdGhlIGByZWZyZXNoYCBvYnNlcnZhYmxlIHBhc3NlcyBvcHRpb25zIGFuZCB0aGUgYGNsZWFyU2VhcmNoYCBwcm9wZXJ0eVxyXG4gICAqIGlzIHNldCB0byB0cnVlLCByZXNldCB0aGUgc2VhcmNoTW9kZWwgYW5kIHBhc3MgYW4gZW1wdHkgc3RyaW5nLlxyXG4gICAqXHJcbiAgICogSWYgYHJlZnJlc2hgIG9ic2VydmFibGUgZG9lcyBub3QgcGFzcyBvcHRpb25zIG9yIHRoZSBgY2xlYXJTZWFyY2hgIHByb3BlcnR5XHJcbiAgICogaXMgc2V0IHRvIGZhbHNlLCBwYXNzIGFsb25nIHRoZSBjdXJyZW50IHNlYXJjaE1vZGVsIFZhbHVlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0VXBSZWZyZXNoVHJpZ2dlcigpIHtcclxuICAgIGlmICh0aGlzLnJlZnJlc2gpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoVHJpZ2dlciA9IHRoaXMucmVmcmVzaC5waXBlKFxyXG4gICAgICAgIG1hcChvcHRzID0+IHtcclxuICAgICAgICAgIGlmIChvcHRzICYmIG9wdHMuY2xlYXJTZWFyY2gpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hNb2RlbC5yZXNldCgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmZvcm1Nb2RlbCwgc2VhcmNoTW9kZWw6ICcnIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtTW9kZWwudmFsdWU7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEdldCB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGZvb3Rlci4gKi9cclxuICBwcml2YXRlIGdldENhcHRpb24ocmVzdWx0czogVGFibGVTZWFyY2hSZXN1bHRzKTogc3RyaW5nIHtcclxuICAgIGlmIChyZXN1bHRzLml0ZW1zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VhcmNoTW9kZWwudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMubm9TZWFyY2hSZXN1bHRzTWVzc2FnZSB8fCAnU2VhcmNoYWJsZVRhYmxlX0RlZmF1bHRfTm9NYXRjaGVzX1NDJywgeyBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaE1vZGVsLnZhbHVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm5vRGF0YU1lc3NhZ2UgfHwgJ1NlYXJjaGFibGVUYWJsZV9EZWZhdWx0X05vRGF0YV9TQycpO1xyXG4gIH1cclxuXHJcbn0iXX0=
|
|
@@ -11,7 +11,7 @@ export class TablePaginationComponent {
|
|
|
11
11
|
/**
|
|
12
12
|
* Maximum number of page tabs to show
|
|
13
13
|
*/
|
|
14
|
-
this.
|
|
14
|
+
this.maxTabs = 10;
|
|
15
15
|
/**
|
|
16
16
|
* Emits when the page changes.
|
|
17
17
|
*
|
|
@@ -106,15 +106,15 @@ export class TablePaginationComponent {
|
|
|
106
106
|
//keep building menu items of the form 1-10, 11-20, 21-30, etc until
|
|
107
107
|
//end >= lastPage, which means we've found the range that contains the last page.
|
|
108
108
|
let start = 1;
|
|
109
|
-
let
|
|
110
|
-
let end =
|
|
109
|
+
let maxTabs = this.maxTabs || 10;
|
|
110
|
+
let end = maxTabs;
|
|
111
111
|
while (end < lastPage) {
|
|
112
112
|
this.dropdownItems.push({
|
|
113
113
|
label: `${start}-${end}`,
|
|
114
114
|
value: { firstPage: start, lastPage: end }
|
|
115
115
|
});
|
|
116
|
-
start = start +
|
|
117
|
-
end = end +
|
|
116
|
+
start = start + maxTabs;
|
|
117
|
+
end = end + maxTabs;
|
|
118
118
|
}
|
|
119
119
|
//add the menu item that contains the last page.
|
|
120
120
|
this.dropdownItems.push({
|
|
@@ -140,7 +140,7 @@ TablePaginationComponent.propDecorators = {
|
|
|
140
140
|
totalItems: [{ type: Input }],
|
|
141
141
|
pageSize: [{ type: Input }],
|
|
142
142
|
pageNumber: [{ type: Input }],
|
|
143
|
-
|
|
143
|
+
maxTabs: [{ type: Input }],
|
|
144
144
|
pageChanged: [{ type: Output }]
|
|
145
145
|
};
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUc5RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUF1Qi9ELE1BQU0sT0FBTyx3QkFBd0I7SUF1RG5DLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBeENsQzs7O1dBR0c7UUFDTSxlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBRWhDOztXQUVHO1FBQ00sYUFBUSxHQUFZLEVBQUUsQ0FBQztRQUVoQzs7Ozs7Ozs7Ozs7Ozs7OztXQWdCRztRQUNPLGdCQUFXLEdBQTZCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckU7O1dBRUc7UUFDSSxrQkFBYSxHQUEwQixFQUFFLENBQUM7UUFFakQ7O1dBRUc7UUFDSSxnQkFBVyxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7SUFFUixDQUFDO0lBR3ZDLFdBQVc7UUFDVCxJQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QiwyRUFBMkU7UUFDM0UsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakQsT0FBTyxJQUFJLENB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O2lCQTRCeEQsS0FBSzt5QkFNTCxLQUFLO3VCQUtMLEtBQUs7eUJBTUwsS0FBSzt1QkFLTCxLQUFLOzBCQW1CTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL21lbnUvbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtaXRlbSc7XHJcbmltcG9ydCB7IE5hdkdyb3VwIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtZ3JvdXAnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmdJbmZvIHtcclxuICAvKipOdW1iZXIgb2YgaXRlbXMgdG8gc2tpcCB0byBnZXQgdG8gdGhpcyBwYWdlKi9cclxuICBza2lwOiBudW1iZXIsXHJcbiAgLyoqTnVtYmVyIG9mIGl0ZW1zIGluIHRoaXMgcGFnZSovXHJcbiAgcGFnZVNpemU6IG51bWJlcixcclxuICAvKipUaGUgbnVtYmVyIG9mIHRoZSBwYWdlKi9cclxuICBwYWdlTnVtYmVyOiBudW1iZXJcclxufVxyXG5cclxuaW50ZXJmYWNlIFBhZ2VSYW5nZSB7XHJcbiAgZmlyc3RQYWdlOiBudW1iZXIsXHJcbiAgbGFzdFBhZ2U6IG51bWJlclxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXRhYmxlLXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2QtZmxleCBweC0yJ1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUb3RhbCBudW1iZXIgb2Ygcm93cyB0aGF0IHdlIG5lZWQgdG8gcGFnZSB0aHJvdWdoLlxyXG4gICAqIGkuZS4gdGhlIHN1bSBvZiBhbGwgcm93cyBvbiBhbGwgcGFnZXMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdG90YWxJdGVtcyE6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IHNpemUgb2YgYSBwYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplITogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBOdW1iZXIgb2YgdGhlIGN1cnJlbnQgcGFnZS5cclxuICAgKiBJbml0aWFsIHZhbHVlIGlzIDEsIGNhbiBiZSBvdmVycmlkZGVuIHRvIGNoYW5nZSB0aGUgc3RhcnRpbmcgcGFnZSBudW1iZXIuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZU51bWJlcjogbnVtYmVyID0gMTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4aW11bSBudW1iZXIgb2YgcGFnZSB0YWJzIHRvIHNob3dcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXhQYWdlcz86IG51bWJlciA9IDEwO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB3aGVuIHRoZSBwYWdlIGNoYW5nZXMuXHJcbiAgICogXHJcbiAgICogQmluZCB0byB0aGUgZXZlbnQgaW4gYSB0ZW1wbGF0ZSB1c2luZyBhIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGUgXCJza2lwXCIgYW5kIFwicGFnZVNpemVcIlxyXG4gICAqIHByb3BlcnRpZXMgdG8gc2xpY2UgdGhlIG5ldyBwYWdlIGZyb20geW91ciBkYXRhIHNldC5cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIC8vLmh0bWxcclxuICAgKiAocGFnZUNoYW5nZWQpPVwib25QYWdlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgKiAvLy50c1xyXG4gICAqIHB1YmxpYyBvblBhZ2VDaGFuZ2VkKGV2ZW50OiBQYWdpbmdJbmZvKSB7XHJcbiAgICogIHRoaXMuY3VycmVudFBhZ2VJdGVtcyA9IHRoaXMucGFnaW5hdGVkVGFibGVJdGVtcy5zbGljZShldmVudC5za2lwLCBldmVudC5za2lwICsgZXZlbnQucGFnZVNpemUpO1xyXG4gICAqIH1cclxuICAgKiAvL1NpbmNlIHBhZ2VDaGFuZ2VkIGRvZXNuJ3QgZW1pdCBmb3IgdGhlIGluaXRpYWwgcGFnZSwgb25QYWdlQ2hhbmdlZCBzaG91bGQgYmUgbWFudWFsbHkgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBcclxuICAgKiAvL3VzaW5nIGdldFBhZ2luZ0luZm86XHJcbiAgICogdGhpcy5vblBhZ2VDaGFuZ2VkKFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKHRoaXMuc3RhcnRpbmdQYWdlTnVtYmVyLCB0aGlzLnBhZ2VTaXplKSk7XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8UGFnaW5nSW5mbz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbCBwb3NzaWJsZSBpdGVtcyBpbiB0aGUgZHJvcGRvd24gbWVudS5cclxuICAgKi9cclxuICBwdWJsaWMgZHJvcGRvd25JdGVtczogTWVudUl0ZW08UGFnZVJhbmdlPltdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1cnJlbnQgdGFicyBiZWluZyBkaXNwbGF5ZWQuXHJcbiAgICovXHJcbiAgcHVibGljIGN1cnJlbnRUYWJzOiBOYXZHcm91cCA9IG5ldyBOYXZHcm91cCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy50b3RhbEl0ZW1zID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25JdGVtcyA9IFtdO1xyXG4gICAgICB0aGlzLmN1cnJlbnRUYWJzID0gbmV3IE5hdkdyb3VwKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RHJvcGRvd25JdGVtcygpO1xyXG5cclxuICAgIC8vRmluZCB0aGUgbWVudSBpdGVtIHRoYXQgdGhlIHBhZ2UgY29ycmVzcG9uZGluZyB0byB0aGlzLnBhZ2VOdW1iZXIgbGllcyBpblxyXG4gICAgbGV0IGZpcnN0TWVudUl0ZW0gPSB0aGlzLmRyb3Bkb3duSXRlbXMuZmluZChpdGVtID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW0udmFsdWUhLmZpcnN0UGFnZSA8PSB0aGlzLnBhZ2VOdW1iZXIgJiYgaXRlbS52YWx1ZSEubGFzdFBhZ2UgPj0gdGhpcy5wYWdlTnVtYmVyO1xyXG4gICAgfSk7XHJcbiAgICBpZighZmlyc3RNZW51SXRlbSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBQYWdlICR7dGhpcy5wYWdlTnVtYmVyfSBkb2VzIG5vdCBleGlzdC4gU2V0dGluZyB0aGUgc3RhcnRpbmcgcGFnZSBudW1iZXIgdG8gMS5gKTtcclxuICAgICAgZmlyc3RNZW51SXRlbSA9IHRoaXMuZHJvcGRvd25JdGVtc1swXTtcclxuICAgICAgdGhpcy5wYWdlTnVtYmVyID0gMTtcclxuICAgIH1cclxuICAgIC8vU2V0IHRoZSB0YWJzIHRvIHRob3NlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpcnN0IG1lbnUgaXRlbS5cclxuICAgIC8vTm90ZSB0aGF0IHdlIGRvbnQgZW1pdCBhIHBhZ2VDaGFuZ2VkIGV2ZW50IGhlcmUgYmVjYXVzZSB0aGUgY29uc3VtZXIgYWxyZWFkeSBrbm93cyB3aGF0IHRoZSBmaXJzdCBwYWdlIGlzLlxyXG4gICAgdGhpcy5zZXRUYWJzKGZpcnN0TWVudUl0ZW0sIHRoaXMucGFnZU51bWJlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHaXZlbiB0aGUgbnVtYmVyIG9mIGEgcGFnZSBhbmQgdGhlIHBhZ2VTaXplLCByZXR1cm4gdGhlIFBhZ2luZ0luZm8gb2JqZWN0IGZvciB0aGF0IHBhZ2UuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBnZXRQYWdpbmdJbmZvKHBhZ2VOdW1iZXI6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHsgc2tpcDogKHBhZ2VOdW1iZXIgLSAxKSpwYWdlU2l6ZSwgcGFnZVNpemU6IHBhZ2VTaXplLCBwYWdlTnVtYmVyOiBwYWdlTnVtYmVyIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JdGVtU2VsZWN0ZWQobWVudUl0ZW06IE1lbnVJdGVtPFBhZ2VSYW5nZT4pIHsgIFxyXG4gICAgdGhpcy5zZXRUYWJzKG1lbnVJdGVtKTtcclxuICAgIHRoaXMub25QYWdlQ2hhbmdlKHBhcnNlSW50KHRoaXMuY3VycmVudFRhYnMuc2VsZWN0ZWQhLmxhYmVsISkpO1xyXG4gICAgLy9mb2N1cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHRhYiB0byBoZWxwIGtleWJvYXJkIG5hdmlnYXRpb25cclxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGFiLmFjdGl2ZScpLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSB0YWIgZm9yIGVhY2ggaXRlbSBpbiB0aGUgcmFuZ2UgcmVwcmVzZW50ZWQgaW4gdGhlIE1lbnVJdGVtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRUYWJzKG1lbnVJdGVtOiBNZW51SXRlbTxQYWdlUmFuZ2U+LCBwYWdlTnVtYmVyPzogbnVtYmVyKSB7XHJcbiAgICBsZXQgdGFiSXRlbXM6IE5hdkl0ZW1bXSA9IFtdO1xyXG4gICAgZm9yKGxldCBpID0gbWVudUl0ZW0udmFsdWUhLmZpcnN0UGFnZTsgaSA8PSBtZW51SXRlbS52YWx1ZSEubGFzdFBhZ2U7IGkrKykge1xyXG4gICAgICB0YWJJdGVtcy5wdXNoKHtcclxuICAgICAgICBsYWJlbDogYCR7aX1gLFxyXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHt0aGlzLm9uUGFnZUNoYW5nZShpKX1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvL2lmIGEgcGFnZU51bWJlciBpcyBwcm92aWRlZCwgc2VsZWN0IHRoZSB0YWIgd2l0aCB0aGF0IHBhZ2UgbnVtYmVyLlxyXG4gICAgLy9vdGhlcndpc2UsIHNlbGVjdCB0aGUgZmlyc3QgdGFiLlxyXG4gICAgbGV0IHNlbGVjdGVkVGFiOiBOYXZJdGVtID0gcGFnZU51bWJlciA/IHRhYkl0ZW1zLmZpbmQodGFiID0+IHtyZXR1cm4gcGFyc2VJbnQodGFiLmxhYmVsISkgPT09IHBhZ2VOdW1iZXJ9KSFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0YWJJdGVtc1swXTtcclxuICAgIHRoaXMuY3VycmVudFRhYnMgPSBuZXcgTmF2R3JvdXAodGFiSXRlbXMsIHNlbGVjdGVkVGFiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25QYWdlQ2hhbmdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xyXG4gICAgdGhpcy5wYWdlTnVtYmVyID0gcGFnZU51bWJlcjtcclxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChUYWJsZVBhZ2luYXRpb25Db21wb25lbnQuZ2V0UGFnaW5nSW5mbyhwYWdlTnVtYmVyLCB0aGlzLnBhZ2VTaXplKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhbGwgdGhlIGl0ZW1zIGZvciB0aGUgZHJvcGRvd24gbWVudS5cclxuICAgKiBBIGRyb3Bkb3duIGl0ZW0gcmVwcmVzZW50cyBhIHBhZ2UgcmFuZ2UgKGUuZy4gMS0xMCwgMTEtMjAsIG9yIDIxLTI1KS5cclxuICAgKiBBIHNpbmdsZSBkcm9wZG93biBpdGVtIGNhbiByZXByZXNlbnQgYSByYW5nZSBvZiB1cCB0byAxMCBwYWdlcyAodGhlIGxhc3QgaXRlbSBjb3VsZCBoYXZlIGxlc3MgdGhhbiAxMCkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXREcm9wZG93bkl0ZW1zKCkge1xyXG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zID0gW107XHJcbiAgICAvL2ZpbmQgdGhlIGxhc3QgcGFnZVxyXG4gICAgbGV0IGRpdmlkZW5kID0gTWF0aC5mbG9vcih0aGlzLnRvdGFsSXRlbXMgLyB0aGlzLnBhZ2VTaXplKTtcclxuICAgIGxldCByZW1haW5kZXIgPSB0aGlzLnRvdGFsSXRlbXMgJSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgY29uc3QgbGFzdFBhZ2UgPSAocmVtYWluZGVyID09PSAwKSA/IGRpdmlkZW5kIDogZGl2aWRlbmQgKyAxO1xyXG5cclxuICAgIC8va2VlcCBidWlsZGluZyBtZW51IGl0ZW1zIG9mIHRoZSBmb3JtIDEtMTAsIDExLTIwLCAyMS0zMCwgZXRjIHVudGlsICBcclxuICAgIC8vZW5kID49IGxhc3RQYWdlLCB3aGljaCBtZWFucyB3ZSd2ZSBmb3VuZCB0aGUgcmFuZ2UgdGhhdCBjb250YWlucyB0aGUgbGFzdCBwYWdlLlxyXG4gICAgbGV0IHN0YXJ0ID0gMTtcclxuXHJcbiAgICBsZXQgbWF4UGFnZXMgPSB0aGlzLm1heFBhZ2VzIHx8IDEwO1xyXG4gICAgbGV0IGVuZCA9IG1heFBhZ2VzO1xyXG5cclxuICAgIHdoaWxlKGVuZCA8IGxhc3RQYWdlKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25JdGVtcy5wdXNoKHtcclxuICAgICAgICBsYWJlbDogYCR7c3RhcnR9LSR7ZW5kfWAsXHJcbiAgICAgICAgdmFsdWU6IHtmaXJzdFBhZ2U6IHN0YXJ0LCBsYXN0UGFnZTogZW5kfVxyXG4gICAgICB9KTtcclxuICAgICAgc3RhcnQgPSBzdGFydCArIG1heFBhZ2VzO1xyXG4gICAgICBlbmQgPSBlbmQgKyBtYXhQYWdlcztcclxuICAgIH1cclxuICAgIC8vYWRkIHRoZSBtZW51IGl0ZW0gdGhhdCBjb250YWlucyB0aGUgbGFzdCBwYWdlLlxyXG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zLnB1c2goe1xyXG4gICAgICBsYWJlbDogKHN0YXJ0ID09PSBsYXN0UGFnZSkgPyBgJHtzdGFydH1gOiBgJHtzdGFydH0tJHtsYXN0UGFnZX1gLFxyXG4gICAgICB2YWx1ZToge2ZpcnN0UGFnZTogc3RhcnQsIGxhc3RQYWdlOiBsYXN0UGFnZX1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn0iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUc5RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUF1Qi9ELE1BQU0sT0FBTyx3QkFBd0I7SUF1RG5DLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBeENsQzs7O1dBR0c7UUFDTSxlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBRWhDOztXQUVHO1FBQ00sWUFBTyxHQUFZLEVBQUUsQ0FBQztRQUUvQjs7Ozs7Ozs7Ozs7Ozs7OztXQWdCRztRQUNPLGdCQUFXLEdBQTZCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckU7O1dBRUc7UUFDSSxrQkFBYSxHQUEwQixFQUFFLENBQUM7UUFFakQ7O1dBRUc7UUFDSSxnQkFBVyxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7SUFFUixDQUFDO0lBR3ZDLFdBQVc7UUFDVCxJQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QiwyRUFBMkU7UUFDM0UsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakQsT0FBTyxJQUFJLENBQUMsS0FBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDN0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFHLENBQUMsYUFBYSxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsVUFBVSx5REFBeUQsQ0FBQyxDQUFDO1lBQ2hHLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsNkRBQTZEO1FBQzdELDRHQUE0RztRQUM1RyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFFTSxjQUFjLENBQUMsUUFBNkI7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVMsQ0FBQyxLQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9ELDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssT0FBTyxDQUFDLFFBQTZCLEVBQUUsVUFBbUI7UUFDaEUsSUFBSSxRQUFRLEdBQWMsRUFBRSxDQUFDO1FBQzdCLEtBQUksSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pFLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1osS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNiLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQzthQUN0QyxDQUFDLENBQUM7U0FDSjtRQUNELG9FQUFvRTtRQUNwRSxrQ0FBa0M7UUFDbEMsSUFBSSxXQUFXLEdBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQU0sQ0FBQyxLQUFLLFVBQVUsQ0FBQSxDQUFBLENBQUMsQ0FBRTtZQUNyRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxZQUFZLENBQUMsVUFBa0I7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixvQkFBb0I7UUFDcEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUU3RCxzRUFBc0U7UUFDdEUsaUZBQWlGO1FBQ2pGLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVkLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUVsQixPQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssRUFBRSxHQUFHLEtBQUssSUFBSSxHQUFHLEVBQUU7Z0JBQ3hCLEtBQUssRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBQzthQUN6QyxDQUFDLENBQUM7WUFDSCxLQUFLLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUN4QixHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztTQUNyQjtRQUNELGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN0QixLQUFLLEVBQUUsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLFFBQVEsRUFBRTtZQUNoRSxLQUFLLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUM7U0FDOUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBNUpGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixpb0JBQWdEO2dCQUNoRCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLGFBQWE7aUJBQ3JCO2FBQ0Y7OztZQXpCZ0QsVUFBVTs7O2lCQTRCeEQsS0FBSzt5QkFNTCxLQUFLO3VCQUtMLEtBQUs7eUJBTUwsS0FBSztzQkFLTCxLQUFLOzBCQW1CTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL21lbnUvbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtaXRlbSc7XHJcbmltcG9ydCB7IE5hdkdyb3VwIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtZ3JvdXAnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmdJbmZvIHtcclxuICAvKipOdW1iZXIgb2YgaXRlbXMgdG8gc2tpcCB0byBnZXQgdG8gdGhpcyBwYWdlKi9cclxuICBza2lwOiBudW1iZXIsXHJcbiAgLyoqTnVtYmVyIG9mIGl0ZW1zIGluIHRoaXMgcGFnZSovXHJcbiAgcGFnZVNpemU6IG51bWJlcixcclxuICAvKipUaGUgbnVtYmVyIG9mIHRoZSBwYWdlKi9cclxuICBwYWdlTnVtYmVyOiBudW1iZXJcclxufVxyXG5cclxuaW50ZXJmYWNlIFBhZ2VSYW5nZSB7XHJcbiAgZmlyc3RQYWdlOiBudW1iZXIsXHJcbiAgbGFzdFBhZ2U6IG51bWJlclxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXRhYmxlLXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2QtZmxleCBweC0yJ1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUb3RhbCBudW1iZXIgb2Ygcm93cyB0aGF0IHdlIG5lZWQgdG8gcGFnZSB0aHJvdWdoLlxyXG4gICAqIGkuZS4gdGhlIHN1bSBvZiBhbGwgcm93cyBvbiBhbGwgcGFnZXMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdG90YWxJdGVtcyE6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IHNpemUgb2YgYSBwYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplITogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBOdW1iZXIgb2YgdGhlIGN1cnJlbnQgcGFnZS5cclxuICAgKiBJbml0aWFsIHZhbHVlIGlzIDEsIGNhbiBiZSBvdmVycmlkZGVuIHRvIGNoYW5nZSB0aGUgc3RhcnRpbmcgcGFnZSBudW1iZXIuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZU51bWJlcjogbnVtYmVyID0gMTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4aW11bSBudW1iZXIgb2YgcGFnZSB0YWJzIHRvIHNob3dcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXhUYWJzPzogbnVtYmVyID0gMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHdoZW4gdGhlIHBhZ2UgY2hhbmdlcy5cclxuICAgKiBcclxuICAgKiBCaW5kIHRvIHRoZSBldmVudCBpbiBhIHRlbXBsYXRlIHVzaW5nIGEgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZSBcInNraXBcIiBhbmQgXCJwYWdlU2l6ZVwiXHJcbiAgICogcHJvcGVydGllcyB0byBzbGljZSB0aGUgbmV3IHBhZ2UgZnJvbSB5b3VyIGRhdGEgc2V0LlxyXG4gICAqIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogLy8uaHRtbFxyXG4gICAqIChwYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2VkKCRldmVudClcIlxyXG4gICAqIC8vLnRzXHJcbiAgICogcHVibGljIG9uUGFnZUNoYW5nZWQoZXZlbnQ6IFBhZ2luZ0luZm8pIHtcclxuICAgKiAgdGhpcy5jdXJyZW50UGFnZUl0ZW1zID0gdGhpcy5wYWdpbmF0ZWRUYWJsZUl0ZW1zLnNsaWNlKGV2ZW50LnNraXAsIGV2ZW50LnNraXAgKyBldmVudC5wYWdlU2l6ZSk7XHJcbiAgICogfVxyXG4gICAqIC8vU2luY2UgcGFnZUNoYW5nZWQgZG9lc24ndCBlbWl0IGZvciB0aGUgaW5pdGlhbCBwYWdlLCBvblBhZ2VDaGFuZ2VkIHNob3VsZCBiZSBtYW51YWxseSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIFxyXG4gICAqIC8vdXNpbmcgZ2V0UGFnaW5nSW5mbzpcclxuICAgKiB0aGlzLm9uUGFnZUNoYW5nZWQoVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LmdldFBhZ2luZ0luZm8odGhpcy5zdGFydGluZ1BhZ2VOdW1iZXIsIHRoaXMucGFnZVNpemUpKTtcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQWxsIHBvc3NpYmxlIGl0ZW1zIGluIHRoZSBkcm9wZG93biBtZW51LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBkcm9wZG93bkl0ZW1zOiBNZW51SXRlbTxQYWdlUmFuZ2U+W10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VycmVudCB0YWJzIGJlaW5nIGRpc3BsYXllZC5cclxuICAgKi9cclxuICBwdWJsaWMgY3VycmVudFRhYnM6IE5hdkdyb3VwID0gbmV3IE5hdkdyb3VwKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLnRvdGFsSXRlbXMgPT09IDApIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkl0ZW1zID0gW107XHJcbiAgICAgIHRoaXMuY3VycmVudFRhYnMgPSBuZXcgTmF2R3JvdXAoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXREcm9wZG93bkl0ZW1zKCk7XHJcblxyXG4gICAgLy9GaW5kIHRoZSBtZW51IGl0ZW0gdGhhdCB0aGUgcGFnZSBjb3JyZXNwb25kaW5nIHRvIHRoaXMucGFnZU51bWJlciBsaWVzIGluXHJcbiAgICBsZXQgZmlyc3RNZW51SXRlbSA9IHRoaXMuZHJvcGRvd25JdGVtcy5maW5kKGl0ZW0gPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS52YWx1ZSEuZmlyc3RQYWdlIDw9IHRoaXMucGFnZU51bWJlciAmJiBpdGVtLnZhbHVlIS5sYXN0UGFnZSA+PSB0aGlzLnBhZ2VOdW1iZXI7XHJcbiAgICB9KTtcclxuICAgIGlmKCFmaXJzdE1lbnVJdGVtKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFBhZ2UgJHt0aGlzLnBhZ2VOdW1iZXJ9IGRvZXMgbm90IGV4aXN0LiBTZXR0aW5nIHRoZSBzdGFydGluZyBwYWdlIG51bWJlciB0byAxLmApO1xyXG4gICAgICBmaXJzdE1lbnVJdGVtID0gdGhpcy5kcm9wZG93bkl0ZW1zWzBdO1xyXG4gICAgICB0aGlzLnBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgfVxyXG4gICAgLy9TZXQgdGhlIHRhYnMgdG8gdGhvc2UgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3QgbWVudSBpdGVtLlxyXG4gICAgLy9Ob3RlIHRoYXQgd2UgZG9udCBlbWl0IGEgcGFnZUNoYW5nZWQgZXZlbnQgaGVyZSBiZWNhdXNlIHRoZSBjb25zdW1lciBhbHJlYWR5IGtub3dzIHdoYXQgdGhlIGZpcnN0IHBhZ2UgaXMuXHJcbiAgICB0aGlzLnNldFRhYnMoZmlyc3RNZW51SXRlbSwgdGhpcy5wYWdlTnVtYmVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpdmVuIHRoZSBudW1iZXIgb2YgYSBwYWdlIGFuZCB0aGUgcGFnZVNpemUsIHJldHVybiB0aGUgUGFnaW5nSW5mbyBvYmplY3QgZm9yIHRoYXQgcGFnZS5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldFBhZ2luZ0luZm8ocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4geyBza2lwOiAocGFnZU51bWJlciAtIDEpKnBhZ2VTaXplLCBwYWdlU2l6ZTogcGFnZVNpemUsIHBhZ2VOdW1iZXI6IHBhZ2VOdW1iZXIgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkl0ZW1TZWxlY3RlZChtZW51SXRlbTogTWVudUl0ZW08UGFnZVJhbmdlPikgeyAgXHJcbiAgICB0aGlzLnNldFRhYnMobWVudUl0ZW0pO1xyXG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UocGFyc2VJbnQodGhpcy5jdXJyZW50VGFicy5zZWxlY3RlZCEubGFiZWwhKSk7XHJcbiAgICAvL2ZvY3VzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiIHRvIGhlbHAga2V5Ym9hcmQgbmF2aWdhdGlvblxyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50YWIuYWN0aXZlJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIHRhYiBmb3IgZWFjaCBpdGVtIGluIHRoZSByYW5nZSByZXByZXNlbnRlZCBpbiB0aGUgTWVudUl0ZW1cclxuICAgKi9cclxuICBwcml2YXRlIHNldFRhYnMobWVudUl0ZW06IE1lbnVJdGVtPFBhZ2VSYW5nZT4sIHBhZ2VOdW1iZXI/OiBudW1iZXIpIHtcclxuICAgIGxldCB0YWJJdGVtczogTmF2SXRlbVtdID0gW107XHJcbiAgICBmb3IobGV0IGkgPSBtZW51SXRlbS52YWx1ZSEuZmlyc3RQYWdlOyBpIDw9IG1lbnVJdGVtLnZhbHVlIS5sYXN0UGFnZTsgaSsrKSB7XHJcbiAgICAgIHRhYkl0ZW1zLnB1c2goe1xyXG4gICAgICAgIGxhYmVsOiBgJHtpfWAsXHJcbiAgICAgICAgb25DbGljazogKCkgPT4ge3RoaXMub25QYWdlQ2hhbmdlKGkpfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vaWYgYSBwYWdlTnVtYmVyIGlzIHByb3ZpZGVkLCBzZWxlY3QgdGhlIHRhYiB3aXRoIHRoYXQgcGFnZSBudW1iZXIuXHJcbiAgICAvL290aGVyd2lzZSwgc2VsZWN0IHRoZSBmaXJzdCB0YWIuXHJcbiAgICBsZXQgc2VsZWN0ZWRUYWI6IE5hdkl0ZW0gPSBwYWdlTnVtYmVyID8gdGFiSXRlbXMuZmluZCh0YWIgPT4ge3JldHVybiBwYXJzZUludCh0YWIubGFiZWwhKSA9PT0gcGFnZU51bWJlcn0pIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRhYkl0ZW1zWzBdO1xyXG4gICAgdGhpcy5jdXJyZW50VGFicyA9IG5ldyBOYXZHcm91cCh0YWJJdGVtcywgc2VsZWN0ZWRUYWIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblBhZ2VDaGFuZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2VOdW1iZXIgPSBwYWdlTnVtYmVyO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKHBhZ2VOdW1iZXIsIHRoaXMucGFnZVNpemUpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGFsbCB0aGUgaXRlbXMgZm9yIHRoZSBkcm9wZG93biBtZW51LlxyXG4gICAqIEEgZHJvcGRvd24gaXRlbSByZXByZXNlbnRzIGEgcGFnZSByYW5nZSAoZS5nLiAxLTEwLCAxMS0yMCwgb3IgMjEtMjUpLlxyXG4gICAqIEEgc2luZ2xlIGRyb3Bkb3duIGl0ZW0gY2FuIHJlcHJlc2VudCBhIHJhbmdlIG9mIHVwIHRvIDEwIHBhZ2VzICh0aGUgbGFzdCBpdGVtIGNvdWxkIGhhdmUgbGVzcyB0aGFuIDEwKS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldERyb3Bkb3duSXRlbXMoKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duSXRlbXMgPSBbXTtcclxuICAgIC8vZmluZCB0aGUgbGFzdCBwYWdlXHJcbiAgICBsZXQgZGl2aWRlbmQgPSBNYXRoLmZsb29yKHRoaXMudG90YWxJdGVtcyAvIHRoaXMucGFnZVNpemUpO1xyXG4gICAgbGV0IHJlbWFpbmRlciA9IHRoaXMudG90YWxJdGVtcyAlIHRoaXMucGFnZVNpemU7XHJcbiAgICBjb25zdCBsYXN0UGFnZSA9IChyZW1haW5kZXIgPT09IDApID8gZGl2aWRlbmQgOiBkaXZpZGVuZCArIDE7XHJcblxyXG4gICAgLy9rZWVwIGJ1aWxkaW5nIG1lbnUgaXRlbXMgb2YgdGhlIGZvcm0gMS0xMCwgMTEtMjAsIDIxLTMwLCBldGMgdW50aWwgIFxyXG4gICAgLy9lbmQgPj0gbGFzdFBhZ2UsIHdoaWNoIG1lYW5zIHdlJ3ZlIGZvdW5kIHRoZSByYW5nZSB0aGF0IGNvbnRhaW5zIHRoZSBsYXN0IHBhZ2UuXHJcbiAgICBsZXQgc3RhcnQgPSAxO1xyXG5cclxuICAgIGxldCBtYXhUYWJzID0gdGhpcy5tYXhUYWJzIHx8IDEwO1xyXG4gICAgbGV0IGVuZCA9IG1heFRhYnM7XHJcblxyXG4gICAgd2hpbGUoZW5kIDwgbGFzdFBhZ2UpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkl0ZW1zLnB1c2goe1xyXG4gICAgICAgIGxhYmVsOiBgJHtzdGFydH0tJHtlbmR9YCxcclxuICAgICAgICB2YWx1ZToge2ZpcnN0UGFnZTogc3RhcnQsIGxhc3RQYWdlOiBlbmR9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzdGFydCA9IHN0YXJ0ICsgbWF4VGFicztcclxuICAgICAgZW5kID0gZW5kICsgbWF4VGFicztcclxuICAgIH1cclxuICAgIC8vYWRkIHRoZSBtZW51IGl0ZW0gdGhhdCBjb250YWlucyB0aGUgbGFzdCBwYWdlLlxyXG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zLnB1c2goe1xyXG4gICAgICBsYWJlbDogKHN0YXJ0ID09PSBsYXN0UGFnZSkgPyBgJHtzdGFydH1gOiBgJHtzdGFydH0tJHtsYXN0UGFnZX1gLFxyXG4gICAgICB2YWx1ZToge2ZpcnN0UGFnZTogc3RhcnQsIGxhc3RQYWdlOiBsYXN0UGFnZX1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn0iXX0=
|
|
@@ -5330,7 +5330,7 @@ class TablePaginationComponent {
|
|
|
5330
5330
|
/**
|
|
5331
5331
|
* Maximum number of page tabs to show
|
|
5332
5332
|
*/
|
|
5333
|
-
this.
|
|
5333
|
+
this.maxTabs = 10;
|
|
5334
5334
|
/**
|
|
5335
5335
|
* Emits when the page changes.
|
|
5336
5336
|
*
|
|
@@ -5425,15 +5425,15 @@ class TablePaginationComponent {
|
|
|
5425
5425
|
//keep building menu items of the form 1-10, 11-20, 21-30, etc until
|
|
5426
5426
|
//end >= lastPage, which means we've found the range that contains the last page.
|
|
5427
5427
|
let start = 1;
|
|
5428
|
-
let
|
|
5429
|
-
let end =
|
|
5428
|
+
let maxTabs = this.maxTabs || 10;
|
|
5429
|
+
let end = maxTabs;
|
|
5430
5430
|
while (end < lastPage) {
|
|
5431
5431
|
this.dropdownItems.push({
|
|
5432
5432
|
label: `${start}-${end}`,
|
|
5433
5433
|
value: { firstPage: start, lastPage: end }
|
|
5434
5434
|
});
|
|
5435
|
-
start = start +
|
|
5436
|
-
end = end +
|
|
5435
|
+
start = start + maxTabs;
|
|
5436
|
+
end = end + maxTabs;
|
|
5437
5437
|
}
|
|
5438
5438
|
//add the menu item that contains the last page.
|
|
5439
5439
|
this.dropdownItems.push({
|
|
@@ -5459,7 +5459,7 @@ TablePaginationComponent.propDecorators = {
|
|
|
5459
5459
|
totalItems: [{ type: Input }],
|
|
5460
5460
|
pageSize: [{ type: Input }],
|
|
5461
5461
|
pageNumber: [{ type: Input }],
|
|
5462
|
-
|
|
5462
|
+
maxTabs: [{ type: Input }],
|
|
5463
5463
|
pageChanged: [{ type: Output }]
|
|
5464
5464
|
};
|
|
5465
5465
|
|
|
@@ -5587,7 +5587,7 @@ class SearchableTableComponent {
|
|
|
5587
5587
|
/**
|
|
5588
5588
|
* Maximum number of page tabs to show
|
|
5589
5589
|
*/
|
|
5590
|
-
this.
|
|
5590
|
+
this.maxTabs = 10;
|
|
5591
5591
|
/**
|
|
5592
5592
|
* Makes the searchbox readonly if true.
|
|
5593
5593
|
*/
|
|
@@ -5735,7 +5735,7 @@ class SearchableTableComponent {
|
|
|
5735
5735
|
SearchableTableComponent.decorators = [
|
|
5736
5736
|
{ type: Component, args: [{
|
|
5737
5737
|
selector: 'ec-searchable-table',
|
|
5738
|
-
template: "<header *ngIf=\"!hideHeader\"\r\n class=\"d-flex flex-shrink align-items-center mb-3\">\r\n <ec-textbox id=\"{{id}}_searchbox\"\r\n *ngIf=\"!hideSearchControl\"\r\n class=\"mb-0 flex-grow mr-2\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"searchModel\"\r\n [tabindex]=\"searchboxTabIndex\"\r\n [placeholder]=\"searchboxPlaceholder\"\r\n [readonly]=\"searchboxReadonly\"></ec-textbox>\r\n <div class=\"flex-grow\">\r\n <ng-content select=\".searchable-table-controls\"></ng-content>\r\n </div>\r\n</header>\r\n<section id=\"{{id}}_card\"\r\n class=\"card m-0 d-flex flex-column bg-content\"\r\n [class.is-translucent]=\"status.status !== 'error'\"\r\n ecOverlay\r\n [status]=\"status.status\"\r\n [message]=\"status.message\"\r\n [displayAsMask]=\"true\">\r\n <ng-content select=\".card-header\"></ng-content>\r\n <ec-table id=\"{{id}}_table\"\r\n class=\"flex-shrink-max {{tableClasses}}\"\r\n [class.is-fixed]=\"tableLayoutFixed\"\r\n [sortable]=\"sortable\"\r\n [sort]=\"sort\"\r\n (sortChange)=\"onSortChange($event)\"\r\n [resizable]=\"resizable\"\r\n [scrollable]=\"true\"\r\n [selectionContext]=\"selectionContext\"\r\n [selectionToolbarTemplate]=\"selectionToolbarTemplate\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </ec-table>\r\n\r\n <!-- pagination footer visible if table is page-able and there are more than one page of results -->\r\n <footer *ngIf=\"!hideFooter && pageable && searchResults.totalItemsBeforePaging! > pageSize!\" class=\"d-flex flex-shrink align-items-center border-top\">\r\n <ec-table-pagination id=\"{{id}}_pager\"\r\n class=\"font-color-primary\"\r\n [totalItems]=\"searchResults.totalItemsBeforePaging\"\r\n [pageSize]=\"pageSize\"\r\n [
|
|
5738
|
+
template: "<header *ngIf=\"!hideHeader\"\r\n class=\"d-flex flex-shrink align-items-center mb-3\">\r\n <ec-textbox id=\"{{id}}_searchbox\"\r\n *ngIf=\"!hideSearchControl\"\r\n class=\"mb-0 flex-grow mr-2\"\r\n [autofocus]=\"autofocus\"\r\n [formModel]=\"searchModel\"\r\n [tabindex]=\"searchboxTabIndex\"\r\n [placeholder]=\"searchboxPlaceholder\"\r\n [readonly]=\"searchboxReadonly\"></ec-textbox>\r\n <div class=\"flex-grow\">\r\n <ng-content select=\".searchable-table-controls\"></ng-content>\r\n </div>\r\n</header>\r\n<section id=\"{{id}}_card\"\r\n class=\"card m-0 d-flex flex-column bg-content\"\r\n [class.is-translucent]=\"status.status !== 'error'\"\r\n ecOverlay\r\n [status]=\"status.status\"\r\n [message]=\"status.message\"\r\n [displayAsMask]=\"true\">\r\n <ng-content select=\".card-header\"></ng-content>\r\n <ec-table id=\"{{id}}_table\"\r\n class=\"flex-shrink-max {{tableClasses}}\"\r\n [class.is-fixed]=\"tableLayoutFixed\"\r\n [sortable]=\"sortable\"\r\n [sort]=\"sort\"\r\n (sortChange)=\"onSortChange($event)\"\r\n [resizable]=\"resizable\"\r\n [scrollable]=\"true\"\r\n [selectionContext]=\"selectionContext\"\r\n [selectionToolbarTemplate]=\"selectionToolbarTemplate\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </ec-table>\r\n\r\n <!-- pagination footer visible if table is page-able and there are more than one page of results -->\r\n <footer *ngIf=\"!hideFooter && pageable && searchResults.totalItemsBeforePaging! > pageSize!\" class=\"d-flex flex-shrink align-items-center border-top\">\r\n <ec-table-pagination id=\"{{id}}_pager\"\r\n class=\"font-color-primary\"\r\n [totalItems]=\"searchResults.totalItemsBeforePaging\"\r\n [pageSize]=\"pageSize\"\r\n [maxTabs]=\"maxTabs\"\r\n [pageNumber]=\"pageInfo?.pageNumber\"\r\n (pageChanged)=\"onPageChange($event)\">\r\n </ec-table-pagination>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto mr-2 font-color-hint text-truncate\" \r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n\r\n <!-- default footer: visible if hideFooter is false and table is not page-able or there are only one page of results (always shows if there is a caption to indicate no results) -->\r\n <footer *ngIf=\"(!hideFooter && (!pageable || searchResults.totalItemsBeforePaging! <= pageSize!)) || tableCaption\"\r\n class=\"p-2 d-flex\"\r\n [class.has-results]=\"searchResults?.items?.length\">\r\n <ng-content *ngIf=\"!tableCaption\"\r\n select=\".searchable-table-footer\"></ng-content>\r\n <div id=\"tableCaption\"\r\n *ngIf=\"tableCaption\"\r\n [innerHTML]=\"tableCaption\"></div>\r\n <div id=\"resultsCount\"\r\n *ngIf=\"searchResults?.items?.length\"\r\n class=\"ml-auto text-truncate\"\r\n title=\"{{resultsCount}} {{additionalCountText}}\">{{resultsCount}} {{additionalCountText}}</div>\r\n </footer>\r\n</section>",
|
|
5739
5739
|
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:flex;flex:1 1;flex-direction:column;min-height:0}footer{font-size:.75rem;line-height:1rem}footer.has-results{border-top:1px solid rgba(26,26,35,.18);color:rgba(26,26,35,.38);text-align:right}"]
|
|
5740
5740
|
},] }
|
|
5741
5741
|
];
|
|
@@ -5771,7 +5771,7 @@ SearchableTableComponent.propDecorators = {
|
|
|
5771
5771
|
hideFooter: [{ type: Input }],
|
|
5772
5772
|
pageable: [{ type: Input }],
|
|
5773
5773
|
pageSize: [{ type: Input }],
|
|
5774
|
-
|
|
5774
|
+
maxTabs: [{ type: Input }],
|
|
5775
5775
|
searchboxReadonly: [{ type: Input }],
|
|
5776
5776
|
selectionContext: [{ type: Input }],
|
|
5777
5777
|
selectionToolbarTemplate: [{ type: Input }],
|