@hpe/angular-toolkit
Version:
Hewlett-Packard Enterprise : Angular toolkit for rapid project development
245 lines (235 loc) • 20.7 kB
JavaScript
/**
* @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
*/
//=============================================================================
export class ListPanel {
/**
* @param {?} labelService
*/
constructor(labelService) {
this.labelService = labelService;
//-------------------------------------------------------------------------
this.onRowSelected = new EventEmitter();
this.onRowUnselected = new EventEmitter();
}
/**
* @return {?}
*/
refresh() {
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(result => {
this.loading = false;
this.data = (result.results);
this.filteredSize = (result.results.length);
this.overflow = (result.overflow);
}, error => {
console.log("Service raised an error : " + JSON.stringify(error));
this.data = [];
this.loading = false;
this.failed = true;
});
}
}
/**
* @return {?}
*/
get color() {
return (this.overflow)
? 'orange'
: 'slate';
}
/**
* @return {?}
*/
get exportSelTooltip() {
return this.loc("exportSel.tooltip");
}
/**
* @return {?}
*/
get exportAllTooltip() {
return this.loc("exportAll.tooltip");
}
/**
* @return {?}
*/
get refreshTooltip() {
return this.loc("refresh.tooltip");
}
/**
* @return {?}
*/
ngOnInit() {
this.refresh();
}
/**
* @param {?} event
* @return {?}
*/
onFilterChange(event) {
this.filteredSize = event.filteredSize;
}
/**
* @param {?} event
* @return {?}
*/
onRowSelect(event) {
this.onRowSelected.emit(event.row);
}
/**
* @param {?} event
* @return {?}
*/
onRowUnselect(event) {
this.onRowUnselected.emit(event.row);
}
/**
* @param {?} code
* @return {?}
*/
loc(code) {
return this.labelService.getLabel("list-panel", code);
}
}
ListPanel.decorators = [
{ type: Component, args: [{
selector: 'hpe-list-panel',
template: `<!--
=============================================================================
===
=== (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
=============================================================================
-->
<hpe-card-panel icon="{{icon}}" title="{{title}}">
<hpe-rounded-text [text]="filteredSize" [color]="color" cpPostTitle></hpe-rounded-text>
<ng-content select="lpButtons"></ng-content>
<hpe-title-button cpControl
icon = "fa-file-o"
[tooltip] = "exportSelTooltip"
[disabled] = "loading || failed"
(click) = "lt.exportSelected()"
></hpe-title-button>
<hpe-title-button cpControl
icon = "fa-files-o"
[tooltip] = "exportAllTooltip"
[disabled] = "loading || failed"
(click) = "lt.exportAll()"
></hpe-title-button>
<hpe-title-button cpControl
icon = "fa-refresh"
[tooltip] = "refreshTooltip"
[disabled] = "loading"
(click) = "refresh()"
></hpe-title-button>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<div cpBody class="innerPanel">
<hpe-list-table #lt
[rowId] = "rowId"
[columns] = "columns"
[visibleColumns] = "visibleColumns"
[data] = "data"
[contextMenu] = "contextMenu"
[multiSelection] = "multiSelection"
[menuSelector] = "menuSelector"
[loading] = "loading"
[labelGroup] = "labelGroup"
(onFilterChange) = "onFilterChange($event)"
(onRowSelected) = "onRowSelect($event)"
(onRowUnselected)= "onRowUnselect($event)"
></hpe-list-table>
<ng-content select="lpControls"></ng-content>
</div>
</hpe-card-panel>
`,
styles: [`.innerPanel{padding:8px}`]
},] },
];
/** @nocollapse */
ListPanel.ctorParameters = () => [
{ 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 },],
};
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BocGUvYW5ndWxhci10b29sa2l0L2d1aS9wYW5lbC8iLCJzb3VyY2VzIjpbImxpc3QtcGFuZWwvbGlzdC1wYW5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFTN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFZLDhCQUE4QixDQUFDOzs7O0FBSWhFO0FBa0VBLE1BQU07Ozs7SUFzQ0wsWUFBb0IsWUFBMkI7UUFBM0IsaUJBQVksR0FBWixZQUFZLENBQWU7OzZCQWpCZ0IsSUFBSSxZQUFZLEVBQW9COytCQUNwQyxJQUFJLFlBQVksRUFBc0I7S0FpQnBHOzs7O0lBUU0sT0FBTztRQUViLElBQUksQ0FBQyxPQUFPLEdBQVEsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQVMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQU8sS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDOztRQUl6QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FDdkIsTUFBTSxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBUSxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLEdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3RDLEVBQ0QsS0FBSyxDQUFDLEVBQUU7Z0JBQ1AsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsR0FBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxJQUFJLEdBQU0sRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBSSxJQUFJLENBQUM7YUFDcEIsQ0FBQyxDQUFDO1NBQ0o7Ozs7O0lBS0YsSUFBSSxLQUFLO1FBQ1IsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNuQixDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDYjs7OztJQU1ELElBQUksZ0JBQWdCO1FBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDckM7Ozs7SUFJRCxJQUFJLGdCQUFnQjtRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3JDOzs7O0lBSUQsSUFBSSxjQUFjO1FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FDbkM7Ozs7SUFRRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQ2Y7Ozs7O0lBUUQsY0FBYyxDQUFDLEtBQXlCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztLQUN2Qzs7Ozs7SUFJRCxXQUFXLENBQUMsS0FBd0I7UUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ25DOzs7OztJQUlELGFBQWEsQ0FBQyxLQUEwQjtRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDckM7Ozs7O0lBUU8sR0FBRyxDQUFDLElBQWE7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQzs7OztZQWhOdkQsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBVSxnQkFBZ0I7Z0JBQ2xDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTBEVjtnQkFDQSxNQUFNLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQzthQUNwQzs7OztZQWxFTyxZQUFZOzs7cUJBOEVsQixLQUFLO3NCQUNMLEtBQUs7c0JBQ0wsS0FBSzt3QkFDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSzs0QkFDTCxLQUFLOzZCQUNMLEtBQUs7d0JBQ0wsS0FBSzsyQkFDTCxLQUFLOzhCQUlMLE1BQU07Z0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vPT09XG4vLz09PSAoQykgQ29weXJpZ2h0IDIwMTggSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFAuXG4vLz09PVxuLy89PT0gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbi8vPT09IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGVcbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtMaXN0VGFibGVDb2x1bW59ICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtNZW51fSAgICAgICAgICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtMaXN0QmFja2VuZFNlcnZpY2V9IGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtGaWx0ZXJDaGFuZ2VFdmVudH0gIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtNZW51U2VsZWN0b3J9ICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtSb3dTZWxlY3RlZEV2ZW50fSAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtSb3dVbnNlbGVjdGVkRXZlbnR9IGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtMYWJlbFNlcnZpY2V9ICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yICAgIDogICAgICdocGUtbGlzdC1wYW5lbCcsXG5cdHRlbXBsYXRlOiBgPCEtLVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbj09PVxuPT09IChDKSBDb3B5cmlnaHQgMjAxOCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUC5cbj09PVxuPT09IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG49PT0gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi0tPlxuXG48aHBlLWNhcmQtcGFuZWwgaWNvbj1cInt7aWNvbn19XCIgdGl0bGU9XCJ7e3RpdGxlfX1cIj5cblx0PGhwZS1yb3VuZGVkLXRleHQgW3RleHRdPVwiZmlsdGVyZWRTaXplXCIgW2NvbG9yXT1cImNvbG9yXCIgY3BQb3N0VGl0bGU+PC9ocGUtcm91bmRlZC10ZXh0PlxuXG5cdDxuZy1jb250ZW50IHNlbGVjdD1cImxwQnV0dG9uc1wiPjwvbmctY29udGVudD5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHQgICAgICAgICAgICAgICAgaWNvbiAgICAgICA9IFwiZmEtZmlsZS1vXCJcblx0ICAgICAgICAgICAgICAgIFt0b29sdGlwXSAgPSBcImV4cG9ydFNlbFRvb2x0aXBcIlxuXHQgICAgICAgICAgICAgICAgW2Rpc2FibGVkXSA9IFwibG9hZGluZyB8fCBmYWlsZWRcIlxuXHQgICAgICAgICAgICAgICAgKGNsaWNrKSAgICA9IFwibHQuZXhwb3J0U2VsZWN0ZWQoKVwiXG5cdFx0XHRcdFx0PjwvaHBlLXRpdGxlLWJ1dHRvbj5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHRcdFx0XHRcdGljb24gICAgICAgPSBcImZhLWZpbGVzLW9cIlxuXHRcdFx0XHRcdFt0b29sdGlwXSAgPSBcImV4cG9ydEFsbFRvb2x0aXBcIlxuXHRcdFx0XHRcdFtkaXNhYmxlZF0gPSBcImxvYWRpbmcgfHwgZmFpbGVkXCJcblx0XHRcdFx0XHQoY2xpY2spICAgID0gXCJsdC5leHBvcnRBbGwoKVwiXG5cdFx0XHRcdFx0PjwvaHBlLXRpdGxlLWJ1dHRvbj5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHRcdFx0XHRcdGljb24gICAgICAgPSBcImZhLXJlZnJlc2hcIlxuXHRcdFx0XHRcdFt0b29sdGlwXSAgPSBcInJlZnJlc2hUb29sdGlwXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdID0gXCJsb2FkaW5nXCJcblx0XHRcdFx0XHQoY2xpY2spICAgID0gXCJyZWZyZXNoKClcIlxuXHRcdFx0XHRcdD48L2hwZS10aXRsZS1idXR0b24+XG5cblx0PCEtLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLS0+XG5cblx0PGRpdiBjcEJvZHkgY2xhc3M9XCJpbm5lclBhbmVsXCI+XG5cdFx0PGhwZS1saXN0LXRhYmxlICNsdFxuXHRcdFx0XHRcdFtyb3dJZF0gICAgICAgICAgPSBcInJvd0lkXCJcblx0XHRcdFx0XHRbY29sdW1uc10gICAgICAgID0gXCJjb2x1bW5zXCJcblx0XHRcdFx0XHRbdmlzaWJsZUNvbHVtbnNdID0gXCJ2aXNpYmxlQ29sdW1uc1wiXG5cdFx0XHRcdFx0W2RhdGFdICAgICAgICAgICA9IFwiZGF0YVwiXG5cdFx0XHRcdFx0W2NvbnRleHRNZW51XSAgICA9IFwiY29udGV4dE1lbnVcIlxuXHRcdFx0XHRcdFttdWx0aVNlbGVjdGlvbl0gPSBcIm11bHRpU2VsZWN0aW9uXCJcblx0XHRcdFx0XHRbbWVudVNlbGVjdG9yXSAgID0gXCJtZW51U2VsZWN0b3JcIlxuXHRcdFx0XHRcdFtsb2FkaW5nXSAgICAgICAgPSBcImxvYWRpbmdcIlxuXHRcdFx0XHRcdFtsYWJlbEdyb3VwXSAgICAgPSBcImxhYmVsR3JvdXBcIlxuXHRcdFx0XHRcdChvbkZpbHRlckNoYW5nZSkgPSBcIm9uRmlsdGVyQ2hhbmdlKCRldmVudClcIlxuXHRcdFx0XHRcdChvblJvd1NlbGVjdGVkKSAgPSBcIm9uUm93U2VsZWN0KCRldmVudClcIlxuXHRcdCAgICAgICAgICAgIChvblJvd1Vuc2VsZWN0ZWQpPSBcIm9uUm93VW5zZWxlY3QoJGV2ZW50KVwiXG5cdFx0XHRcdFx0PjwvaHBlLWxpc3QtdGFibGU+XG5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJscENvbnRyb2xzXCI+PC9uZy1jb250ZW50PlxuXHQ8L2Rpdj5cblxuPC9ocGUtY2FyZC1wYW5lbD5cbmAsXG5cdHN0eWxlczogW2AuaW5uZXJQYW5lbHtwYWRkaW5nOjhweH1gXVxufSlcblxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY2xhc3MgTGlzdFBhbmVsPFQ+IGltcGxlbWVudHMgT25Jbml0IHtcblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gVmFyaWFibGVzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdEBJbnB1dCgpIGljb24gICAgICAgICAgIDogc3RyaW5nO1xuXHRASW5wdXQoKSB0aXRsZSAgICAgICAgICA6IHN0cmluZztcblx0QElucHV0KCkgcm93SWQgICAgICAgICAgOiBhbnk7XG5cdEBJbnB1dCgpIGNvbHVtbnMgICAgICAgIDogTGlzdFRhYmxlQ29sdW1uW107XG5cdEBJbnB1dCgpIHZpc2libGVDb2x1bW5zIDogc3RyaW5nW107XG5cdEBJbnB1dCgpIG11bHRpU2VsZWN0aW9uIDogYm9vbGVhbjtcblx0QElucHV0KCkgY29udGV4dE1lbnUgICAgOiBNZW51W107XG5cdEBJbnB1dCgpIG1lbnVTZWxlY3RvciAgIDogTWVudVNlbGVjdG9yO1xuXHRASW5wdXQoKSBzZXJ2aWNlICAgICAgICA6IExpc3RCYWNrZW5kU2VydmljZTxUPjtcblx0QElucHV0KCkgbGFiZWxHcm91cCAgICAgOiBzdHJpbmc7XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0QE91dHB1dCgpIG9uUm93U2VsZWN0ZWQgICA6IEV2ZW50RW1pdHRlcjxSb3dTZWxlY3RlZEV2ZW50PiAgID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dTZWxlY3RlZEV2ZW50PigpO1xuXHRAT3V0cHV0KCkgb25Sb3dVbnNlbGVjdGVkIDogRXZlbnRFbWl0dGVyPFJvd1Vuc2VsZWN0ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd1Vuc2VsZWN0ZWRFdmVudD4oKTtcblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRsb2FkaW5nICAgICAgOiBib29sZWFuO1xuXHRmYWlsZWQgICAgICAgOiBib29sZWFuO1xuXHRvdmVyZmxvdyAgICAgOiBib29sZWFuO1xuXHRmaWx0ZXJlZFNpemUgOiBudW1iZXI7XG5cdGRhdGEgICAgICAgICA6IGFueVtdO1xuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBDb25zdHJ1Y3RvclxuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGxhYmVsU2VydmljZSA6IExhYmVsU2VydmljZSkge1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIEFQSSBtZXRob2RzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHB1YmxpYyByZWZyZXNoKCkgOiB2b2lkIHtcblxuXHRcdHRoaXMubG9hZGluZyAgICAgID0gZmFsc2U7XG5cdFx0dGhpcy5mYWlsZWQgICAgICAgPSBmYWxzZTtcblx0XHR0aGlzLm92ZXJmbG93ICAgICA9IGZhbHNlO1xuXHRcdHRoaXMuZmlsdGVyZWRTaXplID0gbnVsbDtcblxuXHRcdC8vLS0tIFJlbW92ZSBzdWJzY3JpcHRpb24gdG8gc2VydmljZSAoaWYgYW55KVxuXG5cdFx0aWYgKHRoaXMuc2VydmljZSAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG5cdFx0XHR0aGlzLnNlcnZpY2UoKS5zdWJzY3JpYmUoXG5cdFx0XHRcdHJlc3VsdCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nICAgICAgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLmRhdGEgICAgICAgICA9IChyZXN1bHQucmVzdWx0cyk7XG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJlZFNpemUgPSAocmVzdWx0LnJlc3VsdHMubGVuZ3RoKTtcblx0XHRcdFx0XHR0aGlzLm92ZXJmbG93ICAgICA9IChyZXN1bHQub3ZlcmZsb3cpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnJvciA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXCJTZXJ2aWNlIHJhaXNlZCBhbiBlcnJvciA6IFwiKyBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xuXHRcdFx0XHRcdHRoaXMuZGF0YSAgICA9IFtdO1xuXHRcdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMuZmFpbGVkICA9IHRydWU7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCBjb2xvcigpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gKHRoaXMub3ZlcmZsb3cpXG5cdFx0XHRcdFx0PyAnb3JhbmdlJ1xuXHRcdFx0XHRcdDogJ3NsYXRlJztcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLSBMb2NhbGl6YXRpb24gc3R1ZmZcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Z2V0IGV4cG9ydFNlbFRvb2x0aXAoKSA6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubG9jKFwiZXhwb3J0U2VsLnRvb2x0aXBcIik7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRnZXQgZXhwb3J0QWxsVG9vbHRpcCgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJleHBvcnRBbGwudG9vbHRpcFwiKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCByZWZyZXNoVG9vbHRpcCgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJyZWZyZXNoLnRvb2x0aXBcIik7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gTGlmZWN5Y2xlIGV2ZW50c1xuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLnJlZnJlc2goKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBMaXN0VGFibGUgZXZlbnRzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdG9uRmlsdGVyQ2hhbmdlKGV2ZW50IDogRmlsdGVyQ2hhbmdlRXZlbnQpIHtcblx0XHR0aGlzLmZpbHRlcmVkU2l6ZSA9IGV2ZW50LmZpbHRlcmVkU2l6ZTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdG9uUm93U2VsZWN0KGV2ZW50IDogUm93U2VsZWN0ZWRFdmVudCkge1xuXHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KGV2ZW50LnJvdyk7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRvblJvd1Vuc2VsZWN0KGV2ZW50IDogUm93VW5zZWxlY3RlZEV2ZW50KSB7XG5cdFx0dGhpcy5vblJvd1Vuc2VsZWN0ZWQuZW1pdChldmVudC5yb3cpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIFByaXZhdGUgbWV0aG9kc1xuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRwcml2YXRlIGxvYyhjb2RlIDogc3RyaW5nKSA6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubGFiZWxTZXJ2aWNlLmdldExhYmVsKFwibGlzdC1wYW5lbFwiLCBjb2RlKTtcblx0fVxufVxuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iXX0=