UNPKG

ng-flexmonster

Version:

Angular 5-15 wrapper for Flexmonster Pivot Table and Charts

235 lines (229 loc) 31.4 kB
import { Component, ElementRef, Input, Output, EventEmitter, NgModule } from '@angular/core'; import * as Flexmonster from 'flexmonster'; import { CommonModule } from '@angular/common'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ var FlexmonsterPivot = /** @class */ (function () { function FlexmonsterPivot(el) { // events this.cellclick = new EventEmitter(); this.celldoubleclick = new EventEmitter(); this.chartclick = new EventEmitter(); this.dataerror = new EventEmitter(); this.datafilecancelled = new EventEmitter(); this.dataloaded = new EventEmitter(); this.datachanged = new EventEmitter(); this.fieldslistclose = new EventEmitter(); this.fieldslistopen = new EventEmitter(); this.filterclose = new EventEmitter(); this.filteropen = new EventEmitter(); this.drillthroughopen = new EventEmitter(); this.exportcomplete = new EventEmitter(); this.exportstart = new EventEmitter(); this.drillthroughclose = new EventEmitter(); this.fullscreen = new EventEmitter(); this.loadingdata = new EventEmitter(); this.loadinglocalization = new EventEmitter(); this.loadingolapstructure = new EventEmitter(); this.loadingreportfile = new EventEmitter(); this.localizationerror = new EventEmitter(); this.localizationloaded = new EventEmitter(); this.olapstructureerror = new EventEmitter(); this.olapstructureloaded = new EventEmitter(); this.openingreportfile = new EventEmitter(); this.printcomplete = new EventEmitter(); this.printstart = new EventEmitter(); this.querycomplete = new EventEmitter(); this.queryerror = new EventEmitter(); this.ready = new EventEmitter(); this.reportchange = new EventEmitter(); this.reportcomplete = new EventEmitter(); this.reportfilecancelled = new EventEmitter(); this.reportfileerror = new EventEmitter(); this.runningquery = new EventEmitter(); this.unauthorizederror = new EventEmitter(); this.update = new EventEmitter(); this.beforetoolbarcreated = new EventEmitter(); this.beforegriddraw = new EventEmitter(); this.aftergriddraw = new EventEmitter(); this.afterchartdraw = new EventEmitter(); this.root = (/** @type {?} */ (el.nativeElement)); } /** * @return {?} */ FlexmonsterPivot.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.flexmonster = new Flexmonster({ container: this.root.getElementsByClassName('fm-ng-wrapper')[0], componentFolder: this.componentFolder, width: this.width, height: this.height, toolbar: this.toolbar, licenseKey: this.licenseKey, licenseFilePath: this.licenseFilePath, report: this.report, global: this.global, accessibility: this.accessibility, shareReportConnection: this.shareReportConnection, customizeAPIRequest: this.customizeAPIRequest, customizeCell: this.customizeCell, customizeChartElement: this.customizeChartElement, customizeContextMenu: this.customizeContextMenu, sortFieldsList: this.sortFieldsList, cellclick: function (cell) { return _this.cellclick.next(cell); }, celldoubleclick: function (cell) { return _this.celldoubleclick.next(cell); }, chartclick: function (event) { return _this.chartclick.next(event); }, datachanged: function (event) { return _this.datachanged.next(event); }, dataerror: function (event) { return _this.dataerror.next(event); }, datafilecancelled: function () { return _this.datafilecancelled.next(); }, dataloaded: function () { return _this.dataloaded.next(); }, fieldslistclose: function () { return _this.fieldslistclose.next(); }, fieldslistopen: function () { return _this.fieldslistopen.next(); }, filterclose: function () { return _this.filterclose.next(); }, filteropen: function (event) { return _this.filteropen.next(event); }, drillthroughopen: function (cell) { return _this.drillthroughopen.next(cell); }, exportcomplete: function () { return _this.exportcomplete.next(); }, exportstart: function () { return _this.exportstart.next(); }, drillthroughclose: function () { return _this.drillthroughclose.next(); }, loadingdata: function () { return _this.loadingdata.next(); }, loadinglocalization: function () { return _this.loadinglocalization.next(); }, loadingolapstructure: function () { return _this.loadingolapstructure.next(); }, loadingreportfile: function () { return _this.loadingreportfile.next(); }, localizationerror: function () { return _this.localizationerror.next(); }, localizationloaded: function () { return _this.localizationloaded.next(); }, olapstructureerror: function (event) { return _this.olapstructureerror.next(event); }, olapstructureloaded: function () { return _this.olapstructureloaded.next(); }, openingreportfile: function () { return _this.openingreportfile.next(); }, printcomplete: function () { return _this.printcomplete.next(); }, printstart: function () { return _this.printstart.next(); }, querycomplete: function () { return _this.querycomplete.next(); }, queryerror: function (event) { return _this.queryerror.next(event); }, ready: function () { return _this.ready.next(_this.flexmonster); }, reportchange: function () { return _this.reportchange.next(); }, reportcomplete: function () { return _this.reportcomplete.next(); }, reportfilecancelled: function () { return _this.reportfilecancelled.next(); }, reportfileerror: function () { return _this.reportfileerror.next(); }, runningquery: function () { return _this.runningquery.next(); }, unauthorizederror: function (done) { return _this.unauthorizederror.next(done); }, update: function () { return _this.update.next(); }, beforetoolbarcreated: function (toolbar) { return _this.beforetoolbarcreated.next(toolbar); }, beforegriddraw: function (event) { return _this.beforegriddraw.next(event); }, aftergriddraw: function (event) { return _this.aftergriddraw.next(event); }, afterchartdraw: function () { return _this.afterchartdraw.next(); } }); }; /** * @return {?} */ FlexmonsterPivot.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.flexmonster) { this.flexmonster.dispose(); this.flexmonster = null; } }; FlexmonsterPivot.decorators = [ { type: Component, args: [{ selector: 'fm-pivot', template: '<div style="width:100%;height:100%;"><div class="fm-ng-wrapper"></div></div>' },] }, ]; FlexmonsterPivot.ctorParameters = function () { return [ { type: ElementRef } ]; }; FlexmonsterPivot.propDecorators = { toolbar: [{ type: Input }], licenseKey: [{ type: Input }], licenseFilePath: [{ type: Input }], width: [{ type: Input }], height: [{ type: Input }], componentFolder: [{ type: Input }], report: [{ type: Input }], shareReportConnection: [{ type: Input }], global: [{ type: Input }], accessibility: [{ type: Input }], customizeAPIRequest: [{ type: Input }], customizeCell: [{ type: Input }], customizeChartElement: [{ type: Input }], customizeContextMenu: [{ type: Input }], sortFieldsList: [{ type: Input }], cellclick: [{ type: Output }], celldoubleclick: [{ type: Output }], chartclick: [{ type: Output }], dataerror: [{ type: Output }], datafilecancelled: [{ type: Output }], dataloaded: [{ type: Output }], datachanged: [{ type: Output }], fieldslistclose: [{ type: Output }], fieldslistopen: [{ type: Output }], filterclose: [{ type: Output }], filteropen: [{ type: Output }], drillthroughopen: [{ type: Output }], exportcomplete: [{ type: Output }], exportstart: [{ type: Output }], drillthroughclose: [{ type: Output }], fullscreen: [{ type: Output }], loadingdata: [{ type: Output }], loadinglocalization: [{ type: Output }], loadingolapstructure: [{ type: Output }], loadingreportfile: [{ type: Output }], localizationerror: [{ type: Output }], localizationloaded: [{ type: Output }], olapstructureerror: [{ type: Output }], olapstructureloaded: [{ type: Output }], openingreportfile: [{ type: Output }], printcomplete: [{ type: Output }], printstart: [{ type: Output }], querycomplete: [{ type: Output }], queryerror: [{ type: Output }], ready: [{ type: Output }], reportchange: [{ type: Output }], reportcomplete: [{ type: Output }], reportfilecancelled: [{ type: Output }], reportfileerror: [{ type: Output }], runningquery: [{ type: Output }], unauthorizederror: [{ type: Output }], update: [{ type: Output }], beforetoolbarcreated: [{ type: Output }], beforegriddraw: [{ type: Output }], aftergriddraw: [{ type: Output }], afterchartdraw: [{ type: Output }] }; return FlexmonsterPivot; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ var FlexmonsterPivotModule = /** @class */ (function () { function FlexmonsterPivotModule() { } FlexmonsterPivotModule.decorators = [ { type: NgModule, args: [{ imports: [ CommonModule ], declarations: [FlexmonsterPivot], exports: [FlexmonsterPivot] },] }, ]; return FlexmonsterPivotModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ export { FlexmonsterPivotModule, FlexmonsterPivot }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmxleG1vbnN0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL25nLWZsZXhtb25zdGVyL2ZsZXhtb25zdGVyLmNvbXBvbmVudC50cyIsIm5nOi8vbmctZmxleG1vbnN0ZXIvZmxleG1vbnN0ZXIubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgRmxleG1vbnN0ZXIgZnJvbSAnZmxleG1vbnN0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmbS1waXZvdCcsXHJcbiAgdGVtcGxhdGU6ICc8ZGl2IHN0eWxlPVwid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtcIj48ZGl2IGNsYXNzPVwiZm0tbmctd3JhcHBlclwiPjwvZGl2PjwvZGl2PidcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsZXhtb25zdGVyUGl2b3QgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIC8vIHBhcmFtc1xyXG4gIEBJbnB1dCgpIHRvb2xiYXI6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGljZW5zZUtleTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KCkgbGljZW5zZUZpbGVQYXRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKSBjb21wb25lbnRGb2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSByZXBvcnQ6IEZsZXhtb25zdGVyLlJlcG9ydCB8IHN0cmluZztcclxuICBASW5wdXQoKSBzaGFyZVJlcG9ydENvbm5lY3Rpb246IEZsZXhtb25zdGVyLkFQSUNsaWVudE9wdGlvbnM7XHJcbiAgQElucHV0KCkgZ2xvYmFsOiBGbGV4bW9uc3Rlci5SZXBvcnQ7XHJcbiAgQElucHV0KCkgYWNjZXNzaWJpbGl0eTogRmxleG1vbnN0ZXIuQWNjZXNzaWJpbGl0eU9wdGlvbnM7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQVBJUmVxdWVzdDogKHJlcXVlc3Q6IE9iamVjdCkgPT4gT2JqZWN0O1xyXG4gIEBJbnB1dCgpIGN1c3RvbWl6ZUNlbGw6IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsQnVpbGRlciwgZGF0YTogRmxleG1vbnN0ZXIuQ2VsbERhdGEpID0+IHZvaWQ7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQ2hhcnRFbGVtZW50OiAoZWxlbWVudDogRWxlbWVudCwgZGF0YTogRmxleG1vbnN0ZXIuQ2hhcnREYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnRMZWdlbmRJdGVtRGF0YSkgPT4gdm9pZDtcclxuICBASW5wdXQoKSBjdXN0b21pemVDb250ZXh0TWVudTogKGNlbGw6IEZsZXhtb25zdGVyLkNvbnRleHRNZW51SXRlbVtdLCBkYXRhOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSwgdmlld1R5cGU6IHN0cmluZykgPT4gRmxleG1vbnN0ZXIuQ29udGV4dE1lbnVJdGVtW107XHJcbiAgQElucHV0KCkgc29ydEZpZWxkc0xpc3Q6IChmaXJzdDogRmxleG1vbnN0ZXIuRmllbGRzTGlzdFNvcnRpbmdJdGVtLCBzZWNvbmQ6IEZsZXhtb25zdGVyLkZpZWxkc0xpc3RTb3J0aW5nSXRlbSwgZmllbGRzTGlzdFR5cGU6IHN0cmluZykgPT4gbnVtYmVyO1xyXG5cclxuICAvLyBldmVudHNcclxuICBAT3V0cHV0KCkgY2VsbGNsaWNrOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuQ2VsbERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjZWxsZG91YmxlY2xpY2s6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DZWxsRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYXJ0Y2xpY2s6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DaGFydERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhZXJyb3I6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5FcnJvckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWZpbGVjYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhY2hhbmdlZDogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpZWxkc2xpc3RjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZHNsaXN0b3BlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJvcGVuOiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJpbGx0aHJvdWdob3BlbjogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLkNlbGxEYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnREYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0c3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJpbGx0aHJvdWdoY2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZnVsbHNjcmVlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nZGF0YTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nbG9jYWxpemF0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvYWRpbmdvbGFwc3RydWN0dXJlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvYWRpbmdyZXBvcnRmaWxlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvY2FsaXphdGlvbmVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvY2FsaXphdGlvbmxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbGFwc3RydWN0dXJlZXJyb3I6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5FcnJvckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb2xhcHN0cnVjdHVyZWxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuaW5ncmVwb3J0ZmlsZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwcmludGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHByaW50c3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcXVlcnljb21wbGV0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeWVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuRXJyb3JFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlYWR5OiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuUGl2b3Q+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZXBvcnRjaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0ZmlsZWNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZXBvcnRmaWxlZXJyb3I6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcnVubmluZ3F1ZXJ5OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVuYXV0aG9yaXplZGVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuVW5hdXRob3JpemVkRXJyb3JIYW5kbGVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZXRvb2xiYXJjcmVhdGVkOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuVG9vbGJhcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZWdyaWRkcmF3OiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJncmlkZHJhdzogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyY2hhcnRkcmF3OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLy8gYXBpXHJcbiAgcHVibGljIGZsZXhtb25zdGVyOiBGbGV4bW9uc3Rlci5QaXZvdDtcclxuICAvLyBwcml2YXRlXHJcbiAgcHJpdmF0ZSByb290OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMucm9vdCA9IDxIVE1MRWxlbWVudD5lbC5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmZsZXhtb25zdGVyID0gbmV3IEZsZXhtb25zdGVyKHtcclxuICAgICAgY29udGFpbmVyOiB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm0tbmctd3JhcHBlcicpWzBdLFxyXG4gICAgICBjb21wb25lbnRGb2xkZXI6IHRoaXMuY29tcG9uZW50Rm9sZGVyLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgICAgdG9vbGJhcjogdGhpcy50b29sYmFyLFxyXG4gICAgICBsaWNlbnNlS2V5OiB0aGlzLmxpY2Vuc2VLZXksXHJcbiAgICAgIGxpY2Vuc2VGaWxlUGF0aDogdGhpcy5saWNlbnNlRmlsZVBhdGgsXHJcbiAgICAgIHJlcG9ydDogdGhpcy5yZXBvcnQsXHJcbiAgICAgIGdsb2JhbDogdGhpcy5nbG9iYWwsXHJcbiAgICAgIGFjY2Vzc2liaWxpdHk6IHRoaXMuYWNjZXNzaWJpbGl0eSxcclxuICAgICAgc2hhcmVSZXBvcnRDb25uZWN0aW9uOiB0aGlzLnNoYXJlUmVwb3J0Q29ubmVjdGlvbixcclxuICAgICAgY3VzdG9taXplQVBJUmVxdWVzdDogdGhpcy5jdXN0b21pemVBUElSZXF1ZXN0LFxyXG4gICAgICBjdXN0b21pemVDZWxsOiB0aGlzLmN1c3RvbWl6ZUNlbGwsXHJcbiAgICAgIGN1c3RvbWl6ZUNoYXJ0RWxlbWVudDogdGhpcy5jdXN0b21pemVDaGFydEVsZW1lbnQsXHJcbiAgICAgIGN1c3RvbWl6ZUNvbnRleHRNZW51OiB0aGlzLmN1c3RvbWl6ZUNvbnRleHRNZW51LFxyXG4gICAgICBzb3J0RmllbGRzTGlzdDogdGhpcy5zb3J0RmllbGRzTGlzdCxcclxuICAgICAgY2VsbGNsaWNrOiAoY2VsbDogRmxleG1vbnN0ZXIuQ2VsbERhdGEpID0+IHRoaXMuY2VsbGNsaWNrLm5leHQoY2VsbCksXHJcbiAgICAgIGNlbGxkb3VibGVjbGljazogKGNlbGw6IEZsZXhtb25zdGVyLkNlbGxEYXRhKSA9PiB0aGlzLmNlbGxkb3VibGVjbGljay5uZXh0KGNlbGwpLFxyXG4gICAgICBjaGFydGNsaWNrOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSkgPT4gdGhpcy5jaGFydGNsaWNrLm5leHQoZXZlbnQpLFxyXG4gICAgICBkYXRhY2hhbmdlZDogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZGF0YWNoYW5nZWQubmV4dChldmVudCksXHJcbiAgICAgIGRhdGFlcnJvcjogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZGF0YWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICBkYXRhZmlsZWNhbmNlbGxlZDogKCkgPT4gdGhpcy5kYXRhZmlsZWNhbmNlbGxlZC5uZXh0KCksXHJcbiAgICAgIGRhdGFsb2FkZWQ6ICgpID0+IHRoaXMuZGF0YWxvYWRlZC5uZXh0KCksXHJcbiAgICAgIGZpZWxkc2xpc3RjbG9zZTogKCkgPT4gdGhpcy5maWVsZHNsaXN0Y2xvc2UubmV4dCgpLFxyXG4gICAgICBmaWVsZHNsaXN0b3BlbjogKCkgPT4gdGhpcy5maWVsZHNsaXN0b3Blbi5uZXh0KCksXHJcbiAgICAgIGZpbHRlcmNsb3NlOiAoKSA9PiB0aGlzLmZpbHRlcmNsb3NlLm5leHQoKSxcclxuICAgICAgZmlsdGVyb3BlbjogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZmlsdGVyb3Blbi5uZXh0KGV2ZW50KSxcclxuICAgICAgZHJpbGx0aHJvdWdob3BlbjogKGNlbGw6IEZsZXhtb25zdGVyLkNlbGxEYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnREYXRhKSA9PiB0aGlzLmRyaWxsdGhyb3VnaG9wZW4ubmV4dChjZWxsKSxcclxuICAgICAgZXhwb3J0Y29tcGxldGU6ICgpID0+IHRoaXMuZXhwb3J0Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICBleHBvcnRzdGFydDogKCkgPT4gdGhpcy5leHBvcnRzdGFydC5uZXh0KCksXHJcbiAgICAgIGRyaWxsdGhyb3VnaGNsb3NlOiAoKSA9PiB0aGlzLmRyaWxsdGhyb3VnaGNsb3NlLm5leHQoKSxcclxuICAgICAgbG9hZGluZ2RhdGE6ICgpID0+IHRoaXMubG9hZGluZ2RhdGEubmV4dCgpLFxyXG4gICAgICBsb2FkaW5nbG9jYWxpemF0aW9uOiAoKSA9PiB0aGlzLmxvYWRpbmdsb2NhbGl6YXRpb24ubmV4dCgpLFxyXG4gICAgICBsb2FkaW5nb2xhcHN0cnVjdHVyZTogKCkgPT4gdGhpcy5sb2FkaW5nb2xhcHN0cnVjdHVyZS5uZXh0KCksXHJcbiAgICAgIGxvYWRpbmdyZXBvcnRmaWxlOiAoKSA9PiB0aGlzLmxvYWRpbmdyZXBvcnRmaWxlLm5leHQoKSxcclxuICAgICAgbG9jYWxpemF0aW9uZXJyb3I6ICgpID0+IHRoaXMubG9jYWxpemF0aW9uZXJyb3IubmV4dCgpLFxyXG4gICAgICBsb2NhbGl6YXRpb25sb2FkZWQ6ICgpID0+IHRoaXMubG9jYWxpemF0aW9ubG9hZGVkLm5leHQoKSxcclxuICAgICAgb2xhcHN0cnVjdHVyZWVycm9yOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkVycm9yRXZlbnQpID0+IHRoaXMub2xhcHN0cnVjdHVyZWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICBvbGFwc3RydWN0dXJlbG9hZGVkOiAoKSA9PiB0aGlzLm9sYXBzdHJ1Y3R1cmVsb2FkZWQubmV4dCgpLFxyXG4gICAgICBvcGVuaW5ncmVwb3J0ZmlsZTogKCkgPT4gdGhpcy5vcGVuaW5ncmVwb3J0ZmlsZS5uZXh0KCksXHJcbiAgICAgIHByaW50Y29tcGxldGU6ICgpID0+IHRoaXMucHJpbnRjb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHByaW50c3RhcnQ6ICgpID0+IHRoaXMucHJpbnRzdGFydC5uZXh0KCksXHJcbiAgICAgIHF1ZXJ5Y29tcGxldGU6ICgpID0+IHRoaXMucXVlcnljb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHF1ZXJ5ZXJyb3I6IChldmVudDogRmxleG1vbnN0ZXIuRXJyb3JFdmVudCkgPT4gdGhpcy5xdWVyeWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICByZWFkeTogKCkgPT4gdGhpcy5yZWFkeS5uZXh0KHRoaXMuZmxleG1vbnN0ZXIpLFxyXG4gICAgICByZXBvcnRjaGFuZ2U6ICgpID0+IHRoaXMucmVwb3J0Y2hhbmdlLm5leHQoKSxcclxuICAgICAgcmVwb3J0Y29tcGxldGU6ICgpID0+IHRoaXMucmVwb3J0Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICByZXBvcnRmaWxlY2FuY2VsbGVkOiAoKSA9PiB0aGlzLnJlcG9ydGZpbGVjYW5jZWxsZWQubmV4dCgpLFxyXG4gICAgICByZXBvcnRmaWxlZXJyb3I6ICgpID0+IHRoaXMucmVwb3J0ZmlsZWVycm9yLm5leHQoKSxcclxuICAgICAgcnVubmluZ3F1ZXJ5OiAoKSA9PiB0aGlzLnJ1bm5pbmdxdWVyeS5uZXh0KCksXHJcbiAgICAgIHVuYXV0aG9yaXplZGVycm9yOiAoZG9uZTogRmxleG1vbnN0ZXIuVW5hdXRob3JpemVkRXJyb3JIYW5kbGVyKSA9PiB0aGlzLnVuYXV0aG9yaXplZGVycm9yLm5leHQoZG9uZSksXHJcbiAgICAgIHVwZGF0ZTogKCkgPT4gdGhpcy51cGRhdGUubmV4dCgpLFxyXG4gICAgICBiZWZvcmV0b29sYmFyY3JlYXRlZDogKHRvb2xiYXI6IEZsZXhtb25zdGVyLlRvb2xiYXIpID0+IHRoaXMuYmVmb3JldG9vbGJhcmNyZWF0ZWQubmV4dCh0b29sYmFyKSxcclxuICAgICAgYmVmb3JlZ3JpZGRyYXc6IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmJlZm9yZWdyaWRkcmF3Lm5leHQoZXZlbnQpLFxyXG4gICAgICBhZnRlcmdyaWRkcmF3OiAoZXZlbnQ6IE9iamVjdCkgPT4gdGhpcy5hZnRlcmdyaWRkcmF3Lm5leHQoZXZlbnQpLFxyXG4gICAgICBhZnRlcmNoYXJ0ZHJhdzogKCkgPT4gdGhpcy5hZnRlcmNoYXJ0ZHJhdy5uZXh0KClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLmZsZXhtb25zdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLmZsZXhtb25zdGVyLmRpc3Bvc2UoKTtcclxuICAgICAgICAgIHRoaXMuZmxleG1vbnN0ZXIgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZsZXhtb25zdGVyUGl2b3QgfSBmcm9tICcuL2ZsZXhtb25zdGVyLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbRmxleG1vbnN0ZXJQaXZvdF0sXHJcbiAgZXhwb3J0czogW0ZsZXhtb25zdGVyUGl2b3RdXHJcbn0pXHJc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