UNPKG

ngx-manage

Version:

- angular class descriptor and state

224 lines 18.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component } from '@angular/core'; import { Input } from '@angular/core'; import { TemplateService } from './template.service'; import { BaseValueType, BaseValueProp } from './descriptor'; var BaseComponent = /** @class */ (function () { function BaseComponent(template) { this.template = template; this.values = []; } /** * @return {?} */ BaseComponent.prototype.ngOnInit = /** * @return {?} */ function () { // <pre>{{Value | json}}</pre> var _this = this; this.template.getTemplates().subscribe((/** * @param {?} message * @return {?} */ function (message) { var e_1, _a; if (message) { //console.log('subscribe',this); /** @type {?} */ var _base_ = message.Template[BaseValueType.Text]; _this.error = message.Template[BaseValueType.Error]; _this.descriptor = _this._value !== undefined ? Object.getOwnPropertyDescriptor(_this._value.__proto__.__proto__, message.Shema) : undefined; /** @type {?} */ var all = []; /** @type {?} */ var overwriteProp = _this.owner ? _this.owner.prop : undefined; if (_this.descriptor && _this.descriptor.value) { /** @type {?} */ var v = _this.descriptor.value; try { for (var _b = tslib_1.__values(v.list), _c = _b.next(); !_c.done; _c = _b.next()) { var name = _c.value; /** @type {?} */ var descriptor = v.hash[name]; /** @type {?} */ var template = void 0; if (descriptor.param.type == BaseValueType.Custom && descriptor.param.template) { template = message.Template[descriptor.param.template]; } else { template = message.Template[descriptor.param.type]; } template = template || _base_; if (descriptor.param.prop !== BaseValueProp.None) { /** @type {?} */ var prop = descriptor.param.prop == BaseValueProp.Input ? (overwriteProp && overwriteProp == BaseValueProp.Disabled ? BaseValueProp.Disabled : descriptor.param.prop) : descriptor.param.prop; all.push({ value: { target: _this._value, prop: prop, name: name, owner: _this.owner, param: descriptor.param, uid: Math.random().toString(36).substring(2) + Date.now().toString(36), /** * @return {?} */ get value() { return this.target[this.name]; }, /** * @param {?} value * @return {?} */ set value(value) { this.target[this.name] = value; } }, template: template }); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } } _this.values = all; } })); }; /** * @return {?} */ BaseComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { }; BaseComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-base', template: "<table class=\"table table-scroll\">\n <tr *ngFor=\"let data of values\">\n <ng-template \n [ngIf]=\"data.template\" \n [ngTemplateOutlet]=\"data.template\" \n [ngTemplateOutletContext]=\"{ $implicit: data.value }\"\n >\n </ng-template>\n </tr>\n</table>\n<div *ngIf=\"values.length==0 && error\">\n <ng-template \n [ngIf]=\"error\" \n [ngTemplateOutlet]=\"error\" \n [ngTemplateOutletContext]=\"{ $implicit: _value }\"\n >\n </ng-template>\n</div>\n", styles: [""] }] } ]; /** @nocollapse */ BaseComponent.ctorParameters = function () { return [ { type: TemplateService } ]; }; BaseComponent.propDecorators = { _value: [{ type: Input, args: ['value',] }], owner: [{ type: Input, args: ['owner',] }] }; return BaseComponent; }()); export { BaseComponent }; if (false) { /** @type {?} */ BaseComponent.prototype._value; /** @type {?} */ BaseComponent.prototype.owner; /** * @type {?} * @private */ BaseComponent.prototype.descriptor; /** @type {?} */ BaseComponent.prototype.values; /** @type {?} */ BaseComponent.prototype.error; /** * @type {?} * @private */ BaseComponent.prototype.template; } var TemplateBaseComponent = /** @class */ (function () { function TemplateBaseComponent() { } /** * @param {?} value * @return {?} */ TemplateBaseComponent.prototype.isDisabled = /** * @param {?} value * @return {?} */ function (value) { return value.prop == BaseValueProp.Disabled; }; /** * @param {?} value * @return {?} */ TemplateBaseComponent.prototype.isHidden = /** * @param {?} value * @return {?} */ function (value) { return value.prop == BaseValueProp.Hidden; }; /** * @param {?} value * @return {?} */ TemplateBaseComponent.prototype.isInput = /** * @param {?} value * @return {?} */ function (value) { return value.prop == BaseValueProp.Input; }; /** * @param {?} value * @return {?} */ TemplateBaseComponent.prototype.isText = /** * @param {?} value * @return {?} */ function (value) { return value.prop == BaseValueProp.Text; }; /** * @return {?} */ TemplateBaseComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.disabled = this.Value.prop == BaseValueProp.Disabled; if (this.Value.prop == BaseValueProp.Input || this.Value.prop == BaseValueProp.Disabled) { this.type = "text"; } else if (this.Value.prop == BaseValueProp.Hidden) { this.type = "hidden"; } }; TemplateBaseComponent.propDecorators = { Value: [{ type: Input, args: ['value',] }], Owner: [{ type: Input, args: ['owner',] }] }; return TemplateBaseComponent; }()); export { TemplateBaseComponent }; if (false) { /** @type {?} */ TemplateBaseComponent.prototype.Value; /** @type {?} */ TemplateBaseComponent.prototype.Owner; /** @type {?} */ TemplateBaseComponent.prototype.type; /** @type {?} */ TemplateBaseComponent.prototype.disabled; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtbWFuYWdlLyIsInNvdXJjZXMiOlsibGliL2Jhc2UvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQWEsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSXZFO0lBYUUsdUJBQW9CLFFBQXdCO1FBQXhCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBSnJDLFdBQU0sR0FBYyxFQUFFLENBQUM7SUFNOUIsQ0FBQzs7OztJQUVELGdDQUFROzs7SUFBUjtRQUVFLCtCQUErQjtRQUZqQyxpQkE4REM7UUExREMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQ3BDLFVBQUMsT0FBTzs7WUFDSixJQUFHLE9BQU8sRUFDVjs7O29CQUVRLE1BQU0sR0FBb0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUNwRSxLQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuRCxLQUFJLENBQUMsVUFBVSxHQUFHLEtBQUksQ0FBQyxNQUFNLEtBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDOztvQkFDbkksR0FBRyxHQUFHLEVBQUU7O29CQUNOLGFBQWEsR0FBRyxLQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFFOUQsSUFBRyxLQUFJLENBQUMsVUFBVSxJQUFJLEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUMzQzs7d0JBQ1EsQ0FBQyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsS0FBSzs7d0JBRS9CLEtBQWdCLElBQUEsS0FBQSxpQkFBQSxDQUFDLENBQUMsSUFBSSxDQUFBLGdCQUFBLDRCQUN0Qjs0QkFESSxJQUFJLElBQUksV0FBQTs7Z0NBRUosVUFBVSxHQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOztnQ0FDckMsUUFBUSxTQUFBOzRCQUNaLElBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUUsYUFBYSxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDM0U7Z0NBQ0UsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDeEQ7aUNBRUQ7Z0NBQ0UsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDcEQ7NEJBQ0QsUUFBUSxHQUFHLFFBQVEsSUFBSSxNQUFNLENBQUM7NEJBRzlCLElBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUcsYUFBYSxDQUFDLElBQUksRUFDN0M7O29DQUNNLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksSUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7b0NBQ3JELENBQUMsYUFBYSxJQUFJLGFBQWEsSUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQ0FDekcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSTtnQ0FFekIsR0FBRyxDQUFDLElBQUksQ0FBQztvQ0FDUCxLQUFLLEVBQVE7d0NBQ1gsTUFBTSxFQUFJLEtBQUksQ0FBQyxNQUFNO3dDQUNyQixJQUFJLEVBQU0sSUFBSTt3Q0FDZCxJQUFJLEVBQU0sSUFBSTt3Q0FDZCxLQUFLLEVBQUssS0FBSSxDQUFDLEtBQUs7d0NBQ3BCLEtBQUssRUFBSyxVQUFVLENBQUMsS0FBSzt3Q0FDMUIsR0FBRyxFQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDOzs7O3dDQUMzRSxJQUFJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUEsQ0FBQzs7Ozs7d0NBQzVDLElBQUksS0FBSyxDQUFDLEtBQUs7NENBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFBO3dDQUNsQyxDQUFDO3FDQUNGO29DQUNELFFBQVEsRUFBSyxRQUFRO2lDQUN0QixDQUFDLENBQUM7NkJBQ0o7eUJBQ0Y7Ozs7Ozs7OztpQkFDRjtnQkFDRCxLQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQzthQUNuQjtRQUNMLENBQUMsRUFDRixDQUFDO0lBQ0osQ0FBQzs7OztJQUVELHVDQUFlOzs7SUFBZjtJQUNBLENBQUM7O2dCQWxGRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLHNpQkFBb0M7O2lCQUVyQzs7OztnQkFUUSxlQUFlOzs7eUJBV3JCLEtBQUssU0FBQyxPQUFPO3dCQUNiLEtBQUssU0FBQyxPQUFPOztJQTRFaEIsb0JBQUM7Q0FBQSxBQW5GRCxJQW1GQztTQTlFWSxhQUFhOzs7SUFDeEIsK0JBQTZCOztJQUM3Qiw4QkFBbUM7Ozs7O0lBQ25DLG1DQUFzQzs7SUFDdEMsK0JBQThCOztJQUU5Qiw4QkFBOEI7Ozs7O0lBRWxCLGlDQUFnQzs7QUF3RTlDO0lBT0U7SUFBYyxDQUFDOzs7OztJQUNmLDBDQUFVOzs7O0lBQVYsVUFBVyxLQUFLO1FBRWQsT0FBTyxLQUFLLENBQUMsSUFBSSxJQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDNUMsQ0FBQzs7Ozs7SUFDRCx3Q0FBUTs7OztJQUFSLFVBQVMsS0FBSztRQUVaLE9BQU8sS0FBSyxDQUFDLElBQUksSUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7Ozs7O0lBQ0QsdUNBQU87Ozs7SUFBUCxVQUFRLEtBQUs7UUFFWCxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUN6QyxDQUFDOzs7OztJQUNELHNDQUFNOzs7O0lBQU4sVUFBTyxLQUFLO1FBRVYsT0FBTyxLQUFLLENBQUMsSUFBSSxJQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDeEMsQ0FBQzs7OztJQUNELHdDQUFROzs7SUFBUjtRQUVFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUN4RCxJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFFLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUUsYUFBYSxDQUFDLFFBQVEsRUFDbEY7WUFDRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztTQUNwQjthQUNJLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUUsYUFBYSxDQUFDLE1BQU0sRUFDN0M7WUFDRSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztTQUN0QjtJQUNILENBQUM7O3dCQWpDQSxLQUFLLFNBQUMsT0FBTzt3QkFDYixLQUFLLFNBQUMsT0FBTzs7SUFrQ2hCLDRCQUFDO0NBQUEsQUFyQ0QsSUFxQ0M7U0FyQ1kscUJBQXFCOzs7SUFFaEMsc0NBQTRCOztJQUM1QixzQ0FBbUM7O0lBQ25DLHFDQUFZOztJQUNaLHlDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuL3RlbXBsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVZhbHVlVHlwZSwgQmFzZVZhbHVlLCBCYXNlVmFsdWVQcm9wIH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1iYXNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXNlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCd2YWx1ZScpIF92YWx1ZSA6IGFueTtcbiAgQElucHV0KCdvd25lcicpIHB1YmxpYyBvd25lciA6IGFueTtcbiAgcHJpdmF0ZSBkZXNjcmlwdG9yOlByb3BlcnR5RGVzY3JpcHRvcjtcbiAgcHVibGljIHZhbHVlczpBcnJheTxhbnk+ID0gW107XG4gIFxuICBwdWJsaWMgZXJyb3I6VGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbXBsYXRlOlRlbXBsYXRlU2VydmljZSkgXG4gIHsgXG4gIH1cblxuICBuZ09uSW5pdCgpIFxuICB7XG4gICAgLy8gIDxwcmU+e3tWYWx1ZSB8IGpzb259fTwvcHJlPlxuXG4gICAgdGhpcy50ZW1wbGF0ZS5nZXRUZW1wbGF0ZXMoKS5zdWJzY3JpYmUoXG4gICAgICAobWVzc2FnZSk9PntcbiAgICAgICAgICBpZihtZXNzYWdlKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ3N1YnNjcmliZScsdGhpcyk7XG4gICAgICAgICAgICBjb25zdCBfYmFzZV86VGVtcGxhdGVSZWY8YW55PiA9IG1lc3NhZ2UuVGVtcGxhdGVbQmFzZVZhbHVlVHlwZS5UZXh0XTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSBtZXNzYWdlLlRlbXBsYXRlW0Jhc2VWYWx1ZVR5cGUuRXJyb3JdO1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5fdmFsdWUhPT11bmRlZmluZWQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuX3ZhbHVlLl9fcHJvdG9fXy5fX3Byb3RvX18sbWVzc2FnZS5TaGVtYSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB2YXIgYWxsID0gW107XG4gICAgICAgICAgICBjb25zdCBvdmVyd3JpdGVQcm9wID0gdGhpcy5vd25lciA/IHRoaXMub3duZXIucHJvcCA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgaWYodGhpcy5kZXNjcmlwdG9yICYmIHRoaXMuZGVzY3JpcHRvci52YWx1ZSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZGVzY3JpcHRvci52YWx1ZTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGZvcih2YXIgbmFtZSBvZiB2Lmxpc3QpXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXNjcmlwdG9yOkJhc2VWYWx1ZSA9IHYuaGFzaFtuYW1lXTtcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgaWYoZGVzY3JpcHRvci5wYXJhbS50eXBlPT1CYXNlVmFsdWVUeXBlLkN1c3RvbSAmJiBkZXNjcmlwdG9yLnBhcmFtLnRlbXBsYXRlKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gbWVzc2FnZS5UZW1wbGF0ZVtkZXNjcmlwdG9yLnBhcmFtLnRlbXBsYXRlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gbWVzc2FnZS5UZW1wbGF0ZVtkZXNjcmlwdG9yLnBhcmFtLnR5cGVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlIHx8IF9iYXNlXztcbiAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICBpZihkZXNjcmlwdG9yLnBhcmFtLnByb3AhPT1CYXNlVmFsdWVQcm9wLk5vbmUpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbGV0IHByb3AgPSBkZXNjcmlwdG9yLnBhcmFtLnByb3A9PUJhc2VWYWx1ZVByb3AuSW5wdXQgP1xuICAgICAgICAgICAgICAgICAgICAob3ZlcndyaXRlUHJvcCAmJiBvdmVyd3JpdGVQcm9wPT1CYXNlVmFsdWVQcm9wLkRpc2FibGVkID8gQmFzZVZhbHVlUHJvcC5EaXNhYmxlZCA6IGRlc2NyaXB0b3IucGFyYW0ucHJvcClcbiAgICAgICAgICAgICAgICAgICAgOiBkZXNjcmlwdG9yLnBhcmFtLnByb3A7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIGFsbC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgIDogdGhpcy5fdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcCAgICA6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZSAgICA6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgb3duZXIgICA6IHRoaXMub3duZXIsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW0gICA6IGRlc2NyaXB0b3IucGFyYW0sXG4gICAgICAgICAgICAgICAgICAgICAgdWlkICAgICA6IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKSArIERhdGUubm93KCkudG9TdHJpbmcoMzYpLFxuICAgICAgICAgICAgICAgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMudGFyZ2V0W3RoaXMubmFtZV19LFxuICAgICAgICAgICAgICAgICAgICAgIHNldCB2YWx1ZSh2YWx1ZSkgeyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRbdGhpcy5uYW1lXSA9IHZhbHVlIFxuICAgICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlICAgOiB0ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IGFsbDtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgndmFsdWUnKSBWYWx1ZSA6IGFueTtcbiAgQElucHV0KCdvd25lcicpIHB1YmxpYyBPd25lciA6IGFueTtcbiAgdHlwZTpzdHJpbmc7XG4gIHB1YmxpYyBkaXNhYmxlZDpCb29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCl7fVxuICBpc0Rpc2FibGVkKHZhbHVlKTpCb29sZWFuXG4gIHtcbiAgICByZXR1cm4gdmFsdWUucHJvcD09QmFzZVZhbHVlUHJvcC5EaXNhYmxlZDtcbiAgfVxuICBpc0hpZGRlbih2YWx1ZSk6Qm9vbGVhblxuICB7XG4gICAgcmV0dXJuIHZhbHVlLnByb3A9PUJhc2VWYWx1ZVByb3AuSGlkZGVuO1xuICB9XG4gIGlzSW5wdXQodmFsdWUpOkJvb2xlYW5cbiAge1xuICAgIHJldHVybiB2YWx1ZS5wcm9wPT1CYXNlVmFsdWVQcm9wLklucHV0O1xuICB9XG4gIGlzVGV4dCh2YWx1ZSk6Qm9vbGVhblxuICB7XG4gICAgcmV0dXJuIHZhbHVlLnByb3A9PUJhc2VWYWx1ZVByb3AuVGV4dDtcbiAgfVxuICBuZ09uSW5pdCgpIFxuICB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuVmFsdWUucHJvcD09QmFzZVZhbHVlUHJvcC5EaXNhYmxlZDtcbiAgICBpZih0aGlzLlZhbHVlLnByb3A9PUJhc2VWYWx1ZVByb3AuSW5wdXQgfHwgdGhpcy5WYWx1ZS5wcm9wPT1CYXNlVmFsdWVQcm9wLkRpc2FibGVkKVxuICAgIHtcbiAgICAgIHRoaXMudHlwZSA9IFwidGV4dFwiO1xuICAgIH1cbiAgICBlbHNlIGlmKHRoaXMuVmFsdWUucHJvcD09QmFzZVZhbHVlUHJvcC5IaWRkZW4pXG4gICAge1xuICAgICAgdGhpcy50eXBlID0gXCJoaWRkZW5cIjtcbiAgICB9XG4gIH1cblxufSJdfQ==