@esfaenza/es-charts 13.1.6 → 13.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2020/lib/adapters/BaseAdapter.mjs +3 -3
  2. package/esm2020/lib/components/base/base-chart.component.mjs +13 -4
  3. package/esm2020/lib/components/chart-pager/chart-pager.component.mjs +3 -3
  4. package/esm2020/lib/components/specializations/es-area-chart.component.mjs +3 -3
  5. package/esm2020/lib/components/specializations/es-chart.component.mjs +3 -3
  6. package/esm2020/lib/components/specializations/es-line-chart.component.mjs +3 -3
  7. package/esm2020/lib/components/specializations/es-pie-chart.component.mjs +3 -3
  8. package/esm2020/lib/components/specializations/es-vertical-2d-chart.component.mjs +3 -3
  9. package/esm2020/lib/components/specializations/es-vertical-chart.component.mjs +3 -3
  10. package/esm2020/lib/components/specializations/es-vertical-stacked-chart.component.mjs +3 -3
  11. package/esm2020/lib/es-charts.module.mjs +4 -4
  12. package/esm2020/lib/models/core/ChartDispatcher.mjs +3 -3
  13. package/esm2020/lib/models/data/LineChartData.mjs +1 -1
  14. package/esm2020/lib/models/data/base/Limit.mjs +7 -6
  15. package/esm2020/lib/services/AreaChartService.mjs +4 -1
  16. package/esm2020/lib/services/LineChartService.mjs +54 -26
  17. package/esm2020/lib/services/PieChartService.mjs +4 -1
  18. package/esm2020/lib/services/Vertical2DChartService.mjs +4 -1
  19. package/esm2020/lib/services/VerticalChartService.mjs +4 -1
  20. package/esm2020/lib/services/VerticalStackedChartService.mjs +4 -1
  21. package/esm2020/lib/services/base/IBaseService.mjs +1 -1
  22. package/fesm2015/esfaenza-es-charts.mjs +120 -67
  23. package/fesm2015/esfaenza-es-charts.mjs.map +1 -1
  24. package/fesm2020/esfaenza-es-charts.mjs +120 -67
  25. package/fesm2020/esfaenza-es-charts.mjs.map +1 -1
  26. package/lib/components/base/base-chart.component.d.ts +7 -0
  27. package/lib/models/data/LineChartData.d.ts +2 -2
  28. package/lib/models/data/base/Limit.d.ts +6 -5
  29. package/lib/services/AreaChartService.d.ts +2 -0
  30. package/lib/services/LineChartService.d.ts +4 -0
  31. package/lib/services/PieChartService.d.ts +2 -0
  32. package/lib/services/Vertical2DChartService.d.ts +2 -0
  33. package/lib/services/VerticalChartService.d.ts +2 -0
  34. package/lib/services/VerticalStackedChartService.d.ts +2 -0
  35. package/lib/services/base/IBaseService.d.ts +7 -0
  36. package/package.json +6 -6
@@ -42,9 +42,9 @@ export class BaseAdapter {
42
42
  return anyData;
43
43
  }
44
44
  }
45
- BaseAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
46
- BaseAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseAdapter });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseAdapter, decorators: [{
45
+ BaseAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: BaseAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
46
+ BaseAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: BaseAdapter });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: BaseAdapter, decorators: [{
48
48
  type: Injectable
49
49
  }] });
50
50
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9hZGFwdGVycy9CYXNlQWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVUzQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUVwQjs7T0FFRztJQUNILHFCQUFxQixDQUFDLE9BQVk7UUFDOUIsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCLENBQUMsT0FBWTtRQUM5QixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxPQUFZO1FBQzdCLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QixDQUFDLE9BQVk7UUFDbEMsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMkJBQTJCLENBQUMsT0FBWTtRQUNwQyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQ0FBZ0MsQ0FBQyxPQUFZO1FBQ3pDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7O3dHQTFDUSxXQUFXOzRHQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IExpbmVDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvTGluZUNoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBQaWVDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvUGllQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IFZlcnRpY2FsQ2hhcnREYXRhIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhL1ZlcnRpY2FsQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IFZlcnRpY2FsMkRDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvVmVydGljYWwyRENoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbFN0YWNrZWRDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvVmVydGljYWxTdGFja2VkQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IEFyZWFDaGFydERhdGEgfSBmcm9tIFwiLi4vbW9kZWxzL2RhdGEvQXJlYUNoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBJQmFzZUFkYXB0ZXIgfSBmcm9tICcuL0lCYXNlQWRhcHRlcic7XHJcblxyXG4vKipcclxuICogQWRhcHRlciBCYXNlIGRhIHJlaW1wbGVtZW50YXJlIHBlciB0cmFzZm9ybWFyZSBpIGRhdGkgZGEgdW5hIGxpYnJlcmlhIGRpIGdyYWZpY2kgYSBxdWVzdGEgcGVyIGV2aXRhcmUgZGkgcmlzY3JpdmVyZSB0dXR0byBpbCBjb2RpY2UgZGlcclxuICogZ2VuZXJhemlvbmUgZGVsbGUgc2VyaWUgaW4gY2FzbyBzaSBmb3NzZXJvIHVzYXRpIGdyYWZpY2kgZGkgYWx0cmUgbGlicmVyaWVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhc2VBZGFwdGVyIGltcGxlbWVudHMgSUJhc2VBZGFwdGVyIHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWF0b3JlIGRhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIHZlY2NoaWEgYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSBudW92YSBwZXIgZ2xpIEFyZWEgQ2hhcnRcclxuICAgICAqL1xyXG4gICAgYWRhcHREYXRhRm9yQXJlYUNoYXJ0KGFueURhdGE6IGFueSk6IEFyZWFDaGFydERhdGEge1xyXG4gICAgICAgIHJldHVybiBhbnlEYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhc2Zvcm1hdG9yZSBkYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSB2ZWNjaGlhIGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgbnVvdmEgcGVyIGkgTGluZSBDaGFydFxyXG4gICAgICovXHJcbiAgICBhZGFwdERhdGFGb3JMaW5lQ2hhcnQoYW55RGF0YTogYW55KTogTGluZUNoYXJ0RGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIGFueURhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWF0b3JlIGRhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIHZlY2NoaWEgYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSBudW92YSBwZXIgaSBMaW5lIENoYXJ0XHJcbiAgICAgKi9cclxuICAgIGFkYXB0RGF0YUZvclBpZUNoYXJ0KGFueURhdGE6IGFueSk6IFBpZUNoYXJ0RGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIGFueURhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFzZm9ybWF0b3JlIGRhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIHZlY2NoaWEgYWkgZGF0aSBkZWxsYSBsaWJyZXJpYSBudW92YSBwZXIgaSBWZXJ0aWNhbCBDaGFydFxyXG4gICAgICovXHJcbiAgICBhZGFwdERhdGFGb3JWZXJ0aWNhbENoYXJ0KGFueURhdGE6IGFueSk6IFZlcnRpY2FsQ2hhcnREYXRhIHtcclxuICAgICAgICByZXR1cm4gYW55RGF0YTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRyYXNmb3JtYXRvcmUgZGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgdmVjY2hpYSBhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIG51b3ZhIHBlciBpIFZlcnRpY2FsIENoYXJ0IGEgZHVlIGRpbWVuc2lvbmlcclxuICAgICAqL1xyXG4gICAgYWRhcHREYXRhRm9yVmVydGljYWwyRENoYXJ0KGFueURhdGE6IGFueSk6IFZlcnRpY2FsMkRDaGFydERhdGEge1xyXG4gICAgICAgIHJldHVybiBhbnlEYXRhO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRyYXNmb3JtYXRvcmUgZGFpIGRhdGkgZGVsbGEgbGlicmVyaWEgdmVjY2hpYSBhaSBkYXRpIGRlbGxhIGxpYnJlcmlhIG51b3ZhIHBlciBpIFZlcnRpY2FsIENoYXJ0IHNvdnJhcHBvc3RpXHJcbiAgICAgKi9cclxuICAgIGFkYXB0RGF0YUZvclZlcnRpY2FsU3RhY2tlZENoYXJ0KGFueURhdGE6IGFueSk6IFZlcnRpY2FsU3RhY2tlZENoYXJ0RGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIGFueURhdGE7XHJcbiAgICB9XHJcbn0iXX0=
@@ -269,6 +269,15 @@ export class BaseChartComponent {
269
269
  if (this.logs)
270
270
  console.log("@esfaenza/es-charts: " + log);
271
271
  }
272
+ /**
273
+ * Imposta lo zoom dal **from** al **to**
274
+ *
275
+ * @param {Date} from Inizio dello zoom
276
+ * @param {Date} to Fine dello zoom
277
+ */
278
+ setSelection(from, to) {
279
+ this.ChartService.setSelection(from, to);
280
+ }
272
281
  /**
273
282
  * @ignore
274
283
  */
@@ -280,9 +289,9 @@ export class BaseChartComponent {
280
289
  }
281
290
  }
282
291
  }
283
- BaseChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseChartComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
284
- BaseChartComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseChartComponent, inputs: { XTitle: "XTitle", YTitle: "YTitle", Settings: "Settings", Legend: "Legend", LegendPosition: "LegendPosition", Timeline: "Timeline", name: "name", Animations: "Animations", Theme: "Theme", Locale: "Locale", HideSeriesOnLabelClick: "HideSeriesOnLabelClick", MinGridDistance: "MinGridDistance", AdaptLabelSizeAndOrientation: "AdaptLabelSizeAndOrientation", LegendPadding: "LegendPadding", DataDtos: "DataDtos", DataDtoStartIndex: "DataDtoStartIndex", DataRetrieve: "DataRetrieve", BrowseDelayMs: "BrowseDelayMs" }, outputs: { onSelectionChanged: "onSelectionChanged", onSeriesClicked: "onSeriesClicked", onLoadStart: "onLoadStart", onLoadEnd: "onLoadEnd", chartLoaded: "chartLoaded" }, queries: [{ propertyName: "header_tr", first: true, predicate: ["header"], descendants: true }, { propertyName: "loading_template", first: true, predicate: ["loading"], descendants: true }], usesOnChanges: true, ngImport: i0 });
285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseChartComponent, decorators: [{
292
+ BaseChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: BaseChartComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
293
+ BaseChartComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.9", type: BaseChartComponent, inputs: { XTitle: "XTitle", YTitle: "YTitle", Settings: "Settings", Legend: "Legend", LegendPosition: "LegendPosition", Timeline: "Timeline", name: "name", Animations: "Animations", Theme: "Theme", Locale: "Locale", HideSeriesOnLabelClick: "HideSeriesOnLabelClick", MinGridDistance: "MinGridDistance", AdaptLabelSizeAndOrientation: "AdaptLabelSizeAndOrientation", LegendPadding: "LegendPadding", DataDtos: "DataDtos", DataDtoStartIndex: "DataDtoStartIndex", DataRetrieve: "DataRetrieve", BrowseDelayMs: "BrowseDelayMs" }, outputs: { onSelectionChanged: "onSelectionChanged", onSeriesClicked: "onSeriesClicked", onLoadStart: "onLoadStart", onLoadEnd: "onLoadEnd", chartLoaded: "chartLoaded" }, queries: [{ propertyName: "header_tr", first: true, predicate: ["header"], descendants: true }, { propertyName: "loading_template", first: true, predicate: ["loading"], descendants: true }], usesOnChanges: true, ngImport: i0 });
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: BaseChartComponent, decorators: [{
286
295
  type: Directive
287
296
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Object }, { type: i0.NgZone }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: undefined }, { type: undefined }, { type: undefined }, { type: undefined }]; }, propDecorators: { XTitle: [{
288
297
  type: Input
@@ -337,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
337
346
  }], chartLoaded: [{
338
347
  type: Output
339
348
  }] } });
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBc0UsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVksU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBYy9LLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHcEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFnQixrQkFBa0I7SUErTHRDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILFlBQW9CLEVBQWMsRUFBVSxVQUFrQixFQUFVLElBQVksRUFBVSxPQUFvQixFQUFVLFVBQTJCLEVBQVUsSUFBYSxFQUNwSyxVQUFtQixFQUFVLE1BQWMsRUFBVSxLQUFhO1FBRHhELE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVM7UUFDcEssZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBN0s1RTs7V0FFRztRQUNNLFNBQUksR0FBVyxFQUFFLENBQUM7UUEwRDNCOzs7O1dBSUc7UUFDTSxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQVlyQzs7V0FFRztRQUNPLHVCQUFrQixHQUE2RCxJQUFJLFlBQVksRUFBOEMsQ0FBQztRQUV4Sjs7V0FFRztRQUNPLG9CQUFlLEdBQXlCLElB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SUFBSSxDQUFDLFVBQVUsQ0FBQztRQUUxRixRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFFLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxRCxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xGLFFBQVEsQ0FBQyw0QkFBNEIsR0FBRyxRQUFRLENBQUMsNEJBQTRCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztRQUNsSyxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUUsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlFLFFBQVEsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNsRyxRQUFRLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FB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TUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQU1HLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElucHV0LCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb250ZW50Q2hpbGQsIE9wdGlvbmFsLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NldHRpbmdzL2Jhc2UvQmFzZVNldHRpbmdzJztcclxuaW1wb3J0IHsgTGVnZW5kUGFkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NldHRpbmdzL2Jhc2UvTGVnZW5kUGFkJztcclxuaW1wb3J0IHsgQ2hhcnRMb2FkZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvcmUvQ2hhcnRMb2FkZXJcIjtcclxuaW1wb3J0IHsgQ2hhcnREaXNwYXRjaGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlL0NoYXJ0RGlzcGF0Y2hlclwiO1xyXG5cclxuaW1wb3J0IHsgTGluZUNoYXJ0RGF0YSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS9MaW5lQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IFBpZUNoYXJ0RGF0YSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS9QaWVDaGFydERhdGFcIjtcclxuaW1wb3J0IHsgVmVydGljYWxDaGFydERhdGEgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RhdGEvVmVydGljYWxDaGFydERhdGFcIjtcclxuaW1wb3J0IHsgVmVydGljYWwyRENoYXJ0RGF0YSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS9WZXJ0aWNhbDJEQ2hhcnREYXRhXCI7XHJcbmltcG9ydCB7IFBhZ2VkQ2hhcnREYXRhIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhL1BhZ2VkQ2hhcnREYXRhXCI7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgR3JhZmljbyBCYXNlIGNoZSBnZXN0aXNjZSB0dXR0ZSBsZSBjb3NlIGNvbXVuaSBkZWkgdmFyaSBncmFmaWNpIGlzdGFuemlhYmlsaSwgY29tZSBsYSBwcmVzZW56YSBvIG1lbnUgZGkgdW5hIGxlZ2VuZGEsXHJcbiAqIGlsIHRlbWEgdXRpbGl6emF0bywgaWwgbG9jYWxlIGRlbCBzaW5nb2xvIGdyYWZpY28sIGVjYyBlY2MuLi5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRpdG9sbyBwZXIgbCdhc3NlIFhcclxuICAgKi9cclxuICBASW5wdXQoKSBYVGl0bGU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogVGl0b2xvIHBlciBsJ2Fzc2UgWVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFlUaXRsZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBJbXBvc3RhemlvbmkgZGkgYmFzZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFNldHRpbmdzOiBCYXNlU2V0dGluZ3M7XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZXNlbnphIG8gbWVubyBkZWxsYSBsZWdlbmRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgTGVnZW5kOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBQb3NpemlvbmUgZGVsbGEgbGVnZW5kYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIExlZ2VuZFBvc2l0aW9uOiBcInRvcFwiIHwgXCJib3R0b21cIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiO1xyXG5cclxuICAvKipcclxuICAgKiBQcmVzZW56YSBvIG1lbm8gZGVsbGEgdGltZWxpbmVcclxuICAgKi9cclxuICBASW5wdXQoKSBUaW1lbGluZTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogTm9tZSBkZWwgZ3JhZmljbywgZm9uZGFtZW50YWxlIGFzc2VnbmFybG8gcGVyIHBlcm1ldHRlcmUgYWxsYSBsaWJyZXJpYSBkaSBzY2hlZHVsYXJuZSBsYSBjcmVhemlvbmVcclxuICAgKi9cclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipcclxuICAgKiBVdGlsaXp6byBvIG1lbm8gZGVsbGUgYW5pbWF6aW9uaS4gU2VuemEgYW5pbWF6aW9uaSBpbCBncmFmaWNvIMOoIGxlZ2dlcm1lbnRlIHBpw7kgcGVyZm9ybWFudGUsIHNwZWNpYWxtZW50ZSBhbGwnYXVtZW50YXJlIGRlaSBwdW50aSBuZWxsYSBzZXJpZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEFuaW1hdGlvbnM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRlbWEgZGEgdXRpbGl6emFyZSwgdmFsaWRvIHNvbG8gcGVyIGlsIGdyYWZpY28gaW4gcXVlc3Rpb25lLiBHbGkgYWx0cmkgZ3JhZmljaSBkZWxsYSBwYWdpbmEgcG9zc29ubyBhdmVyZSBzdGlsaSBkaXZlcnNpLlxyXG4gICAqIFxyXG4gICAqIEVzc2VuZG8gaSB0ZW1pIGNhcmljYXRpIGluIG1hbmllcmEgYXNpbmNyb25hIGluIGJhc2UgYWxsJ3V0aWxpenpvIHV0aWxpenphcm5lIHRhbnRpIGRpdmVyc2kgaW4gdW4ndW5pY2EgcGFnaW5hIHBvdHJlYmJlIHJhbGxlbnRhcmUgaWwgcHJpbW8gY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBASW5wdXQoKSBUaGVtZTogJ3NwaXJpdGVkYXdheScgfCAnbW9vbnJpc2VraW5nZG9tJyB8ICdmcm96ZW4nIHwgJ2RhcmsnIHwgJ2tlbGx5JyB8ICdtYXRlcmlhbCcgfCAnZGF0YXZpeicgfCAnbm9uZSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIExvY2FsZSBkZWwgc2luZ29sbyBncmFmaWNvXHJcbiAgICovXHJcbiAgQElucHV0KCkgTG9jYWxlOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSB1dGlsaXp6YXJlIGlsIGNvbXBvcnRhbWVudG8gZGkgZGVmYXVsdCBwZXIgaSBjbGljayBkZWxsZSBzZXJpZSBzdWxsYSBMZWdlbmRhLiBNZXR0ZW5kbyBxdWVzdGEgdmFyaWFiaWxlIGEgKipmYWxzZSoqXHJcbiAgICogZSBjb2xsZWdhbmRvIGwnb3V0cHV0ICoqb25TZXJpZXNDbGlja2VkKiogw6ggcG9zc2liaWxlIGdlbmVyYXJlIHVuIGV2ZW50byBvZ25pIHZvbHRhIGNoZSBsJ3V0ZW50ZSBmYSBjbGljayBzdSB1bmEgc2VyaWUgZGVsbGEgTGVnZW5kYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEhpZGVTZXJpZXNPbkxhYmVsQ2xpY2s6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIE1pbmltYSBkaXN0YW56YSBuZWxsYSBncmlnbGlhIGZyYSBpIHZhbG9yaSwgbW9kaWZpY2EgbGEgcXVhbnRpdMOgIGRpIHN0ZXAgZnJhIGkgdmFsb3JpIGRlbGwnYXNzZSBYIGUgcXVpbmRpIGxhIGdyYW51bGFyaXTDoCBkZWkgZGF0aS5cclxuICAgKiBcclxuICAgKiBQacO5IHBpY2NvbGEgw6gsIHBpw7kgdmFsb3JpIHZlcnJhbm5vIGluc2VyaXRpIG5lbGwnYXNzZSBYXHJcbiAgICovXHJcbiAgQElucHV0KCkgTWluR3JpZERpc3RhbmNlOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIENlcmNhIGRpIGFnZ2l1c3RhcmUgaSB2YXJpIHN0ZXAgZGVsbCdhc3NlIFggcnVvdGFuZG9saSBlIGRpbWludWVuZG9uZSBsZSBkaW1lbnNpb25pIGFiYmFzdGFuemEgcGVyIG1vc3RyYXJuZSBpbCBwacO5IHBvc3NpYmlsZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb246IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhZGRpbmcgZGEgYXBwbGljYXJlIGFsbGEgTGVnZW5kYSBpbiBjYXNvIHNpIHZvZ2xpYSBzcG9zdGFyZSB1biBwbydcclxuICAgKi9cclxuICBASW5wdXQoKSBMZWdlbmRQYWRkaW5nOiBMZWdlbmRQYWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIGRpIGR0byBnZW5lcmljaSBjaGUgdmVycmFubm8gZW1lc3NpIGRhbCBzaXN0ZW1hIGRpIGdyYWZpY2kgdW5vIHBlciB1bm8gYXR0cmF2ZXJzbyBsYSBmdW56aW9uZSAqKkRhdGFSZXRyaWV2ZSoqLCBjaGUgZG92cmFubm8gZXNzZXJlXHJcbiAgICogdXNhdGkgcGVyIHVhbiBzb3J0YSBkaSBjYXJpY2FtZW50byBcInBhZ2luYXRvXCIgZGVpIGdyYWZpY2lcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhRHRvczogYW55W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljZSBkZWxsJ2FycmF5ICoqRGF0YUR0b3MqKiBvIGRlbGwnYXJyYXkgKipEYXRhQXJyYXkqKiBkYSBjdWkgaW5pemlhcmUgYWQgZW1ldHRlcmUgaSB2YWxvcmksIHV0aWxlIHBlciBzdXBwb3J0YXJlIGlsIFwiYmFja1wiIGRhIHVuIGV2ZW50dWFsZSBwYWdpbmEgZGkgZGV0dGFnbGlvXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUR0b1N0YXJ0SW5kZXg6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuemlvbmUgZGVmaW5pdGEgbGF0byBhcHBsaWNhdGl2byBjaGUgaW4gYmFzZSBhbCAqKkRhdGFEdG8qKiBjb3JyZW50ZSByZXN0aXR1aXNjZSB1bmEgUHJvbWlzZSBkZWwgdGlwbyBkaSBkYXRpIHJpY2hpZXN0byBwZXIgaWwgZ3JhZmljbyBjb3JyZW50ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFSZXRyaWV2ZTogKGR0bzogYW55LCBpbmRleDogbnVtYmVyKSA9PiBQcm9taXNlPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIERvcG8gYXZlciBuYXZpZ2F0byBhIHVuIG51b3ZvIGdyYWZpY28gdmVycmFubm8gYXR0ZXNpIHF1ZXN0aSBtaWxsaXNlY29uZGkgcHJpbWEgZGkgcmljaGllZGVyZSBpIGRhdGkgYXR0cmF2ZXJzbyBsYSAqKkRhdGFSZXRyaWV2ZSoqLlxyXG4gICAqIFxyXG4gICAqIFF1ZXN0byBwZXIgZXZpdGFyZSBjaGUgbCd1dGVudGUgY2xpY2NhbmRvIHZlbG9jZW1lbnRlIFwiYXZhbnRpXCIgZ2VuZXJpIHRvbm5lbGxhdGUgZGkgcmljaGllc3RlIGludXRpbGlcclxuICAgKi9cclxuICBASW5wdXQoKSBCcm93c2VEZWxheU1zOiBudW1iZXIgPSA1MDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVzdGF6aW9uZSBkZWkgZ3JhZmljaSBuZWwgY2FzbyBzaSB1dGlsaXp6aSBsYSBtb2RhbGl0w6AgcGFnaW5hdGFcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkKCdoZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgaGVhZGVyX3RyO1xyXG5cclxuICAvKipcclxuICAgKiBNZXNzYWdnaW8gZGkgY2FyaWNhbWVudG8gZnJhIHVuIGdyYWZpY28gZSBsJ2FsdHJvIFxyXG4gICAqL1xyXG4gIEBDb250ZW50Q2hpbGQoJ2xvYWRpbmcnLCB7IHN0YXRpYzogZmFsc2UgfSkgbG9hZGluZ190ZW1wbGF0ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGxhbmNpYXRvIHN1bGxhIHNlbGV6aW9uZSBkaSB1biByYW5nZSBkaSBkYXRpIG8gZGFsbGEgdGltZWxpbmUgbyBkYWwgZ3JhZmljby4gVmFsaWRvIHBlciB0dXR0aSBpIGdyYWZpY2kgY2hlIHN1cHBvcnRhbm8gc2VyaWUgYmFzYXRlIHN1bGxlIGRhdGVcclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8eyBmcm9tOiBEYXRlLCB0bzogRGF0ZSwgaW5pdGlhbDogYm9vbGVhbiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmcm9tOiBEYXRlLCB0bzogRGF0ZSwgaW5pdGlhbDogYm9vbGVhbiB9PigpO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gbGFuY2lhdG8gZGFsIGNsaWNrIGRpIHVuYSBzZXJpZSBkYWxsYSBMZWdlbmRhLCBhIHBhdHRvIGNoZSBsJ0lucHV0ICoqSGlkZVNlcmllc09uTGFiZWxDbGljayoqIHNpYSBpbXBvc3RhdG8gYSBmYWxzZVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvblNlcmllc0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBsYW5jaWF0byBhbGwnaW5pemlvIGRlbCBjYXJpY2FtZW50byBkaSB1bmEgbnVvdmEgcGFnaW5hIGRlbCBncmFmaWNvXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uTG9hZFN0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBsYW5jaWF0byBhbCB0ZXJtaW5lIGRlbCBjYXJpY2FtZW50byBkaSB1bmEgbnVvdmEgcGFnaW5hIGRlbCBncmFmaWNvXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uTG9hZEVuZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAqIEV2ZW50byBsYW5jaWF0byBhbCB0ZXJtaW5lIGRlbGxhIGNyZWF6aW9uZSBkZWwgZ3JhZmljbyByZWZlcmVuemlhbmRvIGwnaXN0YW56YSBuYXRpdmEgZGVsIGdyYWZpY28gY3JlYXRvIGluIG1vZG8gZGEgcG90ZXIgZWZmZXR0dWFyZSBtb2RpZmljaGVcclxuICAqIHBvc3QgaW5pemlhbGl6emF6aW9uZSBsYXRvIGFwcGxpY2F0aXZvXHJcbiAgKi9cclxuICBAT3V0cHV0KCkgY2hhcnRMb2FkZWQ6IEV2ZW50RW1pdHRlcjxCYXNlQ2hhcnRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlQ2hhcnRDb21wb25lbnQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcnZlIGEgZGVjaWRlcmUgc2Ugc2Fyw6AgcHJlc2VudGUgbCdpbnRlcmZhY2NpYSBkaSBwYWdpbmF6aW9uZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc1BhZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGluaXREb25lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIElzdGFuemEgbmF0aXZhIGRlbCBncmFmaWNvIGFtY2hhcnRzLiBRdWFsc2lhc2kgY29zYSBub24gZmEgcXVlc3RhIGxpYnJlcmlhIHNpIHB1w7IgcHJlbmRlcmUgcXVlc3RhIGlzdGFuemEgZSBtb2RpZmljYXJlIGEgcGlhY2ltZW50b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBDaGFydDogYW00Y2hhcnRzLkNoYXJ0O1xyXG5cclxuICAvKipcclxuICAgKiBTZXJ2aXppbyBkaSBncmFmaWNhemlvbmUgZGVsIGdyYWZpY29cclxuICAgKi9cclxuICBwdWJsaWMgQ2hhcnRTZXJ2aWNlOiBJQmFzZVNlcnZpY2U8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogVmFyaWFiaWxlIGNoZSBpbmRpY2Egc2UgdW5hIG51b3ZhIHBhZ2luYSBkZWwgZ3JhZmljbyDDqCBpbiBmYXNlIGRpIGNhcmljYW1lbnRvXHJcbiAgICovXHJcbiAgcHVibGljIGxvYWRpbmdDaGFydDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGF0aSBkZWwgZ3JhZmljby4gT2duaSBpbXBsZW1lbnRhemlvbmUgZ2VzdGlyw6AgcXVlc3RhIHZhcmlhYmlsZSBpbiBiYXNlIGFsIHByb3ByaW8gdGlwbyBkaSBEYXRpXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgRGF0YTogYW55O1xyXG5cclxuICAvKipcclxuICAgKiBEYXRpIGRlbCBncmFmaWNvIGluIG1vZGFsaXTDoCBwYWdpbmF0YSwgcGVyIHF1YW5kbyB0dXR0ZSBsZSBwYWdpbmUgc29ubyBwcmVjYXJpY2F0ZSBpbiBtZW1vcmlhIChpbiBjYXNvIGNvbnRyYXJpbyB2ZXJyZWJiZXLDsiB1dGlsaXp6YXRpIGkgKipEYXRhRHRvcyoqKVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IERhdGFBcnJheTogUGFnZWRDaGFydERhdGE8YW55PltdO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2EgbGUgcHJvcHJpZXTDoCBzcGVjaWZpY2EgcGVyIHVuYSBkYXRhIGltcGxlbWVudGF6aW9uZSBjaGUgZGV2b25vIGNhdXNhcmUgdW4gcmVwYWludCBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIGFic3RyYWN0IGdldFNwZWNpZmljUHJvcGVydGllc1RvQ2hlY2soKTogc3RyaW5nW107XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBnZW5lcmljbyBkaSBncmFmaWNhemlvbmUsIHJlaW1wbGVtZW50YXRvIGRhbGxlIHZhcmllIGltcGxlbWVudGF6aW9uaVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IGdyYXBoaWNhdGUoY2FzdGVkU2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGdlbmVyaWNvIGNoZSBwcmVuZGUgbGUgaW1wb3N0YXppb25pIGdlbmVyaWNoZSBkZWwgZ3JhZmljbyBlIGxlIGNhc3RhIGFsbGEgdGlwb2xvZ2lhIGdpdXN0YSBwZXIgaWwgZ3JhZmljbyBzcGVjaWZpY29cclxuICAgKi9cclxuICBhYnN0cmFjdCBnZXRDYXN0ZWRTZXR0aW5ncygpOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgXCJSaWVtcGllXCIgbGEgY2xhc3NlIGRlbGxlIGltcG9zdGF6aW9uaSBjb24gdHV0dGUgbGUgaW1wb3N0YXppb25pIHNwZWNpZmljaGUgcGFzc2F0ZSBhIHVuIGRhdG8gZ3JhZmljbyBjb21lIElucHV0XHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZmlsbFNwZWNpZmljU2V0dGluZ3Moc2V0dGluZ3NDYXN0ZWQpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBDb3N0cnV0dG9yZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7RWxlbWVudFJlZn0gZWwgQ29udGVuaXRvcmUgYWxsJ2ludGVybm8gZGVsIGN1aSB2aWVuZSBjcmVhdG8gaWwgZ3JhZmljby4gVXRpbGl6emF0byBwZXIgZXN0cmFwb2xhcm5lIGxhICoqQ29udGFpbmVySGVpZ2h0KipcclxuICAgKiBAcGFyYW0ge09iamVjdH0gcGxhdGZvcm1JZCBwaWF0dGFmb3JtYSBBbmd1bGFyIChicm93c2VyLCBlY2MuLi4pIHBlciBlc3NlcmUgc2ljdXJpIGNoZSBhbWNoYXJ0cyB2ZW5nYSBhdHRpdmF0byBzb2xvIGxhdG8gYnJvd3Nlci4gTm9uIHV0aWxpenphbmRvIFNTUiBuZWxsZSBhcHBsaWNhemlvbmkgY2hlIGNvbnN1bWFubyBxdWVzdGEgbGlicmVyaWEgbm9uIMOoIHBhcnRpY29sYXJtZW50ZSBzaWduaWZpY2F0aXZvLCBtYSBub24gc2kgc2EgbWFpXHJcbiAgICogQHBhcmFtIHtOZ1pvbmV9IHpvbmUgTmdab25lIGRpIGRlZmF1bHQgcGVyIHBlcm1ldHRlcmUgZGkgaW5pemlhbGl6emFyZSBpbCBncmFmaWNvIGFsbCdpbmZ1b3JpIGRpIEFuZ3VsYXIgcGVyIGF2ZXJlIHF1YWxjaGUgcHJlc3RhemlvbmUgaW4gcGnDuVxyXG4gICAqIEBwYXJhbSB7Q2hhcnRMb2FkZXJ9IENoYXJ0ZXIgSXN0YW56YSBkZWwgTG9hZGVyIGNoZSBzaSBvY2N1cGVyw6AgZGkgY2FyaWNhcmUgaW4gbWVtb3JpYSB0dXR0byBjacOyIGNoZSBzZXJ2ZSBwZXIgaWwgZ3JhZmljbyBhdHR1YWxlICh0ZW1pLCBsb2NhbGUsIGFuaW1hemlvbmksIGVjYy4uLilcclxuICAgKiBAcGFyYW0ge0NoYXJ0RGlzcGF0Y2hlcn0gRGlzcGF0Y2hlciBJc3RhbnphIGRlbCBEaXNwYXRjaGVyIGNoZSBzaSBvY2N1cGEgZGkgZGlmZmVyaXJlIGlsIGNhcmljYW1lbnRvIGRlaSBncmFmaWNpIDEgZG9wbyBsJ2FsdHJvIGluIG1vZG8gY2hlIGNhcmljYW1lbnRpIHBzZXVkbyBwYXJhbGxlbGkgaW5jYXNpbmlubyB0dXR0b1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9ncyBJbmRpY2Egc2UgZWZmZXR0dWFyZSBsb2cgYSBjb25zb2xlIG8gbWVubywgaW5pZXR0YXRvIGRhbGxlIGNsYXNzaSBzcGVjaWFsaXp6YXRlIGRhbCB0b2tlbiBFU0NfTE9HU1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYW5pbWF0aW9ucyBJbmRpY2Egc2UgcGVyIHF1ZXN0byBncmFmaWNvIGRldm9ubyBlc3NlcmUgYXR0aXZlIG8gbWVubyBsZSBhbmltYXppb25pLiBJbXBvc3RhemlvbmUgZ2VuZXJpY2EgcHJlc2EgZGFsIHRva2VuIEVTQ19BTklNQVRJT05TXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSBJbmRpY2EgaWwgbG9jYWxlIHNwZWNpZmljbyBwZXIgcXVlc3RvIGdyYWZpY28uIEltcG9zdGF6aW9uZSBnZW5lcmljYSBwcmVzYSBkYWwgdG9rZW4gRVNDX0xPQ0FMRVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0aGVtZSBJbmRpY2EgaWwgdGVtYSBzcGVjaWZpY28gcGVyIHF1ZXN0byBncmFmaWNvLiBJbXBvc3RhemlvbmUgZ2VuZXJpY2EgcHJlc2EgZGFsIHRva2VuIEVTQ19USEVNRVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LCBwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBDaGFydGVyOiBDaGFydExvYWRlciwgcHJpdmF0ZSBEaXNwYXRjaGVyOiBDaGFydERpc3BhdGNoZXIsIHByaXZhdGUgbG9nczogYm9vbGVhbixcclxuICAgIHByaXZhdGUgYW5pbWF0aW9uczogYm9vbGVhbiwgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZywgcHJpdmF0ZSB0aGVtZTogc3RyaW5nKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGRpIGluaXppYWxpenphemlvbmUgcG9zdCB2YWxvcml6emF6aW9uZSBkZWdsaSBpbnB1dCwgdXRpbGl6emF0byBwZXIgdmFsb3JpenphcmUgY29ycmV0dGFtZW50ZSBsZSBwcm9wcmlldMOgIGVzc2VuemlhbGkgZGVsIGdyYWZpY28gKEFuaW1hemlvbmksIFRlbWEgZSBMb2NhbGUpXHJcbiAgICogXHJcbiAgICogVmllbmUgZGF0YSBwcmlvcml0w6AgYWkgU2V0dGluZ3MgKEhUTUwpLCBwcmlvcml0w6Agc2Vjb25kYXJpYSBhZ2xpIElucHV0IGRpcmV0dGkgKExhdG8gSFRNTCksIHByaW9yaXTDoCB1bHRpbWEgYWxsZSBpbXBvc3RhemlvbmkgZ2xvYmFsaSxcclxuICAgKiBpbXBvc3RhdGUgaW4gZmFzZSBkaSBpbXBvcnQgZGVsIG1vZHVsbyBhc3NlZ25hbmRvIHZhbG9yaSBhaSB0b2tlbiBFU0NfTE9DQUxFLCBFU0NfQU5JTUFUSU9OUywgRVNDX1RIRU1FXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBRdWkgc2Vydm9ubyBzb2xvIGxlIHZhcmlhYmlsaSBkYSBjb25vc2NlcmUgUFJFLWdyYWZpY2F6aW9uZSBwZXIgaWwgY2FyaWNhbWVudG8gZGVpIG1vZHVsaSBsYXp5IGRlbCBncmFmaWNvXHJcblxyXG4gICAgdGhpcy5BbmltYXRpb25zID0gdGhpcy5TZXR0aW5ncz8uQW5pbWF0aW9ucyAhPSBudWxsID8gdGhpcy5TZXR0aW5ncz8uQW5pbWF0aW9ucyA6ICh0aGlzLkFuaW1hdGlvbnMgIT0gbnVsbCA/IHRoaXMuQW5pbWF0aW9ucyA6IHRoaXMuYW5pbWF0aW9ucylcclxuICAgIHRoaXMuVGhlbWUgPSB0aGlzLlNldHRpbmdzPy5UaGVtZSAhPSBudWxsID8gdGhpcy5TZXR0aW5ncz8uVGhlbWUgOiAodGhpcy5UaGVtZSAhPSBudWxsID8gdGhpcy5UaGVtZSA6IDxhbnk+dGhpcy50aGVtZSlcclxuICAgIHRoaXMuTG9jYWxlID0gdGhpcy5TZXR0aW5ncz8uTG9jYWxlICE9IG51bGwgPyB0aGlzLlNldHRpbmdzPy5Mb2NhbGUgOiAodGhpcy5Mb2NhbGUgIT0gbnVsbCA/IHRoaXMuTG9jYWxlIDogdGhpcy5sb2NhbGUpXHJcblxyXG4gICAgdGhpcy5pc1BhZ2VkID0gKHRoaXMuRGF0YUFycmF5ICYmIHRoaXMuRGF0YUFycmF5Lmxlbmd0aCA+IDAgJiYgIXRoaXMuRGF0YSkgfHwgKHRoaXMuRGF0YUR0b3MgJiYgdGhpcy5EYXRhRHRvcy5sZW5ndGggPiAwICYmICEhdGhpcy5EYXRhUmV0cmlldmUpO1xyXG4gICAgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBuZ09uSW5pdFwiKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcGxlbWVudGF6aW9uZSB1dGlsaXp6YXRhIHBlciBjb250cm9sbGFyZSBldmVudHVhbGkgcHJvcHJpZXTDoCBjaGlhdmUgZGVsIGdyYWZpY28gZSByaWdyYWZpY2FyZSB0dXR0byBxdWFsb3JhIHNpIHJpdmVsYXNzZSBuZWNlc3NhcmlvXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzIEluZGljYXppb25lIGRlaSBjYW1iaWFtZW50aSBzdWxsZSBwcm9wcmlldMOgIGRlbCBncmFmaWNvLiBWZWRlcmUgZG9jdW1lbnRhemlvbmUgQW5ndWxhciBpbiBtZXJpdG9cclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoIXRoaXMuaW5pdERvbmUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IG5nT25DaGFuZ2VzXCIpO1xyXG5cclxuICAgIGxldCBwcm9wc1RvQ2hlY2sgPSBbXCJUaW1lbGluZVwiLCBcIkxlZ2VuZFwiLCBcIlNldHRpbmdzXCIsIFwiQW5pbWF0aW9uc1wiLCBcIlRoZW1lXCIsIFwiTG9jYWxlXCIsIC4uLnRoaXMuZ2V0U3BlY2lmaWNQcm9wZXJ0aWVzVG9DaGVjaygpXTtcclxuICAgIHRoaXMuY2hlY2tQcm9wZXJ0aWVzQW5kUmVncmFwaGljYXRlQXNOZWVkZWQoY2hhbmdlcywgcHJvcHNUb0NoZWNrKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5lbCBwb3N0IGluaXppYWxpenphemlvbmUsIGEgcGF0dG8gY2hlIG1pIHRyb3ZpIGluIGFtYmllbnRlIFwiYnJvd3NlclwiLCBwcm9zZWd1byBhbCBjYXJpY2FtZW50byBkZWwgZ3JhZmljbyBzdWxsJ0hUTUxcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMubmFtZSlcclxuICAgICAgdGhyb3cgXCJhIFVuaXF1ZSBuYW1lIGlzIG1hbmRhdG9yeSB0byBjcmVhdGUgYSBjaGFydFwiO1xyXG5cclxuICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogbmdBZnRlclZpZXdJbml0LCBncmFwaGljYXRpbmcgY2hhcnQgb3V0c2lkZSBBbmd1bGFyXCIpO1xyXG5cclxuICAgIGlmICghdGhpcy5pc1BhZ2VkKVxyXG4gICAgICB0aGlzLmRpc3BhdGNoTG9hZENoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGwnb25EZXN0cm95IHNjYXJpY28gaWwgZ3JhZmljbyBwZXIgbGliZXJhcmUgbWVtb3JpYVxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuQ2hhcnQpIHtcclxuICAgICAgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBVbmxvYWRpbmcgZGVzdHJveWVkIGNoYXJ0XCIpO1xyXG4gICAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHsgdGhpcy5DaGFydC5kaXNwb3NlKCk7IHRoaXMuRGlzcGF0Y2hlci5kZXJlZ2lzdGVyR3JhcGgodGhpcy5uYW1lKSB9KTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBVbmxvYWRpbmcgdW5jcmVhdGVkIGNoYXJ0IGNvbXBvbmVudC4gSXQgcHJvYmFibHkgd2FzIGEgZHVwbGljYXRlZFwiKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdHJhIGlsIGdyYWZpY28gYXR0dWFsZSBuZWwgRGlzcGF0Y2hlciBpbiBtb2RvIGNoZSB2ZW5nYSBjYXJpY2F0byBhcHBlbmEgcG9zc2liaWxlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkaXNwYXRjaExvYWRDaGFydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYnJvd3Nlck9ubHkoKCkgPT4ge1xyXG4gICAgICB0aGlzLkRpc3BhdGNoZXIucmVnaXN0ZXIodGhpcy5uYW1lLCAoKSA9PiB7IHJldHVybiB0aGlzLmxvYWRDaGFydCgpOyB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbCBjYXJpY2FtZW50byBkZWwgZ3JhZmljbyBmdW56aW9uYSBuZWwgc2VndWVudGUgbW9kbzpcclxuICAgKiBcclxuICAgKiAxKSBDYXJpY2FtZW50byBkZWwgdGVtYSBlIGRlbGxlIGFuaW1hemlvbmksIHF1YWxvcmEgbmVjZXNzYXJpXHJcbiAgICogXHJcbiAgICogMikgQ2FyaWNhbWVudG8gZGVsbGUgaW1wb3N0YXppb25pIHNwZWNpZmljaGUgZSBpbnRlZ3JhemlvbmUgY29uIGxlIGltcG9zdGF6aW9uaSBnZW5lcmljaGVcclxuICAgKiBcclxuICAgKiAzKSBHcmFmaWNhemlvbmVcclxuICAgKiBcclxuICAgKiA0KSBDYXJpY2FtZW50byBkZWwgbG9jYWxlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkQ2hhcnQoKSB7XHJcbiAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IFN0YXJ0IGxvYWRpbmcgTW9kdWxlcyBpZiBuZWVkZWRcIik7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xyXG4gICAgICB0aGlzLnNldHVwQW1DaGFydHNUaGVtZXMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IEdyYXBoaWNhdGluZyBhZnRlciBtb2R1bGVzIGxvYWRcIik7XHJcblxyXG4gICAgICAgIHZhciBjYXN0ZWRTZXR0aW5ncyA9IHRoaXMuZ2V0Q2FzdGVkU2V0dGluZ3MoKTtcclxuICAgICAgICB0aGlzLmZpbGxTZXR0aW5ncyhjYXN0ZWRTZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5maWxsU3BlY2lmaWNTZXR0aW5ncyhjYXN0ZWRTZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5DaGFydFNlcnZpY2UgPSB0aGlzLmdyYXBoaWNhdGUoY2FzdGVkU2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuQ2hhcnQgPSB0aGlzLkNoYXJ0U2VydmljZS5DaGFydEluc3RhbmNlO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuQ2hhcnQpIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogQ291bGQgbm90IGNyZWF0ZSBncmFwaFwiKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQ2hhcnRlci5hcHBseUxvY2FsZSh0aGlzLkNoYXJ0LCB0aGlzLkxvY2FsZSkudGhlbigoKSA9PiB7IHRoaXMuaW5pdERvbmUgPSB0cnVlOyB0aGlzLmNoYXJ0TG9hZGVkLmVtaXQodGhpcykgfSk7XHJcbiAgICAgIH0pXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJpZW1waW1lbnRvIGRlbGxlIGltcG9zdGF6aW9uaSBuZWxsYSBjbGFzc2UgU2V0dGluZ3MuIFNpIGRhbm5vIHByaW9yaXTDoCBhaSB2YWxvcmkgZ2nDoCBpbXBvc3RhdGkgbmVpIFNldHRpbmdzLCBcclxuICAgKiBpbnRlZ3JhbmRvIGV2ZW50dWFsbWVudGUgY29uIGxlICBwcm9wcmlldMOgIGRlbCBncmFmaWNvXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtCYXNlU2V0dGluZ3N9IHNldHRpbmdzIEltcG9zdGF6aW9uaSBiYXNlIHJpY2V2dXRlIGRhbGxhIHNwZWNpYWxpenphemlvbmUgZGVsIGdyYWZpY29cclxuICAgKi9cclxuICBwcml2YXRlIGZpbGxTZXR0aW5ncyhzZXR0aW5nczogQmFzZVNldHRpbmdzKSB7XHJcblxyXG4gICAgLy8gTWVyZ2UgZGVnbGkgSW5wdXQgY29uIGkgU2V0dGluZ3MsIGRhbmRvIHByaW9yaXTDoCBhaSBTZXR0aW5nc1xyXG5cclxuICAgIHNldHRpbmdzLlRoZW1lID0gc2V0dGluZ3MuVGhlbWUgPyBzZXR0aW5ncy5UaGVtZSA6IHRoaXMuVGhlbWU7XHJcbiAgICBzZXR0aW5ncy5Mb2NhbGUgPSBzZXR0aW5ncy5Mb2NhbGUgPyBzZXR0aW5ncy5Mb2NhbGUgOiB0aGlzLkxvY2FsZTtcclxuICAgIHNldHRpbmdzLkFuaW1hdGlvbnMgPSBzZXR0aW5ncy5BbmltYXRpb25zICE9IG51bGwgPyBzZXR0aW5ncy5BbmltYXRpb25zIDogdGhpcy5BbmltYXRpb25zO1xyXG5cclxuICAgIHNldHRpbmdzLkxlZ2VuZCA9IHNldHRpbmdzLkxlZ2VuZCAhPSBudWxsID8gc2V0dGluZ3MuTGVnZW5kIDogdGhpcy5MZWdlbmQ7XHJcbiAgICBzZXR0aW5ncy5OYW1lID0gc2V0dGluZ3MuTmFtZSA/IHNldHRpbmdzLk5hbWUgOiB0aGlzLm5hbWU7XHJcbiAgICBzZXR0aW5ncy5UaW1lbGluZSA9IHNldHRpbmdzLlRpbWVsaW5lICE9IG51bGwgPyBzZXR0aW5ncy5UaW1lbGluZSA6IHRoaXMuVGltZWxpbmU7XHJcbiAgICBzZXR0aW5ncy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uID0gc2V0dGluZ3MuQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbiAhPSBudWxsID8gc2V0dGluZ3MuQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbiA6IHRoaXMuQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbjtcclxuICAgIHNldHRpbmdzLlhBeGlzVGl0bGUgPSBzZXR0aW5ncy5YQXhpc1RpdGxlID8gc2V0dGluZ3MuWEF4aXNUaXRsZSA6IHRoaXMuWFRpdGxlO1xyXG4gICAgc2V0dGluZ3MuWUF4aXNUaXRsZSA9IHNldHRpbmdzLllBeGlzVGl0bGUgPyBzZXR0aW5ncy5ZQXhpc1RpdGxlIDogdGhpcy5ZVGl0bGU7XHJcbiAgICBzZXR0aW5ncy5MZWdlbmRQb3NpdGlvbiA9IHNldHRpbmdzLkxlZ2VuZFBvc2l0aW9uID8gc2V0dGluZ3MuTGVnZW5kUG9zaXRpb24gOiB0aGlzLkxlZ2VuZFBvc2l0aW9uO1xyXG4gICAgc2V0dGluZ3MuSGlkZVNlcmllc09uTGFiZWxDbGljayA9IHNldHRpbmdzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2sgIT0gbnVsbCA/IHNldHRpbmdzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2sgOiB0aGlzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2s7XHJcbiAgICBzZXR0aW5ncy5NaW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncy5NaW5HcmlkRGlzdGFuY2UgIT0gbnVsbCA/IHNldHRpbmdzLk1pbkdyaWREaXN0YW5jZSA6IHRoaXMuTWluR3JpZERpc3RhbmNlO1xyXG4gICAgc2V0dGluZ3MuTGVnZW5kUGFkZGluZyA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcgPyBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nIDogdGhpcy5MZWdlbmRQYWRkaW5nID8/IG51bGw7XHJcblxyXG4gICAgKDxhbnk+c2V0dGluZ3MpLkNvbnRhaW5lckhlaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgICg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2sgPSAoc2VyaWVzKSA9PiB7IHRoaXMub25TZXJpZXNDbGlja2VkLmVtaXQoc2VyaWVzKTsgfTtcclxuICAgICg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayA9IChldmVudDogeyBmcm9tOiBEYXRlLCB0bzogRGF0ZSwgaW5pdGlhbDogYm9vbGVhbiB9KSA9PiB7IHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoeyBmcm9tOiBldmVudC5mcm9tLCB0bzogZXZlbnQudG8sIGluaXRpYWw6IGV2ZW50LmluaXRpYWwgfSk7IH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb250cm9sbGEgaSBjYW1iaWFtZW50aSBhdnZlbnV0aSBhbGxlIHByb3ByaWV0w6AgY2hpYXZlIGUgcmllZmZldHR1YSBsYSBncmFmaWNhemlvbmUgcXVhbG9yYSBuZWNlc3NhcmlvXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzIEluZGljYXppb25lIGRlbGxhIG1vZGlmaWNoZSBhdnZlbnV0ZSBuZWkgdmFyaSBJbnB1dFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzVG9DaGVjayBMaXN0YSBkZWdsaSBJbnB1dCBkYSBjb250cm9sbGFyZSBwZXIgY3VpIHVuYSBtb2RpZmljYSBjYXVzYSB1bmEgcmlncmFmaWNhemlvbmVcclxuICAgKi9cclxuICBwcml2YXRlIGNoZWNrUHJvcGVydGllc0FuZFJlZ3JhcGhpY2F0ZUFzTmVlZGVkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMsIHByb3BzVG9DaGVjazogc3RyaW5nW10pIHtcclxuICAgIGxldCB0b1JlR3JhcGhpY2F0ZSA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wc1RvQ2hlY2subGVuZ3RoOyBpKyspXHJcbiAgICAgIHRvUmVHcmFwaGljYXRlID0gdG9SZUdyYXBoaWNhdGUgfHwgKGNoYW5nZXNbcHJvcHNUb0NoZWNrW2ldXSAmJiBjaGFuZ2VzW3Byb3BzVG9DaGVja1tpXV0uY3VycmVudFZhbHVlKVxyXG5cclxuICAgIGlmICh0b1JlR3JhcGhpY2F0ZSlcclxuICAgICAgdGhpcy5yZWxvYWRDaGFydCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuemlvbmUgY2hlIGVmZmV0dHVhIHVuIGNhbWJpbyBkaSBwYWdpbmEgcGVyIGkgZ3JhZmljaSBwYWdpbmF0aS4gUXVhbG9yYSAqKmRhdGEqKiBmb3NzZSBudWxsbyBzaWduaWZpY2EgY2hlIMOoIGluaXppYXRvIHVuIGNhcmljYW1lbnRvIFxyXG4gICAqIGUgYW5jaGUgbGF0byBhcHBsaWNhdGl2byBpbCBEYXRhUmV0cmlldmUgZG92csOgIGNvbnNpZGVyYXJlIGNoZSBsJ2Fzc2VuemEgZGkgdmFsb3JpIG5vbiDDqCBhbHRybyBjaGUgdW4naW5kaWNhemlvbmUgZGkgaW5pemlvIGNhcmljYW1lbnRvXHJcbiAgICogXHJcbiAgICogSWwgY2FyaWNhbWVudG8gZGkgcXVhbHNpYXNpIHBhZ2luYSBnZW5lcmVyw6AgY29tdW5xdWUgdW5hIHByaW1vIGV2ZW50byBjb24gKipkYXRhKiogbnVsbG8gaW4gbW9kbyBkYSBpbmRpY2FyZSBsJ2luaXppbyBjYXJpY2FtZW50byBlXHJcbiAgICogaW4gc2Vjb25kYSBpc3RhbnphIHVuIGFsdHJvIGV2ZW50byBpbiBjdWkgKipkYXRhKiogc2Fyw6Agc2VtcHJlIHZhbG9yaXp6YXRvLCBvIGNvbiBpbCBEdG8gZGEgdXNhcmUgcGVyIHJlY3VwZXJhcmUgaSBkYXRpLCBvIGNvbiBpIGRhdGlcclxuICAgKiB2ZXJpIGUgcHJvcHJpIGdpw6AgcHJlc2VudGkgbmVsICoqRGF0YUFycmF5KipcclxuICAgKiBcclxuICAgKiBJIGNhbGxiYWNrICoqb25Mb2FkU3RhcnQqKiBlICoqb25Mb2FkRW5kKiogdmVuZ29ubyBzZW1wcmUgY2hpYW1hdGlcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3sgZGF0YTogTGluZUNoYXJ0RGF0YSB8IFBpZUNoYXJ0RGF0YSB8IFZlcnRpY2FsMkRDaGFydERhdGEgfCBWZXJ0aWNhbENoYXJ0RGF0YSB8IGFueSwgaW5kZXg6IG51bWJlciB9fSBuZCBJbmRpY2UgZGVsIGNhcmljYW1lbnRvIGRhdGksIGNvbiBldmVudHVhbG1lbnRlIGdpw6AgaSBkYXRpIHNlIGRpc3BvbmliaWxpXHJcbiAgICovXHJcbiAgcHVibGljIGNoYW5nZVBhZ2UobmQ6IHsgZGF0YTogTGluZUNoYXJ0RGF0YSB8IFBpZUNoYXJ0RGF0YSB8IFZlcnRpY2FsMkRDaGFydERhdGEgfCBWZXJ0aWNhbENoYXJ0RGF0YSB8IGFueSwgaW5kZXg6IG51bWJlciB9KSB7XHJcbiAgICBpZiAoIW5kLmRhdGEpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhcnQgPSB0cnVlO1xyXG4gICAgICAvLyBTZXJ2ZSBwZXIgaW5mb3JtYXJlIGwnYXBwbGljYXRpdm8gaW4gbGlzdGVuaW5nIHN1bGwnaW5kaWNlIGF0dHVhbG1lbnRlIGluIHZpc3VhbGl6emF6aW9uZS4gXHJcbiAgICAgIC8vIExhIG1hbmNhbnphIGRpIGRhdGkgaW5kaWNhIGNoZSBub24gZGV2b25vIGVzc2VyZSBlZmZldHR1YXRlIHJpY2VyY2hlIHBlciBvcmFcclxuICAgICAgaWYgKHRoaXMuRGF0YVJldHJpZXZlKVxyXG4gICAgICAgIHRoaXMuRGF0YVJldHJpZXZlKG51bGwsIG5kLmluZGV4KVxyXG4gICAgICB0aGlzLm9uTG9hZFN0YXJ0LmVtaXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkRhdGFSZXRyaWV2ZSlcclxuICAgICAgdGhpcy5EYXRhUmV0cmlldmUobmQuZGF0YSwgbmQuaW5kZXgpLnRoZW4odCA9PiB7IHRoaXMuY2hhbmdlUGFnZURhdGFSZWNlaXZlZCh0KTsgfSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2hhbmdlUGFnZURhdGFSZWNlaXZlZChuZC5kYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsIHRlcm1pbmUgZGVsIGNhcmljYW1lbnRvIGRlaSBkYXRpIGRpIHVuYSBwYWdpbmEgcXVlc3RvIG1ldG9kbyB2aWVuZSBjaGlhbWF0byBwZXIgcmlncmFmaWNhcmUgbGEgc2l0dWF6aW9uZSBjb24gaSBudW92aSBkYXRpXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55fSBkYXRhIERhdGkgZGVsIGdyYWZpY29cclxuICAgKi9cclxuICBwcml2YXRlIGNoYW5nZVBhZ2VEYXRhUmVjZWl2ZWQoZGF0YTogTGluZUNoYXJ0RGF0YSB8IFBpZUNoYXJ0RGF0YSB8IFZlcnRpY2FsMkRDaGFydERhdGEgfCBWZXJ0aWNhbENoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgdGhpcy5sb2FkaW5nQ2hhcnQgPSBmYWxzZTtcclxuICAgIHRoaXMub25Mb2FkRW5kLmVtaXQoKTtcclxuICAgIGxldCBmaXJzdEJpbmQgPSAhdGhpcy5EYXRhO1xyXG4gICAgdGhpcy5EYXRhID0gZGF0YTtcclxuXHJcbiAgICBpZiAoIWZpcnN0QmluZClcclxuICAgICAgdGhpcy5yZWxvYWRDaGFydCgpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmRpc3BhdGNoTG9hZENoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSaWNhcmljYSBpbCBncmFmaWNvIGRpc3RydWdnZW5kbyBpbCB2ZWNjaGlvIGUgcmljcmVhbmRvIGlsIG51b3ZvXHJcbiAgICogXHJcbiAgICogTGUgY2hpYW1hdGUgYSBxdWVzdG8gbWV0b2RvIHBvc3Nvbm8gZXNzZXJlIHRyYXNmb3JtYXRlIGluIGNoaWFtYXRlIGFsIG1ldG9kbyAqKmdyYXBoaWNhdGUqKiBkZWxsYSBTZXJ2aWNlLCBzZSBzb2xvIHF1ZWwgbWV0b2RvIGZvc3NlIGFiYmFzdGFuemEgaW50ZWxsaWdlbnRlIHBlciBjYXBpcmVcclxuICAgKiBsZSBkaWZmZXJlbnplIGZyYSBpbCBncmFmaWNvIGNvbSdlcmEgcHJpbWEgZSBjb21lIGRldmUgZGl2ZW50YXJlLCBpbiBtb2RvIGRhIG5vbiByaWNyZWFybG8gbWEgc2VtcGxpY2VtZW50ZSBtb2RpZmljYXJlIHF1ZWxsbyBjaGUgZ2nDoCDDqCBkaXNlZ25hdG9cclxuICAgKi9cclxuICBwcml2YXRlIHJlbG9hZENoYXJ0KCkge1xyXG4gICAgdGhpcy5icm93c2VyT25seSgoKSA9PiB7IGlmICghdGhpcy5DaGFydC5pc0Rpc3Bvc2VkKCkpIHRoaXMuQ2hhcnQuZGlzcG9zZSgpOyB0aGlzLkRpc3BhdGNoZXIuZGVyZWdpc3RlckdyYXBoKHRoaXMubmFtZSkgfSk7XHJcbiAgICB0aGlzLkRpc3BhdGNoZXIucmVnaXN0ZXIodGhpcy5uYW1lLCAoKSA9PiB7IHJldHVybiB0aGlzLmxvYWRDaGFydCgpOyB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcm1ldHRlIGRpIGFnZ2l1bmdlcmUgdW4gYmxvY2NvIGRpIGRhdGkgaW4gbWFuaWVyYSBcImxpdmVcIiBhZCB1biBncmFmaWNvXHJcbiAgICovXHJcbiAgcHVibGljIGFkZERhdGEoY2hhcnREYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuQ2hhcnRTZXJ2aWNlLnJlZnJlc2hEYXRhKGNoYXJ0RGF0YSk7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuemlvbmUgY2hlIHNpIG9jY3VwYSBkaSBjYXJpY2FyZSBpIHRlbWkgbmVjZXNzYXJpIHBlciBpbCBncmFmaWNvIGluIG9nZ2V0dG8uIFByaW1hIGFwcGxpY2EgaWwgdGVtYSwgcG9pLCBzZSBzZXJ2ZSwgYXBwbGljYSBsZSBhbmltYXppb25pXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXR1cEFtQ2hhcnRzVGhlbWVzKCkge1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcclxuICAgICAgdGhpcy5DaGFydGVyLmFwcGx5VGhlbWUoYW00Y29yZSwgdGhpcy5UaGVtZSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQW5pbWF0aW9ucyA/IHRoaXMuQ2hhcnRlci5hcHBseUFuaW1hdGlvbnMoYW00Y29yZSkgOiB0aGlzLkNoYXJ0ZXIudW5hcHBseUFuaW1hdGlvbnMoYW00Y29yZSk7XHJcbiAgICAgIH0pXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwcml2YXRlIGxvZyhsb2c6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMubG9ncylcclxuICAgICAgY29uc29sZS5sb2coXCJAZXNmYWVuemEvZXMtY2hhcnRzOiBcIiArIGxvZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgYnJvd3Nlck9ubHkoZjogKCkgPT4gdm9pZCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBmKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBc0UsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVksU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBYy9LLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHcEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFnQixrQkFBa0I7SUErTHRDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILFlBQW9CLEVBQWMsRUFBVSxVQUFrQixFQUFVLElBQVksRUFBVSxPQUFvQixFQUFVLFVBQTJCLEVBQVUsSUFBYSxFQUNwSyxVQUFtQixFQUFVLE1BQWMsRUFBVSxLQUFhO1FBRHhELE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVM7UUFDcEssZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBN0s1RTs7V0FFRztRQUNNLFNBQUksR0FBVyxFQUFFLENBQUM7UUEwRDNCOzs7O1dBSUc7UUFDTSxrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQVlyQzs7V0FFRztRQUNPLHVCQUFrQixHQUE2RCxJQUFJLFlBQVksRUFBOEMsQ0FBQztRQUV4Sjs7V0FFRztRQUNPLG9CQUFlLEdBQXlCLElB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SUFBSSxDQUFDLFVBQVUsQ0FBQztRQUUxRixRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFFLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxRCxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xGLFFBQVEsQ0FBQyw0QkFBNEIsR0FBRyxRQUFRLENBQUMsNEJBQTRCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztRQUNsSyxRQUFRLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUUsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlFLFFBQVEsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNsRyxRQUFRLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FB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M0QsWUFBWTt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUtoQyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBS0csZUFBZTtzQkFBeEIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBTUcsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENvbnRlbnRDaGlsZCwgT3B0aW9uYWwsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MvYmFzZS9CYXNlU2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBMZWdlbmRQYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MvYmFzZS9MZWdlbmRQYWQnO1xyXG5pbXBvcnQgeyBDaGFydExvYWRlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29yZS9DaGFydExvYWRlclwiO1xyXG5pbXBvcnQgeyBDaGFydERpc3BhdGNoZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvcmUvQ2hhcnREaXNwYXRjaGVyXCI7XHJcblxyXG5pbXBvcnQgeyBMaW5lQ2hhcnREYXRhIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGFcIjtcclxuaW1wb3J0IHsgUGllQ2hhcnREYXRhIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhL1BpZUNoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbENoYXJ0RGF0YSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS9WZXJ0aWNhbENoYXJ0RGF0YVwiO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbDJEQ2hhcnREYXRhIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhL1ZlcnRpY2FsMkRDaGFydERhdGFcIjtcclxuaW1wb3J0IHsgUGFnZWRDaGFydERhdGEgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RhdGEvUGFnZWRDaGFydERhdGFcIjtcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBHcmFmaWNvIEJhc2UgY2hlIGdlc3Rpc2NlIHR1dHRlIGxlIGNvc2UgY29tdW5pIGRlaSB2YXJpIGdyYWZpY2kgaXN0YW56aWFiaWxpLCBjb21lIGxhIHByZXNlbnphIG8gbWVudSBkaSB1bmEgbGVnZW5kYSxcclxuICogaWwgdGVtYSB1dGlsaXp6YXRvLCBpbCBsb2NhbGUgZGVsIHNpbmdvbG8gZ3JhZmljbywgZWNjIGVjYy4uLlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGl0b2xvIHBlciBsJ2Fzc2UgWFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFhUaXRsZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUaXRvbG8gcGVyIGwnYXNzZSBZXHJcbiAgICovXHJcbiAgQElucHV0KCkgWVRpdGxlOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGF6aW9uaSBkaSBiYXNlXHJcbiAgICovXHJcbiAgQElucHV0KCkgU2V0dGluZ3M6IEJhc2VTZXR0aW5ncztcclxuXHJcbiAgLyoqXHJcbiAgICogUHJlc2VuemEgbyBtZW5vIGRlbGxhIGxlZ2VuZGFcclxuICAgKi9cclxuICBASW5wdXQoKSBMZWdlbmQ6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvc2l6aW9uZSBkZWxsYSBsZWdlbmRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgTGVnZW5kUG9zaXRpb246IFwidG9wXCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZXNlbnphIG8gbWVubyBkZWxsYSB0aW1lbGluZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFRpbWVsaW5lOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBOb21lIGRlbCBncmFmaWNvLCBmb25kYW1lbnRhbGUgYXNzZWduYXJsbyBwZXIgcGVybWV0dGVyZSBhbGxhIGxpYnJlcmlhIGRpIHNjaGVkdWxhcm5lIGxhIGNyZWF6aW9uZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFV0aWxpenpvIG8gbWVubyBkZWxsZSBhbmltYXppb25pLiBTZW56YSBhbmltYXppb25pIGlsIGdyYWZpY28gw6ggbGVnZ2VybWVudGUgcGnDuSBwZXJmb3JtYW50ZSwgc3BlY2lhbG1lbnRlIGFsbCdhdW1lbnRhcmUgZGVpIHB1bnRpIG5lbGxhIHNlcmllXHJcbiAgICovXHJcbiAgQElucHV0KCkgQW5pbWF0aW9uczogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGVtYSBkYSB1dGlsaXp6YXJlLCB2YWxpZG8gc29sbyBwZXIgaWwgZ3JhZmljbyBpbiBxdWVzdGlvbmUuIEdsaSBhbHRyaSBncmFmaWNpIGRlbGxhIHBhZ2luYSBwb3Nzb25vIGF2ZXJlIHN0aWxpIGRpdmVyc2kuXHJcbiAgICogXHJcbiAgICogRXNzZW5kbyBpIHRlbWkgY2FyaWNhdGkgaW4gbWFuaWVyYSBhc2luY3JvbmEgaW4gYmFzZSBhbGwndXRpbGl6em8gdXRpbGl6emFybmUgdGFudGkgZGl2ZXJzaSBpbiB1bid1bmljYSBwYWdpbmEgcG90cmViYmUgcmFsbGVudGFyZSBpbCBwcmltbyBjYXJpY2FtZW50b1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIFRoZW1lOiAnc3Bpcml0ZWRhd2F5JyB8ICdtb29ucmlzZWtpbmdkb20nIHwgJ2Zyb3plbicgfCAnZGFyaycgfCAna2VsbHknIHwgJ21hdGVyaWFsJyB8ICdkYXRhdml6JyB8ICdub25lJztcclxuXHJcbiAgLyoqXHJcbiAgICogTG9jYWxlIGRlbCBzaW5nb2xvIGdyYWZpY29cclxuICAgKi9cclxuICBASW5wdXQoKSBMb2NhbGU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIHV0aWxpenphcmUgaWwgY29tcG9ydGFtZW50byBkaSBkZWZhdWx0IHBlciBpIGNsaWNrIGRlbGxlIHNlcmllIHN1bGxhIExlZ2VuZGEuIE1ldHRlbmRvIHF1ZXN0YSB2YXJpYWJpbGUgYSAqKmZhbHNlKipcclxuICAgKiBlIGNvbGxlZ2FuZG8gbCdvdXRwdXQgKipvblNlcmllc0NsaWNrZWQqKiDDqCBwb3NzaWJpbGUgZ2VuZXJhcmUgdW4gZXZlbnRvIG9nbmkgdm9sdGEgY2hlIGwndXRlbnRlIGZhIGNsaWNrIHN1IHVuYSBzZXJpZSBkZWxsYSBMZWdlbmRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgSGlkZVNlcmllc09uTGFiZWxDbGljazogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWluaW1hIGRpc3RhbnphIG5lbGxhIGdyaWdsaWEgZnJhIGkgdmFsb3JpLCBtb2RpZmljYSBsYSBxdWFudGl0w6AgZGkgc3RlcCBmcmEgaSB2YWxvcmkgZGVsbCdhc3NlIFggZSBxdWluZGkgbGEgZ3JhbnVsYXJpdMOgIGRlaSBkYXRpLlxyXG4gICAqIFxyXG4gICAqIFBpw7kgcGljY29sYSDDqCwgcGnDuSB2YWxvcmkgdmVycmFubm8gaW5zZXJpdGkgbmVsbCdhc3NlIFhcclxuICAgKi9cclxuICBASW5wdXQoKSBNaW5HcmlkRGlzdGFuY2U6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2VyY2EgZGkgYWdnaXVzdGFyZSBpIHZhcmkgc3RlcCBkZWxsJ2Fzc2UgWCBydW90YW5kb2xpIGUgZGltaW51ZW5kb25lIGxlIGRpbWVuc2lvbmkgYWJiYXN0YW56YSBwZXIgbW9zdHJhcm5lIGlsIHBpw7kgcG9zc2liaWxlXHJcbiAgICovXHJcbiAgQElucHV0KCkgQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbjogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogUGFkZGluZyBkYSBhcHBsaWNhcmUgYWxsYSBMZWdlbmRhIGluIGNhc28gc2kgdm9nbGlhIHNwb3N0YXJlIHVuIHBvJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIExlZ2VuZFBhZGRpbmc6IExlZ2VuZFBhZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGEgZGkgZHRvIGdlbmVyaWNpIGNoZSB2ZXJyYW5ubyBlbWVzc2kgZGFsIHNpc3RlbWEgZGkgZ3JhZmljaSB1bm8gcGVyIHVubyBhdHRyYXZlcnNvIGxhIGZ1bnppb25lICoqRGF0YVJldHJpZXZlKiosIGNoZSBkb3ZyYW5ubyBlc3NlcmVcclxuICAgKiB1c2F0aSBwZXIgdWFuIHNvcnRhIGRpIGNhcmljYW1lbnRvIFwicGFnaW5hdG9cIiBkZWkgZ3JhZmljaVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFEdG9zOiBhbnlbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNlIGRlbGwnYXJyYXkgKipEYXRhRHRvcyoqIG8gZGVsbCdhcnJheSAqKkRhdGFBcnJheSoqIGRhIGN1aSBpbml6aWFyZSBhZCBlbWV0dGVyZSBpIHZhbG9yaSwgdXRpbGUgcGVyIHN1cHBvcnRhcmUgaWwgXCJiYWNrXCIgZGEgdW4gZXZlbnR1YWxlIHBhZ2luYSBkaSBkZXR0YWdsaW9cclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhRHRvU3RhcnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBGdW56aW9uZSBkZWZpbml0YSBsYXRvIGFwcGxpY2F0aXZvIGNoZSBpbiBiYXNlIGFsICoqRGF0YUR0byoqIGNvcnJlbnRlIHJlc3RpdHVpc2NlIHVuYSBQcm9taXNlIGRlbCB0aXBvIGRpIGRhdGkgcmljaGllc3RvIHBlciBpbCBncmFmaWNvIGNvcnJlbnRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YVJldHJpZXZlOiAoZHRvOiBhbnksIGluZGV4OiBudW1iZXIpID0+IFByb21pc2U8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogRG9wbyBhdmVyIG5hdmlnYXRvIGEgdW4gbnVvdm8gZ3JhZmljbyB2ZXJyYW5ubyBhdHRlc2kgcXVlc3RpIG1pbGxpc2Vjb25kaSBwcmltYSBkaSByaWNoaWVkZXJlIGkgZGF0aSBhdHRyYXZlcnNvIGxhICoqRGF0YVJldHJpZXZlKiouXHJcbiAgICogXHJcbiAgICogUXVlc3RvIHBlciBldml0YXJlIGNoZSBsJ3V0ZW50ZSBjbGljY2FuZG8gdmVsb2NlbWVudGUgXCJhdmFudGlcIiBnZW5lcmkgdG9ubmVsbGF0ZSBkaSByaWNoaWVzdGUgaW51dGlsaVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEJyb3dzZURlbGF5TXM6IG51bWJlciA9IDUwMDtcclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZXN0YXppb25lIGRlaSBncmFmaWNpIG5lbCBjYXNvIHNpIHV0aWxpenppIGxhIG1vZGFsaXTDoCBwYWdpbmF0YVxyXG4gICAqL1xyXG4gIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBoZWFkZXJfdHI7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lc3NhZ2dpbyBkaSBjYXJpY2FtZW50byBmcmEgdW4gZ3JhZmljbyBlIGwnYWx0cm8gXHJcbiAgICovXHJcbiAgQENvbnRlbnRDaGlsZCgnbG9hZGluZycsIHsgc3RhdGljOiBmYWxzZSB9KSBsb2FkaW5nX3RlbXBsYXRlO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gbGFuY2lhdG8gc3VsbGEgc2VsZXppb25lIGRpIHVuIHJhbmdlIGRpIGRhdGkgbyBkYWxsYSB0aW1lbGluZSBvIGRhbCBncmFmaWNvLiBWYWxpZG8gcGVyIHR1dHRpIGkgZ3JhZmljaSBjaGUgc3VwcG9ydGFubyBzZXJpZSBiYXNhdGUgc3VsbGUgZGF0ZVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjx7IGZyb206IERhdGUsIHRvOiBEYXRlLCBpbml0aWFsOiBib29sZWFuIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZyb206IERhdGUsIHRvOiBEYXRlLCBpbml0aWFsOiBib29sZWFuIH0+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBsYW5jaWF0byBkYWwgY2xpY2sgZGkgdW5hIHNlcmllIGRhbGxhIExlZ2VuZGEsIGEgcGF0dG8gY2hlIGwnSW5wdXQgKipIaWRlU2VyaWVzT25MYWJlbENsaWNrKiogc2lhIGltcG9zdGF0byBhIGZhbHNlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uU2VyaWVzQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGxhbmNpYXRvIGFsbCdpbml6aW8gZGVsIGNhcmljYW1lbnRvIGRpIHVuYSBudW92YSBwYWdpbmEgZGVsIGdyYWZpY29cclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25Mb2FkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGxhbmNpYXRvIGFsIHRlcm1pbmUgZGVsIGNhcmljYW1lbnRvIGRpIHVuYSBudW92YSBwYWdpbmEgZGVsIGdyYWZpY29cclxuICAgKi9cclxuICBAT3V0cHV0KCkgb25Mb2FkRW5kOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICogRXZlbnRvIGxhbmNpYXRvIGFsIHRlcm1pbmUgZGVsbGEgY3JlYXppb25lIGRlbCBncmFmaWNvIHJlZmVyZW56aWFuZG8gbCdpc3RhbnphIG5hdGl2YSBkZWwgZ3JhZmljbyBjcmVhdG8gaW4gbW9kbyBkYSBwb3RlciBlZmZldHR1YXJlIG1vZGlmaWNoZVxyXG4gICogcG9zdCBpbml6aWFsaXp6YXppb25lIGxhdG8gYXBwbGljYXRpdm9cclxuICAqL1xyXG4gIEBPdXRwdXQoKSBjaGFydExvYWRlZDogRXZlbnRFbWl0dGVyPEJhc2VDaGFydENvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEJhc2VDaGFydENvbXBvbmVudD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2VydmUgYSBkZWNpZGVyZSBzZSBzYXLDoCBwcmVzZW50ZSBsJ2ludGVyZmFjY2lhIGRpIHBhZ2luYXppb25lXHJcbiAgICovXHJcbiAgcHVibGljIGlzUGFnZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdERvbmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSXN0YW56YSBuYXRpdmEgZGVsIGdyYWZpY28gYW1jaGFydHMuIFF1YWxzaWFzaSBjb3NhIG5vbiBmYSBxdWVzdGEgbGlicmVyaWEgc2kgcHXDsiBwcmVuZGVyZSBxdWVzdGEgaXN0YW56YSBlIG1vZGlmaWNhcmUgYSBwaWFjaW1lbnRvXHJcbiAgICovXHJcbiAgcHVibGljIENoYXJ0OiBhbTRjaGFydHMuQ2hhcnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcnZpemlvIGRpIGdyYWZpY2F6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIHB1YmxpYyBDaGFydFNlcnZpY2U6IElCYXNlU2VydmljZTxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBWYXJpYWJpbGUgY2hlIGluZGljYSBzZSB1bmEgbnVvdmEgcGFnaW5hIGRlbCBncmFmaWNvIMOoIGluIGZhc2UgZGkgY2FyaWNhbWVudG9cclxuICAgKi9cclxuICBwdWJsaWMgbG9hZGluZ0NoYXJ0OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBEYXRpIGRlbCBncmFmaWNvLiBPZ25pIGltcGxlbWVudGF6aW9uZSBnZXN0aXLDoCBxdWVzdGEgdmFyaWFiaWxlIGluIGJhc2UgYWwgcHJvcHJpbyB0aXBvIGRpIERhdGlcclxuICAgKi9cclxuICBhYnN0cmFjdCBEYXRhOiBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGkgZGVsIGdyYWZpY28gaW4gbW9kYWxpdMOgIHBhZ2luYXRhLCBwZXIgcXVhbmRvIHR1dHRlIGxlIHBhZ2luZSBzb25vIHByZWNhcmljYXRlIGluIG1lbW9yaWEgKGluIGNhc28gY29udHJhcmlvIHZlcnJlYmJlcsOyIHV0aWxpenphdGkgaSAqKkRhdGFEdG9zKiopXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgRGF0YUFycmF5OiBQYWdlZENoYXJ0RGF0YTxhbnk+W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBsZSBwcm9wcmlldMOgIHNwZWNpZmljYSBwZXIgdW5hIGRhdGEgaW1wbGVtZW50YXppb25lIGNoZSBkZXZvbm8gY2F1c2FyZSB1biByZXBhaW50IGRlbCBncmFmaWNvXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZ2V0U3BlY2lmaWNQcm9wZXJ0aWVzVG9DaGVjaygpOiBzdHJpbmdbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGdlbmVyaWNvIGRpIGdyYWZpY2F6aW9uZSwgcmVpbXBsZW1lbnRhdG8gZGFsbGUgdmFyaWUgaW1wbGVtZW50YXppb25pXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZ3JhcGhpY2F0ZShjYXN0ZWRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gZ2VuZXJpY28gY2hlIHByZW5kZSBsZSBpbXBvc3RhemlvbmkgZ2VuZXJpY2hlIGRlbCBncmFmaWNvIGUgbGUgY2FzdGEgYWxsYSB0aXBvbG9naWEgZ2l1c3RhIHBlciBpbCBncmFmaWNvIHNwZWNpZmljb1xyXG4gICAqL1xyXG4gIGFic3RyYWN0IGdldENhc3RlZFNldHRpbmdzKCk6IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBcIlJpZW1waWVcIiBsYSBjbGFzc2UgZGVsbGUgaW1wb3N0YXppb25pIGNvbiB0dXR0ZSBsZSBpbXBvc3Rhemlvbmkgc3BlY2lmaWNoZSBwYXNzYXRlIGEgdW4gZGF0byBncmFmaWNvIGNvbWUgSW5wdXRcclxuICAgKi9cclxuICBhYnN0cmFjdCBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvc3RydXR0b3JlXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtFbGVtZW50UmVmfSBlbCBDb250ZW5pdG9yZSBhbGwnaW50ZXJubyBkZWwgY3VpIHZpZW5lIGNyZWF0byBpbCBncmFmaWNvLiBVdGlsaXp6YXRvIHBlciBlc3RyYXBvbGFybmUgbGEgKipDb250YWluZXJIZWlnaHQqKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwbGF0Zm9ybUlkIHBpYXR0YWZvcm1hIEFuZ3VsYXIgKGJyb3dzZXIsIGVjYy4uLikgcGVyIGVzc2VyZSBzaWN1cmkgY2hlIGFtY2hhcnRzIHZlbmdhIGF0dGl2YXRvIHNvbG8gbGF0byBicm93c2VyLiBOb24gdXRpbGl6emFuZG8gU1NSIG5lbGxlIGFwcGxpY2F6aW9uaSBjaGUgY29uc3VtYW5vIHF1ZXN0YSBsaWJyZXJpYSBub24gw6ggcGFydGljb2xhcm1lbnRlIHNpZ25pZmljYXRpdm8sIG1hIG5vbiBzaSBzYSBtYWlcclxuICAgKiBAcGFyYW0ge05nWm9uZX0gem9uZSBOZ1pvbmUgZGkgZGVmYXVsdCBwZXIgcGVybWV0dGVyZSBkaSBpbml6aWFsaXp6YXJlIGlsIGdyYWZpY28gYWxsJ2luZnVvcmkgZGkgQW5ndWxhciBwZXIgYXZlcmUgcXVhbGNoZSBwcmVzdGF6aW9uZSBpbiBwacO5XHJcbiAgICogQHBhcmFtIHtDaGFydExvYWRlcn0gQ2hhcnRlciBJc3RhbnphIGRlbCBMb2FkZXIgY2hlIHNpIG9jY3VwZXLDoCBkaSBjYXJpY2FyZSBpbiBtZW1vcmlhIHR1dHRvIGNpw7IgY2hlIHNlcnZlIHBlciBpbCBncmFmaWNvIGF0dHVhbGUgKHRlbWksIGxvY2FsZSwgYW5pbWF6aW9uaSwgZWNjLi4uKVxyXG4gICAqIEBwYXJhbSB7Q2hhcnREaXNwYXRjaGVyfSBEaXNwYXRjaGVyIElzdGFuemEgZGVsIERpc3BhdGNoZXIgY2hlIHNpIG9jY3VwYSBkaSBkaWZmZXJpcmUgaWwgY2FyaWNhbWVudG8gZGVpIGdyYWZpY2kgMSBkb3BvIGwnYWx0cm8gaW4gbW9kbyBjaGUgY2FyaWNhbWVudGkgcHNldWRvIHBhcmFsbGVsaSBpbmNhc2luaW5vIHR1dHRvXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBsb2dzIEluZGljYSBzZSBlZmZldHR1YXJlIGxvZyBhIGNvbnNvbGUgbyBtZW5vLCBpbmlldHRhdG8gZGFsbGUgY2xhc3NpIHNwZWNpYWxpenphdGUgZGFsIHRva2VuIEVTQ19MT0dTXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBhbmltYXRpb25zIEluZGljYSBzZSBwZXIgcXVlc3RvIGdyYWZpY28gZGV2b25vIGVzc2VyZSBhdHRpdmUgbyBtZW5vIGxlIGFuaW1hemlvbmkuIEltcG9zdGF6aW9uZSBnZW5lcmljYSBwcmVzYSBkYWwgdG9rZW4gRVNDX0FOSU1BVElPTlNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxlIEluZGljYSBpbCBsb2NhbGUgc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljby4gSW1wb3N0YXppb25lIGdlbmVyaWNhIHByZXNhIGRhbCB0b2tlbiBFU0NfTE9DQUxFXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRoZW1lIEluZGljYSBpbCB0ZW1hIHNwZWNpZmljbyBwZXIgcXVlc3RvIGdyYWZpY28uIEltcG9zdGF6aW9uZSBnZW5lcmljYSBwcmVzYSBkYWwgdG9rZW4gRVNDX1RIRU1FXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsIHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIENoYXJ0ZXI6IENoYXJ0TG9hZGVyLCBwcml2YXRlIERpc3BhdGNoZXI6IENoYXJ0RGlzcGF0Y2hlciwgcHJpdmF0ZSBsb2dzOiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBhbmltYXRpb25zOiBib29sZWFuLCBwcml2YXRlIGxvY2FsZTogc3RyaW5nLCBwcml2YXRlIHRoZW1lOiBzdHJpbmcpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gZGkgaW5pemlhbGl6emF6aW9uZSBwb3N0IHZhbG9yaXp6YXppb25lIGRlZ2xpIGlucHV0LCB1dGlsaXp6YXRvIHBlciB2YWxvcml6emFyZSBjb3JyZXR0YW1lbnRlIGxlIHByb3ByaWV0w6AgZXNzZW56aWFsaSBkZWwgZ3JhZmljbyAoQW5pbWF6aW9uaSwgVGVtYSBlIExvY2FsZSlcclxuICAgKiBcclxuICAgKiBWaWVuZSBkYXRhIHByaW9yaXTDoCBhaSBTZXR0aW5ncyAoSFRNTCksIHByaW9yaXTDoCBzZWNvbmRhcmlhIGFnbGkgSW5wdXQgZGlyZXR0aSAoTGF0byBIVE1MKSwgcHJpb3JpdMOgIHVsdGltYSBhbGxlIGltcG9zdGF6aW9uaSBnbG9iYWxpLFxyXG4gICAqIGltcG9zdGF0ZSBpbiBmYXNlIGRpIGltcG9ydCBkZWwgbW9kdWxvIGFzc2VnbmFuZG8gdmFsb3JpIGFpIHRva2VuIEVTQ19MT0NBTEUsIEVTQ19BTklNQVRJT05TLCBFU0NfVEhFTUVcclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIFF1aSBzZXJ2b25vIHNvbG8gbGUgdmFyaWFiaWxpIGRhIGNvbm9zY2VyZSBQUkUtZ3JhZmljYXppb25lIHBlciBpbCBjYXJpY2FtZW50byBkZWkgbW9kdWxpIGxhenkgZGVsIGdyYWZpY29cclxuXHJcbiAgICB0aGlzLkFuaW1hdGlvbnMgPSB0aGlzLlNldHRpbmdzPy5BbmltYXRpb25zICE9IG51bGwgPyB0aGlzLlNldHRpbmdzPy5BbmltYXRpb25zIDogKHRoaXMuQW5pbWF0aW9ucyAhPSBudWxsID8gdGhpcy5BbmltYXRpb25zIDogdGhpcy5hbmltYXRpb25zKVxyXG4gICAgdGhpcy5UaGVtZSA9IHRoaXMuU2V0dGluZ3M/LlRoZW1lICE9IG51bGwgPyB0aGlzLlNldHRpbmdzPy5UaGVtZSA6ICh0aGlzLlRoZW1lICE9IG51bGwgPyB0aGlzLlRoZW1lIDogPGFueT50aGlzLnRoZW1lKVxyXG4gICAgdGhpcy5Mb2NhbGUgPSB0aGlzLlNldHRpbmdzPy5Mb2NhbGUgIT0gbnVsbCA/IHRoaXMuU2V0dGluZ3M/LkxvY2FsZSA6ICh0aGlzLkxvY2FsZSAhPSBudWxsID8gdGhpcy5Mb2NhbGUgOiB0aGlzLmxvY2FsZSlcclxuXHJcbiAgICB0aGlzLmlzUGFnZWQgPSAodGhpcy5EYXRhQXJyYXkgJiYgdGhpcy5EYXRhQXJyYXkubGVuZ3RoID4gMCAmJiAhdGhpcy5EYXRhKSB8fCAodGhpcy5EYXRhRHRvcyAmJiB0aGlzLkRhdGFEdG9zLmxlbmd0aCA+IDAgJiYgISF0aGlzLkRhdGFSZXRyaWV2ZSk7XHJcbiAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IG5nT25Jbml0XCIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wbGVtZW50YXppb25lIHV0aWxpenphdGEgcGVyIGNvbnRyb2xsYXJlIGV2ZW50dWFsaSBwcm9wcmlldMOgIGNoaWF2ZSBkZWwgZ3JhZmljbyBlIHJpZ3JhZmljYXJlIHR1dHRvIHF1YWxvcmEgc2kgcml2ZWxhc3NlIG5lY2Vzc2FyaW9cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1NpbXBsZUNoYW5nZXN9IGNoYW5nZXMgSW5kaWNhemlvbmUgZGVpIGNhbWJpYW1lbnRpIHN1bGxlIHByb3ByaWV0w6AgZGVsIGdyYWZpY28uIFZlZGVyZSBkb2N1bWVudGF6aW9uZSBBbmd1bGFyIGluIG1lcml0b1xyXG4gICAqL1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmICghdGhpcy5pbml0RG9uZSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogbmdPbkNoYW5nZXNcIik7XHJcblxyXG4gICAgbGV0IHByb3BzVG9DaGVjayA9IFtcIlRpbWVsaW5lXCIsIFwiTGVnZW5kXCIsIFwiU2V0dGluZ3NcIiwgXCJBbmltYXRpb25zXCIsIFwiVGhlbWVcIiwgXCJMb2NhbGVcIiwgLi4udGhpcy5nZXRTcGVjaWZpY1Byb3BlcnRpZXNUb0NoZWNrKCldO1xyXG4gICAgdGhpcy5jaGVja1Byb3BlcnRpZXNBbmRSZWdyYXBoaWNhdGVBc05lZWRlZChjaGFuZ2VzLCBwcm9wc1RvQ2hlY2spO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmVsIHBvc3QgaW5pemlhbGl6emF6aW9uZSwgYSBwYXR0byBjaGUgbWkgdHJvdmkgaW4gYW1iaWVudGUgXCJicm93c2VyXCIsIHByb3NlZ3VvIGFsIGNhcmljYW1lbnRvIGRlbCBncmFmaWNvIHN1bGwnSFRNTFxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5uYW1lKVxyXG4gICAgICB0aHJvdyBcImEgVW5pcXVlIG5hbWUgaXMgbWFuZGF0b3J5IHRvIGNyZWF0ZSBhIGNoYXJ0XCI7XHJcblxyXG4gICAgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBuZ0FmdGVyVmlld0luaXQsIGdyYXBoaWNhdGluZyBjaGFydCBvdXRzaWRlIEFuZ3VsYXJcIik7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzUGFnZWQpXHJcbiAgICAgIHRoaXMuZGlzcGF0Y2hMb2FkQ2hhcnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbCdvbkRlc3Ryb3kgc2NhcmljbyBpbCBncmFmaWNvIHBlciBsaWJlcmFyZSBtZW1vcmlhXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5DaGFydCkge1xyXG4gICAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IFVubG9hZGluZyBkZXN0cm95ZWQgY2hhcnRcIik7XHJcbiAgICAgIHRoaXMuYnJvd3Nlck9ubHkoKCkgPT4geyB0aGlzLkNoYXJ0LmRpc3Bvc2UoKTsgdGhpcy5EaXNwYXRjaGVyLmRlcmVnaXN0ZXJHcmFwaCh0aGlzLm5hbWUpIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmxvZyhcIkNoYXJ0IFwiICsgdGhpcy5uYW1lICsgXCI6IFVubG9hZGluZyB1bmNyZWF0ZWQgY2hhcnQgY29tcG9uZW50LiBJdCBwcm9iYWJseSB3YXMgYSBkdXBsaWNhdGVkXCIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0cmEgaWwgZ3JhZmljbyBhdHR1YWxlIG5lbCBEaXNwYXRjaGVyIGluIG1vZG8gY2hlIHZlbmdhIGNhcmljYXRvIGFwcGVuYSBwb3NzaWJpbGVcclxuICAgKi9cclxuICBwcml2YXRlIGRpc3BhdGNoTG9hZENoYXJ0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5icm93c2VyT25seSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuRGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzLm5hbWUsICgpID0+IHsgcmV0dXJuIHRoaXMubG9hZENoYXJ0KCk7IH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElsIGNhcmljYW1lbnRvIGRlbCBncmFmaWNvIGZ1bnppb25hIG5lbCBzZWd1ZW50ZSBtb2RvOlxyXG4gICAqIFxyXG4gICAqIDEpIENhcmljYW1lbnRvIGRlbCB0ZW1hIGUgZGVsbGUgYW5pbWF6aW9uaSwgcXVhbG9yYSBuZWNlc3NhcmlcclxuICAgKiBcclxuICAgKiAyKSBDYXJpY2FtZW50byBkZWxsZSBpbXBvc3Rhemlvbmkgc3BlY2lmaWNoZSBlIGludGVncmF6aW9uZSBjb24gbGUgaW1wb3N0YXppb25pIGdlbmVyaWNoZVxyXG4gICAqIFxyXG4gICAqIDMpIEdyYWZpY2F6aW9uZVxyXG4gICAqIFxyXG4gICAqIDQpIENhcmljYW1lbnRvIGRlbCBsb2NhbGVcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRDaGFydCgpIHtcclxuICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogU3RhcnQgbG9hZGluZyBNb2R1bGVzIGlmIG5lZWRlZFwiKTtcclxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXHJcbiAgICAgIHRoaXMuc2V0dXBBbUNoYXJ0c1RoZW1lcygpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nKFwiQ2hhcnQgXCIgKyB0aGlzLm5hbWUgKyBcIjogR3JhcGhpY2F0aW5nIGFmdGVyIG1vZHVsZXMgbG9hZFwiKTtcclxuXHJcbiAgICAgICAgdmFyIGNhc3RlZFNldHRpbmdzID0gdGhpcy5nZXRDYXN0ZWRTZXR0aW5ncygpO1xyXG4gICAgICAgIHRoaXMuZmlsbFNldHRpbmdzKGNhc3RlZFNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLmZpbGxTcGVjaWZpY1NldHRpbmdzKGNhc3RlZFNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLkNoYXJ0U2VydmljZSA9IHRoaXMuZ3JhcGhpY2F0ZShjYXN0ZWRTZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5DaGFydCA9IHRoaXMuQ2hhcnRTZXJ2aWNlLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5DaGFydCkgdGhpcy5sb2coXCJDaGFydCBcIiArIHRoaXMubmFtZSArIFwiOiBDb3VsZCBub3QgY3JlYXRlIGdyYXBoXCIpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5DaGFydGVyLmFwcGx5TG9jYWxlKHRoaXMuQ2hhcnQsIHRoaXMuTG9jYWxlKS50aGVuKCgpID0+IHsgdGhpcy5pbml0RG9uZSA9IHRydWU7IHRoaXMuY2hhcnRMb2FkZWQuZW1pdCh0aGlzKSB9KTtcclxuICAgICAgfSlcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmllbXBpbWVudG8gZGVsbGUgaW1wb3N0YXppb25pIG5lbGxhIGNsYXNzZSBTZXR0aW5ncy4gU2kgZGFubm8gcHJpb3JpdMOgIGFpIHZhbG9yaSBnacOgIGltcG9zdGF0aSBuZWkgU2V0dGluZ3MsIFxyXG4gICAqIGludGVncmFuZG8gZXZlbnR1YWxtZW50ZSBjb24gbGUgIHByb3ByaWV0w6AgZGVsIGdyYWZpY29cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge0Jhc2VTZXR0aW5nc30gc2V0dGluZ3MgSW1wb3N0YXppb25pIGJhc2UgcmljZXZ1dGUgZGFsbGEgc3BlY2lhbGl6emF6aW9uZSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZmlsbFNldHRpbmdzKHNldHRpbmdzOiBCYXNlU2V0dGluZ3MpIHtcclxuXHJcbiAgICAvLyBNZXJnZSBkZWdsaSBJbnB1dCBjb24gaSBTZXR0aW5ncywgZGFuZG8gcHJpb3JpdMOgIGFpIFNldHRpbmdzXHJcblxyXG4gICAgc2V0dGluZ3MuVGhlbWUgPSBzZXR0aW5ncy5UaGVtZSA/IHNldHRpbmdzLlRoZW1lIDogdGhpcy5UaGVtZTtcclxuICAgIHNldHRpbmdzLkxvY2FsZSA9IHNldHRpbmdzLkxvY2FsZSA/IHNldHRpbmdzLkxvY2FsZSA6IHRoaXMuTG9jYWxlO1xyXG4gICAgc2V0dGluZ3MuQW5pbWF0aW9ucyA9IHNldHRpbmdzLkFuaW1hdGlvbnMgIT0gbnVsbCA/IHNldHRpbmdzLkFuaW1hdGlvbnMgOiB0aGlzLkFuaW1hdGlvbnM7XHJcblxyXG4gICAgc2V0dGluZ3MuTGVnZW5kID0gc2V0dGluZ3MuTGVnZW5kICE9IG51bGwgPyBzZXR0aW5ncy5MZWdlbmQgOiB0aGlzLkxlZ2VuZDtcclxuICAgIHNldHRpbmdzLk5hbWUgPSBzZXR0aW5ncy5OYW1lID8gc2V0dGluZ3MuTmFtZSA6IHRoaXMubmFtZTtcclxuICAgIHNldHRpbmdzLlRpbWVsaW5lID0gc2V0dGluZ3MuVGltZWxpbmUgIT0gbnVsbCA/IHNldHRpbmdzLlRpbWVsaW5lIDogdGhpcy5UaW1lbGluZTtcclxuICAgIHNldHRpbmdzLkFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb24gPSBzZXR0aW5ncy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uICE9IG51bGwgPyBzZXR0aW5ncy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uIDogdGhpcy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uO1xyXG4gICAgc2V0dGluZ3MuWEF4aXNUaXRsZSA9IHNldHRpbmdzLlhBeGlzVGl0bGUgPyBzZXR0aW5ncy5YQXhpc1RpdGxlIDogdGhpcy5YVGl0bGU7XHJcbiAgICBzZXR0aW5ncy5ZQXhpc1RpdGxlID0gc2V0dGluZ3MuWUF4aXNUaXRsZSA/IHNldHRpbmdzLllBeGlzVGl0bGUgOiB0aGlzLllUaXRsZTtcclxuICAgIHNldHRpbmdzLkxlZ2VuZFBvc2l0aW9uID0gc2V0dGluZ3MuTGVnZW5kUG9zaXRpb24gPyBzZXR0aW5ncy5MZWdlbmRQb3NpdGlvbiA6IHRoaXMuTGVnZW5kUG9zaXRpb247XHJcbiAgICBzZXR0aW5ncy5IaWRlU2VyaWVzT25MYWJlbENsaWNrID0gc2V0dGluZ3MuSGlkZVNlcmllc09uTGFiZWxDbGljayAhPSBudWxsID8gc2V0dGluZ3MuSGlkZVNlcmllc09uTGFiZWxDbGljayA6IHRoaXMuSGlkZVNlcmllc09uTGFiZWxDbGljaztcclxuICAgIHNldHRpbmdzLk1pbkdyaWREaXN0YW5jZSA9IHNldHRpbmdzLk1pbkdyaWREaXN0YW5jZSAhPSBudWxsID8gc2V0dGluZ3MuTWluR3JpZERpc3RhbmNlIDogdGhpcy5NaW5HcmlkRGlzdGFuY2U7XHJcbiAgICBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZyA/IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcgOiB0aGlzLkxlZ2VuZFBhZGRpbmcgPz8gbnVsbDtcclxuXHJcbiAgICAoPGFueT5zZXR0aW5ncykuQ29udGFpbmVySGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VyaWVzQ2xpY2tDYWxsYmFjayA9IChzZXJpZXMpID0+IHsgdGhpcy5vblNlcmllc0NsaWNrZWQuZW1pdChzZXJpZXMpOyB9O1xyXG4gICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrID0gKGV2ZW50OiB7IGZyb206IERhdGUsIHRvOiBEYXRlLCBpbml0aWFsOiBib29sZWFuIH0pID0+IHsgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7IGZyb206IGV2ZW50LmZyb20sIHRvOiBldmVudC50bywgaW5pdGlhbDogZXZlbnQuaW5pdGlhbCB9KTsgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xsYSBpIGNhbWJpYW1lbnRpIGF2dmVudXRpIGFsbGUgcHJvcHJpZXTDoCBjaGlhdmUgZSByaWVmZmV0dHVhIGxhIGdyYWZpY2F6aW9uZSBxdWFsb3JhIG5lY2Vzc2FyaW9cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1NpbXBsZUNoYW5nZXN9IGNoYW5nZXMgSW5kaWNhemlvbmUgZGVsbGEgbW9kaWZpY2hlIGF2dmVudXRlIG5laSB2YXJpIElucHV0XHJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNUb0NoZWNrIExpc3RhIGRlZ2xpIElucHV0IGRhIGNvbnRyb2xsYXJlIHBlciBjdWkgdW5hIG1vZGlmaWNhIGNhdXNhIHVuYSByaWdyYWZpY2F6aW9uZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2hlY2tQcm9wZXJ0aWVzQW5kUmVncmFwaGljYXRlQXNOZWVkZWQoY2hhbmdlczogU2ltcGxlQ2hhbmdlcywgcHJvcHNUb0NoZWNrOiBzdHJpbmdbXSkge1xyXG4gICAgbGV0IHRvUmVHcmFwaGljYXRlID0gZmFsc2U7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzVG9DaGVjay5sZW5ndGg7IGkrKylcclxuICAgICAgdG9SZUdyYXBoaWNhdGUgPSB0b1JlR3JhcGhpY2F0ZSB8fCAoY2hhbmdlc1twcm9wc1RvQ2hlY2tbaV1dICYmIGNoYW5nZXNbcHJvcHNUb0NoZWNrW2ldXS5jdXJyZW50VmFsdWUpXHJcblxyXG4gICAgaWYgKHRvUmVHcmFwaGljYXRlKVxyXG4gICAgICB0aGlzLnJlbG9hZENoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW56aW9uZSBjaGUgZWZmZXR0dWEgdW4gY2FtYmlvIGRpIHBhZ2luYSBwZXIgaSBncmFmaWNpIHBhZ2luYXRpLiBRdWFsb3JhICoqZGF0YSoqIGZvc3NlIG51bGxvIHNpZ25pZmljYSBjaGUgw6ggaW5pemlhdG8gdW4gY2FyaWNhbWVudG8gXHJcbiAgICogZSBhbmNoZSBsYXRvIGFwcGxpY2F0aXZvIGlsIERhdGFSZXRyaWV2ZSBkb3Zyw6AgY29uc2lkZXJhcmUgY2hlIGwnYXNzZW56YSBkaSB2YWxvcmkgbm9uIMOoIGFsdHJvIGNoZSB1bidpbmRpY2F6aW9uZSBkaSBpbml6aW8gY2FyaWNhbWVudG9cclxuICAgKiBcclxuICAgKiBJbCBjYXJpY2FtZW50byBkaSBxdWFsc2lhc2kgcGFnaW5hIGdlbmVyZXLDoCBjb211bnF1ZSB1bmEgcHJpbW8gZXZlbnRvIGNvbiAqKmRhdGEqKiBudWxsbyBpbiBtb2RvIGRhIGluZGljYXJlIGwnaW5pemlvIGNhcmljYW1lbnRvIGVcclxuICAgKiBpbiBzZWNvbmRhIGlzdGFuemEgdW4gYWx0cm8gZXZlbnRvIGluIGN1aSAqKmRhdGEqKiBzYXLDoCBzZW1wcmUgdmFsb3JpenphdG8sIG8gY29uIGlsIER0byBkYSB1c2FyZSBwZXIgcmVjdXBlcmFyZSBpIGRhdGksIG8gY29uIGkgZGF0aVxyXG4gICAqIHZlcmkgZSBwcm9wcmkgZ2nDoCBwcmVzZW50aSBuZWwgKipEYXRhQXJyYXkqKlxyXG4gICAqIFxyXG4gICAqIEkgY2FsbGJhY2sgKipvbkxvYWRTdGFydCoqIGUgKipvbkxvYWRFbmQqKiB2ZW5nb25vIHNlbXByZSBjaGlhbWF0aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7eyBkYXRhOiBMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55LCBpbmRleDogbnVtYmVyIH19IG5kIEluZGljZSBkZWwgY2FyaWNhbWVudG8gZGF0aSwgY29uIGV2ZW50dWFsbWVudGUgZ2nDoCBpIGRhdGkgc2UgZGlzcG9uaWJpbGlcclxuICAgKi9cclxuICBwdWJsaWMgY2hhbmdlUGFnZShuZDogeyBkYXRhOiBMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55LCBpbmRleDogbnVtYmVyIH0pIHtcclxuICAgIGlmICghbmQuZGF0YSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDaGFydCA9IHRydWU7XHJcbiAgICAgIC8vIFNlcnZlIHBlciBpbmZvcm1hcmUgbCdhcHBsaWNhdGl2byBpbiBsaXN0ZW5pbmcgc3VsbCdpbmRpY2UgYXR0dWFsbWVudGUgaW4gdmlzdWFsaXp6YXppb25lLiBcclxuICAgICAgLy8gTGEgbWFuY2FuemEgZGkgZGF0aSBpbmRpY2EgY2hlIG5vbiBkZXZvbm8gZXNzZXJlIGVmZmV0dHVhdGUgcmljZXJjaGUgcGVyIG9yYVxyXG4gICAgICBpZiAodGhpcy5EYXRhUmV0cmlldmUpXHJcbiAgICAgICAgdGhpcy5EYXRhUmV0cmlldmUobnVsbCwgbmQuaW5kZXgpXHJcbiAgICAgIHRoaXMub25Mb2FkU3RhcnQuZW1pdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuRGF0YVJldHJpZXZlKVxyXG4gICAgICB0aGlzLkRhdGFSZXRyaWV2ZShuZC5kYXRhLCBuZC5pbmRleCkudGhlbih0ID0+IHsgdGhpcy5jaGFuZ2VQYWdlRGF0YVJlY2VpdmVkKHQpOyB9KTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jaGFuZ2VQYWdlRGF0YVJlY2VpdmVkKG5kLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWwgdGVybWluZSBkZWwgY2FyaWNhbWVudG8gZGVpIGRhdGkgZGkgdW5hIHBhZ2luYSBxdWVzdG8gbWV0b2RvIHZpZW5lIGNoaWFtYXRvIHBlciByaWdyYWZpY2FyZSBsYSBzaXR1YXppb25lIGNvbiBpIG51b3ZpIGRhdGlcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge0xpbmVDaGFydERhdGEgfCBQaWVDaGFydERhdGEgfCBWZXJ0aWNhbDJEQ2hhcnREYXRhIHwgVmVydGljYWxDaGFydERhdGEgfCBhbnl9IGRhdGEgRGF0aSBkZWwgZ3JhZmljb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgY2hhbmdlUGFnZURhdGFSZWNlaXZlZChkYXRhOiBMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55KSB7XHJcbiAgICB0aGlzLmxvYWRpbmdDaGFydCA9IGZhbHNlO1xyXG4gICAgdGhpcy5vbkxvYWRFbmQuZW1pdCgpO1xyXG4gICAgbGV0IGZpcnN0QmluZCA9ICF0aGlzLkRhdGE7XHJcbiAgICB0aGlzLkRhdGEgPSBkYXRhO1xyXG5cclxuICAgIGlmICghZmlyc3RCaW5kKVxyXG4gICAgICB0aGlzLnJlbG9hZENoYXJ0KCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZGlzcGF0Y2hMb2FkQ2hhcnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJpY2FyaWNhIGlsIGdyYWZpY28gZGlzdHJ1Z2dlbmRvIGlsIHZlY2NoaW8gZSByaWNyZWFuZG8gaWwgbnVvdm9cclxuICAgKiBcclxuICAgKiBMZSBjaGlhbWF0ZSBhIHF1ZXN0byBtZXRvZG8gcG9zc29ubyBlc3NlcmUgdHJhc2Zvcm1hdGUgaW4gY2hpYW1hdGUgYWwgbWV0b2RvICoqZ3JhcGhpY2F0ZSoqIGRlbGxhIFNlcnZpY2UsIHNlIHNvbG8gcXVlbCBtZXRvZG8gZm9zc2UgYWJiYXN0YW56YSBpbnRlbGxpZ2VudGUgcGVyIGNhcGlyZVxyXG4gICAqIGxlIGRpZmZlcmVuemUgZnJhIGlsIGdyYWZpY28gY29tJ2VyYSBwcmltYSBlIGNvbWUgZGV2ZSBkaXZlbnRhcmUsIGluIG1vZG8gZGEgbm9uIHJpY3JlYXJsbyBtYSBzZW1wbGljZW1lbnRlIG1vZGlmaWNhcmUgcXVlbGxvIGNoZSBnacOgIMOoIGRpc2VnbmF0b1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVsb2FkQ2hhcnQoKSB7XHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHsgaWYgKCF0aGlzLkNoYXJ0LmlzRGlzcG9zZWQoKSkgdGhpcy5DaGFydC5kaXNwb3NlKCk7IHRoaXMuRGlzcGF0Y2hlci5kZXJlZ2lzdGVyR3JhcGgodGhpcy5uYW1lKSB9KTtcclxuICAgIHRoaXMuRGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzLm5hbWUsICgpID0+IHsgcmV0dXJuIHRoaXMubG9hZENoYXJ0KCk7IH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVybWV0dGUgZGkgYWdnaXVuZ2VyZSB1biBibG9jY28gZGkgZGF0aSBpbiBtYW5pZXJhIFwibGl2ZVwiIGFkIHVuIGdyYWZpY29cclxuICAgKi9cclxuICBwdWJsaWMgYWRkRGF0YShjaGFydERhdGE6IGFueSkge1xyXG4gICAgdGhpcy5DaGFydFNlcnZpY2UucmVmcmVzaERhdGEoY2hhcnREYXRhKTtcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBGdW56aW9uZSBjaGUgc2kgb2NjdXBhIGRpIGNhcmljYXJlIGkgdGVtaSBuZWNlc3NhcmkgcGVyIGlsIGdyYWZpY28gaW4gb2dnZXR0by4gUHJpbWEgYXBwbGljYSBpbCB0ZW1hLCBwb2ksIHNlIHNlcnZlLCBhcHBsaWNhIGxlIGFuaW1hemlvbmlcclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwQW1DaGFydHNUaGVtZXMoKSB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xyXG4gICAgICB0aGlzLkNoYXJ0ZXIuYXBwbHlUaGVtZShhbTRjb3JlLCB0aGlzLlRoZW1lKS50aGVuKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BbmltYXRpb25zID8gdGhpcy5DaGFydGVyLmFwcGx5QW5pbWF0aW9ucyhhbTRjb3JlKSA6IHRoaXMuQ2hhcnRlci51bmFwcGx5QW5pbWF0aW9ucyhhbTRjb3JlKTtcclxuICAgICAgfSlcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgbG9nKGxvZzogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5sb2dzKVxyXG4gICAgICBjb25zb2xlLmxvZyhcIkBlc2ZhZW56YS9lcy1jaGFydHM6IFwiICsgbG9nKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbG8gem9vbSBkYWwgKipmcm9tKiogYWwgKip0byoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtEYXRlfSBmcm9tIEluaXppbyBkZWxsbyB6b29tXHJcbiAgICogQHBhcmFtIHtEYXRlfSB0byBGaW5lIGRlbGxvIHpvb21cclxuICAgKi9cclxuICBwdWJsaWMgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKSB7XHJcbiAgICB0aGlzLkNoYXJ0U2VydmljZS5zZXRTZWxlY3Rpb24oZnJvbSwgdG8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGJyb3dzZXJPbmx5KGY6ICgpID0+IHZvaWQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgZigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn0iXX0=
@@ -67,9 +67,9 @@ export class PageChartSelector {
67
67
  }, this.BrowseDelayMs);
68
68
  }
69
69
  }
70
- PageChartSelector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PageChartSelector, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
- PageChartSelector.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PageChartSelector, selector: "chart-pager", inputs: { Items: "Items", Dtos: "Dtos", BrowseDelayMs: "BrowseDelayMs", StartIndex: "StartIndex" }, outputs: { onPageChange: "onPageChange" }, queries: [{ propertyName: "headerInner_tr", first: true, predicate: ["header_inner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"(Items || Dtos) && (Items || Dtos).length > 0\" class=\"pcs-no-selection\">\r\n <div class=\"pcs-button pcs-backward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"currentpage != 1 && Previous(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"currentpage == 1 ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-left\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"pcs-infos\">\r\n <ng-container *ngIf=\"headerInner_tr\">\r\n <ng-container *ngTemplateOutlet=\"headerInner_tr; context : {$implicit: (Items || Dtos)[currentpage - 1]}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"pcs-button pcs-forward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"(Items || Dtos).length != currentpage && Next(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"(Items || Dtos).length == currentpage ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-right\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n</div>", styles: [".pcs-button{width:60px}.pcs-forward{float:right;text-align:end}.pcs-backward{float:left}.pcs-svg-header{width:57px;height:40px}.pcs-svg-button-container{outline:currentcolor none medium}.pcs-svg-arrow{pointer-events:none;fill:#555}.pcs-svg-arrow-right{transform:translate(44px,36px) rotate(180deg)}.pcs-svg-arrow-left{transform:translate(13px,4px)}.pcs-svg-button{fill:#d9d9d9;stroke:#fff;fill-opacity:1;stroke-opacity:1}.pcs-svg-button:hover{fill:#a3a3a3;cursor:pointer}.pcs-infos{width:calc(100% - 120px);height:44px;float:left}.pcs-no-selection{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PageChartSelector, decorators: [{
70
+ PageChartSelector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageChartSelector, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ PageChartSelector.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageChartSelector, selector: "chart-pager", inputs: { Items: "Items", Dtos: "Dtos", BrowseDelayMs: "BrowseDelayMs", StartIndex: "StartIndex" }, outputs: { onPageChange: "onPageChange" }, queries: [{ propertyName: "headerInner_tr", first: true, predicate: ["header_inner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"(Items || Dtos) && (Items || Dtos).length > 0\" class=\"pcs-no-selection\">\r\n <div class=\"pcs-button pcs-backward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"currentpage != 1 && Previous(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"currentpage == 1 ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-left\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"pcs-infos\">\r\n <ng-container *ngIf=\"headerInner_tr\">\r\n <ng-container *ngTemplateOutlet=\"headerInner_tr; context : {$implicit: (Items || Dtos)[currentpage - 1]}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"pcs-button pcs-forward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"(Items || Dtos).length != currentpage && Next(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"(Items || Dtos).length == currentpage ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-right\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n</div>", styles: [".pcs-button{width:60px}.pcs-forward{float:right;text-align:end}.pcs-backward{float:left}.pcs-svg-header{width:57px;height:40px}.pcs-svg-button-container{outline:currentcolor none medium}.pcs-svg-arrow{pointer-events:none;fill:#555}.pcs-svg-arrow-right{transform:translate(44px,36px) rotate(180deg)}.pcs-svg-arrow-left{transform:translate(13px,4px)}.pcs-svg-button{fill:#d9d9d9;stroke:#fff;fill-opacity:1;stroke-opacity:1}.pcs-svg-button:hover{fill:#a3a3a3;cursor:pointer}.pcs-infos{width:calc(100% - 120px);height:44px;float:left}.pcs-no-selection{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageChartSelector, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: "chart-pager", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"(Items || Dtos) && (Items || Dtos).length > 0\" class=\"pcs-no-selection\">\r\n <div class=\"pcs-button pcs-backward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"currentpage != 1 && Previous(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"currentpage == 1 ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-left\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"pcs-infos\">\r\n <ng-container *ngIf=\"headerInner_tr\">\r\n <ng-container *ngTemplateOutlet=\"headerInner_tr; context : {$implicit: (Items || Dtos)[currentpage - 1]}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"pcs-button pcs-forward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"(Items || Dtos).length != currentpage && Next(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"(Items || Dtos).length == currentpage ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-right\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n</div>", styles: [".pcs-button{width:60px}.pcs-forward{float:right;text-align:end}.pcs-backward{float:left}.pcs-svg-header{width:57px;height:40px}.pcs-svg-button-container{outline:currentcolor none medium}.pcs-svg-arrow{pointer-events:none;fill:#555}.pcs-svg-arrow-right{transform:translate(44px,36px) rotate(180deg)}.pcs-svg-arrow-left{transform:translate(13px,4px)}.pcs-svg-button{fill:#d9d9d9;stroke:#fff;fill-opacity:1;stroke-opacity:1}.pcs-svg-button:hover{fill:#a3a3a3;cursor:pointer}.pcs-infos{width:calc(100% - 120px);height:44px;float:left}.pcs-no-selection{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}\n"] }]
75
75
  }], propDecorators: { Items: [{
@@ -51,9 +51,9 @@ export class EsAreaChartComponent extends BaseChartComponent {
51
51
  return new AreaChartService(this.adapter).graphicate(this.Data, settingsCasted);
52
52
  }
53
53
  }
54
- EsAreaChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
55
- EsAreaChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsAreaChartComponent, selector: "es-area-chart", inputs: { Data: "Data", DataArray: "DataArray" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, decorators: [{
54
+ EsAreaChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsAreaChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
55
+ EsAreaChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: EsAreaChartComponent, selector: "es-area-chart", inputs: { Data: "Data", DataArray: "DataArray" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsAreaChartComponent, decorators: [{
57
57
  type: Component,
58
58
  args: [{ selector: 'es-area-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
59
59
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
@@ -94,9 +94,9 @@ export class EsChartComponent extends BaseChartComponent {
94
94
  }
95
95
  }
96
96
  }
97
- EsChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.DateService }, { token: i4.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
98
- EsChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsChartComponent, selector: "es-chart", inputs: { Type: "Type", Data: "Data", DataArray: "DataArray" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i5.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartComponent, decorators: [{
97
+ EsChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.DateService }, { token: i4.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
98
+ EsChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: EsChartComponent, selector: "es-chart", inputs: { Type: "Type", Data: "Data", DataArray: "DataArray" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i5.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartComponent, decorators: [{
100
100
  type: Component,
101
101
  args: [{ selector: 'es-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
102
102
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.DateService }, { type: i4.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
@@ -63,9 +63,9 @@ export class EsLineChartComponent extends BaseChartComponent {
63
63
  return new LineChartService(this.adapter, this.dateService).graphicate(this.Data, settingsCasted);
64
64
  }
65
65
  }
66
- EsLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsLineChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i4.DateService }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
67
- EsLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsLineChartComponent, selector: "es-line-chart", inputs: { Data: "Data", DataArray: "DataArray", Step: "Step", DataGroupBucketSize: "DataGroupBucketSize", DataGroupingThreshold: "DataGroupingThreshold", StrokeSize: "StrokeSize", AllowGaps: "AllowGaps", MergeDatasets: "MergeDatasets", FinalInstants: "FinalInstants", Min: "Min", Max: "Max", Fill: "Fill" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i5.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsLineChartComponent, decorators: [{
66
+ EsLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsLineChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i4.DateService }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
67
+ EsLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: EsLineChartComponent, selector: "es-line-chart", inputs: { Data: "Data", DataArray: "DataArray", Step: "Step", DataGroupBucketSize: "DataGroupBucketSize", DataGroupingThreshold: "DataGroupingThreshold", StrokeSize: "StrokeSize", AllowGaps: "AllowGaps", MergeDatasets: "MergeDatasets", FinalInstants: "FinalInstants", Min: "Min", Max: "Max", Fill: "Fill" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i5.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsLineChartComponent, decorators: [{
69
69
  type: Component,
70
70
  args: [{ selector: 'es-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
71
71
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i4.DateService }, { type: i0.NgZone }, { type: Object, decorators: [{
@@ -58,9 +58,9 @@ export class EsPieChartComponent extends BaseChartComponent {
58
58
  return new PieChartService(this.adapter).graphicate(this.Data, settingsCasted);
59
59
  }
60
60
  }
61
- EsPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsPieChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
62
- EsPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsPieChartComponent, selector: "es-pie-chart", inputs: { Data: "Data", DataArray: "DataArray", HideZeroes: "HideZeroes", Mode3D: "Mode3D", DonutRadiusPercentage: "DonutRadiusPercentage", LabelsWrap: "LabelsWrap", LabelsTruncate: "LabelsTruncate", LabelsWidth: "LabelsWidth", LabelsVisible: "LabelsVisible" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsPieChartComponent, decorators: [{
61
+ EsPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsPieChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
62
+ EsPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: EsPieChartComponent, selector: "es-pie-chart", inputs: { Data: "Data", DataArray: "DataArray", HideZeroes: "HideZeroes", Mode3D: "Mode3D", DonutRadiusPercentage: "DonutRadiusPercentage", LabelsWrap: "LabelsWrap", LabelsTruncate: "LabelsTruncate", LabelsWidth: "LabelsWidth", LabelsVisible: "LabelsVisible" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsPieChartComponent, decorators: [{
64
64
  type: Component,
65
65
  args: [{ selector: 'es-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
66
66
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
@@ -57,9 +57,9 @@ export class EsVertical2DChartComponent extends BaseChartComponent {
57
57
  return new Vertical2DChartService(this.adapter).graphicate(this.Data, settingsCasted);
58
58
  }
59
59
  }
60
- EsVertical2DChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVertical2DChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
61
- EsVertical2DChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVertical2DChartComponent, selector: "es-vertical-2d-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", GroupPaddingPercentage: "GroupPaddingPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVertical2DChartComponent, decorators: [{
60
+ EsVertical2DChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsVertical2DChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
61
+ EsVertical2DChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: EsVertical2DChartComponent, selector: "es-vertical-2d-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", GroupPaddingPercentage: "GroupPaddingPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsVertical2DChartComponent, decorators: [{
63
63
  type: Component,
64
64
  args: [{ selector: 'es-vertical-2d-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
65
65
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
@@ -56,9 +56,9 @@ export class EsVerticalChartComponent extends BaseChartComponent {
56
56
  return new VerticalChartService(this.adapter).graphicate(this.Data, settingsCasted);
57
57
  }
58
58
  }
59
- EsVerticalChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVerticalChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
60
- EsVerticalChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVerticalChartComponent, selector: "es-vertical-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVerticalChartComponent, decorators: [{
59
+ EsVerticalChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsVerticalChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
60
+ EsVerticalChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: EsVerticalChartComponent, selector: "es-vertical-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsVerticalChartComponent, decorators: [{
62
62
  type: Component,
63
63
  args: [{ selector: 'es-vertical-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
64
64
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
@@ -56,9 +56,9 @@ export class EsVerticalStackedChartComponent extends BaseChartComponent {
56
56
  return new VerticalStackedChartService(this.adapter).graphicate(this.Data, settingsCasted);
57
57
  }
58
58
  }
59
- EsVerticalStackedChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVerticalStackedChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
60
- EsVerticalStackedChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVerticalStackedChartComponent, selector: "es-vertical-stacked-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVerticalStackedChartComponent, decorators: [{
59
+ EsVerticalStackedChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsVerticalStackedChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i2.ChartDispatcher }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
60
+ EsVerticalStackedChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: EsVerticalStackedChartComponent, selector: "es-vertical-stacked-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsVerticalStackedChartComponent, decorators: [{
62
62
  type: Component,
63
63
  args: [{ selector: 'es-vertical-stacked-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
64
64
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i2.ChartDispatcher }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
@@ -40,8 +40,8 @@ export class EsChartsModule {
40
40
  };
41
41
  }
42
42
  }
43
- EsChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
44
- EsChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartsModule, declarations: [EsChartComponent,
43
+ EsChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
44
+ EsChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartsModule, declarations: [EsChartComponent,
45
45
  EsLineChartComponent,
46
46
  EsPieChartComponent,
47
47
  EsVertical2DChartComponent,
@@ -56,8 +56,8 @@ EsChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
56
56
  EsVerticalStackedChartComponent,
57
57
  PageChartSelector,
58
58
  EsAreaChartComponent] });
59
- EsChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartsModule, providers: [ChartDispatcher], imports: [[CommonModule]] });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartsModule, decorators: [{
59
+ EsChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartsModule, providers: [ChartDispatcher], imports: [[CommonModule]] });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EsChartsModule, decorators: [{
61
61
  type: NgModule,
62
62
  args: [{
63
63
  imports: [CommonModule],
@@ -80,9 +80,9 @@ export class ChartDispatcher {
80
80
  console.log("@esfaenza/es-charts: " + text);
81
81
  }
82
82
  }
83
- ChartDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_LOGS }], target: i0.ɵɵFactoryTarget.Injectable });
84
- ChartDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher, decorators: [{
83
+ ChartDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_LOGS }], target: i0.ɵɵFactoryTarget.Injectable });
84
+ ChartDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ChartDispatcher });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ChartDispatcher, decorators: [{
86
86
  type: Injectable
87
87
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
88
88
  type: Inject,
@@ -13,4 +13,4 @@ export class LineChartData {
13
13
  this.limit = limit;
14
14
  }
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUV0Qjs7Ozs7T0FLRztJQUNILFlBQW1CLFNBQXNCLEVBQUUsRUFBUyxLQUFhO1FBQTlDLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBUTtJQUFJLENBQUM7Q0FDekUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW1pdCB9IGZyb20gJy4vYmFzZS9MaW1pdCc7XHJcbmltcG9ydCB7IExpbmVTZXJpZSB9IGZyb20gJy4vYmFzZS9MaW5lU2VyaWUnO1xyXG5cclxuLyoqXHJcbiAqIERhdGkgcmVsYXRpdmkgYSB1biBncmFmaWNvIGRpIHRpcG8gTGluZUNoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTGluZUNoYXJ0RGF0YSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0xpbmVTZXJpZVtdfSBzZXJpZXMgTGlzdGEgZGkgc2VyaWUgZGEgZ3JhZmljYXJlXHJcbiAgICAgKiBAcGFyYW0ge3t1cHBlcjogbG93ZXJ9fVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgc2VyaWVzOiBMaW5lU2VyaWVbXSA9IFtdLCBwdWJsaWMgbGltaXQ/OiBMaW1pdCkgeyB9XHJcbn0iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL21vZGVscy9kYXRhL0xpbmVDaGFydERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUV0Qjs7Ozs7T0FLRztJQUNILFlBQW1CLFNBQXNCLEVBQUUsRUFBUyxLQUF1QjtRQUF4RCxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWtCO0lBQUksQ0FBQztDQUNuRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbWl0IH0gZnJvbSAnLi9iYXNlL0xpbWl0JztcclxuaW1wb3J0IHsgTGluZVNlcmllIH0gZnJvbSAnLi9iYXNlL0xpbmVTZXJpZSc7XHJcblxyXG4vKipcclxuICogRGF0aSByZWxhdGl2aSBhIHVuIGdyYWZpY28gZGkgdGlwbyBMaW5lQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMaW5lQ2hhcnREYXRhIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7TGluZVNlcmllW119IHNlcmllcyBMaXN0YSBkaSBzZXJpZSBkYSBncmFmaWNhcmVcclxuICAgICAqIEBwYXJhbSB7e3VwcGVyOiBsb3dlcn19XHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJpZXM6IExpbmVTZXJpZVtdID0gW10sIHB1YmxpYyBsaW1pdD86IExpbWl0IHwgTGltaXRbXSkgeyB9XHJcbn0iXX0=