@tetacom/svg-charts 1.1.36 → 1.1.39
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.
- package/chart/chart-container/x-axis/x-axis.component.d.ts +8 -7
- package/chart/chart-container/y-axis/y-axis.component.d.ts +7 -8
- package/chart/directives/zoomable.directive.d.ts +3 -1
- package/chart/service/chart.service.d.ts +1 -1
- package/chart/service/zoom.service.d.ts +7 -11
- package/esm2020/chart/chart-container/chart-container.component.mjs +3 -3
- package/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +36 -33
- package/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +14 -36
- package/esm2020/chart/directives/zoomable.directive.mjs +14 -12
- package/esm2020/chart/service/chart.service.mjs +6 -12
- package/esm2020/chart/service/zoom.service.mjs +37 -28
- package/fesm2015/tetacom-svg-charts.mjs +106 -124
- package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/fesm2020/tetacom-svg-charts.mjs +95 -115
- package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ import { BrushType } from '../model/enum/brush-type';
|
|
|
9
9
|
import { debounceTime, tap } from 'rxjs/operators';
|
|
10
10
|
import { combineLatest, filter, takeWhile, } from 'rxjs';
|
|
11
11
|
import { ZoomBehaviorType } from '../model/enum/zoom-behavior-type';
|
|
12
|
+
import objectHash from 'object-hash';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "../service/zoom.service";
|
|
14
15
|
import * as i2 from "../service/broadcast.service";
|
|
@@ -58,9 +59,9 @@ export class ZoomableDirective {
|
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
61
|
ngOnChanges(changes) {
|
|
61
|
-
if (changes.hasOwnProperty('brushScale')) {
|
|
62
|
-
if (
|
|
63
|
-
this.zoomService.
|
|
62
|
+
if (changes.hasOwnProperty('brushScale') || changes.hasOwnProperty('scale')) {
|
|
63
|
+
if (this.hash) {
|
|
64
|
+
this.zoomService.scaleHashMap.set(this.hash, this.scale);
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
}
|
|
@@ -76,6 +77,7 @@ export class ZoomableDirective {
|
|
|
76
77
|
? AxisOrientation.x
|
|
77
78
|
: AxisOrientation.y, this.config, 0, true);
|
|
78
79
|
this.zoomAxis = this.axis ?? commonZoomAxis;
|
|
80
|
+
this.hash = objectHash.sha1({ index: this.zoomAxis.index, orientation: this.zoomAxis.orientation });
|
|
79
81
|
this.zoom = d3.zoom().extent([
|
|
80
82
|
[0, 0],
|
|
81
83
|
[this.size.width, this.size.height],
|
|
@@ -86,13 +88,11 @@ export class ZoomableDirective {
|
|
|
86
88
|
[this.size.width, this.size.height],
|
|
87
89
|
]);
|
|
88
90
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.zoomService.setBroadcastChannel(this.config?.zoom.syncChannel);
|
|
95
|
-
}
|
|
91
|
+
this.zoomService.axisHashMap.set(this.hash, this.zoomAxis);
|
|
92
|
+
this.zoomService.elementHashMap.set(this.hash, this._element);
|
|
93
|
+
this.zoomService.scaleHashMap.set(this.hash, this.scale);
|
|
94
|
+
this.zoomService.zoomHashMap.set(this.hash, this.zoom);
|
|
95
|
+
this.zoomService.setBroadcastChannel(this.config?.zoom.syncChannel);
|
|
96
96
|
const maxZoom = this.config.zoom?.max
|
|
97
97
|
? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) /
|
|
98
98
|
this.config.zoom?.max
|
|
@@ -247,7 +247,7 @@ export class ZoomableDirective {
|
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
ZoomableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, deps: [{ token: i0.ElementRef }, { token: i1.ZoomService }, { token: i2.BroadcastService }, { token: i3.ChartService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
250
|
-
ZoomableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size", brushScale: "brushScale" }, host: { properties: { "class.zoomable": "this.zoomable" } }, usesOnChanges: true, ngImport: i0 });
|
|
250
|
+
ZoomableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ZoomableDirective, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size", brushScale: "brushScale", scale: "scale" }, host: { properties: { "class.zoomable": "this.zoomable" } }, usesOnChanges: true, ngImport: i0 });
|
|
251
251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ZoomableDirective, decorators: [{
|
|
252
252
|
type: Directive,
|
|
253
253
|
args: [{
|
|
@@ -261,8 +261,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
261
261
|
type: Input
|
|
262
262
|
}], brushScale: [{
|
|
263
263
|
type: Input
|
|
264
|
+
}], scale: [{
|
|
265
|
+
type: Input
|
|
264
266
|
}], zoomable: [{
|
|
265
267
|
type: HostBinding,
|
|
266
268
|
args: ['class.zoomable']
|
|
267
269
|
}] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdkMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUE0QixZQUFZLEVBQUMsTUFBTSxJQUFJLENBQUM7QUFDM0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQWtDLFdBQVcsR0FBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRCxPQUFPLEVBQUMsWUFBWSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFLbEUsTUFBTSxPQUFPLGlCQUFpQjtJQWdCNUIsWUFDVSxVQUFzQixFQUN0QixXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsWUFBMEIsRUFDMUIsSUFBWTtRQUpaLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBZmlC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QUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVpQyxRQUFRO3NCQUE5QyxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge0QzWm9vbUV2ZW50LCBab29tQmVoYXZpb3IsIHpvb21JZGVudGl0eX0gZnJvbSAnZDMnO1xuaW1wb3J0IHtab29tVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS96b29tLXR5cGUnO1xuaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gJy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQge0JydXNoTWVzc2FnZSwgSUJyb2FkY2FzdE1lc3NhZ2UsIFpvb21NZXNzYWdlLH0gZnJvbSAnLi4vbW9kZWwvaS1icm9hZGNhc3QtbWVzc2FnZSc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCB7QnJvYWRjYXN0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9icm9hZGNhc3Quc2VydmljZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIGZpbHRlciwgdGFrZVdoaWxlLH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7Wm9vbUJlaGF2aW9yVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS96b29tLWJlaGF2aW9yLXR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YVpvb21hYmxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFpvb21hYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM/OiBBeGlzO1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBASW5wdXQoKSBicnVzaFNjYWxlPzogYW55O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muem9vbWFibGUnKSBwcml2YXRlIHpvb21hYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZWxlbWVudDogZDMuU2VsZWN0aW9uPFNWR0VsZW1lbnQsIGFueSwgYW55LCBhbnk+O1xuICBwcml2YXRlIHpvb21BeGlzOiBBeGlzO1xuICBwcml2YXRlIHpvb206IFpvb21CZWhhdmlvcjxhbnksIGFueT47XG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xuXG4gIHByaXZhdGUgY3VycmVudFRyYW5zZm9ybSA9IHpvb21JZGVudGl0eTtcbiAgcHJpdmF0ZSBjdXJyZW50U2VsZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2U6IEJyb2FkY2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlKSB7XG4gICAgICB0aGlzLnpvb21hYmxlID0gdGhpcy5jb25maWc/Lnpvb20/Lnpvb21CZWhhdmlvciA9PT0gWm9vbUJlaGF2aW9yVHlwZS5tb3ZlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZihjaGFuZ2VzLmhhc093blByb3BlcnR5KCdicnVzaFNjYWxlJykpIHtcbiAgICAgIGlmKCF0aGlzLmF4aXMpIHtcbiAgICAgICAgdGhpcy56b29tU2VydmljZS5zZXRTY2FsZSh0aGlzLmJydXNoU2NhbGUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGVuYWJsZSA9XG4gICAgICAodGhpcy5heGlzPy5vcHRpb25zPy56b29tICYmIHRoaXMuYXhpcz8ub3B0aW9ucy52aXNpYmxlICE9PSBmYWxzZSkgfHxcbiAgICAgIHRoaXMuY29uZmlnPy56b29tPy5lbmFibGU7XG5cbiAgICBpZiAoIWVuYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuXG4gICAgaWYgKGVuYWJsZSkge1xuXG4gICAgICB0aGlzLl9lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgY29uc3QgY29tbW9uWm9vbUF4aXMgPSBBeGlzLmNyZWF0ZUF4aXMoXG4gICAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnhcbiAgICAgICAgICA/IEF4aXNPcmllbnRhdGlvbi54XG4gICAgICAgICAgOiBBeGlzT3JpZW50YXRpb24ueSxcbiAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgIDAsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuem9vbUF4aXMgPSB0aGlzLmF4aXMgPz8gY29tbW9uWm9vbUF4aXM7XG5cbiAgICAgIHRoaXMuem9vbSA9IGQzLnpvb20oKS5leHRlbnQoW1xuICAgICAgICBbMCwgMF0sXG4gICAgICAgIFt0aGlzLnNpemUud2lkdGgsIHRoaXMuc2l6ZS5oZWlnaHRdLFxuICAgICAgXSk7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy56b29tPy5saW1pdFRyYW5zbGF0ZUJ5RGF0YSkge1xuICAgICAgICB0aGlzLnpvb20udHJhbnNsYXRlRXh0ZW50KFtcbiAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgW3RoaXMuc2l6ZS53aWR0aCwgdGhpcy5zaXplLmhlaWdodF0sXG4gICAgICAgIF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuYXhpcykge1xuICAgICAgICB0aGlzLnpvb21TZXJ2aWNlLnNldEVsZW1lbnQodGhpcy5fZWxlbWVudCk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2Uuc2V0QXhpcyhjb21tb25ab29tQXhpcyk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2Uuc2V0Wm9vbUJlaGF2aW9yKHRoaXMuem9vbSk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2Uuc2V0U2NhbGUodGhpcy5icnVzaFNjYWxlKTtcbiAgICAgICAgdGhpcy56b29tU2VydmljZS5zZXRCcm9hZGNhc3RDaGFubmVsKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKVxuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1heFpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5tYXhcbiAgICAgICAgPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC9cbiAgICAgICAgdGhpcy5jb25maWcuem9vbT8ubWF4XG4gICAgICAgIDogdGhpcy5jb25maWcuem9vbT8ubGltaXRab29tQnlEYXRhXG4gICAgICAgICAgPyAxXG4gICAgICAgICAgOiAwO1xuXG4gICAgICBjb25zdCBtaW5ab29tID0gdGhpcy5jb25maWcuem9vbT8ubWluXG4gICAgICAgID8gKHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMV0gLSB0aGlzLnpvb21BeGlzLmV4dHJlbWVzWzBdKSAvXG4gICAgICAgIHRoaXMuY29uZmlnLnpvb20/Lm1pblxuICAgICAgICA6IEluZmluaXR5O1xuXG4gICAgICB0aGlzLnpvb20uc2NhbGVFeHRlbnQoW21heFpvb20sIG1pblpvb21dKTtcblxuICAgICAgdGhpcy56b29tLm9uKCd6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20pLm9uKCdkYmxjbGljay56b29tJywgbnVsbCk7IC8vIERpc2FibGUgZGJjbGljayB6b29tXG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZz8uem9vbT8uem9vbUJlaGF2aW9yID09PSBab29tQmVoYXZpb3JUeXBlLndoZWVsKSB7XG4gICAgICAgIHRoaXMucnVuV2hlZWxab29tKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gem9vbSBldmVudHNcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2VcbiAgICAgIC5zdWJzY3JpYmVUb1pvb20odGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcblxuXG4gICAgICAgICAgLy8gU3luYyBmYWtlIGF4aXMgYW5kIGluZGV4IGF4aXMgMFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuem9vbUF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiZcbiAgICAgICAgICAgIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IG0ubWVzc2FnZT8uYXhpcz8ub3JpZW50YXRpb24gJiZcbiAgICAgICAgICAgICgobS5tZXNzYWdlPy5heGlzLmlzRmFrZSAmJiAhdGhpcy56b29tQXhpcy5pc0Zha2UpIHx8XG4gICAgICAgICAgICAoIW0ubWVzc2FnZT8uYXhpcy5pc0Zha2UgJiYgdGhpcy56b29tQXhpcy5pc0Zha2UpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNhbGwoXG4gICAgICAgICAgICAgIHRoaXMuem9vbS50cmFuc2Zvcm0sXG4gICAgICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKG06IElCcm9hZGNhc3RNZXNzYWdlPFpvb21NZXNzYWdlPikgPT5cbiAgICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHxcbiAgICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIFdoZWVsRXZlbnQgfHxcbiAgICAgICAgICAgICh3aW5kb3cuVG91Y2hFdmVudCAmJlxuICAgICAgICAgICAgICBtLm1lc3NhZ2UuZXZlbnQuc291cmNlRXZlbnQgaW5zdGFuY2VvZiBUb3VjaEV2ZW50KVxuICAgICAgICApLFxuICAgICAgICBmaWx0ZXIoKG06IElCcm9hZGNhc3RNZXNzYWdlPFpvb21NZXNzYWdlPikgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnpvb21BeGlzLmluZGV4ID09PSBtLm1lc3NhZ2U/LmF4aXM/LmluZGV4ICYmXG4gICAgICAgICAgICB0aGlzLnpvb21BeGlzLm9yaWVudGF0aW9uID09PSBtLm1lc3NhZ2U/LmF4aXM/Lm9yaWVudGF0aW9uXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmlkICE9PSBtLm1lc3NhZ2UuY2hhcnRJZCkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKFxuICAgICAgICAgICAgICB0aGlzLnpvb20udHJhbnNmb3JtLFxuICAgICAgICAgICAgICBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtLFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gYnJ1c2ggZXZlbnRzIHggb3IgeVxuXG4gICAgaWYgKFxuICAgICAgKHRoaXMuY29uZmlnLmJydXNoPy50eXBlID09PSBCcnVzaFR5cGUueCAmJlxuICAgICAgICB0aGlzLnpvb21BeGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkgfHxcbiAgICAgICh0aGlzLmNvbmZpZy5icnVzaD8udHlwZSA9PT0gQnJ1c2hUeXBlLnkgJiZcbiAgICAgICAgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpXG4gICAgKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnN1YnNjcmliZVRvQnJ1c2godGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpLFxuICAgICAgICB0aGlzLmNoYXJ0U2VydmljZS5zaXplLFxuICAgICAgXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMTUwKSxcbiAgICAgICAgICBmaWx0ZXIoKGRhdGE6IFtJQnJvYWRjYXN0TWVzc2FnZTxCcnVzaE1lc3NhZ2U+LCBET01SZWN0XSkgPT5cbiAgICAgICAgICAgIEJvb2xlYW4oZGF0YVswXS5tZXNzYWdlLnNlbGVjdGlvbilcbiAgICAgICAgICApLFxuICAgICAgICAgIHRhcCgoZGF0YTogW0lCcm9hZGNhc3RNZXNzYWdlPEJydXNoTWVzc2FnZT4sIERPTVJlY3RdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbbV0gPSBkYXRhO1xuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNmb3JtID0gZDMuem9vbVRyYW5zZm9ybSh0aGlzLl9lbGVtZW50Lm5vZGUoKSk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIW0ubWVzc2FnZS5ldmVudCAmJlxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgY3VycmVudFRyYW5zZm9ybS5rICE9PSAxXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGNvbnN0IHMgPSBtLm1lc3NhZ2Uuc2VsZWN0aW9uO1xuICAgICAgICAgICAgdGhpcy5icnVzaFNjYWxlLmRvbWFpbih0aGlzLnpvb21BeGlzLmV4dHJlbWVzKTtcbiAgICAgICAgICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSAoZG9tYWluWzFdIC0gZG9tYWluWzBdKSAvIChzWzFdIC0gc1swXSk7XG5cbiAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHkuc2NhbGUoc2NhbGUpO1xuXG4gICAgICAgICAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS54KSB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoLXRoaXMuYnJ1c2hTY2FsZShzWzBdKSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS55KSB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRoaXMuYnJ1c2hTY2FsZShzWzBdKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20udHJhbnNmb3JtLCB0cmFuc2Zvcm0sIG51bGwsIHt9KTtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb20/Lm9uKCdzdGFydCB6b29tIGVuZCcsIG51bGwpO1xuICAgIHRoaXMuX2VsZW1lbnQ/Lm9uKCd3aGVlbCcsIG51bGwpO1xuICAgIHRoaXMuYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG5cbiAgem9vbWVkID0gKGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT4pID0+IHtcbiAgICBpZiAoZXZlbnQuc291cmNlRXZlbnQpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0gPT09IGV2ZW50LnRyYW5zZm9ybSAmJiBldmVudC50eXBlICE9PSAnZW5kJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYnJ1c2hTY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuXG4gICAgICAgIGxldCBkb21haW4gPVxuICAgICAgICAgIHRoaXMuY29uZmlnLnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnlcbiAgICAgICAgICAgID8gZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVZKG9yaWdpbikuZG9tYWluKClcbiAgICAgICAgICAgIDogZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKG9yaWdpbikuZG9tYWluKCk7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgYXhpczogdGhpcy56b29tQXhpcyxcbiAgICAgICAgICBicnVzaERvbWFpbjogZG9tYWluLFxuICAgICAgICAgIGNoYXJ0SWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0Wm9vbSh7XG4gICAgICAgICAgY2hhbm5lbDogdGhpcy5jb25maWc/Lnpvb20/LnN5bmNDaGFubmVsLFxuICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLmZpcmVab29tKHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHRhcmdldDogdGhpcy56b29tQXhpcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmN1cnJlbnRUcmFuc2Zvcm0gPSBldmVudC50cmFuc2Zvcm07XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgcnVuV2hlZWxab29tKCkge1xuICAgIGxldCB0eXBlOiAnc3RhcnQnIHwgJ3pvb20nIHwgJ2VuZCcgPSAnc3RhcnQnO1xuICAgIGxldCB3aGVlbGluZztcblxuICAgIHRoaXMuem9vbVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnR5cGUgPT09ICd3aGVlbCcpIHx8XG4gICAgICAgICAgICBCb29sZWFuKHdpbmRvdy5Ub3VjaEV2ZW50ICYmIGV2ZW50LnR5cGUgIT09ICd3aGVlbCcpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC53aGVlbERlbHRhKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkZWx0YSA9XG4gICAgICAgICAgdGhpcy5jb25maWc/Lnpvb20udHlwZSA9PT0gWm9vbVR5cGUueFxuICAgICAgICAgICAgPyAtZXZlbnQuZGVsdGFYXG4gICAgICAgICAgICA6IC1ldmVudC5kZWx0YVk7XG4gICAgICAgIHJldHVybiBkZWx0YSAqIDAuMDAyO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCBlbWl0ID0gKHR5cGU6IHN0cmluZywgZXZlbnQ6IFdoZWVsRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYnJ1c2hTY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuICAgICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eTtcbiAgICAgIGNvbnN0IGRlbHRhID1cbiAgICAgICAgdHlwZSA9PT0gJ2VuZCdcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IHRoaXMuY29uZmlnLnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnlcbiAgICAgICAgICAgID8gZXZlbnQuZGVsdGFZXG4gICAgICAgICAgICA6IGV2ZW50LmRlbHRhWDtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnLnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnkpIHtcbiAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZShcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybS55IC0gZGVsdGEgLyAyXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS54KSB7XG4gICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoXG4gICAgICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtLnggLSBkZWx0YSAvIDIsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0uc2NhbGUodGhpcy5jdXJyZW50VHJhbnNmb3JtLmspO1xuXG4gICAgICBsZXQgZG9tYWluID1cbiAgICAgICAgdGhpcy5jb25maWcuem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueVxuICAgICAgICAgID8gdHJhbnNmb3JtLnJlc2NhbGVZKG9yaWdpbikuZG9tYWluKClcbiAgICAgICAgICA6IHRyYW5zZm9ybS5yZXNjYWxlWChvcmlnaW4pLmRvbWFpbigpO1xuXG4gICAgICBjb25zdCBtZXNzYWdlID0gbmV3IFpvb21NZXNzYWdlKHtcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICBzb3VyY2VFdmVudDogZXZlbnQsXG4gICAgICAgICAgdHJhbnNmb3JtLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgIH0sXG4gICAgICAgIGF4aXM6IHRoaXMuem9vbUF4aXMsXG4gICAgICAgIGJydXNoRG9tYWluOiBkb21haW4sXG4gICAgICAgIGNoYXJ0SWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuem9vbVNlcnZpY2UuZmlyZVpvb20oe1xuICAgICAgICBldmVudDoge1xuICAgICAgICAgIHNvdXJjZUV2ZW50OiBldmVudCxcbiAgICAgICAgICB0cmFuc2Zvcm0sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFyZ2V0OiB0aGlzLnpvb21BeGlzLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20udHJhbnNmb3JtLCB0cmFuc2Zvcm0pO1xuICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0Wm9vbSh7XG4gICAgICAgIGNoYW5uZWw6IHRoaXMuY29uZmlnPy56b29tPy5zeW5jQ2hhbm5lbCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH0pO1xuICAgIH07XG5cblxuICAgIHRoaXMuX2VsZW1lbnQub24oJ3doZWVsJywgKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh3aGVlbGluZyk7XG4gICAgICAgIGVtaXQodHlwZSwgZXZlbnQpO1xuICAgICAgICB0eXBlID0gJ3pvb20nO1xuXG4gICAgICAgIHdoZWVsaW5nID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgZW1pdCgnZW5kJywgZXZlbnQpO1xuXG4gICAgICAgICAgdHlwZSA9ICdzdGFydCc7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gIH1cbn1cbiJdfQ==
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdkMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUE0QixZQUFZLEVBQUMsTUFBTSxJQUFJLENBQUM7QUFDM0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQWtDLFdBQVcsR0FBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRCxPQUFPLEVBQUMsWUFBWSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBS3JDLE1BQU0sT0FBTyxpQkFBaUI7SUFrQjVCLFlBQ1UsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLElBQVk7UUFKWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7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LENBQUM7Z0JBQ2xCLElBQUksR0FBRyxNQUFNLENBQUM7Z0JBRWQsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBRW5CLElBQUksR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDOzs4R0F6V1UsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjswTUFFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFaUMsUUFBUTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCB6b29tSWRlbnRpdHl9IGZyb20gJ2QzJztcbmltcG9ydCB7Wm9vbVR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS10eXBlJztcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tICcuLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHtCcnVzaE1lc3NhZ2UsIElCcm9hZGNhc3RNZXNzYWdlLCBab29tTWVzc2FnZSx9IGZyb20gJy4uL21vZGVsL2ktYnJvYWRjYXN0LW1lc3NhZ2UnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZSc7XG5pbXBvcnQge0Jyb2FkY2FzdFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvYnJvYWRjYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIHRha2VXaGlsZSx9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1pvb21CZWhhdmlvclR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS1iZWhhdmlvci10eXBlJztcbmltcG9ydCBvYmplY3RIYXNoIGZyb20gJ29iamVjdC1oYXNoJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RldGFab29tYWJsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBab29tYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogSUNoYXJ0Q29uZmlnO1xuICBASW5wdXQoKSBheGlzPzogQXhpcztcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcbiAgQElucHV0KCkgYnJ1c2hTY2FsZT86IGFueTtcbiAgQElucHV0KCkgc2NhbGU/OiBhbnk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy56b29tYWJsZScpIHByaXZhdGUgem9vbWFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIF9lbGVtZW50OiBkMy5TZWxlY3Rpb248U1ZHRWxlbWVudCwgYW55LCBhbnksIGFueT47XG4gIHByaXZhdGUgem9vbUF4aXM6IEF4aXM7XG4gIHByaXZhdGUgem9vbTogWm9vbUJlaGF2aW9yPGFueSwgYW55PjtcbiAgcHJpdmF0ZSBhbGl2ZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBjdXJyZW50VHJhbnNmb3JtID0gem9vbUlkZW50aXR5O1xuICBwcml2YXRlIGN1cnJlbnRTZWxlY3Rpb247XG4gIHByaXZhdGUgaGFzaDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2U6IEJyb2FkY2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmF4aXM/Lm9wdGlvbnM/Lnpvb20gfHwgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZSkge1xuICAgICAgdGhpcy56b29tYWJsZSA9IHRoaXMuY29uZmlnPy56b29tPy56b29tQmVoYXZpb3IgPT09IFpvb21CZWhhdmlvclR5cGUubW92ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2JydXNoU2NhbGUnKSB8fCBjaGFuZ2VzLmhhc093blByb3BlcnR5KCdzY2FsZScpKSB7XG5cbiAgICAgIGlmICh0aGlzLmhhc2gpIHtcbiAgICAgICAgdGhpcy56b29tU2VydmljZS5zY2FsZUhhc2hNYXAuc2V0KHRoaXMuaGFzaCwgdGhpcy5zY2FsZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGVuYWJsZSA9XG4gICAgICAodGhpcy5heGlzPy5vcHRpb25zPy56b29tICYmIHRoaXMuYXhpcz8ub3B0aW9ucy52aXNpYmxlICE9PSBmYWxzZSkgfHxcbiAgICAgIHRoaXMuY29uZmlnPy56b29tPy5lbmFibGU7XG5cbiAgICBpZiAoIWVuYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuXG4gICAgaWYgKGVuYWJsZSkge1xuXG4gICAgICB0aGlzLl9lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgY29uc3QgY29tbW9uWm9vbUF4aXMgPSBBeGlzLmNyZWF0ZUF4aXMoXG4gICAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnhcbiAgICAgICAgICA/IEF4aXNPcmllbnRhdGlvbi54XG4gICAgICAgICAgOiBBeGlzT3JpZW50YXRpb24ueSxcbiAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgIDAsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuem9vbUF4aXMgPSB0aGlzLmF4aXMgPz8gY29tbW9uWm9vbUF4aXM7XG5cbiAgICAgIHRoaXMuaGFzaCA9IG9iamVjdEhhc2guc2hhMSh7aW5kZXg6IHRoaXMuem9vbUF4aXMuaW5kZXgsIG9yaWVudGF0aW9uOiB0aGlzLnpvb21BeGlzLm9yaWVudGF0aW9ufSlcblxuICAgICAgdGhpcy56b29tID0gZDMuem9vbSgpLmV4dGVudChbXG4gICAgICAgIFswLCAwXSxcbiAgICAgICAgW3RoaXMuc2l6ZS53aWR0aCwgdGhpcy5zaXplLmhlaWdodF0sXG4gICAgICBdKTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnLnpvb20/LmxpbWl0VHJhbnNsYXRlQnlEYXRhKSB7XG4gICAgICAgIHRoaXMuem9vbS50cmFuc2xhdGVFeHRlbnQoW1xuICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICAgICAgXSk7XG4gICAgICB9XG5cblxuXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLmF4aXNIYXNoTWFwLnNldCh0aGlzLmhhc2gsIHRoaXMuem9vbUF4aXMpO1xuICAgICAgdGhpcy56b29tU2VydmljZS5lbGVtZW50SGFzaE1hcC5zZXQodGhpcy5oYXNoLCB0aGlzLl9lbGVtZW50KTtcbiAgICAgIHRoaXMuem9vbVNlcnZpY2Uuc2NhbGVIYXNoTWFwLnNldCh0aGlzLmhhc2gsIHRoaXMuc2NhbGUpO1xuICAgICAgdGhpcy56b29tU2VydmljZS56b29tSGFzaE1hcC5zZXQodGhpcy5oYXNoLCB0aGlzLnpvb20pO1xuICAgICAgdGhpcy56b29tU2VydmljZS5zZXRCcm9hZGNhc3RDaGFubmVsKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKVxuXG5cbiAgICAgIGNvbnN0IG1heFpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5tYXhcbiAgICAgICAgPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC9cbiAgICAgICAgdGhpcy5jb25maWcuem9vbT8ubWF4XG4gICAgICAgIDogdGhpcy5jb25maWcuem9vbT8ubGltaXRab29tQnlEYXRhXG4gICAgICAgICAgPyAxXG4gICAgICAgICAgOiAwO1xuXG4gICAgICBjb25zdCBtaW5ab29tID0gdGhpcy5jb25maWcuem9vbT8ubWluXG4gICAgICAgID8gKHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMV0gLSB0aGlzLnpvb21BeGlzLmV4dHJlbWVzWzBdKSAvXG4gICAgICAgIHRoaXMuY29uZmlnLnpvb20/Lm1pblxuICAgICAgICA6IEluZmluaXR5O1xuXG4gICAgICB0aGlzLnpvb20uc2NhbGVFeHRlbnQoW21heFpvb20sIG1pblpvb21dKTtcblxuICAgICAgdGhpcy56b29tLm9uKCd6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20pLm9uKCdkYmxjbGljay56b29tJywgbnVsbCk7IC8vIERpc2FibGUgZGJjbGljayB6b29tXG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZz8uem9vbT8uem9vbUJlaGF2aW9yID09PSBab29tQmVoYXZpb3JUeXBlLndoZWVsKSB7XG4gICAgICAgIHRoaXMucnVuV2hlZWxab29tKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gem9vbSBldmVudHNcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2VcbiAgICAgIC5zdWJzY3JpYmVUb1pvb20odGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcblxuXG4gICAgICAgICAgLy8gU3luYyBmYWtlIGF4aXMgYW5kIGluZGV4IGF4aXMgMFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuem9vbUF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiZcbiAgICAgICAgICAgIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IG0ubWVzc2FnZT8uYXhpcz8ub3JpZW50YXRpb24gJiZcbiAgICAgICAgICAgICgobS5tZXNzYWdlPy5heGlzLmlzRmFrZSAmJiAhdGhpcy56b29tQXhpcy5pc0Zha2UpIHx8XG4gICAgICAgICAgICAgICghbS5tZXNzYWdlPy5heGlzLmlzRmFrZSAmJiB0aGlzLnpvb21BeGlzLmlzRmFrZSkpXG4gICAgICAgICAgKSB7XG5cbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbChcbiAgICAgICAgICAgICAgdGhpcy56b29tLnRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgbS5tZXNzYWdlLmV2ZW50LnRyYW5zZm9ybVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PlxuICAgICAgICAgICAgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCB8fFxuICAgICAgICAgICAgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudCB8fFxuICAgICAgICAgICAgKHdpbmRvdy5Ub3VjaEV2ZW50ICYmXG4gICAgICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpXG4gICAgICAgICksXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8Wm9vbU1lc3NhZ2U+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuem9vbUF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiZcbiAgICAgICAgICAgIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IG0ubWVzc2FnZT8uYXhpcz8ub3JpZW50YXRpb25cbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuaWQgIT09IG0ubWVzc2FnZS5jaGFydElkKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNhbGwoXG4gICAgICAgICAgICAgIHRoaXMuem9vbS50cmFuc2Zvcm0sXG4gICAgICAgICAgICAgIG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0sXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byBicnVzaCBldmVudHMgeCBvciB5XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54ICYmXG4gICAgICAgIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB8fFxuICAgICAgKHRoaXMuY29uZmlnLmJydXNoPy50eXBlID09PSBCcnVzaFR5cGUueSAmJlxuICAgICAgICB0aGlzLnpvb21BeGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSlcbiAgICApIHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9CcnVzaCh0aGlzLmNvbmZpZz8uem9vbS5zeW5jQ2hhbm5lbCksXG4gICAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemUsXG4gICAgICBdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuYWxpdmUpLFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxNTApLFxuICAgICAgICAgIGZpbHRlcigoZGF0YTogW0lCcm9hZGNhc3RNZXNzYWdlPEJydXNoTWVzc2FnZT4sIERPTVJlY3RdKSA9PlxuICAgICAgICAgICAgQm9vbGVhbihkYXRhWzBdLm1lc3NhZ2Uuc2VsZWN0aW9uKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGFwKChkYXRhOiBbSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPiwgRE9NUmVjdF0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFttXSA9IGRhdGE7XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUcmFuc2Zvcm0gPSBkMy56b29tVHJhbnNmb3JtKHRoaXMuX2VsZW1lbnQubm9kZSgpKTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhbS5tZXNzYWdlLmV2ZW50ICYmXG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiAmJlxuICAgICAgICAgICAgICBjdXJyZW50VHJhbnNmb3JtLmsgIT09IDFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgY29uc3QgcyA9IG0ubWVzc2FnZS5zZWxlY3Rpb247XG4gICAgICAgICAgICB0aGlzLmJydXNoU2NhbGUuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuICAgICAgICAgICAgY29uc3QgZG9tYWluID0gdGhpcy5icnVzaFNjYWxlLmRvbWFpbigpO1xuXG4gICAgICAgICAgICBjb25zdCBzY2FsZSA9IChkb21haW5bMV0gLSBkb21haW5bMF0pIC8gKHNbMV0gLSBzWzBdKTtcblxuICAgICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eS5zY2FsZShzY2FsZSk7XG5cbiAgICAgICAgICAgIGlmIChtLm1lc3NhZ2U/LmJydXNoVHlwZSA9PT0gQnJ1c2hUeXBlLngpIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgtdGhpcy5icnVzaFNjYWxlKHNbMF0pLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtLm1lc3NhZ2U/LmJydXNoVHlwZSA9PT0gQnJ1c2hUeXBlLnkpIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGhpcy5icnVzaFNjYWxlKHNbMF0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbS50cmFuc2Zvcm0sIHRyYW5zZm9ybSwgbnVsbCwge30pO1xuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSBtLm1lc3NhZ2Uuc2VsZWN0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5fZWxlbWVudD8ub24oJ3doZWVsJywgbnVsbCk7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cblxuICB6b29tZWQgPSAoZXZlbnQ6IEQzWm9vbUV2ZW50PGFueSwgYW55PikgPT4ge1xuICAgIGlmIChldmVudC5zb3VyY2VFdmVudCkge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGV2ZW50LnNvdXJjZUV2ZW50KS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFRyYW5zZm9ybSA9PT0gZXZlbnQudHJhbnNmb3JtICYmIGV2ZW50LnR5cGUgIT09ICdlbmQnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5icnVzaFNjYWxlLmNvcHkoKS5kb21haW4odGhpcy56b29tQXhpcy5leHRyZW1lcyk7XG5cbiAgICAgICAgbGV0IGRvbWFpbiA9XG4gICAgICAgICAgdGhpcy5jb25maWcuem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueVxuICAgICAgICAgICAgPyBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVkob3JpZ2luKS5kb21haW4oKVxuICAgICAgICAgICAgOiBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVgob3JpZ2luKS5kb21haW4oKTtcblxuICAgICAgICBjb25zdCBtZXNzYWdlID0gbmV3IFpvb21NZXNzYWdlKHtcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICBheGlzOiB0aGlzLnpvb21BeGlzLFxuICAgICAgICAgIGJydXNoRG9tYWluOiBkb21haW4sXG4gICAgICAgICAgY2hhcnRJZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3Rab29tKHtcbiAgICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuem9vbVNlcnZpY2UuZmlyZVpvb20oe1xuICAgICAgICBldmVudCxcbiAgICAgICAgdGFyZ2V0OiB0aGlzLnpvb21BeGlzLFxuICAgICAgfSk7XG5cblxuICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gZXZlbnQudHJhbnNmb3JtO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHJ1bldoZWVsWm9vbSgpIHtcbiAgICBsZXQgdHlwZTogJ3N0YXJ0JyB8ICd6b29tJyB8ICdlbmQnID0gJ3N0YXJ0JztcbiAgICBsZXQgd2hlZWxpbmc7XG5cbiAgICB0aGlzLnpvb21cbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZXZlbnQuY3RybEtleSAmJiBldmVudC50eXBlID09PSAnd2hlZWwnKSB8fFxuICAgICAgICAgICAgQm9vbGVhbih3aW5kb3cuVG91Y2hFdmVudCAmJiBldmVudC50eXBlICE9PSAnd2hlZWwnKVxuICAgICAgICB9XG4gICAgICApXG4gICAgICAud2hlZWxEZWx0YSgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZGVsdGEgPVxuICAgICAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnhcbiAgICAgICAgICAgID8gLWV2ZW50LmRlbHRhWFxuICAgICAgICAgICAgOiAtZXZlbnQuZGVsdGFZO1xuICAgICAgICByZXR1cm4gZGVsdGEgKiAwLjAwMjtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgZW1pdCA9ICh0eXBlOiBzdHJpbmcsIGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLmJydXNoU2NhbGUuY29weSgpLmRvbWFpbih0aGlzLnpvb21BeGlzLmV4dHJlbWVzKTtcbiAgICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gICAgICBjb25zdCBkZWx0YSA9XG4gICAgICAgIHR5cGUgPT09ICdlbmQnXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55XG4gICAgICAgICAgICA/IGV2ZW50LmRlbHRhWVxuICAgICAgICAgICAgOiBldmVudC5kZWx0YVg7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55KSB7XG4gICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUcmFuc2Zvcm0ueSAtIGRlbHRhIC8gMlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25maWcuem9vbT8udHlwZSA9PT0gWm9vbVR5cGUueCkge1xuICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKFxuICAgICAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybS54IC0gZGVsdGEgLyAyLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnNjYWxlKHRoaXMuY3VycmVudFRyYW5zZm9ybS5rKTtcblxuICAgICAgbGV0IGRvbWFpbiA9XG4gICAgICAgIHRoaXMuY29uZmlnLnpvb20/LnR5cGUgPT09IFpvb21UeXBlLnlcbiAgICAgICAgICA/IHRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgOiB0cmFuc2Zvcm0ucmVzY2FsZVgob3JpZ2luKS5kb21haW4oKTtcblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHRyYW5zZm9ybSxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICB9LFxuICAgICAgICBheGlzOiB0aGlzLnpvb21BeGlzLFxuICAgICAgICBicnVzaERvbWFpbjogZG9tYWluLFxuICAgICAgICBjaGFydElkOiB0aGlzLmNvbmZpZy5pZCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLmZpcmVab29tKHtcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICBzb3VyY2VFdmVudDogZXZlbnQsXG4gICAgICAgICAgdHJhbnNmb3JtLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgIH0sXG4gICAgICAgIHRhcmdldDogdGhpcy56b29tQXhpcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtKTtcbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcblxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdFpvb20oe1xuICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICB9O1xuXG5cbiAgICB0aGlzLl9lbGVtZW50Lm9uKCd3aGVlbCcsIChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQod2hlZWxpbmcpO1xuICAgICAgICBlbWl0KHR5cGUsIGV2ZW50KTtcbiAgICAgICAgdHlwZSA9ICd6b29tJztcblxuICAgICAgICB3aGVlbGluZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGVtaXQoJ2VuZCcsIGV2ZW50KTtcblxuICAgICAgICAgIHR5cGUgPSAnc3RhcnQnO1xuICAgICAgICB9LCA1MCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, filter, map, of, shareReplay, Subject, withLatestFrom, } from 'rxjs';
|
|
2
|
+
import { BehaviorSubject, filter, lastValueFrom, map, of, shareReplay, Subject, take, withLatestFrom, } from 'rxjs';
|
|
3
3
|
import { defaultChartConfig } from '../default/default-chart-config';
|
|
4
4
|
import { defaultAxisConfig } from '../default/default-axis-config';
|
|
5
5
|
import { defaultSeriesConfig } from '../default/default-series-config';
|
|
@@ -67,21 +67,19 @@ export class ChartService {
|
|
|
67
67
|
clearTooltips() {
|
|
68
68
|
this.tooltips$.next(new Map());
|
|
69
69
|
}
|
|
70
|
-
toggleVisibilitySeries(seriesIndex, visible) {
|
|
70
|
+
async toggleVisibilitySeries(seriesIndex, visible) {
|
|
71
71
|
if (seriesIndex?.length === 0) {
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
-
const currentConfig = this.config
|
|
74
|
+
const currentConfig = await lastValueFrom(this.config.pipe(take(1)));
|
|
75
75
|
seriesIndex.forEach((serieIndex) => {
|
|
76
76
|
const currentSerieIndex = currentConfig.series.findIndex((_) => _.id === serieIndex);
|
|
77
77
|
if (currentSerieIndex === -1) {
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
|
-
const serie = currentConfig.series[currentSerieIndex];
|
|
81
|
-
if (!serie.hasOwnProperty('visible')) {
|
|
82
|
-
currentConfig.series[currentSerieIndex].visible = true;
|
|
83
|
-
}
|
|
84
80
|
currentConfig.series[currentSerieIndex].visible = visible !== undefined ? visible : !currentConfig.series[currentSerieIndex].visible;
|
|
81
|
+
const seriesLinkCount = currentConfig.series.filter((_) => _.yAxisIndex === currentConfig.series[currentSerieIndex].yAxisIndex && _.visible === true).length;
|
|
82
|
+
currentConfig.yAxis[currentConfig.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;
|
|
85
83
|
});
|
|
86
84
|
this.config$.next(currentConfig);
|
|
87
85
|
}
|
|
@@ -125,10 +123,6 @@ export class ChartService {
|
|
|
125
123
|
id: _.id ?? index,
|
|
126
124
|
};
|
|
127
125
|
});
|
|
128
|
-
config.yAxis = config.yAxis.map((axis, idx) => {
|
|
129
|
-
const seriesLinkCount = config.series.filter((_) => _.yAxisIndex === idx && _.visible === true).length;
|
|
130
|
-
return Object.assign({}, axis, { visible: axis.visible === false ? false : seriesLinkCount !== 0 });
|
|
131
|
-
});
|
|
132
126
|
const oppositeYCount = config.yAxis?.filter((_) => _.opposite);
|
|
133
127
|
const oppositeXCount = config.xAxis?.filter((_) => _.opposite);
|
|
134
128
|
const nonOppositeYCount = config.yAxis?.filter((_) => !_.opposite);
|
|
@@ -190,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
190
184
|
providedIn: 'root',
|
|
191
185
|
}]
|
|
192
186
|
}], ctorParameters: function () { return []; } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixHQUFHLEVBRUgsRUFBRSxFQUNGLFdBQVcsRUFDWCxPQUFPLEVBQ1AsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBTWQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7O0FBUXJFLE1BQU0sT0FBTyxZQUFZO0lBNEJ2QjtRQVpRLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBZSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDbEUsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksZUFBZSxFQUFFLENBQUMsQ0FBQztRQUM1RCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQzNDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBMEMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7UUFDdEQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBeUIsQ0FBQztRQUNyRCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7UUFDcEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBMEIsQ0FBQztRQUNwRCxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBMEIsQ0FBQztRQUMxRCxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztRQUMxRCxvQkFBZSxHQUFHLElBQUksT0FB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QVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGZpbHRlciwgZmlyc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHNoYXJlUmVwbGF5LFxuICBTdWJqZWN0LFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0lDaGFydEV2ZW50fSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWV2ZW50JztcbmltcG9ydCB7SURpc3BsYXlUb29sdGlwfSBmcm9tICcuLi9tb2RlbC9pLWRpc3BsYXktdG9vbHRpcCc7XG5pbXBvcnQge1Bsb3RCYW5kfSBmcm9tICcuLi9tb2RlbC9wbG90LWJhbmQnO1xuaW1wb3J0IHtQbG90TGluZX0gZnJvbSAnLi4vbW9kZWwvcGxvdC1saW5lJztcbmltcG9ydCB7SVBvaW50TW92ZX0gZnJvbSAnLi4vbW9kZWwvaS1wb2ludC1tb3ZlJztcbmltcG9ydCB7ZGVmYXVsdENoYXJ0Q29uZmlnfSBmcm9tICcuLi9kZWZhdWx0L2RlZmF1bHQtY2hhcnQtY29uZmlnJztcbmltcG9ydCB7ZGVmYXVsdEF4aXNDb25maWd9IGZyb20gJy4uL2RlZmF1bHQvZGVmYXVsdC1heGlzLWNvbmZpZyc7XG5pbXBvcnQge2RlZmF1bHRTZXJpZXNDb25maWd9IGZyb20gJy4uL2RlZmF1bHQvZGVmYXVsdC1zZXJpZXMtY29uZmlnJztcbmltcG9ydCB7QmFzZVBvaW50fSBmcm9tICcuLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7U2VyaWVzfSBmcm9tICcuLi9tb2RlbC9zZXJpZXMnO1xuaW1wb3J0IHtBbm5vdGF0aW9ufSBmcm9tICcuLi9tb2RlbC9hbm5vdGF0aW9uJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0U2VydmljZSB7XG4gIHB1YmxpYyBpZDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgY29uZmlnOiBPYnNlcnZhYmxlPElDaGFydENvbmZpZz47XG4gIHB1YmxpYyBzaXplOiBPYnNlcnZhYmxlPERPTVJlY3Q+O1xuICBwdWJsaWMgcG9pbnRlck1vdmU6IE9ic2VydmFibGU8UG9pbnRlckV2ZW50PjtcbiAgcHVibGljIHRvb2x0aXBzOiBPYnNlcnZhYmxlPE1hcDxTZXJpZXM8QmFzZVBvaW50PiwgSURpc3BsYXlUb29sdGlwPj47XG4gIHB1YmxpYyBwbG90QmFuZEV2ZW50OiBPYnNlcnZhYmxlPElDaGFydEV2ZW50PFBsb3RCYW5kPj47XG4gIHB1YmxpYyBwbG90TGluZU1vdmU6IE9ic2VydmFibGU8SUNoYXJ0RXZlbnQ8UGxvdExpbmU+PjtcbiAgcHVibGljIHBsb3RCYW5kQ2xpY2s6IE9ic2VydmFibGU8SUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+PjtcbiAgcHVibGljIHBsb3RCYW5kQ29udGV4dE1lbnU6IE9ic2VydmFibGU8SUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+PjtcbiAgcHVibGljIHBvaW50TW92ZTogT2JzZXJ2YWJsZTxJQ2hhcnRFdmVudDxJUG9pbnRNb3ZlPj47XG4gIHB1YmxpYyBhbm5vdGF0aW9uTW92ZTogT2JzZXJ2YWJsZTxJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPj47XG4gIHB1YmxpYyBhbm5vdGF0aW9uQ2xpY2s6IE9ic2VydmFibGU8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+O1xuICBwdWJsaWMgYW5ub3RhdGlvbkNvbnRleHRNZW51OiBPYnNlcnZhYmxlPElDaGFydEV2ZW50PEFubm90YXRpb24+PjtcbiAgcHVibGljIGNoYXJ0Q2xpY2s6IE9ic2VydmFibGU8SUNoYXJ0RXZlbnQ8QmFzZVBvaW50Pj47XG4gIHB1YmxpYyBjaGFydENvbnRleHRNZW51OiBPYnNlcnZhYmxlPElDaGFydEV2ZW50PEJhc2VQb2ludD4+O1xuICBwcml2YXRlIGNvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDaGFydENvbmZpZz4oZGVmYXVsdENoYXJ0Q29uZmlnKCkpO1xuICBwcml2YXRlIHNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxET01SZWN0PihuZXcgRE9NUmVjdFJlYWRPbmx5KCkpO1xuICBwcml2YXRlIHBvaW50ZXJNb3ZlJCA9IG5ldyBTdWJqZWN0PFBvaW50ZXJFdmVudD4oKTtcbiAgcHJpdmF0ZSB0b29sdGlwcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxTZXJpZXM8QmFzZVBvaW50PiwgSURpc3BsYXlUb29sdGlwPj4obmV3IE1hcCgpKTtcbiAgcHJpdmF0ZSBwbG90QmFuZEV2ZW50JCA9IG5ldyBTdWJqZWN0PElDaGFydEV2ZW50PFBsb3RCYW5kPj4oKTtcbiAgcHJpdmF0ZSBwbG90TGluZU1vdmUkID0gbmV3IFN1YmplY3Q8SUNoYXJ0RXZlbnQ8UGxvdExpbmU+PigpO1xuICBwcml2YXRlIHBvaW50TW92ZSQgPSBuZXcgU3ViamVjdDxJQ2hhcnRFdmVudDxJUG9pbnRNb3ZlPj4oKTtcbiAgcHJpdmF0ZSBjaGFydENsaWNrJCA9IG5ldyBTdWJqZWN0PElDaGFydEV2ZW50PEJhc2VQb2ludD4+KCk7XG4gIHByaXZhdGUgY2hhcnRDb250ZXh0TWVudSQgPSBuZXcgU3ViamVjdDxJQ2hhcnRFdmVudDxCYXNlUG9pbnQ+PigpO1xuICBwcml2YXRlIGFubm90YXRpb25FdmVudCQgPSBuZXcgU3ViamVjdDxJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPj4oKTtcbiAgcHJpdmF0ZSBhbm5vdGF0aW9uTW92ZSQgPSBuZXcgU3ViamVjdDxJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gb2YoKERhdGUubm93KCkgKyBNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNikpO1xuXG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyQuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaWQpLFxuICAgICAgbWFwKHRoaXMuc2V0RGVmYXVsdHMpLFxuICAgICAgbWFwKHRoaXMuc2V0UHJlcGFyYXRpb25EYXRhKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnNpemUgPSB0aGlzLnNpemUkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgdGhpcy5wb2ludGVyTW92ZSA9IHRoaXMucG9pbnRlck1vdmUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMudG9vbHRpcHMgPSB0aGlzLnRvb2x0aXBzJC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnBsb3RCYW5kRXZlbnQgPSB0aGlzLnBsb3RCYW5kRXZlbnQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMucGxvdExpbmVNb3ZlID0gdGhpcy5wbG90TGluZU1vdmUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMucG9pbnRNb3ZlID0gdGhpcy5wb2ludE1vdmUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuY2hhcnRDbGljayA9IHRoaXMuY2hhcnRDbGljayQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jaGFydENvbnRleHRNZW51ID0gdGhpcy5jaGFydENvbnRleHRNZW51JC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmFubm90YXRpb25DbGljayA9IHRoaXMuYW5ub3RhdGlvbkV2ZW50JFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShmaWx0ZXIoKF8pID0+IF8/LmV2ZW50Py50eXBlID09PSAnY2xpY2snKSk7XG4gICAgdGhpcy5hbm5vdGF0aW9uQ29udGV4dE1lbnUgPSB0aGlzLmFubm90YXRpb25FdmVudCRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoZmlsdGVyKChfKSA9PiBfPy5ldmVudD8udHlwZSA9PT0gJ2NvbnRleHRtZW51JykpO1xuICAgIHRoaXMuYW5ub3RhdGlvbk1vdmUgPSB0aGlzLmFubm90YXRpb25Nb3ZlJC5hc09ic2VydmFibGUoKTtcblxuICAgIHRoaXMucGxvdEJhbmRDbGljayA9IHRoaXMucGxvdEJhbmRFdmVudCRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoZmlsdGVyKChfKSA9PiBfPy5ldmVudD8udHlwZSA9PT0gJ2NsaWNrJykpO1xuICAgIHRoaXMucGxvdEJhbmRDb250ZXh0TWVudSA9IHRoaXMucGxvdEJhbmRFdmVudCRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoZmlsdGVyKChfKSA9PiBfPy5ldmVudD8udHlwZSA9PT0gJ2NvbnRleHRtZW51JykpO1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWc6IElDaGFydENvbmZpZykge1xuICAgIHRoaXMuY2xlYXJUb29sdGlwcygpO1xuICAgIHRoaXMuY29uZmlnJC5uZXh0KGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2l6ZShzaXplOiBET01SZWN0KSB7XG4gICAgdGhpcy5zaXplJC5uZXh0KHNpemUpO1xuICB9XG5cbiAgcHVibGljIHNldFBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICB0aGlzLnBvaW50ZXJNb3ZlJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUb29sdGlwKHRvb2x0aXA6IElEaXNwbGF5VG9vbHRpcCkge1xuICAgIGNvbnN0IGN1cnJlbnRUb29sdGlwcyA9IHRoaXMudG9vbHRpcHMkLnZhbHVlO1xuICAgIGlmICghdG9vbHRpcC5wb2ludCkge1xuICAgICAgY3VycmVudFRvb2x0aXBzLmRlbGV0ZSh0b29sdGlwLnNlcmllcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRUb29sdGlwcy5zZXQodG9vbHRpcC5zZXJpZXMsIHRvb2x0aXApO1xuICAgIH1cbiAgICB0aGlzLnRvb2x0aXBzJC5uZXh0KFxuICAgICAgbmV3IE1hcDxTZXJpZXM8QmFzZVBvaW50PiwgSURpc3BsYXlUb29sdGlwPihjdXJyZW50VG9vbHRpcHMpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclRvb2x0aXBzKCkge1xuICAgIHRoaXMudG9vbHRpcHMkLm5leHQobmV3IE1hcCgpKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVWaXNpYmlsaXR5U2VyaWVzKHNlcmllc0luZGV4OiBBcnJheTxudW1iZXIgfCBzdHJpbmc+LCB2aXNpYmxlPzogYm9vbGVhbikge1xuXG5cbiAgICBpZihzZXJpZXNJbmRleD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IHRoaXMuY29uZmlnJC52YWx1ZVxuXG4gICAgc2VyaWVzSW5kZXguZm9yRWFjaCgoc2VyaWVJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFNlcmllSW5kZXggPSBjdXJyZW50Q29uZmlnLnNlcmllcy5maW5kSW5kZXgoKF8pID0+IF8uaWQgPT09IHNlcmllSW5kZXgpO1xuXG4gICAgICBpZihjdXJyZW50U2VyaWVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzZXJpZSA9IGN1cnJlbnRDb25maWcuc2VyaWVzW2N1cnJlbnRTZXJpZUluZGV4XTtcbiAgICAgIGlmICghc2VyaWUuaGFzT3duUHJvcGVydHkoJ3Zpc2libGUnKSkge1xuICAgICAgICBjdXJyZW50Q29uZmlnLnNlcmllc1tjdXJyZW50U2VyaWVJbmRleF0udmlzaWJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBjdXJyZW50Q29uZmlnLnNlcmllc1tjdXJyZW50U2VyaWVJbmRleF0udmlzaWJsZSA9IHZpc2libGUgIT09IHVuZGVmaW5lZCA/IHZpc2libGUgOiAhY3VycmVudENvbmZpZy5zZXJpZXNbY3VycmVudFNlcmllSW5kZXhdLnZpc2libGU7XG4gICAgfSlcblxuICAgIHRoaXMuY29uZmlnJC5uZXh0KGN1cnJlbnRDb25maWcpO1xuICB9XG5cbiAgcHVibGljIGVtaXRNb3ZlQW5ub3RhdGlvbihldmVudDogSUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4pIHtcbiAgICB0aGlzLmFubm90YXRpb25Nb3ZlJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0QW5ub3RhdGlvbihldmVudDogSUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4pIHtcbiAgICB0aGlzLmFubm90YXRpb25FdmVudCQubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZW1pdFBsb3RiYW5kKGV2ZW50OiBJQ2hhcnRFdmVudDxQbG90QmFuZD4pIHtcbiAgICB0aGlzLnBsb3RCYW5kRXZlbnQkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGVtaXRQbG90bGluZShldmVudDogSUNoYXJ0RXZlbnQ8UGxvdExpbmU+KSB7XG4gICAgdGhpcy5wbG90TGluZU1vdmUkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGVtaXRQb2ludChldmVudDogSUNoYXJ0RXZlbnQ8SVBvaW50TW92ZT4pIHtcbiAgICB0aGlzLnBvaW50TW92ZSQubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZW1pdENoYXJ0Q2xpY2soZXZlbnQ6IElDaGFydEV2ZW50PEJhc2VQb2ludD4pIHtcbiAgICB0aGlzLmNoYXJ0Q2xpY2skLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGVtaXRDaGFydENvbnRleHRNZW51KGV2ZW50OiBJQ2hhcnRFdmVudDxCYXNlUG9pbnQ+KSB7XG4gICAgdGhpcy5jaGFydENvbnRleHRNZW51JC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdHMoZGF0YTogW0lDaGFydENvbmZpZywgc3RyaW5nXSk6IElDaGFydENvbmZpZyB7XG4gICAgbGV0IFtjb25maWcsIGlkXSA9IGRhdGE7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnID0gKGRlZmF1bHRDb25maWcpID0+IHtcbiAgICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q29uZmlnLCBzb3VyY2UpO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENoYXJ0Q29uZmlnKCksIGNvbmZpZyk7XG4gICAgY29uZmlnLmlkID0gaWQ7XG5cbiAgICBjb25maWcueEF4aXMgPSBjb25maWcueEF4aXMubWFwKGRlZmF1bHRDb25maWcoZGVmYXVsdEF4aXNDb25maWcpKTtcbiAgICBjb25maWcueUF4aXMgPSBjb25maWcueUF4aXMubWFwKGRlZmF1bHRDb25maWcoZGVmYXVsdEF4aXNDb25maWcpKTtcbiAgICBjb25maWcuc2VyaWVzID0gY29uZmlnLnNlcmllcy5tYXAoZGVmYXVsdENvbmZpZyhkZWZhdWx0U2VyaWVzQ29uZmlnKCkpKTtcblxuICAgIGNvbmZpZy5zZXJpZXMgPSBjb25maWcuc2VyaWVzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLl8sXG4gICAgICAgIGRhdGE6IF8uZGF0YSA/PyBbXSxcbiAgICAgICAgaWQ6IF8uaWQgPz8gaW5kZXgsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uZmlnLnlBeGlzID0gY29uZmlnLnlBeGlzLm1hcCgoYXhpcywgaWR4KSA9PiB7XG4gICAgICBjb25zdCBzZXJpZXNMaW5rQ291bnQgPSBjb25maWcuc2VyaWVzLmZpbHRlcigoXykgPT4gXy55QXhpc0luZGV4ID09PSBpZHggJiYgXy52aXNpYmxlID09PSB0cnVlKS5sZW5ndGhcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBheGlzLCB7dmlzaWJsZTogYXhpcy52aXNpYmxlID09PSBmYWxzZSA/IGZhbHNlIDogc2VyaWVzTGlua0NvdW50ICE9PSAwfSlcbiAgICB9KVxuXG4gICAgY29uc3Qgb3Bwb3NpdGVZQ291bnQgPSBjb25maWcueUF4aXM/LmZpbHRlcigoXykgPT4gXy5vcHBvc2l0ZSk7XG4gICAgY29uc3Qgb3Bwb3NpdGVYQ291bnQgPSBjb25maWcueEF4aXM/LmZpbHRlcigoXykgPT4gXy5vcHBvc2l0ZSk7XG5cbiAgICBjb25zdCBub25PcHBvc2l0ZVlDb3VudCA9IGNvbmZpZy55QXhpcz8uZmlsdGVyKChfKSA9PiAhXy5vcHBvc2l0ZSk7XG4gICAgY29uc3Qgbm9uT3Bwb3NpdGVYQ291bnQgPSBjb25maWcueEF4aXM/LmZpbHRlcigoXykgPT4gIV8ub3Bwb3NpdGUpO1xuXG4gICAgaWYgKG5vbk9wcG9zaXRlWENvdW50Py5sZW5ndGggPiAxKSB7XG4gICAgICBjb25maWcuYm91bmRzLmJvdHRvbSA9IDA7XG4gICAgfVxuXG4gICAgaWYgKG9wcG9zaXRlWENvdW50Py5sZW5ndGggPiAxKSB7XG4gICAgICBjb25maWcuYm91bmRzLnRvcCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKG5vbk9wcG9zaXRlWUNvdW50Py5sZW5ndGggPiAxKSB7XG4gICAgICBjb25maWcuYm91bmRzLmxlZnQgPSAwO1xuICAgIH1cblxuICAgIGlmIChvcHBvc2l0ZVlDb3VudD8ubGVuZ3RoID4gMSkge1xuICAgICAgY29uZmlnLmJvdW5kcy5yaWdodCA9IDA7XG4gICAgfVxuXG4gICAgY29uZmlnLnRvb2x0aXAgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBkZWZhdWx0Q2hhcnRDb25maWcoKS50b29sdGlwLFxuICAgICAgY29uZmlnLnRvb2x0aXBcbiAgICApO1xuXG4gICAgY29uZmlnLnpvb20gPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBkZWZhdWx0Q2hhcnRDb25maWcoKS56b29tLFxuICAgICAgY29uZmlnLnpvb21cbiAgICApO1xuXG4gICAgY29uZmlnLnpvb20uc3luY0NoYW5uZWwgPSBjb25maWcuem9vbT8uc3luY0NoYW5uZWwgPz8gaWQ7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQcmVwYXJhdGlvbkRhdGEoY29uZmlnOiBJQ2hhcnRDb25maWcpOiBJQ2hhcnRDb25maWcge1xuICAgIGlmIChjb25maWcuaW52ZXJ0ZWQpIHtcbiAgICAgIGNvbnN0IHhBeGVzID0gWy4uLmNvbmZpZy54QXhpc107XG4gICAgICBjb25zdCB5QXhlcyA9IFsuLi5jb25maWcueUF4aXNdO1xuXG4gICAgICBjb25maWcueEF4aXMgPSB5QXhlcztcbiAgICAgIGNvbmZpZy55QXhpcyA9IHhBeGVzO1xuXG4gICAgICBjb25maWcuc2VyaWVzID0gY29uZmlnLnNlcmllcz8ubWFwKChzZXJpZSkgPT4ge1xuICAgICAgICBjb25zdCB4ID0gc2VyaWUueEF4aXNJbmRleDtcbiAgICAgICAgY29uc3QgeSA9IHNlcmllLnlBeGlzSW5kZXg7XG4gICAgICAgIHNlcmllLnhBeGlzSW5kZXggPSB5O1xuICAgICAgICBzZXJpZS55QXhpc0luZGV4ID0geDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zZXJpZSxcbiAgICAgICAgICBkYXRhOiBzZXJpZT8uZGF0YT8ubWFwKChwb2ludCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4ucG9pbnQsXG4gICAgICAgICAgICAgIHg6IHBvaW50Py55LFxuICAgICAgICAgICAgICB5OiBwb2ludD8ueCxcbiAgICAgICAgICAgICAgeDE6IHBvaW50Py55MSxcbiAgICAgICAgICAgICAgeTE6IHBvaW50Py54MSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnPy5icnVzaD8uZW5hYmxlKSB7XG4gICAgICBjb25maWcueUF4aXMgPSBjb25maWcueUF4aXMubWFwKChfKSA9PiAoey4uLl8sIHpvb206IGZhbHNlfSkpO1xuICAgICAgY29uZmlnLnhBeGlzID0gY29uZmlnLnhBeGlzLm1hcCgoXykgPT4gKHsuLi5fLCB6b29tOiBmYWxzZX0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG4iXX0=
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLE1BQU0sRUFDTixhQUFhLEVBQ2IsR0FBRyxFQUVILEVBQUUsRUFDRixXQUFXLEVBQ1gsT0FBTyxFQUFFLElBQUksRUFDYixjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFNZCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFRckUsTUFBTSxPQUFPLFlBQVk7SUE0QnZCO1FBWlEsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFlLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUNsRSxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFDM0MsY0FBUyxHQUFHLElBQUksZUFBZSxDQUEwQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEYsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBeUIsQ0FBQztRQUN0RCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBQ3JELGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO1FBQ3BELHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO1FBQzFELHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO1FBQzFE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SSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQy9CLE9BQU87NEJBQ0wsR0FBRyxLQUFLOzRCQUNSLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQzs0QkFDWCxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7NEJBQ1gsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFOzRCQUNiLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRTt5QkFDZCxDQUFDO29CQUNKLENBQUMsQ0FBQztpQkFDSCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDekIsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzt5R0FyUFUsWUFBWTs2R0FBWixZQUFZLGNBRlgsTUFBTTsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBmaWx0ZXIsIGZpcnN0LFxuICBsYXN0VmFsdWVGcm9tLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzaGFyZVJlcGxheSxcbiAgU3ViamVjdCwgdGFrZSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJQ2hhcnRFdmVudH0gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1ldmVudCc7XG5pbXBvcnQge0lEaXNwbGF5VG9vbHRpcH0gZnJvbSAnLi4vbW9kZWwvaS1kaXNwbGF5LXRvb2x0aXAnO1xuaW1wb3J0IHtQbG90QmFuZH0gZnJvbSAnLi4vbW9kZWwvcGxvdC1iYW5kJztcbmltcG9ydCB7UGxvdExpbmV9IGZyb20gJy4uL21vZGVsL3Bsb3QtbGluZSc7XG5pbXBvcnQge0lQb2ludE1vdmV9IGZyb20gJy4uL21vZGVsL2ktcG9pbnQtbW92ZSc7XG5pbXBvcnQge2RlZmF1bHRDaGFydENvbmZpZ30gZnJvbSAnLi4vZGVmYXVsdC9kZWZhdWx0LWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge2RlZmF1bHRBeGlzQ29uZmlnfSBmcm9tICcuLi9kZWZhdWx0L2RlZmF1bHQtYXhpcy1jb25maWcnO1xuaW1wb3J0IHtkZWZhdWx0U2VyaWVzQ29uZmlnfSBmcm9tICcuLi9kZWZhdWx0L2RlZmF1bHQtc2VyaWVzLWNvbmZpZyc7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQge1Nlcmllc30gZnJvbSAnLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7QW5ub3RhdGlvbn0gZnJvbSAnLi4vbW9kZWwvYW5ub3RhdGlvbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydFNlcnZpY2Uge1xuICBwdWJsaWMgaWQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGNvbmZpZzogT2JzZXJ2YWJsZTxJQ2hhcnRDb25maWc+O1xuICBwdWJsaWMgc2l6ZTogT2JzZXJ2YWJsZTxET01SZWN0PjtcbiAgcHVibGljIHBvaW50ZXJNb3ZlOiBPYnNlcnZhYmxlPFBvaW50ZXJFdmVudD47XG4gIHB1YmxpYyB0b29sdGlwczogT2JzZXJ2YWJsZTxNYXA8U2VyaWVzPEJhc2VQb2ludD4sIElEaXNwbGF5VG9vbHRpcD4+O1xuICBwdWJsaWMgcGxvdEJhbmRFdmVudDogT2JzZXJ2YWJsZTxJQ2hhcnRFdmVudDxQbG90QmFuZD4+O1xuICBwdWJsaWMgcGxvdExpbmVNb3ZlOiBPYnNlcnZhYmxlPElDaGFydEV2ZW50PFBsb3RMaW5lPj47XG4gIHB1YmxpYyBwbG90QmFuZENsaWNrOiBPYnNlcnZhYmxlPElDaGFydEV2ZW50PFBsb3RCYW5kPj47XG4gIHB1YmxpYyBwbG90QmFuZENvbnRleHRNZW51OiBPYnNlcnZhYmxlPElDaGFydEV2ZW50PFBsb3RCYW5kPj47XG4gIHB1YmxpYyBwb2ludE1vdmU6IE9ic2VydmFibGU8SUNoYXJ0RXZlbnQ8SVBvaW50TW92ZT4+O1xuICBwdWJsaWMgYW5ub3RhdGlvbk1vdmU6IE9ic2VydmFibGU8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+O1xuICBwdWJsaWMgYW5ub3RhdGlvbkNsaWNrOiBPYnNlcnZhYmxlPElDaGFydEV2ZW50PEFubm90YXRpb24+PjtcbiAgcHVibGljIGFubm90YXRpb25Db250ZXh0TWVudTogT2JzZXJ2YWJsZTxJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPj47XG4gIHB1YmxpYyBjaGFydENsaWNrOiBPYnNlcnZhYmxlPElDaGFydEV2ZW50PEJhc2VQb2ludD4+O1xuICBwdWJsaWMgY2hhcnRDb250ZXh0TWVudTogT2JzZXJ2YWJsZTxJQ2hhcnRFdmVudDxCYXNlUG9pbnQ+PjtcbiAgcHJpdmF0ZSBjb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQ2hhcnRDb25maWc+KGRlZmF1bHRDaGFydENvbmZpZygpKTtcbiAgcHJpdmF0ZSBzaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RE9NUmVjdD4obmV3IERPTVJlY3RSZWFkT25seSgpKTtcbiAgcHJpdmF0ZSBwb2ludGVyTW92ZSQgPSBuZXcgU3ViamVjdDxQb2ludGVyRXZlbnQ+KCk7XG4gIHByaXZhdGUgdG9vbHRpcHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8U2VyaWVzPEJhc2VQb2ludD4sIElEaXNwbGF5VG9vbHRpcD4+KG5ldyBNYXAoKSk7XG4gIHByaXZhdGUgcGxvdEJhbmRFdmVudCQgPSBuZXcgU3ViamVjdDxJQ2hhcnRFdmVudDxQbG90QmFuZD4+KCk7XG4gIHByaXZhdGUgcGxvdExpbmVNb3ZlJCA9IG5ldyBTdWJqZWN0PElDaGFydEV2ZW50PFBsb3RMaW5lPj4oKTtcbiAgcHJpdmF0ZSBwb2ludE1vdmUkID0gbmV3IFN1YmplY3Q8SUNoYXJ0RXZlbnQ8SVBvaW50TW92ZT4+KCk7XG4gIHByaXZhdGUgY2hhcnRDbGljayQgPSBuZXcgU3ViamVjdDxJQ2hhcnRFdmVudDxCYXNlUG9pbnQ+PigpO1xuICBwcml2YXRlIGNoYXJ0Q29udGV4dE1lbnUkID0gbmV3IFN1YmplY3Q8SUNoYXJ0RXZlbnQ8QmFzZVBvaW50Pj4oKTtcbiAgcHJpdmF0ZSBhbm5vdGF0aW9uRXZlbnQkID0gbmV3IFN1YmplY3Q8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+KCk7XG4gIHByaXZhdGUgYW5ub3RhdGlvbk1vdmUkID0gbmV3IFN1YmplY3Q8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pZCA9IG9mKChEYXRlLm5vdygpICsgTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpKTtcblxuICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWckLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlkKSxcbiAgICAgIG1hcCh0aGlzLnNldERlZmF1bHRzKSxcbiAgICAgIG1hcCh0aGlzLnNldFByZXBhcmF0aW9uRGF0YSksXG4gICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgIHJlZkNvdW50OiB0cnVlLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zaXplID0gdGhpcy5zaXplJC5hc09ic2VydmFibGUoKTtcblxuICAgIHRoaXMucG9pbnRlck1vdmUgPSB0aGlzLnBvaW50ZXJNb3ZlJC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnRvb2x0aXBzID0gdGhpcy50b29sdGlwcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5wbG90QmFuZEV2ZW50ID0gdGhpcy5wbG90QmFuZEV2ZW50JC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnBsb3RMaW5lTW92ZSA9IHRoaXMucGxvdExpbmVNb3ZlJC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnBvaW50TW92ZSA9IHRoaXMucG9pbnRNb3ZlJC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmNoYXJ0Q2xpY2sgPSB0aGlzLmNoYXJ0Q2xpY2skLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuY2hhcnRDb250ZXh0TWVudSA9IHRoaXMuY2hhcnRDb250ZXh0TWVudSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5hbm5vdGF0aW9uQ2xpY2sgPSB0aGlzLmFubm90YXRpb25FdmVudCRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoZmlsdGVyKChfKSA9PiBfPy5ldmVudD8udHlwZSA9PT0gJ2NsaWNrJykpO1xuICAgIHRoaXMuYW5ub3RhdGlvbkNvbnRleHRNZW51ID0gdGhpcy5hbm5vdGF0aW9uRXZlbnQkXG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGZpbHRlcigoXykgPT4gXz8uZXZlbnQ/LnR5cGUgPT09ICdjb250ZXh0bWVudScpKTtcbiAgICB0aGlzLmFubm90YXRpb25Nb3ZlID0gdGhpcy5hbm5vdGF0aW9uTW92ZSQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICB0aGlzLnBsb3RCYW5kQ2xpY2sgPSB0aGlzLnBsb3RCYW5kRXZlbnQkXG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGZpbHRlcigoXykgPT4gXz8uZXZlbnQ/LnR5cGUgPT09ICdjbGljaycpKTtcbiAgICB0aGlzLnBsb3RCYW5kQ29udGV4dE1lbnUgPSB0aGlzLnBsb3RCYW5kRXZlbnQkXG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGZpbHRlcigoXykgPT4gXz8uZXZlbnQ/LnR5cGUgPT09ICdjb250ZXh0bWVudScpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWcoY29uZmlnOiBJQ2hhcnRDb25maWcpIHtcbiAgICB0aGlzLmNsZWFyVG9vbHRpcHMoKTtcbiAgICB0aGlzLmNvbmZpZyQubmV4dChjb25maWcpO1xuICB9XG5cbiAgcHVibGljIHNldFNpemUoc2l6ZTogRE9NUmVjdCkge1xuICAgIHRoaXMuc2l6ZSQubmV4dChzaXplKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQb2ludGVyTW92ZShldmVudDogUG9pbnRlckV2ZW50KSB7XG4gICAgdGhpcy5wb2ludGVyTW92ZSQubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgc2V0VG9vbHRpcCh0b29sdGlwOiBJRGlzcGxheVRvb2x0aXApIHtcbiAgICBjb25zdCBjdXJyZW50VG9vbHRpcHMgPSB0aGlzLnRvb2x0aXBzJC52YWx1ZTtcbiAgICBpZiAoIXRvb2x0aXAucG9pbnQpIHtcbiAgICAgIGN1cnJlbnRUb29sdGlwcy5kZWxldGUodG9vbHRpcC5zZXJpZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50VG9vbHRpcHMuc2V0KHRvb2x0aXAuc2VyaWVzLCB0b29sdGlwKTtcbiAgICB9XG4gICAgdGhpcy50b29sdGlwcyQubmV4dChcbiAgICAgIG5ldyBNYXA8U2VyaWVzPEJhc2VQb2ludD4sIElEaXNwbGF5VG9vbHRpcD4oY3VycmVudFRvb2x0aXBzKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJUb29sdGlwcygpIHtcbiAgICB0aGlzLnRvb2x0aXBzJC5uZXh0KG5ldyBNYXAoKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdG9nZ2xlVmlzaWJpbGl0eVNlcmllcyhzZXJpZXNJbmRleDogQXJyYXk8bnVtYmVyIHwgc3RyaW5nPiwgdmlzaWJsZT86IGJvb2xlYW4pIHtcblxuICAgIGlmKHNlcmllc0luZGV4Py5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLmNvbmZpZy5waXBlKHRha2UoMSkpKTtcblxuICAgIHNlcmllc0luZGV4LmZvckVhY2goKHNlcmllSW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZXJpZUluZGV4ID0gY3VycmVudENvbmZpZy5zZXJpZXMuZmluZEluZGV4KChfKSA9PiBfLmlkID09PSBzZXJpZUluZGV4KTtcblxuICAgICAgaWYoY3VycmVudFNlcmllSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRDb25maWcuc2VyaWVzW2N1cnJlbnRTZXJpZUluZGV4XS52aXNpYmxlID0gdmlzaWJsZSAhPT0gdW5kZWZpbmVkID8gdmlzaWJsZSA6ICFjdXJyZW50Q29uZmlnLnNlcmllc1tjdXJyZW50U2VyaWVJbmRleF0udmlzaWJsZTtcblxuICAgICAgY29uc3Qgc2VyaWVzTGlua0NvdW50ID0gY3VycmVudENvbmZpZy5zZXJpZXMuZmlsdGVyKChfKSA9PiBfLnlBeGlzSW5kZXggPT09IGN1cnJlbnRDb25maWcuc2VyaWVzW2N1cnJlbnRTZXJpZUluZGV4XS55QXhpc0luZGV4ICYmIF8udmlzaWJsZSA9PT0gdHJ1ZSkubGVuZ3RoXG4gICAgICBjdXJyZW50Q29uZmlnLnlBeGlzW2N1cnJlbnRDb25maWcuc2VyaWVzW2N1cnJlbnRTZXJpZUluZGV4XS55QXhpc0luZGV4XS52aXNpYmxlID0gc2VyaWVzTGlua0NvdW50ICE9PSAwO1xuXG4gICAgfSlcblxuXG4gICAgdGhpcy5jb25maWckLm5leHQoY3VycmVudENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgZW1pdE1vdmVBbm5vdGF0aW9uKGV2ZW50OiBJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPikge1xuICAgIHRoaXMuYW5ub3RhdGlvbk1vdmUkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIGVtaXRBbm5vdGF0aW9uKGV2ZW50OiBJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPikge1xuICAgIHRoaXMuYW5ub3RhdGlvbkV2ZW50JC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0UGxvdGJhbmQoZXZlbnQ6IElDaGFydEV2ZW50PFBsb3RCYW5kPikge1xuICAgIHRoaXMucGxvdEJhbmRFdmVudCQubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZW1pdFBsb3RsaW5lKGV2ZW50OiBJQ2hhcnRFdmVudDxQbG90TGluZT4pIHtcbiAgICB0aGlzLnBsb3RMaW5lTW92ZSQubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZW1pdFBvaW50KGV2ZW50OiBJQ2hhcnRFdmVudDxJUG9pbnRNb3ZlPikge1xuICAgIHRoaXMucG9pbnRNb3ZlJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0Q2hhcnRDbGljayhldmVudDogSUNoYXJ0RXZlbnQ8QmFzZVBvaW50Pikge1xuICAgIHRoaXMuY2hhcnRDbGljayQubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgZW1pdENoYXJ0Q29udGV4dE1lbnUoZXZlbnQ6IElDaGFydEV2ZW50PEJhc2VQb2ludD4pIHtcbiAgICB0aGlzLmNoYXJ0Q29udGV4dE1lbnUkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0cyhkYXRhOiBbSUNoYXJ0Q29uZmlnLCBzdHJpbmddKTogSUNoYXJ0Q29uZmlnIHtcbiAgICBsZXQgW2NvbmZpZywgaWRdID0gZGF0YTtcblxuICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSAoZGVmYXVsdENvbmZpZykgPT4ge1xuICAgICAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDb25maWcsIHNvdXJjZSk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBjb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2hhcnRDb25maWcoKSwgY29uZmlnKTtcbiAgICBjb25maWcuaWQgPSBpZDtcblxuICAgIGNvbmZpZy54QXhpcyA9IGNvbmZpZy54QXhpcy5tYXAoZGVmYXVsdENvbmZpZyhkZWZhdWx0QXhpc0NvbmZpZykpO1xuICAgIGNvbmZpZy55QXhpcyA9IGNvbmZpZy55QXhpcy5tYXAoZGVmYXVsdENvbmZpZyhkZWZhdWx0QXhpc0NvbmZpZykpO1xuICAgIGNvbmZpZy5zZXJpZXMgPSBjb25maWcuc2VyaWVzLm1hcChkZWZhdWx0Q29uZmlnKGRlZmF1bHRTZXJpZXNDb25maWcoKSkpO1xuXG4gICAgY29uZmlnLnNlcmllcyA9IGNvbmZpZy5zZXJpZXMubWFwKChfLCBpbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uXyxcbiAgICAgICAgZGF0YTogXy5kYXRhID8/IFtdLFxuICAgICAgICBpZDogXy5pZCA/PyBpbmRleCxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgXG4gICAgY29uc3Qgb3Bwb3NpdGVZQ291bnQgPSBjb25maWcueUF4aXM/LmZpbHRlcigoXykgPT4gXy5vcHBvc2l0ZSk7XG4gICAgY29uc3Qgb3Bwb3NpdGVYQ291bnQgPSBjb25maWcueEF4aXM/LmZpbHRlcigoXykgPT4gXy5vcHBvc2l0ZSk7XG5cbiAgICBjb25zdCBub25PcHBvc2l0ZVlDb3VudCA9IGNvbmZpZy55QXhpcz8uZmlsdGVyKChfKSA9PiAhXy5vcHBvc2l0ZSk7XG4gICAgY29uc3Qgbm9uT3Bwb3NpdGVYQ291bnQgPSBjb25maWcueEF4aXM/LmZpbHRlcigoXykgPT4gIV8ub3Bwb3NpdGUpO1xuXG4gICAgaWYgKG5vbk9wcG9zaXRlWENvdW50Py5sZW5ndGggPiAxKSB7XG4gICAgICBjb25maWcuYm91bmRzLmJvdHRvbSA9IDA7XG4gICAgfVxuXG4gICAgaWYgKG9wcG9zaXRlWENvdW50Py5sZW5ndGggPiAxKSB7XG4gICAgICBjb25maWcuYm91bmRzLnRvcCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKG5vbk9wcG9zaXRlWUNvdW50Py5sZW5ndGggPiAxKSB7XG4gICAgICBjb25maWcuYm91bmRzLmxlZnQgPSAwO1xuICAgIH1cblxuICAgIGlmIChvcHBvc2l0ZVlDb3VudD8ubGVuZ3RoID4gMSkge1xuICAgICAgY29uZmlnLmJvdW5kcy5yaWdodCA9IDA7XG4gICAgfVxuXG4gICAgY29uZmlnLnRvb2x0aXAgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBkZWZhdWx0Q2hhcnRDb25maWcoKS50b29sdGlwLFxuICAgICAgY29uZmlnLnRvb2x0aXBcbiAgICApO1xuXG4gICAgY29uZmlnLnpvb20gPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBkZWZhdWx0Q2hhcnRDb25maWcoKS56b29tLFxuICAgICAgY29uZmlnLnpvb21cbiAgICApO1xuXG4gICAgY29uZmlnLnpvb20uc3luY0NoYW5uZWwgPSBjb25maWcuem9vbT8uc3luY0NoYW5uZWwgPz8gaWQ7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQcmVwYXJhdGlvbkRhdGEoY29uZmlnOiBJQ2hhcnRDb25maWcpOiBJQ2hhcnRDb25maWcge1xuICAgIGlmIChjb25maWcuaW52ZXJ0ZWQpIHtcbiAgICAgIGNvbnN0IHhBeGVzID0gWy4uLmNvbmZpZy54QXhpc107XG4gICAgICBjb25zdCB5QXhlcyA9IFsuLi5jb25maWcueUF4aXNdO1xuXG4gICAgICBjb25maWcueEF4aXMgPSB5QXhlcztcbiAgICAgIGNvbmZpZy55QXhpcyA9IHhBeGVzO1xuXG4gICAgICBjb25maWcuc2VyaWVzID0gY29uZmlnLnNlcmllcz8ubWFwKChzZXJpZSkgPT4ge1xuICAgICAgICBjb25zdCB4ID0gc2VyaWUueEF4aXNJbmRleDtcbiAgICAgICAgY29uc3QgeSA9IHNlcmllLnlBeGlzSW5kZXg7XG4gICAgICAgIHNlcmllLnhBeGlzSW5kZXggPSB5O1xuICAgICAgICBzZXJpZS55QXhpc0luZGV4ID0geDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zZXJpZSxcbiAgICAgICAgICBkYXRhOiBzZXJpZT8uZGF0YT8ubWFwKChwb2ludCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4ucG9pbnQsXG4gICAgICAgICAgICAgIHg6IHBvaW50Py55LFxuICAgICAgICAgICAgICB5OiBwb2ludD8ueCxcbiAgICAgICAgICAgICAgeDE6IHBvaW50Py55MSxcbiAgICAgICAgICAgICAgeTE6IHBvaW50Py54MSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnPy5icnVzaD8uZW5hYmxlKSB7XG4gICAgICBjb25maWcueUF4aXMgPSBjb25maWcueUF4aXMubWFwKChfKSA9PiAoey4uLl8sIHpvb206IGZhbHNlfSkpO1xuICAgICAgY29uZmlnLnhBeGlzID0gY29uZmlnLnhBeGlzLm1hcCgoXykgPT4gKHsuLi5fLCB6b29tOiBmYWxzZX0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG4iXX0=
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, shareReplay, } from 'rxjs';
|
|
3
|
+
import * as d3 from "d3";
|
|
3
4
|
import { zoomIdentity } from "d3";
|
|
4
5
|
import { AxisOrientation } from "../model/enum/axis-orientation";
|
|
5
6
|
import { ZoomMessage } from "../model/i-broadcast-message";
|
|
7
|
+
import objectHash from 'object-hash';
|
|
6
8
|
import * as i0 from "@angular/core";
|
|
7
9
|
import * as i1 from "./broadcast.service";
|
|
8
10
|
export class ZoomService {
|
|
@@ -10,6 +12,10 @@ export class ZoomService {
|
|
|
10
12
|
this.broadcast = broadcast;
|
|
11
13
|
this.broadcastSubscription = [];
|
|
12
14
|
this.zoomed$ = new BehaviorSubject(null);
|
|
15
|
+
this.axisHashMap = new Map();
|
|
16
|
+
this.scaleHashMap = new Map();
|
|
17
|
+
this.elementHashMap = new Map();
|
|
18
|
+
this.zoomHashMap = new Map();
|
|
13
19
|
this.zoomed = this.zoomed$.asObservable().pipe(shareReplay({
|
|
14
20
|
bufferSize: 1,
|
|
15
21
|
refCount: true
|
|
@@ -18,42 +24,41 @@ export class ZoomService {
|
|
|
18
24
|
fireZoom(zoom) {
|
|
19
25
|
this.zoomed$.next(zoom);
|
|
20
26
|
}
|
|
21
|
-
setElement(e) {
|
|
22
|
-
this.element = e;
|
|
23
|
-
}
|
|
24
|
-
setScale(scale) {
|
|
25
|
-
this.currentScale = scale;
|
|
26
|
-
}
|
|
27
27
|
setBroadcastChannel(channel) {
|
|
28
28
|
this.broadcastChannel = channel;
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
setAxis(axis) {
|
|
34
|
-
this.axis = axis;
|
|
35
|
-
}
|
|
36
|
-
setZoom(from, to) {
|
|
37
|
-
if (!this.zoom) {
|
|
30
|
+
setZoom(from, to, axisIndex = 0, axisOrientation = AxisOrientation.x) {
|
|
31
|
+
const hash = objectHash.sha1({ index: axisIndex, orientation: axisOrientation });
|
|
32
|
+
if (!this.zoomHashMap.has(hash)) {
|
|
38
33
|
return;
|
|
39
34
|
}
|
|
40
|
-
this.
|
|
41
|
-
const
|
|
42
|
-
const
|
|
35
|
+
const currentAxis = this.axisHashMap.get(hash);
|
|
36
|
+
const currentScale = this.scaleHashMap.get(hash)?.copy();
|
|
37
|
+
const currentElement = this.elementHashMap.get(hash);
|
|
38
|
+
const currentZoom = this.zoomHashMap.get(hash);
|
|
39
|
+
if (axisOrientation === AxisOrientation.x) {
|
|
40
|
+
currentScale.domain(currentAxis.options.inverted ? [...currentAxis.extremes].reverse() : currentAxis.extremes);
|
|
41
|
+
}
|
|
42
|
+
if (axisOrientation === AxisOrientation.y) {
|
|
43
|
+
currentScale.domain(currentAxis.options.inverted ? currentAxis.extremes : [...currentAxis.extremes].reverse());
|
|
44
|
+
}
|
|
45
|
+
const min = d3.min(currentAxis.extremes);
|
|
46
|
+
const max = d3.max(currentAxis.extremes);
|
|
47
|
+
const scale = (max - min) / (Math.abs(to - from));
|
|
43
48
|
let transform = zoomIdentity.scale(scale);
|
|
44
|
-
if (
|
|
45
|
-
transform = transform.translate(-
|
|
49
|
+
if (currentAxis.orientation === AxisOrientation.x) {
|
|
50
|
+
transform = transform.translate(-currentScale(from), 0);
|
|
46
51
|
}
|
|
47
|
-
if (
|
|
48
|
-
transform = transform.translate(0, -
|
|
52
|
+
if (currentAxis.orientation === AxisOrientation.y) {
|
|
53
|
+
transform = transform.translate(0, -currentScale(from));
|
|
49
54
|
}
|
|
50
|
-
|
|
55
|
+
currentElement.transition().call(currentZoom.transform, transform, null, {});
|
|
51
56
|
const zoomMessage = new ZoomMessage({
|
|
52
57
|
event: {
|
|
53
58
|
sourceEvent: null,
|
|
54
59
|
transform: transform
|
|
55
60
|
},
|
|
56
|
-
axis:
|
|
61
|
+
axis: currentAxis,
|
|
57
62
|
brushDomain: [from, to],
|
|
58
63
|
chartId: null,
|
|
59
64
|
});
|
|
@@ -62,17 +67,21 @@ export class ZoomService {
|
|
|
62
67
|
message: zoomMessage
|
|
63
68
|
});
|
|
64
69
|
}
|
|
65
|
-
resetZoom() {
|
|
66
|
-
|
|
70
|
+
resetZoom(axisIndex = 0, axisOrientation = AxisOrientation.x) {
|
|
71
|
+
const hash = objectHash.sha1({ index: axisIndex, orientation: axisOrientation });
|
|
72
|
+
if (!this.zoomHashMap.has(hash)) {
|
|
67
73
|
return;
|
|
68
74
|
}
|
|
69
|
-
this.
|
|
75
|
+
const currentElement = this.elementHashMap.get(hash);
|
|
76
|
+
const currentZoom = this.zoomHashMap.get(hash);
|
|
77
|
+
const currentAxis = this.axisHashMap.get(hash);
|
|
78
|
+
currentElement.transition().call(currentZoom.transform, zoomIdentity, null, {});
|
|
70
79
|
const zoomMessage = new ZoomMessage({
|
|
71
80
|
event: {
|
|
72
81
|
sourceEvent: null,
|
|
73
82
|
transform: zoomIdentity
|
|
74
83
|
},
|
|
75
|
-
axis:
|
|
84
|
+
axis: currentAxis,
|
|
76
85
|
brushDomain: null,
|
|
77
86
|
chartId: null,
|
|
78
87
|
});
|
|
@@ -90,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
90
99
|
providedIn: 'root',
|
|
91
100
|
}]
|
|
92
101
|
}], ctorParameters: function () { return [{ type: i1.BroadcastService }]; } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L3NlcnZpY2Uvem9vbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBYyxXQUFXLEdBQWdCLE1BQU0sTUFBTSxDQUFDO0FBSTdFLE9BQU8sRUFBZSxZQUFZLEVBQUMsTUFBTSxJQUFJLENBQUM7QUFDOUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRS9ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBS3pELE1BQU0sT0FBTyxXQUFXO0lBV3RCLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBVi9DLDBCQUFxQixHQUFtQixFQUFFLENBQUM7UUFFbkMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFvQixJQUFJLENBQUMsQ0FBQztRQVM3RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN6RCxVQUFVLEVBQUUsQ0FBQztZQUNiLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQXVCO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBMEM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxPQUFlO1FBQ2pDLElB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QVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgU3Vic2NyaXB0aW9uLH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7SUNoYXJ0RXZlbnR9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XG5pbXBvcnQge1pvb21CZWhhdmlvciwgem9vbUlkZW50aXR5fSBmcm9tIFwiZDNcIjtcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tIFwiLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uXCI7XG5pbXBvcnQge0Jyb2FkY2FzdFNlcnZpY2V9IGZyb20gXCIuL2Jyb2FkY2FzdC5zZXJ2aWNlXCI7XG5pbXBvcnQge1pvb21NZXNzYWdlfSBmcm9tIFwiLi4vbW9kZWwvaS1icm9hZGNhc3QtbWVzc2FnZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgWm9vbVNlcnZpY2Uge1xuICBicm9hZGNhc3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHpvb21lZDogT2JzZXJ2YWJsZTxJQ2hhcnRFdmVudDxBeGlzPj47XG4gIHByaXZhdGUgem9vbWVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNoYXJ0RXZlbnQ8QXhpcz4+KG51bGwpO1xuXG4gIHByaXZhdGUgZWxlbWVudDogZDMuU2VsZWN0aW9uPFNWR0VsZW1lbnQsIGFueSwgYW55LCBhbnk+O1xuICBwcml2YXRlIHpvb206IFpvb21CZWhhdmlvcjxhbnksIGFueT47XG4gIHByaXZhdGUgYXhpczogQXhpcztcbiAgcHJpdmF0ZSBjdXJyZW50U2NhbGU6IGFueTtcbiAgcHJpdmF0ZSBicm9hZGNhc3RDaGFubmVsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBicm9hZGNhc3Q6IEJyb2FkY2FzdFNlcnZpY2UpIHtcbiAgICB0aGlzLnpvb21lZCA9IHRoaXMuem9vbWVkJC5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KHtcbiAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICByZWZDb3VudDogdHJ1ZVxuICAgIH0pKTtcbiAgfVxuXG4gIGZpcmVab29tKHpvb206IElDaGFydEV2ZW50PEF4aXM+KSB7XG4gICAgdGhpcy56b29tZWQkLm5leHQoem9vbSk7XG4gIH1cblxuICBzZXRFbGVtZW50KGU6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55Pikge1xuICAgIHRoaXMuZWxlbWVudCA9IGU7XG4gIH1cblxuICBzZXRTY2FsZShzY2FsZTogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50U2NhbGUgPSBzY2FsZTtcbiAgfVxuXG5cbiAgc2V0QnJvYWRjYXN0Q2hhbm5lbChjaGFubmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJyb2FkY2FzdENoYW5uZWwgPSBjaGFubmVsO1xuICB9XG5cbiAgc2V0Wm9vbUJlaGF2aW9yKHpvb206IFpvb21CZWhhdmlvcjxhbnksIGFueT4pIHtcbiAgICB0aGlzLnpvb20gPSB6b29tO1xuICB9XG5cbiAgc2V0QXhpcyhheGlzOiBBeGlzKSB7XG4gICAgdGhpcy5heGlzID0gYXhpcztcbiAgfVxuXG4gIHNldFpvb20oZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG5cbiAgICBpZighdGhpcy56b29tKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTY2FsZS5kb21haW4odGhpcy5heGlzLmV4dHJlbWVzKTtcbiAgICBjb25zdCBkb21haW4gPSB0aGlzLmN1cnJlbnRTY2FsZS5kb21haW4oKTtcbiAgICBjb25zdCBzY2FsZSA9IChkb21haW5bMV0gLSBkb21haW5bMF0pICAvICh0byAtIGZyb20pO1xuICAgIGxldCB0cmFuc2Zvcm0gPSB6b29tSWRlbnRpdHkuc2NhbGUoc2NhbGUpO1xuXG4gICAgaWYodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgtdGhpcy5jdXJyZW50U2NhbGUoZnJvbSksIDApO1xuICAgIH1cblxuICAgIGlmKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRoaXMuY3VycmVudFNjYWxlKGZyb20pKTtcbiAgICB9XG5cbiAgICB0aGlzLmVsZW1lbnQudHJhbnNpdGlvbigpLmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtLCBudWxsLCB7fSk7XG5cbiAgICBjb25zdCB6b29tTWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICBldmVudDoge1xuICAgICAgICBzb3VyY2VFdmVudDogbnVsbCxcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm1cbiAgICAgIH0sXG4gICAgICBheGlzOiB0aGlzLmF4aXMsXG4gICAgICBicnVzaERvbWFpbjogW2Zyb20sIHRvXSxcbiAgICAgIGNoYXJ0SWQ6IG51bGwsXG5cbiAgICB9KVxuXG4gICAgdGhpcy5icm9hZGNhc3QuYnJvYWRjYXN0Wm9vbSh7XG4gICAgICBjaGFubmVsOiB0aGlzLmJyb2FkY2FzdENoYW5uZWwsXG4gICAgICBtZXNzYWdlOiB6b29tTWVzc2FnZVxuICAgIH0pXG5cbiAgfVxuXG4gIHJlc2V0Wm9vbSgpIHtcbiAgICBpZighdGhpcy56b29tKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmVsZW1lbnQudHJhbnNpdGlvbigpLmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgem9vbUlkZW50aXR5LCBudWxsLCB7fSk7XG5cbiAgICBjb25zdCB6b29tTWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICBldmVudDoge1xuICAgICAgICBzb3VyY2VFdmVudDogbnVsbCxcbiAgICAgICAgdHJhbnNmb3JtOiB6b29tSWRlbnRpdHlcbiAgICAgIH0sXG4gICAgICBheGlzOiB0aGlzLmF4aXMsXG4gICAgICBicnVzaERvbWFpbjogbnVsbCxcbiAgICAgIGNoYXJ0SWQ6IG51bGwsXG5cbiAgICB9KVxuXG4gICAgdGhpcy5icm9hZGNhc3QuYnJvYWRjYXN0Wm9vbSh7XG4gICAgICBjaGFubmVsOiB0aGlzLmJyb2FkY2FzdENoYW5uZWwsXG4gICAgICBtZXNzYWdlOiB6b29tTWVzc2FnZVxuICAgIH0pXG4gIH1cblxufVxuIl19
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L3NlcnZpY2Uvem9vbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBYyxXQUFXLEdBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRzdFLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBZSxZQUFZLEVBQUMsTUFBTSxJQUFJLENBQUM7QUFDOUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRS9ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7OztBQUtyQyxNQUFNLE9BQU8sV0FBVztJQVl0QixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVgvQywwQkFBcUIsR0FBbUIsRUFBRSxDQUFDO1FBRW5DLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBb0IsSUFBSSxDQUFDLENBQUM7UUFJL0QsZ0JBQVcsR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFHdEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDekQsVUFBVSxFQUFFLENBQUM7WUFDYixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUF1QjtRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBZTtRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLEVBQVUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLGVBQWUsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUVsRixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFJL0MsSUFBSSxlQUFlLEtBQUssZUFBZSxDQUFDLENBQUMsRUFBRTtZQUN6QyxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7U0FDL0c7UUFFRCxJQUFJLGVBQWUsS0FBSyxlQUFlLENBQUMsQ0FBQyxFQUFFO1lBQ3pDLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtTQUMvRztRQUVELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQVMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQVMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBR2pELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVsRCxJQUFJLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLElBQUksV0FBVyxDQUFDLFdBQVcsS0FBSyxlQUFlLENBQUMsQ0FBQyxFQUFFO1lBQ2pELFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBRUQsSUFBSSxXQUFXLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUU7WUFDakQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekQ7UUFHRCxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU3RSxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUNsQyxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFNBQVMsRUFBRSxTQUFTO2FBQ3JCO1lBQ0QsSUFBSSxFQUFFLFdBQVc7WUFDakIsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQzlCLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxlQUFlLEdBQUcsZUFBZSxDQUFDLENBQUM7UUFFMUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9DLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhGLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQ2xDLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsSUFBSTtnQkFDakIsU0FBUyxFQUFFLFlBQVk7YUFDeEI7WUFDRCxJQUFJLEVBQUUsV0FBVztZQUNqQixXQUFXLEVBQUUsSUFBSTtZQUNqQixPQUFPLEVBQUUsSUFBSTtTQUVkLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQzlCLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUMsQ0FBQTtJQUNKLENBQUM7O3dHQW5IVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgU3Vic2NyaXB0aW9uLH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7SUNoYXJ0RXZlbnR9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSBcImQzXCI7XG5pbXBvcnQge1pvb21CZWhhdmlvciwgem9vbUlkZW50aXR5fSBmcm9tIFwiZDNcIjtcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tIFwiLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uXCI7XG5pbXBvcnQge0Jyb2FkY2FzdFNlcnZpY2V9IGZyb20gXCIuL2Jyb2FkY2FzdC5zZXJ2aWNlXCI7XG5pbXBvcnQge1pvb21NZXNzYWdlfSBmcm9tIFwiLi4vbW9kZWwvaS1icm9hZGNhc3QtbWVzc2FnZVwiO1xuaW1wb3J0IG9iamVjdEhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgWm9vbVNlcnZpY2Uge1xuICBicm9hZGNhc3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHpvb21lZDogT2JzZXJ2YWJsZTxJQ2hhcnRFdmVudDxBeGlzPj47XG4gIHByaXZhdGUgem9vbWVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNoYXJ0RXZlbnQ8QXhpcz4+KG51bGwpO1xuXG4gIHByaXZhdGUgYnJvYWRjYXN0Q2hhbm5lbDogc3RyaW5nO1xuXG4gIGF4aXNIYXNoTWFwID0gbmV3IE1hcDxzdHJpbmcsIEF4aXM+KCk7XG4gIHNjYWxlSGFzaE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGVsZW1lbnRIYXNoTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgem9vbUhhc2hNYXAgPSBuZXcgTWFwPHN0cmluZywgWm9vbUJlaGF2aW9yPGFueSwgYW55Pj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyb2FkY2FzdDogQnJvYWRjYXN0U2VydmljZSkge1xuICAgIHRoaXMuem9vbWVkID0gdGhpcy56b29tZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoe1xuICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgIHJlZkNvdW50OiB0cnVlXG4gICAgfSkpO1xuICB9XG5cbiAgZmlyZVpvb20oem9vbTogSUNoYXJ0RXZlbnQ8QXhpcz4pIHtcbiAgICB0aGlzLnpvb21lZCQubmV4dCh6b29tKTtcbiAgfVxuXG4gIHNldEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgdGhpcy5icm9hZGNhc3RDaGFubmVsID0gY2hhbm5lbDtcbiAgfVxuXG4gIHNldFpvb20oZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCBheGlzSW5kZXggPSAwLCBheGlzT3JpZW50YXRpb24gPSBBeGlzT3JpZW50YXRpb24ueCkge1xuXG4gICAgY29uc3QgaGFzaCA9IG9iamVjdEhhc2guc2hhMSh7aW5kZXg6IGF4aXNJbmRleCwgb3JpZW50YXRpb246IGF4aXNPcmllbnRhdGlvbn0pO1xuXG4gICAgaWYgKCF0aGlzLnpvb21IYXNoTWFwLmhhcyhoYXNoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRBeGlzID0gdGhpcy5heGlzSGFzaE1hcC5nZXQoaGFzaCk7XG4gICAgY29uc3QgY3VycmVudFNjYWxlID0gdGhpcy5zY2FsZUhhc2hNYXAuZ2V0KGhhc2gpPy5jb3B5KCk7XG4gICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRIYXNoTWFwLmdldChoYXNoKTtcbiAgICBjb25zdCBjdXJyZW50Wm9vbSA9IHRoaXMuem9vbUhhc2hNYXAuZ2V0KGhhc2gpO1xuXG5cblxuICAgIGlmIChheGlzT3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICBjdXJyZW50U2NhbGUuZG9tYWluKGN1cnJlbnRBeGlzLm9wdGlvbnMuaW52ZXJ0ZWQgPyBbLi4uY3VycmVudEF4aXMuZXh0cmVtZXNdLnJldmVyc2UoKSA6IGN1cnJlbnRBeGlzLmV4dHJlbWVzKVxuICAgIH1cblxuICAgIGlmIChheGlzT3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICBjdXJyZW50U2NhbGUuZG9tYWluKGN1cnJlbnRBeGlzLm9wdGlvbnMuaW52ZXJ0ZWQgPyBjdXJyZW50QXhpcy5leHRyZW1lcyA6IFsuLi5jdXJyZW50QXhpcy5leHRyZW1lc10ucmV2ZXJzZSgpKVxuICAgIH1cblxuICAgIGNvbnN0IG1pbiA9IGQzLm1pbjxudW1iZXI+KGN1cnJlbnRBeGlzLmV4dHJlbWVzKTtcbiAgICBjb25zdCBtYXggPSBkMy5tYXg8bnVtYmVyPihjdXJyZW50QXhpcy5leHRyZW1lcyk7XG5cblxuICAgIGNvbnN0IHNjYWxlID0gKG1heCAtIG1pbikgLyAoTWF0aC5hYnModG8gLSBmcm9tKSk7XG5cbiAgICBsZXQgdHJhbnNmb3JtID0gem9vbUlkZW50aXR5LnNjYWxlKHNjYWxlKTtcblxuICAgIGlmIChjdXJyZW50QXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoLWN1cnJlbnRTY2FsZShmcm9tKSwgMCk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRBeGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtY3VycmVudFNjYWxlKGZyb20pKTtcbiAgICB9XG5cblxuICAgIGN1cnJlbnRFbGVtZW50LnRyYW5zaXRpb24oKS5jYWxsKGN1cnJlbnRab29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtLCBudWxsLCB7fSk7XG5cbiAgICBjb25zdCB6b29tTWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICBldmVudDoge1xuICAgICAgICBzb3VyY2VFdmVudDogbnVsbCxcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm1cbiAgICAgIH0sXG4gICAgICBheGlzOiBjdXJyZW50QXhpcyxcbiAgICAgIGJydXNoRG9tYWluOiBbZnJvbSwgdG9dLFxuICAgICAgY2hhcnRJZDogbnVsbCxcbiAgICB9KVxuXG4gICAgdGhpcy5icm9hZGNhc3QuYnJvYWRjYXN0Wm9vbSh7XG4gICAgICBjaGFubmVsOiB0aGlzLmJyb2FkY2FzdENoYW5uZWwsXG4gICAgICBtZXNzYWdlOiB6b29tTWVzc2FnZVxuICAgIH0pXG5cbiAgfVxuXG4gIHJlc2V0Wm9vbShheGlzSW5kZXggPSAwLCBheGlzT3JpZW50YXRpb24gPSBBeGlzT3JpZW50YXRpb24ueCkge1xuXG4gICAgY29uc3QgaGFzaCA9IG9iamVjdEhhc2guc2hhMSh7aW5kZXg6IGF4aXNJbmRleCwgb3JpZW50YXRpb246IGF4aXNPcmllbnRhdGlvbn0pO1xuXG4gICAgaWYgKCF0aGlzLnpvb21IYXNoTWFwLmhhcyhoYXNoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50SGFzaE1hcC5nZXQoaGFzaCk7XG4gICAgY29uc3QgY3VycmVudFpvb20gPSB0aGlzLnpvb21IYXNoTWFwLmdldChoYXNoKTtcbiAgICBjb25zdCBjdXJyZW50QXhpcyA9IHRoaXMuYXhpc0hhc2hNYXAuZ2V0KGhhc2gpO1xuXG4gICAgY3VycmVudEVsZW1lbnQudHJhbnNpdGlvbigpLmNhbGwoY3VycmVudFpvb20udHJhbnNmb3JtLCB6b29tSWRlbnRpdHksIG51bGwsIHt9KTtcblxuICAgIGNvbnN0IHpvb21NZXNzYWdlID0gbmV3IFpvb21NZXNzYWdlKHtcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHNvdXJjZUV2ZW50OiBudWxsLFxuICAgICAgICB0cmFuc2Zvcm06IHpvb21JZGVudGl0eVxuICAgICAgfSxcbiAgICAgIGF4aXM6IGN1cnJlbnRBeGlzLFxuICAgICAgYnJ1c2hEb21haW46IG51bGwsXG4gICAgICBjaGFydElkOiBudWxsLFxuXG4gICAgfSlcblxuICAgIHRoaXMuYnJvYWRjYXN0LmJyb2FkY2FzdFpvb20oe1xuICAgICAgY2hhbm5lbDogdGhpcy5icm9hZGNhc3RDaGFubmVsLFxuICAgICAgbWVzc2FnZTogem9vbU1lc3NhZ2VcbiAgICB9KVxuICB9XG5cbn1cbiJdfQ==
|