UNPKG

@hpe/angular-toolkit

Version:

Hewlett-Packard Enterprise : Angular toolkit for rapid project development

247 lines (246 loc) 23.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ //============================================================================= //=== //=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP. //=== //=== Use of this source code is governed by an MIT-style license that can be //=== found in the LICENSE file //============================================================================= import { Component, EventEmitter, Input, Output } from '@angular/core'; import { LabelService } from "@hpe/angular-toolkit/service"; /** * @template T */ var ListPanel = /** @class */ (function () { //------------------------------------------------------------------------- //--- //--- Constructor //--- //------------------------------------------------------------------------- function ListPanel(labelService) { this.labelService = labelService; //------------------------------------------------------------------------- this.onRowSelected = new EventEmitter(); this.onRowUnselected = new EventEmitter(); } /** * @return {?} */ ListPanel.prototype.refresh = /** * @return {?} */ function () { var _this = this; this.loading = false; this.failed = false; this.overflow = false; this.filteredSize = null; //--- Remove subscription to service (if any) if (this.service != null) { this.loading = true; this.service().subscribe(function (result) { _this.loading = false; _this.data = (result.results); _this.filteredSize = (result.results.length); _this.overflow = (result.overflow); }, function (error) { console.log("Service raised an error : " + JSON.stringify(error)); _this.data = []; _this.loading = false; _this.failed = true; }); } }; Object.defineProperty(ListPanel.prototype, "color", { //------------------------------------------------------------------------- get: /** * @return {?} */ function () { return (this.overflow) ? 'orange' : 'slate'; }, enumerable: true, configurable: true }); Object.defineProperty(ListPanel.prototype, "exportSelTooltip", { //------------------------------------------------------------------------- //--- Localization stuff //------------------------------------------------------------------------- get: /** * @return {?} */ function () { return this.loc("exportSel.tooltip"); }, enumerable: true, configurable: true }); Object.defineProperty(ListPanel.prototype, "exportAllTooltip", { //------------------------------------------------------------------------- get: /** * @return {?} */ function () { return this.loc("exportAll.tooltip"); }, enumerable: true, configurable: true }); Object.defineProperty(ListPanel.prototype, "refreshTooltip", { //------------------------------------------------------------------------- get: /** * @return {?} */ function () { return this.loc("refresh.tooltip"); }, enumerable: true, configurable: true }); //------------------------------------------------------------------------- //--- //--- Lifecycle events //--- //------------------------------------------------------------------------- /** * @return {?} */ ListPanel.prototype.ngOnInit = /** * @return {?} */ function () { this.refresh(); }; //------------------------------------------------------------------------- //--- //--- ListTable events //--- //------------------------------------------------------------------------- /** * @param {?} event * @return {?} */ ListPanel.prototype.onFilterChange = /** * @param {?} event * @return {?} */ function (event) { this.filteredSize = event.filteredSize; }; //------------------------------------------------------------------------- /** * @param {?} event * @return {?} */ ListPanel.prototype.onRowSelect = /** * @param {?} event * @return {?} */ function (event) { this.onRowSelected.emit(event.row); }; //------------------------------------------------------------------------- /** * @param {?} event * @return {?} */ ListPanel.prototype.onRowUnselect = /** * @param {?} event * @return {?} */ function (event) { this.onRowUnselected.emit(event.row); }; /** * @param {?} code * @return {?} */ ListPanel.prototype.loc = /** * @param {?} code * @return {?} */ function (code) { return this.labelService.getLabel("list-panel", code); }; ListPanel.decorators = [ { type: Component, args: [{ selector: 'hpe-list-panel', template: "<!--\n=============================================================================\n===\n=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP.\n===\n=== Use of this source code is governed by an MIT-style license that can be\n=== found in the LICENSE file\n=============================================================================\n-->\n\n<hpe-card-panel icon=\"{{icon}}\" title=\"{{title}}\">\n\t<hpe-rounded-text [text]=\"filteredSize\" [color]=\"color\" cpPostTitle></hpe-rounded-text>\n\n\t<ng-content select=\"lpButtons\"></ng-content>\n\n\t<hpe-title-button cpControl\n\t icon = \"fa-file-o\"\n\t [tooltip] = \"exportSelTooltip\"\n\t [disabled] = \"loading || failed\"\n\t (click) = \"lt.exportSelected()\"\n\t\t\t\t\t></hpe-title-button>\n\n\t<hpe-title-button cpControl\n\t\t\t\t\ticon = \"fa-files-o\"\n\t\t\t\t\t[tooltip] = \"exportAllTooltip\"\n\t\t\t\t\t[disabled] = \"loading || failed\"\n\t\t\t\t\t(click) = \"lt.exportAll()\"\n\t\t\t\t\t></hpe-title-button>\n\n\t<hpe-title-button cpControl\n\t\t\t\t\ticon = \"fa-refresh\"\n\t\t\t\t\t[tooltip] = \"refreshTooltip\"\n\t\t\t\t\t[disabled] = \"loading\"\n\t\t\t\t\t(click) = \"refresh()\"\n\t\t\t\t\t></hpe-title-button>\n\n\t<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->\n\n\t<div cpBody class=\"innerPanel\">\n\t\t<hpe-list-table #lt\n\t\t\t\t\t[rowId] = \"rowId\"\n\t\t\t\t\t[columns] = \"columns\"\n\t\t\t\t\t[visibleColumns] = \"visibleColumns\"\n\t\t\t\t\t[data] = \"data\"\n\t\t\t\t\t[contextMenu] = \"contextMenu\"\n\t\t\t\t\t[multiSelection] = \"multiSelection\"\n\t\t\t\t\t[menuSelector] = \"menuSelector\"\n\t\t\t\t\t[loading] = \"loading\"\n\t\t\t\t\t[labelGroup] = \"labelGroup\"\n\t\t\t\t\t(onFilterChange) = \"onFilterChange($event)\"\n\t\t\t\t\t(onRowSelected) = \"onRowSelect($event)\"\n\t\t (onRowUnselected)= \"onRowUnselect($event)\"\n\t\t\t\t\t></hpe-list-table>\n\n\t\t<ng-content select=\"lpControls\"></ng-content>\n\t</div>\n\n</hpe-card-panel>\n", styles: [".innerPanel{padding:8px}"] },] }, ]; /** @nocollapse */ ListPanel.ctorParameters = function () { return [ { type: LabelService, }, ]; }; ListPanel.propDecorators = { "icon": [{ type: Input },], "title": [{ type: Input },], "rowId": [{ type: Input },], "columns": [{ type: Input },], "visibleColumns": [{ type: Input },], "multiSelection": [{ type: Input },], "contextMenu": [{ type: Input },], "menuSelector": [{ type: Input },], "service": [{ type: Input },], "labelGroup": [{ type: Input },], "onRowSelected": [{ type: Output },], "onRowUnselected": [{ type: Output },], }; return ListPanel; }()); export { ListPanel }; function ListPanel_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ListPanel.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ListPanel.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ListPanel.propDecorators; /** @type {?} */ ListPanel.prototype.icon; /** @type {?} */ ListPanel.prototype.title; /** @type {?} */ ListPanel.prototype.rowId; /** @type {?} */ ListPanel.prototype.columns; /** @type {?} */ ListPanel.prototype.visibleColumns; /** @type {?} */ ListPanel.prototype.multiSelection; /** @type {?} */ ListPanel.prototype.contextMenu; /** @type {?} */ ListPanel.prototype.menuSelector; /** @type {?} */ ListPanel.prototype.service; /** @type {?} */ ListPanel.prototype.labelGroup; /** @type {?} */ ListPanel.prototype.onRowSelected; /** @type {?} */ ListPanel.prototype.onRowUnselected; /** @type {?} */ ListPanel.prototype.loading; /** @type {?} */ ListPanel.prototype.failed; /** @type {?} */ ListPanel.prototype.overflow; /** @type {?} */ ListPanel.prototype.filteredSize; /** @type {?} */ ListPanel.prototype.data; /** @type {?} */ ListPanel.prototype.labelService; } //============================================================================= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BocGUvYW5ndWxhci10b29sa2l0L2d1aS9wYW5lbC8iLCJzb3VyY2VzIjpbImxpc3QtcGFuZWwvbGlzdC1wYW5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFTN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFZLDhCQUE4QixDQUFDOzs7OztJQXNHL0QsMkVBQTJFO0lBQzNFLEtBQUs7SUFDTCxpQkFBaUI7SUFDakIsS0FBSztJQUNMLDJFQUEyRTtJQUUzRSxtQkFBb0IsWUFBMkI7UUFBM0IsaUJBQVksR0FBWixZQUFZLENBQWU7OzZCQWpCZ0IsSUFBSSxZQUFZLEVBQW9COytCQUNwQyxJQUFJLFlBQVksRUFBc0I7S0FpQnBHOzs7O0lBUU0sMkJBQU87Ozs7O1FBRWIsSUFBSSxDQUFDLE9BQU8sR0FBUSxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBUyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBTyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7O1FBSXpCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUVwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUN2QixVQUFBLE1BQU07Z0JBQ0wsS0FBSSxDQUFDLE9BQU8sR0FBUSxLQUFLLENBQUM7Z0JBQzFCLEtBQUksQ0FBQyxJQUFJLEdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JDLEtBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxLQUFJLENBQUMsUUFBUSxHQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3RDLEVBQ0QsVUFBQSxLQUFLO2dCQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEdBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxLQUFJLENBQUMsSUFBSSxHQUFNLEVBQUUsQ0FBQztnQkFDbEIsS0FBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLEtBQUksQ0FBQyxNQUFNLEdBQUksSUFBSSxDQUFDO2FBQ3BCLENBQUMsQ0FBQztTQUNKOztJQUtGLHNCQUFJLDRCQUFLO1FBRlQsMkVBQTJFOzs7O1FBRTNFO1lBQ0MsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLFFBQVE7Z0JBQ1YsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUNiOzs7T0FBQTtJQU1ELHNCQUFJLHVDQUFnQjtRQUpwQiwyRUFBMkU7UUFDM0Usd0JBQXdCO1FBQ3hCLDJFQUEyRTs7OztRQUUzRTtZQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDckM7OztPQUFBO0lBSUQsc0JBQUksdUNBQWdCO1FBRnBCLDJFQUEyRTs7OztRQUUzRTtZQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDckM7OztPQUFBO0lBSUQsc0JBQUkscUNBQWM7UUFGbEIsMkVBQTJFOzs7O1FBRTNFO1lBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNuQzs7O09BQUE7SUFFRCwyRUFBMkU7SUFDM0UsS0FBSztJQUNMLHNCQUFzQjtJQUN0QixLQUFLO0lBQ0wsMkVBQTJFOzs7O0lBRTNFLDRCQUFROzs7SUFBUjtRQUNDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNmO0lBRUQsMkVBQTJFO0lBQzNFLEtBQUs7SUFDTCxzQkFBc0I7SUFDdEIsS0FBSztJQUNMLDJFQUEyRTs7Ozs7SUFFM0Usa0NBQWM7Ozs7SUFBZCxVQUFlLEtBQXlCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztLQUN2QztJQUVELDJFQUEyRTs7Ozs7SUFFM0UsK0JBQVc7Ozs7SUFBWCxVQUFZLEtBQXdCO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNuQztJQUVELDJFQUEyRTs7Ozs7SUFFM0UsaUNBQWE7Ozs7SUFBYixVQUFjLEtBQTBCO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNyQzs7Ozs7SUFRTyx1QkFBRzs7OztjQUFDLElBQWE7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQzs7O2dCQWhOdkQsU0FBUyxTQUFDO29CQUNWLFFBQVEsRUFBVSxnQkFBZ0I7b0JBQ2xDLFFBQVEsRUFBRSxvbUVBMERWO29CQUNBLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUNwQzs7OztnQkFsRU8sWUFBWTs7O3lCQThFbEIsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7NEJBQ0wsS0FBSzttQ0FDTCxLQUFLO21DQUNMLEtBQUs7Z0NBQ0wsS0FBSztpQ0FDTCxLQUFLOzRCQUNMLEtBQUs7K0JBQ0wsS0FBSztrQ0FJTCxNQUFNO29DQUNOLE1BQU07O29CQTdHUjs7U0F1RmEsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vPT09XG4vLz09PSAoQykgQ29weXJpZ2h0IDIwMTggSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFAuXG4vLz09PVxuLy89PT0gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbi8vPT09IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGVcbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtMaXN0VGFibGVDb2x1bW59ICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtNZW51fSAgICAgICAgICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtMaXN0QmFja2VuZFNlcnZpY2V9IGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtGaWx0ZXJDaGFuZ2VFdmVudH0gIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtNZW51U2VsZWN0b3J9ICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtSb3dTZWxlY3RlZEV2ZW50fSAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtSb3dVbnNlbGVjdGVkRXZlbnR9IGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtMYWJlbFNlcnZpY2V9ICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yICAgIDogICAgICdocGUtbGlzdC1wYW5lbCcsXG5cdHRlbXBsYXRlOiBgPCEtLVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbj09PVxuPT09IChDKSBDb3B5cmlnaHQgMjAxOCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUC5cbj09PVxuPT09IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG49PT0gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi0tPlxuXG48aHBlLWNhcmQtcGFuZWwgaWNvbj1cInt7aWNvbn19XCIgdGl0bGU9XCJ7e3RpdGxlfX1cIj5cblx0PGhwZS1yb3VuZGVkLXRleHQgW3RleHRdPVwiZmlsdGVyZWRTaXplXCIgW2NvbG9yXT1cImNvbG9yXCIgY3BQb3N0VGl0bGU+PC9ocGUtcm91bmRlZC10ZXh0PlxuXG5cdDxuZy1jb250ZW50IHNlbGVjdD1cImxwQnV0dG9uc1wiPjwvbmctY29udGVudD5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHQgICAgICAgICAgICAgICAgaWNvbiAgICAgICA9IFwiZmEtZmlsZS1vXCJcblx0ICAgICAgICAgICAgICAgIFt0b29sdGlwXSAgPSBcImV4cG9ydFNlbFRvb2x0aXBcIlxuXHQgICAgICAgICAgICAgICAgW2Rpc2FibGVkXSA9IFwibG9hZGluZyB8fCBmYWlsZWRcIlxuXHQgICAgICAgICAgICAgICAgKGNsaWNrKSAgICA9IFwibHQuZXhwb3J0U2VsZWN0ZWQoKVwiXG5cdFx0XHRcdFx0PjwvaHBlLXRpdGxlLWJ1dHRvbj5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHRcdFx0XHRcdGljb24gICAgICAgPSBcImZhLWZpbGVzLW9cIlxuXHRcdFx0XHRcdFt0b29sdGlwXSAgPSBcImV4cG9ydEFsbFRvb2x0aXBcIlxuXHRcdFx0XHRcdFtkaXNhYmxlZF0gPSBcImxvYWRpbmcgfHwgZmFpbGVkXCJcblx0XHRcdFx0XHQoY2xpY2spICAgID0gXCJsdC5leHBvcnRBbGwoKVwiXG5cdFx0XHRcdFx0PjwvaHBlLXRpdGxlLWJ1dHRvbj5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHRcdFx0XHRcdGljb24gICAgICAgPSBcImZhLXJlZnJlc2hcIlxuXHRcdFx0XHRcdFt0b29sdGlwXSAgPSBcInJlZnJlc2hUb29sdGlwXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdID0gXCJsb2FkaW5nXCJcblx0XHRcdFx0XHQoY2xpY2spICAgID0gXCJyZWZyZXNoKClcIlxuXHRcdFx0XHRcdD48L2hwZS10aXRsZS1idXR0b24+XG5cblx0PCEtLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLS0+XG5cblx0PGRpdiBjcEJvZHkgY2xhc3M9XCJpbm5lclBhbmVsXCI+XG5cdFx0PGhwZS1saXN0LXRhYmxlICNsdFxuXHRcdFx0XHRcdFtyb3dJZF0gICAgICAgICAgPSBcInJvd0lkXCJcblx0XHRcdFx0XHRbY29sdW1uc10gICAgICAgID0gXCJjb2x1bW5zXCJcblx0XHRcdFx0XHRbdmlzaWJsZUNvbHVtbnNdID0gXCJ2aXNpYmxlQ29sdW1uc1wiXG5cdFx0XHRcdFx0W2RhdGFdICAgICAgICAgICA9IFwiZGF0YVwiXG5cdFx0XHRcdFx0W2NvbnRleHRNZW51XSAgICA9IFwiY29udGV4dE1lbnVcIlxuXHRcdFx0XHRcdFttdWx0aVNlbGVjdGlvbl0gPSBcIm11bHRpU2VsZWN0aW9uXCJcblx0XHRcdFx0XHRbbWVudVNlbGVjdG9yXSAgID0gXCJtZW51U2VsZWN0b3JcIlxuXHRcdFx0XHRcdFtsb2FkaW5nXSAgICAgICAgPSBcImxvYWRpbmdcIlxuXHRcdFx0XHRcdFtsYWJlbEdyb3VwXSAgICAgPSBcImxhYmVsR3JvdXBcIlxuXHRcdFx0XHRcdChvbkZpbHRlckNoYW5nZSkgPSBcIm9uRmlsdGVyQ2hhbmdlKCRldmVudClcIlxuXHRcdFx0XHRcdChvblJvd1NlbGVjdGVkKSAgPSBcIm9uUm93U2VsZWN0KCRldmVudClcIlxuXHRcdCAgICAgICAgICAgIChvblJvd1Vuc2VsZWN0ZWQpPSBcIm9uUm93VW5zZWxlY3QoJGV2ZW50KVwiXG5cdFx0XHRcdFx0PjwvaHBlLWxpc3QtdGFibGU+XG5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJscENvbnRyb2xzXCI+PC9uZy1jb250ZW50PlxuXHQ8L2Rpdj5cblxuPC9ocGUtY2FyZC1wYW5lbD5cbmAsXG5cdHN0eWxlczogW2AuaW5uZXJQYW5lbHtwYWRkaW5nOjhweH1gXVxufSlcblxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY2xhc3MgTGlzdFBhbmVsPFQ+IGltcGxlbWVudHMgT25Jbml0IHtcblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gVmFyaWFibGVzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdEBJbnB1dCgpIGljb24gICAgICAgICAgIDogc3RyaW5nO1xuXHRASW5wdXQoKSB0aXRsZSAgICAgICAgICA6IHN0cmluZztcblx0QElucHV0KCkgcm93SWQgICAgICAgICAgOiBhbnk7XG5cdEBJbnB1dCgpIGNvbHVtbnMgICAgICAgIDogTGlzdFRhYmxlQ29sdW1uW107XG5cdEBJbnB1dCgpIHZpc2libGVDb2x1bW5zIDogc3RyaW5nW107XG5cdEBJbnB1dCgpIG11bHRpU2VsZWN0aW9uIDogYm9vbGVhbjtcblx0QElucHV0KCkgY29udGV4dE1lbnUgICAgOiBNZW51W107XG5cdEBJbnB1dCgpIG1lbnVTZWxlY3RvciAgIDogTWVudVNlbGVjdG9yO1xuXHRASW5wdXQoKSBzZXJ2aWNlICAgICAgICA6IExpc3RCYWNrZW5kU2VydmljZTxUPjtcblx0QElucHV0KCkgbGFiZWxHcm91cCAgICAgOiBzdHJpbmc7XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0QE91dHB1dCgpIG9uUm93U2VsZWN0ZWQgICA6IEV2ZW50RW1pdHRlcjxSb3dTZWxlY3RlZEV2ZW50PiAgID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dTZWxlY3RlZEV2ZW50PigpO1xuXHRAT3V0cHV0KCkgb25Sb3dVbnNlbGVjdGVkIDogRXZlbnRFbWl0dGVyPFJvd1Vuc2VsZWN0ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd1Vuc2VsZWN0ZWRFdmVudD4oKTtcblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRsb2FkaW5nICAgICAgOiBib29sZWFuO1xuXHRmYWlsZWQgICAgICAgOiBib29sZWFuO1xuXHRvdmVyZmxvdyAgICAgOiBib29sZWFuO1xuXHRmaWx0ZXJlZFNpemUgOiBudW1iZXI7XG5cdGRhdGEgICAgICAgICA6IGFueVtdO1xuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBDb25zdHJ1Y3RvclxuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGxhYmVsU2VydmljZSA6IExhYmVsU2VydmljZSkge1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIEFQSSBtZXRob2RzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHB1YmxpYyByZWZyZXNoKCkgOiB2b2lkIHtcblxuXHRcdHRoaXMubG9hZGluZyAgICAgID0gZmFsc2U7XG5cdFx0dGhpcy5mYWlsZWQgICAgICAgPSBmYWxzZTtcblx0XHR0aGlzLm92ZXJmbG93ICAgICA9IGZhbHNlO1xuXHRcdHRoaXMuZmlsdGVyZWRTaXplID0gbnVsbDtcblxuXHRcdC8vLS0tIFJlbW92ZSBzdWJzY3JpcHRpb24gdG8gc2VydmljZSAoaWYgYW55KVxuXG5cdFx0aWYgKHRoaXMuc2VydmljZSAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG5cdFx0XHR0aGlzLnNlcnZpY2UoKS5zdWJzY3JpYmUoXG5cdFx0XHRcdHJlc3VsdCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nICAgICAgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLmRhdGEgICAgICAgICA9IChyZXN1bHQucmVzdWx0cyk7XG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJlZFNpemUgPSAocmVzdWx0LnJlc3VsdHMubGVuZ3RoKTtcblx0XHRcdFx0XHR0aGlzLm92ZXJmbG93ICAgICA9IChyZXN1bHQub3ZlcmZsb3cpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnJvciA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXCJTZXJ2aWNlIHJhaXNlZCBhbiBlcnJvciA6IFwiKyBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xuXHRcdFx0XHRcdHRoaXMuZGF0YSAgICA9IFtdO1xuXHRcdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMuZmFpbGVkICA9IHRydWU7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCBjb2xvcigpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gKHRoaXMub3ZlcmZsb3cpXG5cdFx0XHRcdFx0PyAnb3JhbmdlJ1xuXHRcdFx0XHRcdDogJ3NsYXRlJztcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLSBMb2NhbGl6YXRpb24gc3R1ZmZcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Z2V0IGV4cG9ydFNlbFRvb2x0aXAoKSA6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubG9jKFwiZXhwb3J0U2VsLnRvb2x0aXBcIik7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRnZXQgZXhwb3J0QWxsVG9vbHRpcCgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJleHBvcnRBbGwudG9vbHRpcFwiKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCByZWZyZXNoVG9vbHRpcCgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJyZWZyZXNoLnRvb2x0aXBcIik7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gTGlmZWN5Y2xlIGV2ZW50c1xuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLnJlZnJlc2goKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBMaXN0VGFibGUgZXZlbnRzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdG9uRmlsdGVyQ2hhbmdlKGV2ZW50IDogRmlsdGVyQ2hhbmdlRXZlbnQpIHtcblx0XHR0aGlzLmZpbHRlcmVkU2l6ZSA9IGV2ZW50LmZpbHRlcmVkU2l6ZTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdG9uUm93U2VsZWN0KGV2ZW50IDogUm93U2VsZWN0ZWRFdmVudCkge1xuXHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KGV2ZW50LnJvdyk7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRvblJvd1Vuc2VsZWN0KGV2ZW50IDogUm93VW5zZWxlY3RlZEV2ZW50KSB7XG5cdFx0dGhpcy5vblJvd1Vuc2VsZWN0ZWQuZW1pdChldmVudC5yb3cpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIFByaXZhdGUgbWV0aG9kc1xuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRwcml2YXRlIGxvYyhjb2RlIDogc3RyaW5nKSA6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubGFiZWxTZXJ2aWNlLmdldExhYmVsKFwibGlzdC1wYW5lbFwiLCBjb2RlKTtcblx0fVxufVxuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iXX0=