UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

200 lines (199 loc) 19.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core'; import { WizardModel } from '../model/WizardModel'; import { PhloxAppService } from '../../service/PhloxAppService.service'; import { AbstractWizardPane } from './AbstractWizardPane'; import { Option } from '../../decorator/Option.decorator'; import { I18N } from '../../decorator/I18N.decorator'; var /** @type {?} */ TYPE_NAME = "phx-pagination-wizard-pane"; var PaginationWizardPane = /** @class */ (function (_super) { tslib_1.__extends(PaginationWizardPane, _super); function PaginationWizardPane(appSvc, elementRef) { return _super.call(this, appSvc, elementRef) || this; } /** * @return {?} */ PaginationWizardPane.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); }; /** * @param {?} index * @return {?} */ PaginationWizardPane.prototype.showStepContent = /** * @param {?} index * @return {?} */ function (index) { }; /** * @param {?} index * @return {?} */ PaginationWizardPane.prototype.getStepInstance = /** * @param {?} index * @return {?} */ function (index) { }; PaginationWizardPane.TYPE_NAME = TYPE_NAME; PaginationWizardPane.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: "<div class=\"phx-pagination-wizard-pane\">\n\t<div class=\"left\" [style.padding-top]=\"getHeaderHeight() + 'pt'\" [style.padding-bottom]=\"getFooterHeight() + 'pt'\">\n\t\t<div class=\"header\" [style.height]=\"getHeaderHeight() + 'pt'\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().header !== null\">\n\t\t\t\t<ng-template [ngIf]=\"getModel().header.type === null\">\n\t\t\t\t\t<div *ngIf=\"getModel().header.imageURL !== null && getModel().header.imageURL !== ''\" class=\"header-image\">\n\t\t\t\t\t\t<img src=\"{{getModel().header.imageURL}}\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"header-label\">{{getModel().header.label}}</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template [ngIf]=\"getModel().header.type !== null\">\n\t\t\t\t\t<phx-component-wrapper [type]=\"getModel().header.type\" [data]=\"getModel().header.model\"></phx-component-wrapper>\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div class=\"body\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().steps !== null\">\n\t\t\t\t<div *ngFor=\"let item of getModel().steps; let i = index;\" class=\"step\" [class.active]=\"isStepSelected(i)\" >\n\t\t\t\t\t<ng-template [ngIf]=\"item.type === null\">\n\t\t\t\t\t\t<div (click)=\"stepSelected(i)\"> {{item.label}} </div>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template [ngIf]=\"item.type !== null\">\n\t\t\t\t\t\t<phx-component-wrapper [type]=\"item.type\" [data]=\"item.model\" (click)=\"stepSelected(i)\"></phx-component-wrapper>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div class=\"footer\" [style.height]=\"getFooterHeight() + 'pt'\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().footer !== null\">\n\t\t\t\t<ng-template [ngIf]=\"getModel().footer.type === null\">\n\t\t\t\t\t{{getModel().footer.label}}\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template [ngIf]=\"getModel().footer.type !== null\">\n\t\t\t\t\t<phx-component-wrapper [type]=\"getModel().footer.type\" [data]=\"getModel().footer.model\"></phx-component-wrapper>\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</div>\n\t</div>\n\t<div class=\"right\">\n\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().steps !== null\">\n\t\t\t<!-- <phx-component-wrapper *ngFor=\"let item of model.steps; let i = index;\" [class.active]=\"isStepSelected(i)\" [type]=\"item.componentType\"\n\t\t\t\t[data]=\"data\" [model]=\"item.componentModel\" [dataParent]=\"this\" [handler]=\"stepsComponentHandler\"></phx-component-wrapper> -->\n\t\t\t\t<phx-component-wrapper *ngFor=\"let item of getModel().steps; let i = index;\" [class.active]=\"isStepSelected(i)\" [type]=\"item.componentType\"\n\t\t\t\t\t[data]=\"getData()\" [model]=\"item.componentModel\" [options]=\"item.componentOptions\" [dataParent]=\"this\"></phx-component-wrapper>\n\t\t</ng-template>\n\t</div>\n</div>\n" },] }, ]; /** @nocollapse */ PaginationWizardPane.ctorParameters = function () { return [ { type: PhloxAppService, }, { type: ElementRef, }, ]; }; PaginationWizardPane.propDecorators = { "help": [{ type: Input },], "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "model": [{ type: Input },], "field": [{ type: Input },], "loadEvent": [{ type: Output, args: ['phxLoad',] },], "changeEvent": [{ type: Output, args: ['phxChange',] },], "beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },], }; tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Object) ], PaginationWizardPane.prototype, "help", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], PaginationWizardPane.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], PaginationWizardPane.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], PaginationWizardPane.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], PaginationWizardPane.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], PaginationWizardPane.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], PaginationWizardPane.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], PaginationWizardPane.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], PaginationWizardPane.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], PaginationWizardPane.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], PaginationWizardPane.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], PaginationWizardPane.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", WizardModel) ], PaginationWizardPane.prototype, "model", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], PaginationWizardPane.prototype, "field", void 0); tslib_1.__decorate([ Option('load'), tslib_1.__metadata("design:type", EventEmitter) ], PaginationWizardPane.prototype, "loadEvent", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], PaginationWizardPane.prototype, "changeEvent", void 0); tslib_1.__decorate([ Option('beforeChange'), tslib_1.__metadata("design:type", EventEmitter) ], PaginationWizardPane.prototype, "beforeChangeEvent", void 0); return PaginationWizardPane; }(AbstractWizardPane)); export { PaginationWizardPane }; function PaginationWizardPane_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ PaginationWizardPane.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ PaginationWizardPane.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ PaginationWizardPane.propDecorators; /** @type {?} */ PaginationWizardPane.TYPE_NAME; /** @type {?} */ PaginationWizardPane.prototype.help; /** @type {?} */ PaginationWizardPane.prototype.dataParent; /** @type {?} */ PaginationWizardPane.prototype.ignoreParentData; /** @type {?} */ PaginationWizardPane.prototype.data; /** @type {?} */ PaginationWizardPane.prototype.ignoreParentDisabled; /** @type {?} */ PaginationWizardPane.prototype.delegateHistory; /** @type {?} */ PaginationWizardPane.prototype.onDisabled; /** @type {?} */ PaginationWizardPane.prototype.onEnabled; /** @type {?} */ PaginationWizardPane.prototype.loadingEnabled; /** @type {?} */ PaginationWizardPane.prototype.i18nKey; /** @type {?} */ PaginationWizardPane.prototype.bypass; /** @type {?} */ PaginationWizardPane.prototype.options; /** @type {?} */ PaginationWizardPane.prototype.disabled; /** @type {?} */ PaginationWizardPane.prototype.model; /** @type {?} */ PaginationWizardPane.prototype.field; /** @type {?} */ PaginationWizardPane.prototype.loadEvent; /** @type {?} */ PaginationWizardPane.prototype.changeEvent; /** @type {?} */ PaginationWizardPane.prototype.beforeChangeEvent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdGlvbldpemFyZFBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L1BhZ2luYXRpb25XaXphcmRQYW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUl0RCxxQkFBTSxTQUFTLEdBQVcsNEJBQTRCLENBQUM7O0lBc0RiLGdEQUFrQjtJQW9FMUQsOEJBQVksTUFBdUIsRUFBRSxVQUFzQjtlQUN6RCxrQkFBTSxNQUFNLEVBQUUsVUFBVSxDQUFDO0tBQzFCOzs7O0lBRU0sdUNBQVE7Ozs7UUFDYixpQkFBTSxRQUFRLFdBQUUsQ0FBQzs7Ozs7O0lBR1osOENBQWU7Ozs7Y0FBQyxLQUFhOzs7OztJQUU3Qiw4Q0FBZTs7OztjQUFDLEtBQWE7cUNBNUVPLFNBQVM7O2dCQXREckQsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxxekZBK0NYO2lCQUNBOzs7O2dCQWhFUSxlQUFlO2dCQUZJLFVBQVU7Ozt5QkF5RW5DLEtBQUs7K0JBS0wsS0FBSztxQ0FHTCxLQUFLO3lCQUdMLEtBQUs7eUNBR0wsS0FBSztvQ0FHTCxLQUFLOytCQUdMLEtBQUs7OEJBR0wsS0FBSzttQ0FHTCxLQUFLOzRCQUdMLEtBQUs7MkJBR0wsS0FBSyxTQUFDLFlBQVk7NEJBR2xCLEtBQUs7NkJBRUwsS0FBSzswQkFJTCxLQUFLOzBCQUlMLEtBQUs7OEJBTUwsTUFBTSxTQUFDLFNBQVM7Z0NBSWhCLE1BQU0sU0FBQyxXQUFXO3NDQUdsQixNQUFNLFNBQUMsaUJBQWlCOzs7UUF6RHhCLElBQUksRUFBRTtRQUNOLE1BQU0sRUFBRTs7OztRQUlSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTswQ0FDYSxRQUFROzs7UUFFN0IsTUFBTSxFQUFFOzBDQUNZLFFBQVE7OztRQUU1QixNQUFNLEVBQUU7Ozs7UUFHUixNQUFNLEVBQUU7Ozs7UUFHUixNQUFNLENBQUMsWUFBWSxDQUFDOzs7O1FBS3BCLE1BQU0sRUFBRTs7OztRQUlSLE1BQU0sRUFBRTswQ0FDUSxXQUFXOzs7UUFHM0IsTUFBTSxFQUFFOzs7O1FBTVIsTUFBTSxDQUFDLE1BQU0sQ0FBQzswQ0FDTSxZQUFZOzs7UUFHaEMsTUFBTSxDQUFDLFFBQVEsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFbEMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FDTSxZQUFZOzsrQkFySTNDO0VBbUUwQyxrQkFBa0I7U0FBL0Msb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaXphcmRNb2RlbCB9IGZyb20gJy4uL21vZGVsL1dpemFyZE1vZGVsJztcbmltcG9ydCB7IFBobG94QXBwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvUGhsb3hBcHBTZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUhhc01vZGVsIH0gZnJvbSAnLi4vSUhhc01vZGVsJztcbmltcG9ydCB7IElIYXNEYXRhIH0gZnJvbSAnLi4vSUhhc0RhdGEnO1xuaW1wb3J0IHsgUGhsb3hBcHAgfSBmcm9tICcuLi9QaGxveEFwcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RXaXphcmRQYW5lIH0gZnJvbSAnLi9BYnN0cmFjdFdpemFyZFBhbmUnO1xuaW1wb3J0IHsgSUNoYW5nZWFibGUgfSBmcm9tICcuLi9JQ2hhbmdlYWJsZSc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL0kxOE4uZGVjb3JhdG9yJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LXBhZ2luYXRpb24td2l6YXJkLXBhbmVcIjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1wYWdpbmF0aW9uLXdpemFyZC1wYW5lXCI+XG5cdDxkaXYgY2xhc3M9XCJsZWZ0XCIgW3N0eWxlLnBhZGRpbmctdG9wXT1cImdldEhlYWRlckhlaWdodCgpICsgJ3B0J1wiIFtzdHlsZS5wYWRkaW5nLWJvdHRvbV09XCJnZXRGb290ZXJIZWlnaHQoKSArICdwdCdcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgW3N0eWxlLmhlaWdodF09XCJnZXRIZWFkZXJIZWlnaHQoKSArICdwdCdcIj5cblx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpICE9PSBudWxsICYmIGdldE1vZGVsKCkuaGVhZGVyICE9PSBudWxsXCI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpLmhlYWRlci50eXBlID09PSBudWxsXCI+XG5cdFx0XHRcdFx0PGRpdiAqbmdJZj1cImdldE1vZGVsKCkuaGVhZGVyLmltYWdlVVJMICE9PSBudWxsICYmIGdldE1vZGVsKCkuaGVhZGVyLmltYWdlVVJMICE9PSAnJ1wiIGNsYXNzPVwiaGVhZGVyLWltYWdlXCI+XG5cdFx0XHRcdFx0XHQ8aW1nIHNyYz1cInt7Z2V0TW9kZWwoKS5oZWFkZXIuaW1hZ2VVUkx9fVwiPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJoZWFkZXItbGFiZWxcIj57e2dldE1vZGVsKCkuaGVhZGVyLmxhYmVsfX08L2Rpdj5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkuaGVhZGVyLnR5cGUgIT09IG51bGxcIj5cblx0XHRcdFx0XHQ8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cImdldE1vZGVsKCkuaGVhZGVyLnR5cGVcIiBbZGF0YV09XCJnZXRNb2RlbCgpLmhlYWRlci5tb2RlbFwiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiYm9keVwiPlxuXHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkgIT09IG51bGwgJiYgZ2V0TW9kZWwoKS5zdGVwcyAhPT0gbnVsbFwiPlxuXHRcdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE1vZGVsKCkuc3RlcHM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJzdGVwXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N0ZXBTZWxlY3RlZChpKVwiID5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiaXRlbS50eXBlID09PSBudWxsXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IChjbGljayk9XCJzdGVwU2VsZWN0ZWQoaSlcIj4ge3tpdGVtLmxhYmVsfX0gPC9kaXY+XG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiaXRlbS50eXBlICE9PSBudWxsXCI+XG5cdFx0XHRcdFx0XHQ8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cIml0ZW0udHlwZVwiIFtkYXRhXT1cIml0ZW0ubW9kZWxcIiAoY2xpY2spPVwic3RlcFNlbGVjdGVkKGkpXCI+PC9waHgtY29tcG9uZW50LXdyYXBwZXI+XG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJmb290ZXJcIiBbc3R5bGUuaGVpZ2h0XT1cImdldEZvb3RlckhlaWdodCgpICsgJ3B0J1wiPlxuXHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkgIT09IG51bGwgJiYgZ2V0TW9kZWwoKS5mb290ZXIgIT09IG51bGxcIj5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkuZm9vdGVyLnR5cGUgPT09IG51bGxcIj5cblx0XHRcdFx0XHR7e2dldE1vZGVsKCkuZm9vdGVyLmxhYmVsfX1cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkuZm9vdGVyLnR5cGUgIT09IG51bGxcIj5cblx0XHRcdFx0XHQ8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cImdldE1vZGVsKCkuZm9vdGVyLnR5cGVcIiBbZGF0YV09XCJnZXRNb2RlbCgpLmZvb3Rlci5tb2RlbFwiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuXHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpICE9PSBudWxsICYmIGdldE1vZGVsKCkuc3RlcHMgIT09IG51bGxcIj5cblx0XHRcdDwhLS0gPHBoeC1jb21wb25lbnQtd3JhcHBlciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtb2RlbC5zdGVwczsgbGV0IGkgPSBpbmRleDtcIiBbY2xhc3MuYWN0aXZlXT1cImlzU3RlcFNlbGVjdGVkKGkpXCIgW3R5cGVdPVwiaXRlbS5jb21wb25lbnRUeXBlXCJcblx0XHRcdFx0W2RhdGFdPVwiZGF0YVwiIFttb2RlbF09XCJpdGVtLmNvbXBvbmVudE1vZGVsXCIgW2RhdGFQYXJlbnRdPVwidGhpc1wiIFtoYW5kbGVyXT1cInN0ZXBzQ29tcG9uZW50SGFuZGxlclwiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPiAtLT5cblx0XHRcdFx0PHBoeC1jb21wb25lbnQtd3JhcHBlciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRNb2RlbCgpLnN0ZXBzOyBsZXQgaSA9IGluZGV4O1wiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdGVwU2VsZWN0ZWQoaSlcIiBbdHlwZV09XCJpdGVtLmNvbXBvbmVudFR5cGVcIlxuXHRcdFx0XHRcdFtkYXRhXT1cImdldERhdGEoKVwiIFttb2RlbF09XCJpdGVtLmNvbXBvbmVudE1vZGVsXCIgW29wdGlvbnNdPVwiaXRlbS5jb21wb25lbnRPcHRpb25zXCIgW2RhdGFQYXJlbnRdPVwidGhpc1wiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdDwvZGl2PlxuPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25XaXphcmRQYW5lIGV4dGVuZHMgQWJzdHJhY3RXaXphcmRQYW5lIGltcGxlbWVudHMgT25Jbml0LCBJSGFzTW9kZWwsIElDaGFuZ2VhYmxlIHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBASW5wdXQuXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YUhlbHBcbiAgQElucHV0KClcbiAgQEkxOE4oKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGhlbHA6IGFueTtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGVsZWdhdGVIaXN0b3J5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIG9uRGlzYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIG9uRW5hYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgbG9hZGluZ0VuYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaTE4bktleTogc3RyaW5nO1xuICBASW5wdXQoJ2kxOG5CeXBhc3MnKVxuICBAT3B0aW9uKCdpMThuQnlwYXNzJylcbiAgcHJvdGVjdGVkIGJ5cGFzczogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IGFueTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkaXNhYmxlZDogYm9vbGVhbjtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RXaXphcmRQYW5lXG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgbW9kZWw6IFdpemFyZE1vZGVsO1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdERhdGFWaWV3XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZmllbGQ6IHN0cmluZztcblxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQE91dHB1dC5cbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXG4gIEBPdXRwdXQoJ3BoeExvYWQnKVxuICBAT3B0aW9uKCdsb2FkJylcbiAgcHJvdGVjdGVkIGxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0V2l6YXJkUGFuZVxuICBAT3V0cHV0KCdwaHhDaGFuZ2UnKVxuICBAT3B0aW9uKCdjaGFuZ2UnKVxuICBwcm90ZWN0ZWQgY2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhCZWZvcmVDaGFuZ2UnKVxuICBAT3B0aW9uKCdiZWZvcmVDaGFuZ2UnKVxuICBwcm90ZWN0ZWQgYmVmb3JlQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGFwcFN2YzogUGhsb3hBcHBTZXJ2aWNlLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoYXBwU3ZjLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIHNob3dTdGVwQ29udGVudChpbmRleDogbnVtYmVyKTogdm9pZCB7IH1cblxuICBwdWJsaWMgZ2V0U3RlcEluc3RhbmNlKGluZGV4OiBudW1iZXIpOiBhbnkgeyB9XG59XG4iXX0=