UNPKG

ng-flexmonster

Version:

Angular 4+ Module for Flexmonster Pivot Table & Charts

320 lines 35.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core'; import * as Flexmonster from 'flexmonster'; 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; }()); export { FlexmonsterPivot }; if (false) { /** @type {?} */ FlexmonsterPivot.prototype.toolbar; /** @type {?} */ FlexmonsterPivot.prototype.licenseKey; /** @type {?} */ FlexmonsterPivot.prototype.licenseFilePath; /** @type {?} */ FlexmonsterPivot.prototype.width; /** @type {?} */ FlexmonsterPivot.prototype.height; /** @type {?} */ FlexmonsterPivot.prototype.componentFolder; /** @type {?} */ FlexmonsterPivot.prototype.report; /** @type {?} */ FlexmonsterPivot.prototype.shareReportConnection; /** @type {?} */ FlexmonsterPivot.prototype.global; /** @type {?} */ FlexmonsterPivot.prototype.accessibility; /** @type {?} */ FlexmonsterPivot.prototype.customizeAPIRequest; /** @type {?} */ FlexmonsterPivot.prototype.customizeCell; /** @type {?} */ FlexmonsterPivot.prototype.customizeChartElement; /** @type {?} */ FlexmonsterPivot.prototype.customizeContextMenu; /** @type {?} */ FlexmonsterPivot.prototype.sortFieldsList; /** @type {?} */ FlexmonsterPivot.prototype.cellclick; /** @type {?} */ FlexmonsterPivot.prototype.celldoubleclick; /** @type {?} */ FlexmonsterPivot.prototype.chartclick; /** @type {?} */ FlexmonsterPivot.prototype.dataerror; /** @type {?} */ FlexmonsterPivot.prototype.datafilecancelled; /** @type {?} */ FlexmonsterPivot.prototype.dataloaded; /** @type {?} */ FlexmonsterPivot.prototype.datachanged; /** @type {?} */ FlexmonsterPivot.prototype.fieldslistclose; /** @type {?} */ FlexmonsterPivot.prototype.fieldslistopen; /** @type {?} */ FlexmonsterPivot.prototype.filterclose; /** @type {?} */ FlexmonsterPivot.prototype.filteropen; /** @type {?} */ FlexmonsterPivot.prototype.drillthroughopen; /** @type {?} */ FlexmonsterPivot.prototype.exportcomplete; /** @type {?} */ FlexmonsterPivot.prototype.exportstart; /** @type {?} */ FlexmonsterPivot.prototype.drillthroughclose; /** @type {?} */ FlexmonsterPivot.prototype.fullscreen; /** @type {?} */ FlexmonsterPivot.prototype.loadingdata; /** @type {?} */ FlexmonsterPivot.prototype.loadinglocalization; /** @type {?} */ FlexmonsterPivot.prototype.loadingolapstructure; /** @type {?} */ FlexmonsterPivot.prototype.loadingreportfile; /** @type {?} */ FlexmonsterPivot.prototype.localizationerror; /** @type {?} */ FlexmonsterPivot.prototype.localizationloaded; /** @type {?} */ FlexmonsterPivot.prototype.olapstructureerror; /** @type {?} */ FlexmonsterPivot.prototype.olapstructureloaded; /** @type {?} */ FlexmonsterPivot.prototype.openingreportfile; /** @type {?} */ FlexmonsterPivot.prototype.printcomplete; /** @type {?} */ FlexmonsterPivot.prototype.printstart; /** @type {?} */ FlexmonsterPivot.prototype.querycomplete; /** @type {?} */ FlexmonsterPivot.prototype.queryerror; /** @type {?} */ FlexmonsterPivot.prototype.ready; /** @type {?} */ FlexmonsterPivot.prototype.reportchange; /** @type {?} */ FlexmonsterPivot.prototype.reportcomplete; /** @type {?} */ FlexmonsterPivot.prototype.reportfilecancelled; /** @type {?} */ FlexmonsterPivot.prototype.reportfileerror; /** @type {?} */ FlexmonsterPivot.prototype.runningquery; /** @type {?} */ FlexmonsterPivot.prototype.unauthorizederror; /** @type {?} */ FlexmonsterPivot.prototype.update; /** @type {?} */ FlexmonsterPivot.prototype.beforetoolbarcreated; /** @type {?} */ FlexmonsterPivot.prototype.beforegriddraw; /** @type {?} */ FlexmonsterPivot.prototype.aftergriddraw; /** @type {?} */ FlexmonsterPivot.prototype.afterchartdraw; /** @type {?} */ FlexmonsterPivot.prototype.flexmonster; /** @type {?} */ FlexmonsterPivot.prototype.root; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleG1vbnN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZmxleG1vbnN0ZXIvIiwic291cmNlcyI6WyJmbGV4bW9uc3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sS0FBSyxXQUFXLE1BQU0sYUFBYSxDQUFDO0FBRTNDO0lBcUVFLDBCQUFZLEVBQWM7UUEvQzFCLFNBQVM7UUFDQyxjQUFTLEdBQXVDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkUsb0JBQWUsR0FBdUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RSxlQUFVLEdBQXdDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckUsY0FBUyxHQUF5QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JFLHNCQUFpQixHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNELGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZELG9CQUFlLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4RCxnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxxQkFBZ0IsR0FBK0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsRyxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsc0JBQWlCLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0QsZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBRSxD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bEUsK0NBQXVFOztJQUN2RSwyQ0FBbUU7O0lBQ25FLHdDQUFnRTs7SUFDaEUsNkNBQXFHOztJQUNyRyxrQ0FBMEQ7O0lBQzFELGdEQUF1Rjs7SUFDdkYsMENBQW9FOztJQUNwRSx5Q0FBbUU7O0lBQ25FLDBDQUFrRTs7SUFFbEUsdUNBQXNDOztJQUV0QyxnQ0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZsZXhtb25zdGVyIGZyb20gJ2ZsZXhtb25zdGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm0tcGl2b3QnLFxyXG4gIHRlbXBsYXRlOiAnPGRpdiBzdHlsZT1cIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7XCI+PGRpdiBjbGFzcz1cImZtLW5nLXdyYXBwZXJcIj48L2Rpdj48L2Rpdj4nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGV4bW9uc3RlclBpdm90IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvLyBwYXJhbXNcclxuICBASW5wdXQoKSB0b29sYmFyOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxpY2Vuc2VLZXk6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGxpY2Vuc2VGaWxlUGF0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgQElucHV0KCkgY29tcG9uZW50Rm9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmVwb3J0OiBGbGV4bW9uc3Rlci5SZXBvcnQgfCBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hhcmVSZXBvcnRDb25uZWN0aW9uOiBGbGV4bW9uc3Rlci5BUElDbGllbnRPcHRpb25zO1xyXG4gIEBJbnB1dCgpIGdsb2JhbDogRmxleG1vbnN0ZXIuUmVwb3J0O1xyXG4gIEBJbnB1dCgpIGFjY2Vzc2liaWxpdHk6IEZsZXhtb25zdGVyLkFjY2Vzc2liaWxpdHlPcHRpb25zO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWl6ZUFQSVJlcXVlc3Q6IChyZXF1ZXN0OiBPYmplY3QpID0+IE9iamVjdDtcclxuICBASW5wdXQoKSBjdXN0b21pemVDZWxsOiAoY2VsbDogRmxleG1vbnN0ZXIuQ2VsbEJ1aWxkZXIsIGRhdGE6IEZsZXhtb25zdGVyLkNlbGxEYXRhKSA9PiB2b2lkO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWl6ZUNoYXJ0RWxlbWVudDogKGVsZW1lbnQ6IEVsZW1lbnQsIGRhdGE6IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0TGVnZW5kSXRlbURhdGEpID0+IHZvaWQ7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQ29udGV4dE1lbnU6IChjZWxsOiBGbGV4bW9uc3Rlci5Db250ZXh0TWVudUl0ZW1bXSwgZGF0YTogRmxleG1vbnN0ZXIuQ2VsbERhdGEgfCBGbGV4bW9uc3Rlci5DaGFydERhdGEsIHZpZXdUeXBlOiBzdHJpbmcpID0+IEZsZXhtb25zdGVyLkNvbnRleHRNZW51SXRlbVtdO1xyXG4gIEBJbnB1dCgpIHNvcnRGaWVsZHNMaXN0OiAoZmlyc3Q6IEZsZXhtb25zdGVyLkZpZWxkc0xpc3RTb3J0aW5nSXRlbSwgc2Vjb25kOiBGbGV4bW9uc3Rlci5GaWVsZHNMaXN0U29ydGluZ0l0ZW0sIGZpZWxkc0xpc3RUeXBlOiBzdHJpbmcpID0+IG51bWJlcjtcclxuXHJcbiAgLy8gZXZlbnRzXHJcbiAgQE91dHB1dCgpIGNlbGxjbGljazogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLkNlbGxEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2VsbGRvdWJsZWNsaWNrOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuQ2VsbERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjaGFydGNsaWNrOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuQ2hhcnREYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuRXJyb3JFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRhdGFmaWxlY2FuY2VsbGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRhdGFsb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZHNsaXN0Y2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmllbGRzbGlzdG9wZW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyY2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyb3BlbjogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyaWxsdGhyb3VnaG9wZW46IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydHN0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyaWxsdGhyb3VnaGNsb3NlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZ1bGxzY3JlZW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbG9hZGluZ2RhdGE6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbG9hZGluZ2xvY2FsaXphdGlvbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nb2xhcHN0cnVjdHVyZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5ncmVwb3J0ZmlsZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2NhbGl6YXRpb25lcnJvcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2NhbGl6YXRpb25sb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb2xhcHN0cnVjdHVyZWVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuRXJyb3JFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9sYXBzdHJ1Y3R1cmVsb2FkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb3BlbmluZ3JlcG9ydGZpbGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHJpbnRjb21wbGV0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwcmludHN0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcXVlcnllcnJvcjogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLkVycm9yRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZWFkeTogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLlBpdm90PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0Y2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlcG9ydGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlcG9ydGZpbGVjYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0ZmlsZWVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJ1bm5pbmdxdWVyeTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1bmF1dGhvcml6ZWRlcnJvcjogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLlVuYXV0aG9yaXplZEVycm9ySGFuZGxlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVwZGF0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmV0b29sYmFyY3JlYXRlZDogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLlRvb2xiYXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVncmlkZHJhdzogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyZ3JpZGRyYXc6IEV2ZW50RW1pdHRlcjxPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZnRlcmNoYXJ0ZHJhdzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8vIGFwaVxyXG4gIHB1YmxpYyBmbGV4bW9uc3RlcjogRmxleG1vbnN0ZXIuUGl2b3Q7XHJcbiAgLy8gcHJpdmF0ZVxyXG4gIHByaXZhdGUgcm9vdDogSFRNTEVsZW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLnJvb3QgPSA8SFRNTEVsZW1lbnQ+ZWwubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5mbGV4bW9uc3RlciA9IG5ldyBGbGV4bW9uc3Rlcih7XHJcbiAgICAgIGNvbnRhaW5lcjogdGhpcy5yb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZtLW5nLXdyYXBwZXInKVswXSxcclxuICAgICAgY29tcG9uZW50Rm9sZGVyOiB0aGlzLmNvbXBvbmVudEZvbGRlcixcclxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICAgIHRvb2xiYXI6IHRoaXMudG9vbGJhcixcclxuICAgICAgbGljZW5zZUtleTogdGhpcy5saWNlbnNlS2V5LFxyXG4gICAgICBsaWNlbnNlRmlsZVBhdGg6IHRoaXMubGljZW5zZUZpbGVQYXRoLFxyXG4gICAgICByZXBvcnQ6IHRoaXMucmVwb3J0LFxyXG4gICAgICBnbG9iYWw6IHRoaXMuZ2xvYmFsLFxyXG4gICAgICBhY2Nlc3NpYmlsaXR5OiB0aGlzLmFjY2Vzc2liaWxpdHksXHJcbiAgICAgIHNoYXJlUmVwb3J0Q29ubmVjdGlvbjogdGhpcy5zaGFyZVJlcG9ydENvbm5lY3Rpb24sXHJcbiAgICAgIGN1c3RvbWl6ZUFQSVJlcXVlc3Q6IHRoaXMuY3VzdG9taXplQVBJUmVxdWVzdCxcclxuICAgICAgY3VzdG9taXplQ2VsbDogdGhpcy5jdXN0b21pemVDZWxsLFxyXG4gICAgICBjdXN0b21pemVDaGFydEVsZW1lbnQ6IHRoaXMuY3VzdG9taXplQ2hhcnRFbGVtZW50LFxyXG4gICAgICBjdXN0b21pemVDb250ZXh0TWVudTogdGhpcy5jdXN0b21pemVDb250ZXh0TWVudSxcclxuICAgICAgc29ydEZpZWxkc0xpc3Q6IHRoaXMuc29ydEZpZWxkc0xpc3QsXHJcbiAgICAgIGNlbGxjbGljazogKGNlbGw6IEZsZXhtb25zdGVyLkNlbGxEYXRhKSA9PiB0aGlzLmNlbGxjbGljay5uZXh0KGNlbGwpLFxyXG4gICAgICBjZWxsZG91YmxlY2xpY2s6IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSkgPT4gdGhpcy5jZWxsZG91YmxlY2xpY2submV4dChjZWxsKSxcclxuICAgICAgY2hhcnRjbGljazogKGV2ZW50OiBGbGV4bW9uc3Rlci5DaGFydERhdGEpID0+IHRoaXMuY2hhcnRjbGljay5uZXh0KGV2ZW50KSxcclxuICAgICAgZGF0YWNoYW5nZWQ6IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmRhdGFjaGFuZ2VkLm5leHQoZXZlbnQpLFxyXG4gICAgICBkYXRhZXJyb3I6IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmRhdGFlcnJvci5uZXh0KGV2ZW50KSxcclxuICAgICAgZGF0YWZpbGVjYW5jZWxsZWQ6ICgpID0+IHRoaXMuZGF0YWZpbGVjYW5jZWxsZWQubmV4dCgpLFxyXG4gICAgICBkYXRhbG9hZGVkOiAoKSA9PiB0aGlzLmRhdGFsb2FkZWQubmV4dCgpLFxyXG4gICAgICBmaWVsZHNsaXN0Y2xvc2U6ICgpID0+IHRoaXMuZmllbGRzbGlzdGNsb3NlLm5leHQoKSxcclxuICAgICAgZmllbGRzbGlzdG9wZW46ICgpID0+IHRoaXMuZmllbGRzbGlzdG9wZW4ubmV4dCgpLFxyXG4gICAgICBmaWx0ZXJjbG9zZTogKCkgPT4gdGhpcy5maWx0ZXJjbG9zZS5uZXh0KCksXHJcbiAgICAgIGZpbHRlcm9wZW46IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmZpbHRlcm9wZW4ubmV4dChldmVudCksXHJcbiAgICAgIGRyaWxsdGhyb3VnaG9wZW46IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSkgPT4gdGhpcy5kcmlsbHRocm91Z2hvcGVuLm5leHQoY2VsbCksXHJcbiAgICAgIGV4cG9ydGNvbXBsZXRlOiAoKSA9PiB0aGlzLmV4cG9ydGNvbXBsZXRlLm5leHQoKSxcclxuICAgICAgZXhwb3J0c3RhcnQ6ICgpID0+IHRoaXMuZXhwb3J0c3RhcnQubmV4dCgpLFxyXG4gICAgICBkcmlsbHRocm91Z2hjbG9zZTogKCkgPT4gdGhpcy5kcmlsbHRocm91Z2hjbG9zZS5uZXh0KCksXHJcbiAgICAgIGxvYWRpbmdkYXRhOiAoKSA9PiB0aGlzLmxvYWRpbmdkYXRhLm5leHQoKSxcclxuICAgICAgbG9hZGluZ2xvY2FsaXphdGlvbjogKCkgPT4gdGhpcy5sb2FkaW5nbG9jYWxpemF0aW9uLm5leHQoKSxcclxuICAgICAgbG9hZGluZ29sYXBzdHJ1Y3R1cmU6ICgpID0+IHRoaXMubG9hZGluZ29sYXBzdHJ1Y3R1cmUubmV4dCgpLFxyXG4gICAgICBsb2FkaW5ncmVwb3J0ZmlsZTogKCkgPT4gdGhpcy5sb2FkaW5ncmVwb3J0ZmlsZS5uZXh0KCksXHJcbiAgICAgIGxvY2FsaXphdGlvbmVycm9yOiAoKSA9PiB0aGlzLmxvY2FsaXphdGlvbmVycm9yLm5leHQoKSxcclxuICAgICAgbG9jYWxpemF0aW9ubG9hZGVkOiAoKSA9PiB0aGlzLmxvY2FsaXphdGlvbmxvYWRlZC5uZXh0KCksXHJcbiAgICAgIG9sYXBzdHJ1Y3R1cmVlcnJvcjogKGV2ZW50OiBGbGV4bW9uc3Rlci5FcnJvckV2ZW50KSA9PiB0aGlzLm9sYXBzdHJ1Y3R1cmVlcnJvci5uZXh0KGV2ZW50KSxcclxuICAgICAgb2xhcHN0cnVjdHVyZWxvYWRlZDogKCkgPT4gdGhpcy5vbGFwc3RydWN0dXJlbG9hZGVkLm5leHQoKSxcclxuICAgICAgb3BlbmluZ3JlcG9ydGZpbGU6ICgpID0+IHRoaXMub3BlbmluZ3JlcG9ydGZpbGUubmV4dCgpLFxyXG4gICAgICBwcmludGNvbXBsZXRlOiAoKSA9PiB0aGlzLnByaW50Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICBwcmludHN0YXJ0OiAoKSA9PiB0aGlzLnByaW50c3RhcnQubmV4dCgpLFxyXG4gICAgICBxdWVyeWNvbXBsZXRlOiAoKSA9PiB0aGlzLnF1ZXJ5Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICBxdWVyeWVycm9yOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkVycm9yRXZlbnQpID0+IHRoaXMucXVlcnllcnJvci5uZXh0KGV2ZW50KSxcclxuICAgICAgcmVhZHk6ICgpID0+IHRoaXMucmVhZHkubmV4dCh0aGlzLmZsZXhtb25zdGVyKSxcclxuICAgICAgcmVwb3J0Y2hhbmdlOiAoKSA9PiB0aGlzLnJlcG9ydGNoYW5nZS5uZXh0KCksXHJcbiAgICAgIHJlcG9ydGNvbXBsZXRlOiAoKSA9PiB0aGlzLnJlcG9ydGNvbXBsZXRlLm5leHQoKSxcclxuICAgICAgcmVwb3J0ZmlsZWNhbmNlbGxlZDogKCkgPT4gdGhpcy5yZXBvcnRmaWxlY2FuY2VsbGVkLm5leHQoKSxcclxuICAgICAgcmVwb3J0ZmlsZWVycm9yOiAoKSA9PiB0aGlzLnJlcG9ydGZpbGVlcnJvci5uZXh0KCksXHJcbiAgICAgIHJ1bm5pbmdxdWVyeTogKCkgPT4gdGhpcy5ydW5uaW5ncXVlcnkubmV4dCgpLFxyXG4gICAgICB1bmF1dGhvcml6ZWRlcnJvcjogKGRvbmU6IEZsZXhtb25zdGVyLlVuYXV0aG9yaXplZEVycm9ySGFuZGxlcikgPT4gdGhpcy51bmF1dGhvcml6ZWRlcnJvci5uZXh0KGRvbmUpLFxyXG4gICAgICB1cGRhdGU6ICgpID0+IHRoaXMudXBkYXRlLm5leHQoKSxcclxuICAgICAgYmVmb3JldG9vbGJhcmNyZWF0ZWQ6ICh0b29sYmFyOiBGbGV4bW9uc3Rlci5Ub29sYmFyKSA9PiB0aGlzLmJlZm9yZXRvb2xiYXJjcmVhdGVkLm5leHQodG9vbGJhciksXHJcbiAgICAgIGJlZm9yZWdyaWRkcmF3OiAoZXZlbnQ6IE9iamVjdCkgPT4gdGhpcy5iZWZvcmVncmlkZHJhdy5uZXh0KGV2ZW50KSxcclxuICAgICAgYWZ0ZXJncmlkZHJhdzogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuYWZ0ZXJncmlkZHJhdy5uZXh0KGV2ZW50KSxcclxuICAgICAgYWZ0ZXJjaGFydGRyYXc6ICgpID0+IHRoaXMuYWZ0ZXJjaGFydGRyYXcubmV4dCgpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy5mbGV4bW9uc3Rlcikge1xyXG4gICAgICAgICAgdGhpcy5mbGV4bW9uc3Rlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICB0aGlzLmZsZXhtb25zdGVyID0gbnVsbDtcclxuICAgICAgfVxyXG4gIH1cclxufVxyXG4iXX0=