ng-flexmonster
Version:
Angular 4+ Module for Flexmonster Pivot Table & Charts
244 lines (236 loc) • 33.9 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('flexmonster'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('ng-flexmonster', ['exports', '@angular/core', 'flexmonster', '@angular/common'], factory) :
(factory((global['ng-flexmonster'] = {}),global.ng.core,null,global.ng.common));
}(this, (function (exports,core,Flexmonster,common) { 'use strict';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
var FlexmonsterPivot = /** @class */ (function () {
function FlexmonsterPivot(el) {
// events
this.cellclick = new core.EventEmitter();
this.celldoubleclick = new core.EventEmitter();
this.chartclick = new core.EventEmitter();
this.dataerror = new core.EventEmitter();
this.datafilecancelled = new core.EventEmitter();
this.dataloaded = new core.EventEmitter();
this.datachanged = new core.EventEmitter();
this.fieldslistclose = new core.EventEmitter();
this.fieldslistopen = new core.EventEmitter();
this.filterclose = new core.EventEmitter();
this.filteropen = new core.EventEmitter();
this.drillthroughopen = new core.EventEmitter();
this.exportcomplete = new core.EventEmitter();
this.exportstart = new core.EventEmitter();
this.drillthroughclose = new core.EventEmitter();
this.fullscreen = new core.EventEmitter();
this.loadingdata = new core.EventEmitter();
this.loadinglocalization = new core.EventEmitter();
this.loadingolapstructure = new core.EventEmitter();
this.loadingreportfile = new core.EventEmitter();
this.localizationerror = new core.EventEmitter();
this.localizationloaded = new core.EventEmitter();
this.olapstructureerror = new core.EventEmitter();
this.olapstructureloaded = new core.EventEmitter();
this.openingreportfile = new core.EventEmitter();
this.printcomplete = new core.EventEmitter();
this.printstart = new core.EventEmitter();
this.querycomplete = new core.EventEmitter();
this.queryerror = new core.EventEmitter();
this.ready = new core.EventEmitter();
this.reportchange = new core.EventEmitter();
this.reportcomplete = new core.EventEmitter();
this.reportfilecancelled = new core.EventEmitter();
this.reportfileerror = new core.EventEmitter();
this.runningquery = new core.EventEmitter();
this.unauthorizederror = new core.EventEmitter();
this.update = new core.EventEmitter();
this.beforetoolbarcreated = new core.EventEmitter();
this.beforegriddraw = new core.EventEmitter();
this.aftergriddraw = new core.EventEmitter();
this.afterchartdraw = new core.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: core.Component, args: [{
selector: 'fm-pivot',
template: '<div style="width:100%;height:100%;"><div class="fm-ng-wrapper"></div></div>'
},] },
];
FlexmonsterPivot.ctorParameters = function () {
return [
{ type: core.ElementRef }
];
};
FlexmonsterPivot.propDecorators = {
toolbar: [{ type: core.Input }],
licenseKey: [{ type: core.Input }],
licenseFilePath: [{ type: core.Input }],
width: [{ type: core.Input }],
height: [{ type: core.Input }],
componentFolder: [{ type: core.Input }],
report: [{ type: core.Input }],
shareReportConnection: [{ type: core.Input }],
global: [{ type: core.Input }],
accessibility: [{ type: core.Input }],
customizeAPIRequest: [{ type: core.Input }],
customizeCell: [{ type: core.Input }],
customizeChartElement: [{ type: core.Input }],
customizeContextMenu: [{ type: core.Input }],
sortFieldsList: [{ type: core.Input }],
cellclick: [{ type: core.Output }],
celldoubleclick: [{ type: core.Output }],
chartclick: [{ type: core.Output }],
dataerror: [{ type: core.Output }],
datafilecancelled: [{ type: core.Output }],
dataloaded: [{ type: core.Output }],
datachanged: [{ type: core.Output }],
fieldslistclose: [{ type: core.Output }],
fieldslistopen: [{ type: core.Output }],
filterclose: [{ type: core.Output }],
filteropen: [{ type: core.Output }],
drillthroughopen: [{ type: core.Output }],
exportcomplete: [{ type: core.Output }],
exportstart: [{ type: core.Output }],
drillthroughclose: [{ type: core.Output }],
fullscreen: [{ type: core.Output }],
loadingdata: [{ type: core.Output }],
loadinglocalization: [{ type: core.Output }],
loadingolapstructure: [{ type: core.Output }],
loadingreportfile: [{ type: core.Output }],
localizationerror: [{ type: core.Output }],
localizationloaded: [{ type: core.Output }],
olapstructureerror: [{ type: core.Output }],
olapstructureloaded: [{ type: core.Output }],
openingreportfile: [{ type: core.Output }],
printcomplete: [{ type: core.Output }],
printstart: [{ type: core.Output }],
querycomplete: [{ type: core.Output }],
queryerror: [{ type: core.Output }],
ready: [{ type: core.Output }],
reportchange: [{ type: core.Output }],
reportcomplete: [{ type: core.Output }],
reportfilecancelled: [{ type: core.Output }],
reportfileerror: [{ type: core.Output }],
runningquery: [{ type: core.Output }],
unauthorizederror: [{ type: core.Output }],
update: [{ type: core.Output }],
beforetoolbarcreated: [{ type: core.Output }],
beforegriddraw: [{ type: core.Output }],
aftergriddraw: [{ type: core.Output }],
afterchartdraw: [{ type: core.Output }]
};
return FlexmonsterPivot;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
var FlexmonsterPivotModule = /** @class */ (function () {
function FlexmonsterPivotModule() {
}
FlexmonsterPivotModule.decorators = [
{ type: core.NgModule, args: [{
imports: [
common.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
*/
exports.FlexmonsterPivotModule = FlexmonsterPivotModule;
exports.FlexmonsterPivot = FlexmonsterPivot;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmxleG1vbnN0ZXIudW1kLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZy1mbGV4bW9uc3Rlci9mbGV4bW9uc3Rlci5jb21wb25lbnQudHMiLCJuZzovL25nLWZsZXhtb25zdGVyL2ZsZXhtb25zdGVyLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIEZsZXhtb25zdGVyIGZyb20gJ2ZsZXhtb25zdGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm0tcGl2b3QnLFxyXG4gIHRlbXBsYXRlOiAnPGRpdiBzdHlsZT1cIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7XCI+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+IHRoaXMuYWZ0ZXJjaGFydGRyYXcubmV4dCgpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICBpZiAodGhpcy5mbGV4bW9uc3Rlcikge1xyXG4gICAgICAgICAgdGhpcy5mbGV4bW9uc3Rlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICB0aGlzLmZsZXhtb25zdGVyID0gbnVsbDtcclxuICAgICAgfVxyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGbGV4bW9uc3RlclBpdm90IH0gZnJvbSAnLi9mbGV4bW9uc3Rlci5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW0ZsZXhtb25zdGVyUGl2b3RdLFxyXG4gIGV4cG9ydHM6IFtGbGV4bW9uc3RlclBpdm90XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxleG1vbnN0ZXJQaXZvdE1vZHVsZSB7IH1cclxuIl0sIm5hbWVzIjpbIkV2ZW50RW1pdHRlciIsIkNvbXBvbmVudCIsIkVsZW1lbnRSZWYiLCJJbnB1dCIsIk91dHB1dCIsIk5nTW9kdWxlIiwiQ29tbW9uTW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7UUF3RUUsMEJBQVksRUFBYzs7WUE5Q2hCLGNBQVMsR0FBdUMsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ25FLG9CQUFlLEdBQXVDLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN6RSxlQUFVLEdBQXdDLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNyRSxjQUFTLEdBQXlDLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNyRSxzQkFBaUIsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQzNELGVBQVUsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ3BELGdCQUFXLEdBQXlCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN2RCxvQkFBZSxHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDekQsbUJBQWMsR0FBdUIsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ3hELGdCQUFXLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNyRCxlQUFVLEdBQXlCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN0RCxxQkFBZ0IsR0FBK0QsSUFBSUEsaUJBQVksRUFBRSxDQUFDO1lBQ2xHLG1CQUFjLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUN4RCxnQkFBVyxHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDckQsc0JBQWlCLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUMzRCxlQUFVLEdBQXVCLElBQUlBLGlCQUFZLEVBQUUsQ0FBQztZQUNwRCxnQkFBVyxHQUF1QixJQUFJQSxpQkFBWSxFQUFFLENBQUM7WUFDckQsd0JBQW1CLEdBQXVCLElBQUlBLGlCQUFZLEVB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