UNPKG

tp-window

Version:
175 lines (165 loc) 19.3 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/animations'), require('@angular/common'), require('@angular/material'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/progress-bar'), require('@angular/material/menu'), require('@angular/cdk/portal')) : typeof define === 'function' && define.amd ? define('tp-window', ['exports', '@angular/core', '@angular/animations', '@angular/common', '@angular/material', '@angular/material/icon', '@angular/material/button', '@angular/material/progress-bar', '@angular/material/menu', '@angular/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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