tp-window
Version:
ThingsPro window component UI
175 lines (165 loc) • 19.3 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('/core'), require('@angular/animations'), require('/common'), require('@angular/material'), require('/material/icon'), require('/material/button'), require('/material/progress-bar'), require('/material/menu'), require('/cdk/portal')) :
typeof define === 'function' && define.amd ? define('tp-window', ['exports', '/core', '@angular/animations', '/common', '@angular/material', '/material/icon', '/material/button', '/material/progress-bar', '/material/menu', '/cdk/portal'], factory) :
(factory((global['tp-window'] = {}),global.ng.core,global.ng.animations,global.ng.common,global.ng.material,global.ng.material.icon,global.ng.material.button,global.ng.material['progress-bar'],global.ng.material.menu,global.ng.cdk.portal));
}(this, (function (exports,core,animations,common,material,icon,button,progressBar,menu,portal) { 'use strict';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var WindowStateComponent = (function () {
function WindowStateComponent() {
}
WindowStateComponent.decorators = [
{ type: core.Component, args: [{
selector: 'tp-window-state',
template: "\n <ng-template #templateRef>\n <ng-content></ng-content>\n </ng-template>\n ",
inputs: ['name', 'icon', 'type']
},] },
];
WindowStateComponent.propDecorators = {
templateRef: [{ type: core.ViewChild, args: ['templateRef',] }],
type: [{ type: core.Input }]
};
return WindowStateComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var /** @type {?} */ fadeOutAnimation = animations.trigger('fadeOut', [
animations.state('in', animations.style({ opacity: 1 })),
animations.transition('* => void', [
animations.animate(500, animations.style({ opacity: 0 }))
])
]);
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var WindowComponent = (function () {
function WindowComponent() {
this.maxStateNumber = 5;
this.stateChange = new core.EventEmitter();
this.isShowLoading = false;
}
Object.defineProperty(WindowComponent.prototype, "loading", {
set: /**
* @param {?} loading
* @return {?}
*/ function (loading) {
var _this = this;
if (loading) {
this.isShowLoading = true;
loading.subscribe(function () {
_this.isShowLoading = false;
});
}
},
enumerable: true,
configurable: true
});
/**
* @param {?} portal
* @return {?}
*/
WindowComponent.prototype.setPortal = /**
* @param {?} portal
* @return {?}
*/
function (portal$$1) {
this.optionPortal = portal$$1;
};
/**
* @return {?}
*/
WindowComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
this.currentState = this.states.first;
};
/**
* @param {?} state
* @return {?}
*/
WindowComponent.prototype.navigate = /**
* @param {?} state
* @return {?}
*/
function (state) {
if (state.type !== 'Button') {
this.currentState = state;
}
this.stateChange.emit(state);
};
WindowComponent.decorators = [
{ type: core.Component, args: [{
selector: 'tp-window',
template: "<div class=\"tp-window\">\n <mat-toolbar>\n <p class=\"mat-body-2 toolbar-title\">{{name}}</p>\n <div class=\"toolbar-flex\"></div>\n <ng-template [cdkPortalOutlet]=\"optionPortal\"></ng-template>\n <ng-template [ngIf]=\"states.length <= maxStateNumber\">\n <ng-container *ngFor=\"let state of states\">\n <button *ngIf=\"state.type !== 'Content'\" mat-icon-button (click)=\"navigate(state)\" matTooltip=\"{{state.name}}\">\n <mat-icon>{{state.icon}}</mat-icon>\n </button>\n </ng-container>\n </ng-template>\n\n <ng-template [ngIf]=\"states.length > maxStateNumber\">\n <ng-container *ngFor=\"let state of states\">\n <button *ngIf=\"state.type === 'Button'\" mat-icon-button (click)=\"navigate(state)\" matTooltip=\"{{state.name}}\">\n <mat-icon>{{state.icon}}</mat-icon>\n </button>\n </ng-container>\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let state of states\">\n <button *ngIf=\"state.type === 'State'\" mat-menu-item (click)=\"navigate(state)\">\n <mat-icon>{{state.icon}}</mat-icon>\n <span>{{state.name}}</span>\n </button>\n </ng-container>\n </mat-menu>\n </ng-template>\n\n </mat-toolbar>\n <div class=\"loading\">\n <mat-progress-bar *ngIf=\"isShowLoading\" [@fadeOut]=\"'in'\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n <div class=\"content padding\">\n <div *ngTemplateOutlet=\"currentState.templateRef\"></div>\n </div>\n <ng-content></ng-content>\n</div>\n",
styles: [".tp-window{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.tp-window mat-toolbar .toolbar-title{color:#9e9e9e}.tp-window mat-toolbar .toolbar-flex{flex:1}.tp-window button{color:#9e9e9e;transition:background ease-out .2s}.tp-window button:hover{background-color:#e0e0e0}.tp-window .padding{padding:1em 1.5em}.tp-window .loading{height:10px}"],
inputs: ['name'],
exportAs: 'tpWindow',
animations: [fadeOutAnimation]
},] },
];
WindowComponent.propDecorators = {
loadingRef: [{ type: core.ViewChild, args: ['loadingPortal',] }],
states: [{ type: core.ContentChildren, args: [WindowStateComponent,] }],
loading: [{ type: core.Input }],
maxStateNumber: [{ type: core.Input }],
optionPortal: [{ type: core.Input }],
stateChange: [{ type: core.Output }]
};
return WindowComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
var WindowModule = (function () {
function WindowModule() {
}
WindowModule.decorators = [
{ type: core.NgModule, args: [{
imports: [
portal.PortalModule,
menu.MatMenuModule,
progressBar.MatProgressBarModule,
button.MatButtonModule,
icon.MatIconModule,
material.MatTooltipModule,
common.CommonModule,
material.MatToolbarModule
],
declarations: [WindowComponent, WindowStateComponent],
exports: [WindowComponent, WindowStateComponent]
},] },
];
return WindowModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/** @enum {number} */
var stateType = {
Button: 0,
Content: 1,
State: 2,
};
stateType[stateType.Button] = "Button";
stateType[stateType.Content] = "Content";
stateType[stateType.State] = "State";
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
exports.stateType = stateType;
exports.WindowComponent = WindowComponent;
exports.WindowModule = WindowModule;
exports.ɵb = fadeOutAnimation;
exports.ɵa = WindowStateComponent;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtd2luZG93LnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vdHAtd2luZG93L2xpYi90cC13aW5kb3cuc3RhdGUuY29tcG9uZW50LnRzIiwibmc6Ly90cC13aW5kb3cvbGliL3RwLXdpbmRvdy5hbmltYXRpb24udHMiLCJuZzovL3RwLXdpbmRvdy9saWIvdHAtd2luZG93LmNvbXBvbmVudC50cyIsIm5nOi8vdHAtd2luZG93L2xpYi90cC13aW5kb3cubW9kdWxlLnRzIiwibmc6Ly90cC13aW5kb3cvcHVibGljX2FwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5leHBvcnQgdHlwZSBzdGF0ZVR5cGUgPSAnQnV0dG9uJyB8ICdDb250ZW50JyB8ICdTdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RwLXdpbmRvdy1zdGF0ZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVJlZj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBpbnB1dHM6IFsnbmFtZScsICdpY29uJywgJ3R5cGUnXVxufSlcblxuZXhwb3J0IGNsYXNzIFdpbmRvd1N0YXRlQ29tcG9uZW50IHtcblxuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZVJlZicpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKVxuICB0eXBlOiBzdGF0ZVR5cGU7XG4gIG5hbWU6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xufVxuIiwiaW1wb3J0IHtcbiAgdHJpZ2dlcixcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICBhbmltYXRlLFxuICB0cmFuc2l0aW9uLFxuICBBbmltYXRpb25UcmlnZ2VyTWV0YWRhdGFcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBmYWRlT3V0QW5pbWF0aW9uOkFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YSA9IHRyaWdnZXIoJ2ZhZGVPdXQnLCBbXG4gIHN0YXRlKCdpbicsIHN0eWxlKHtvcGFjaXR5OiAxfSkpLFxuICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBbXG4gICAgYW5pbWF0ZSg1MDAsIHN0eWxlKHtvcGFjaXR5OiAwfSkpXG4gIF0pXG5dKVxuIiwiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQsIFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgV2luZG93U3RhdGVDb21wb25lbnQsc3RhdGVUeXBlIH0gZnJvbSAnLi90cC13aW5kb3cuc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZhZGVPdXRBbmltYXRpb24gfSBmcm9tICcuL3RwLXdpbmRvdy5hbmltYXRpb24nO1xuZXhwb3J0IHsgc3RhdGVUeXBlIH0gZnJvbSAnLi90cC13aW5kb3cuc3RhdGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndHAtd2luZG93JyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwidHAtd2luZG93XCI+XG4gIDxtYXQtdG9vbGJhcj5cbiAgICA8cCBjbGFzcz1cIm1hdC1ib2R5LTIgdG9vbGJhci10aXRsZVwiPnt7bmFtZX19PC9wPlxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLWZsZXhcIj48L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIm9wdGlvblBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwic3RhdGVzLmxlbmd0aCA8PSBtYXhTdGF0ZU51bWJlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGF0ZSBvZiBzdGF0ZXNcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3RhdGUudHlwZSAhPT0gJ0NvbnRlbnQnXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJuYXZpZ2F0ZShzdGF0ZSlcIiBtYXRUb29sdGlwPVwie3tzdGF0ZS5uYW1lfX1cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj57e3N0YXRlLmljb259fTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInN0YXRlcy5sZW5ndGggPiBtYXhTdGF0ZU51bWJlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGF0ZSBvZiBzdGF0ZXNcIj5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3RhdGUudHlwZSA9PT0gJ0J1dHRvbidcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm5hdmlnYXRlKHN0YXRlKVwiIG1hdFRvb2x0aXA9XCJ7e3N0YXRlLm5hbWV9fVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPnt7c3RhdGUuaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgICAgICAgPG1hdC1pY29uPm1vcmVfaG9yaXo8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN0YXRlIG9mIHN0YXRlc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInN0YXRlLnR5cGUgPT09ICdTdGF0ZSdcIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJuYXZpZ2F0ZShzdGF0ZSlcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3RhdGUuaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3tzdGF0ZS5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgPC9tYXQtdG9vbGJhcj5cbiAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIj5cbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzU2hvd0xvYWRpbmdcIiBbQGZhZGVPdXRdPVwiJ2luJ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQgcGFkZGluZ1wiPlxuICAgIDxkaXYgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXJyZW50U3RhdGUudGVtcGxhdGVSZWZcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuYCxcbiAgc3R5bGVzOiBbYC50cC13aW5kb3d7Ym94LXNoYWRvdzowIDFweCAzcHggMCByZ2JhKDAsMCwwLC4yKSwwIDFweCAxcHggMCByZ2JhKDAsMCwwLC4xNCksMCAycHggMXB4IC0xcHggcmdiYSgwLDAsMCwuMTIpfS50cC13aW5kb3cgbWF0LXRvb2xiYXIgLnRvb2xiYXItdGl0bGV7Y29sb3I6IzllOWU5ZX0udHAtd2luZG93IG1hdC10b29sYmFyIC50b29sYmFyLWZsZXh7ZmxleDoxfS50cC13aW5kb3cgYnV0dG9ue2NvbG9yOiM5ZTllOWU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIGVhc2Utb3V0IC4yc30udHAtd2luZG93IGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTB9LnRwLXdpbmRvdyAucGFkZGluZ3twYWRkaW5nOjFlbSAxLjVlbX0udHAtd2luZG93IC5sb2FkaW5ne2hlaWdodDoxMHB4fWBdLFxuICBpbnB1dHM6IFsnbmFtZSddLFxuICBleHBvcnRBczogJ3RwV2luZG93JyxcbiAgYW5pbWF0aW9uczogW2ZhZGVPdXRBbmltYXRpb25dXG59KVxuZXhwb3J0IGNsYXNzIFdpbmRvd0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBAVmlld0NoaWxkKCdsb2FkaW5nUG9ydGFsJykgbG9hZGluZ1JlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZHJlbihXaW5kb3dTdGF0ZUNvbXBvbmVudCkgc3RhdGVzOiBRdWVyeUxpc3Q8V2luZG93U3RhdGVDb21wb25lbnQ+O1xuICBASW5wdXQoKVxuICBzZXQgbG9hZGluZyhsb2FkaW5nOk9ic2VydmFibGU8YW55Pikge1xuICAgIGlmKGxvYWRpbmcpIHtcbiAgICAgIHRoaXMuaXNTaG93TG9hZGluZyA9IHRydWU7XG4gICAgICBsb2FkaW5nLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNTaG93TG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIG1heFN0YXRlTnVtYmVyOiBudW1iZXIgPSA1O1xuICBASW5wdXQoKSBvcHRpb25Qb3J0YWw6IFBvcnRhbDxhbnk+IHwgdW5kZWZpbmVkO1xuICBAT3V0cHV0KCkgc3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxXaW5kb3dTdGF0ZUNvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFdpbmRvd1N0YXRlQ29tcG9uZW50PigpO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbnRTdGF0ZTogV2luZG93U3RhdGVDb21wb25lbnQ7XG4gIGlzU2hvd0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBzZXRQb3J0YWwocG9ydGFsOiBQb3J0YWw8YW55Pikge1xuICAgIHRoaXMub3B0aW9uUG9ydGFsID0gcG9ydGFsO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuY3VycmVudFN0YXRlID0gdGhpcy5zdGF0ZXMuZmlyc3Q7XG4gIH1cblxuICBuYXZpZ2F0ZShzdGF0ZTogV2luZG93U3RhdGVDb21wb25lbnQpIHtcbiAgICBpZihzdGF0ZS50eXBlICE9PSAnQnV0dG9uJykge1xuICAgICAgdGhpcy5jdXJyZW50U3RhdGUgPSBzdGF0ZTtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHN0YXRlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBXaW5kb3dDb21wb25lbnQgfSBmcm9tICcuL3RwLXdpbmRvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2luZG93U3RhdGVDb21wb25lbnQgfSBmcm9tICcuL3RwLXdpbmRvdy5zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdFRvb2xiYXJNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtXaW5kb3dDb21wb25lbnQsIFdpbmRvd1N0YXRlQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1dpbmRvd0NvbXBvbmVudCwgV2luZG93U3RhdGVDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFdpbmRvd01vZHVsZSB7IH1cbiIsImV4cG9ydCAqIGZyb20gJy4vbGliL3RwLXdpbmRvdy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHAtd2luZG93Lm1vZHVsZSc7XG5leHBvcnQgZW51bSBzdGF0ZVR5cGUge1xuICBCdXR0b24sIENvbnRlbnQsIFN0YXRlXG59XG4iXSwibmFtZXMiOlsiQ29tcG9uZW50IiwiVmlld0NoaWxkIiwiSW5wdXQiLCJ0cmlnZ2VyIiwic3RhdGUiLCJzdHlsZSIsInRyYW5zaXRpb24iLCJhbmltYXRlIiwiRXZlbnRFbWl0dGVyIiwicG9ydGFsIiwiQ29udGVudENoaWxkcmVuIiwiT3V0cHV0IiwiTmdNb2R1bGUiLCJQb3J0YWxNb2R1bGUiLCJNYXRNZW51TW9kdWxlIiwiTWF0UHJvZ3Jlc3NCYXJNb2R1bGUiLCJNYXRCdXR0b25Nb2R1bGUiLCJNYXRJY29uTW9kdWxlIiwiTWF0VG9vbHRpcE1vZHVsZSIsIkNvbW1vbk1vZHVsZSIsIk1hdFRvb2xiYXJNb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7Oztv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