@loxia/mst-viewer 8.1.3-202511131933 → 8.1.3-202511131950
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/esm2022/lib/components/ritdelen-lijst/ritdelen-lijst.component.mjs +9 -4
- package/esm2022/lib/model/ritdeel.mjs +1 -1
- package/esm2022/lib/services/rit-lezer.service.mjs +4 -4
- package/esm2022/lib/state/effect/laad-signaleringsbeelden.effect.mjs +1 -1
- package/fesm2022/loxia-mst-viewer.mjs +10 -6
- package/fesm2022/loxia-mst-viewer.mjs.map +1 -1
- package/lib/components/ritdelen-lijst/ritdelen-lijst.component.d.ts +1 -1
- package/lib/model/ritdeel.d.ts +1 -1
- package/lib/state/effect/laad-signaleringsbeelden.effect.d.ts +7 -7
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@ import { OngeplandeActie } from '../../model/ongeplande-actie';
|
|
|
6
6
|
import * as MstActions from '../../state/actions/actions';
|
|
7
7
|
import * as RitdelenActions from '../../state/actions/ritdelen.actions';
|
|
8
8
|
import { ActieHelper } from '../../util/actie-helper';
|
|
9
|
+
import { ArrayMultimap } from '../../util/multi-map';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "@ngrx/store";
|
|
11
12
|
import * as i2 from "../../services/signalerings-beeld-manager.service";
|
|
@@ -22,6 +23,8 @@ export class RitdelenLijstComponent {
|
|
|
22
23
|
this.selectedRitdeelOngeplandeActies = [];
|
|
23
24
|
this.disableActieKnoppenVanRitdeel = true;
|
|
24
25
|
this.editable = false;
|
|
26
|
+
this.ongeplandeActiesMap = new ArrayMultimap();
|
|
27
|
+
this.geplandeActies = new ArrayMultimap();
|
|
25
28
|
this.NG_ACTIE_PREFIX = '* ';
|
|
26
29
|
this.subscriptions = [];
|
|
27
30
|
this.subscriptions.push(store.select('ritDelen').subscribe((ritdelen) => {
|
|
@@ -71,12 +74,14 @@ export class RitdelenLijstComponent {
|
|
|
71
74
|
this.store.dispatch(RitdelenActions.deleteRitdeel(ritdeel));
|
|
72
75
|
}
|
|
73
76
|
deleteActiesUitRit() {
|
|
74
|
-
this.selectedRitdeel
|
|
77
|
+
this.selectedRitdeel?.acties.slice().forEach(actie => {
|
|
75
78
|
this.deleteActieUitRit(actie);
|
|
76
79
|
});
|
|
77
80
|
}
|
|
78
81
|
deleteActieUitRit(actie) {
|
|
79
|
-
|
|
82
|
+
if (!this.selectedRitdeel)
|
|
83
|
+
return;
|
|
84
|
+
const acties = this.selectedRitdeel.acties ?? [];
|
|
80
85
|
const idx = acties.indexOf(actie);
|
|
81
86
|
if (idx >= 0) {
|
|
82
87
|
this.verhuisActieNaarOngepland(actie);
|
|
@@ -205,7 +210,7 @@ export class RitdelenLijstComponent {
|
|
|
205
210
|
}
|
|
206
211
|
bepaalPrefixVoorActieOmschrijving(actie) {
|
|
207
212
|
const noPrefix = '';
|
|
208
|
-
if (this.selectedRitdeel
|
|
213
|
+
if (this.selectedRitdeel?.acties.includes(actie)) {
|
|
209
214
|
// Afwijkende naam bij niet gevisualiseerde actie in rit
|
|
210
215
|
const puics = this.geplandeActies.get(actie);
|
|
211
216
|
return puics.length > 0 ? noPrefix : this.NG_ACTIE_PREFIX;
|
|
@@ -269,4 +274,4 @@ class RitdeelViewModel {
|
|
|
269
274
|
this.treinNummer = treinNummer;
|
|
270
275
|
}
|
|
271
276
|
}
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0ZGVsZW4tbGlqc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvcml0ZGVsZW4tbGlqc3Qvcml0ZGVsZW4tbGlqc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvcml0ZGVsZW4tbGlqc3Qvcml0ZGVsZW4tbGlqc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQVMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSTdELE9BQU8sS0FBSyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxLQUFLLGVBQWUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBU3BELE1BQU0sT0FBTyxzQkFBc0I7SUFrQi9CLFlBQTZCLEtBQTRCLEVBQW1CLFVBQTJDO1FBQTFGLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQW1CLGVBQVUsR0FBVixVQUFVLENBQWlDO1FBakI5Ryx1QkFBa0IsR0FBWSxFQUFFLENBQUM7UUFFaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbEQs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LENBQVE7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFFaEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RvbWVpbiwgSnNKYXZhVXRpbH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCB7U3RvcmV9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge09uZ2VwbGFuZGVBY3RpZX0gZnJvbSAnLi4vLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQge1JpdGRlZWx9IGZyb20gJy4uLy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHtBY3RpZX0gZnJvbSAnLi4vLi4vb3B0aW1vJztcbmltcG9ydCB7U2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsZXJpbmdzLWJlZWxkLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBNc3RBY3Rpb25zIGZyb20gJy4uLy4uL3N0YXRlL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBSaXRkZWxlbkFjdGlvbnMgZnJvbSAnLi4vLi4vc3RhdGUvYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcbmltcG9ydCB7TXN0RWRpdG9yU3RhdGV9IGZyb20gJy4uLy4uL3N0YXRlL21zdC1lZGl0b3Itc3RhdGUnO1xuaW1wb3J0IHtBY3RpZUhlbHBlcn0gZnJvbSAnLi4vLi4vdXRpbC9hY3RpZS1oZWxwZXInO1xuaW1wb3J0IHtBcnJheU11bHRpbWFwfSBmcm9tICcuLi8uLi91dGlsL211bHRpLW1hcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncml0ZGVsZW4tbGlqc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yaXRkZWxlbi1saWpzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcml0ZGVsZW4tbGlqc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcbn0pXG5leHBvcnQgY2xhc3MgUml0ZGVsZW5MaWpzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgbmlldEdlcGxhbmRlQWN0aWVzOiBBY3RpZVtdID0gW107XG5cbiAgICBAT3V0cHV0KCkgZm9jdXNFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxSaXRkZWVsPigpO1xuICAgIEBPdXRwdXQoKSBrZXVyQWxsZUFjdGllc0dvZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICByaXRkZWVsVmlld01vZGVsczogUml0ZGVlbFZpZXdNb2RlbFtdID0gW107XG4gICAgc2VsZWN0ZWRSaXRkZWVsOiBSaXRkZWVsIHwgdW5kZWZpbmVkO1xuICAgIHNlbGVjdGVkUml0ZGVlbEFjdGllczogQWN0aWVbXSA9IFtdO1xuICAgIHNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXM6IE9uZ2VwbGFuZGVBY3RpZVtdID0gW107XG4gICAgZGlzYWJsZUFjdGllS25vcHBlblZhblJpdGRlZWwgPSB0cnVlO1xuICAgIGVkaXRhYmxlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIG9uZ2VwbGFuZGVBY3RpZXNNYXA6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBPbmdlcGxhbmRlQWN0aWU+O1xuICAgIHByaXZhdGUgZ2VwbGFuZGVBY3RpZXM6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz47XG4gICAgcHJpdmF0ZSByZWFkb25seSBOR19BQ1RJRV9QUkVGSVggPSAnKiAnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPiwgcHJpdmF0ZSByZWFkb25seSBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN0b3JlLnNlbGVjdCgncml0RGVsZW4nKS5zdWJzY3JpYmUoKHJpdGRlbGVuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJpdGRlZWxWaWV3TW9kZWxzID0gcml0ZGVsZW4/Lm1hcChyaXRkZWVsID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJpdGRlZWxWaWV3TW9kZWwoXG4gICAgICAgICAgICAgICAgICAgIHJpdGRlZWwsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSaXRkZWVsQ2xhc3Mocml0ZGVlbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSaXRkZWVsWmljaHRiYWFyKHJpdGRlZWwpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRpdGxlKHJpdGRlZWwpLFxuICAgICAgICAgICAgICAgICAgICByaXRkZWVsLmlzTmlldEJlc2NoaWtiYWFyKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSaXRkZWVsTmlldXcocml0ZGVlbCksXG4gICAgICAgICAgICAgICAgICAgIHJpdGRlZWwuZ2V0VmFuUHJsU3Bvb3IoKSxcbiAgICAgICAgICAgICAgICAgICAgcml0ZGVlbC5nZXROYWFyUHJsU3Bvb3JUZXh0KCksXG4gICAgICAgICAgICAgICAgICAgIHJpdGRlZWwuZ2V0RHdhbmdOdW1tZXIoKSxcbiAgICAgICAgICAgICAgICAgICAgcml0ZGVlbC5nZXRQcGxnU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VHJlaW5OdW1tZXIocml0ZGVlbCkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdG9yZS5zZWxlY3QoJ29uZ2VwbGFuZGVBY3RpZXMnKS5zdWJzY3JpYmUoYWN0aWVzID0+IHRoaXMub25nZXBsYW5kZUFjdGllc01hcCA9IGFjdGllcykpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdG9yZS5zZWxlY3QoJ2dlcGxhbmRlQWN0aWVzJykuc3Vic2NyaWJlKGFjdGllcyA9PiB0aGlzLmdlcGxhbmRlQWN0aWVzID0gYWN0aWVzKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN0b3JlLnNlbGVjdCgnZWRpdGFibGUnKS5zdWJzY3JpYmUoZWRpdGFibGUgPT4gdGhpcy5lZGl0YWJsZSA9IGVkaXRhYmxlKSk7XG5cbiAgICAgICAgLy8gbGlzdGVuIHRvIGNoYW5nZXMgZnJvbSBzdmctdmlld2VyLWNvbXBvbmVudCwgc2F2aW5nIHJpdGRlZWwgaW4gc3RvcmUgaXNuJ3QgY29vbCBiZWNhdXNlIG9mIGFsbCB0aGUgZ3d0IGluIGl0LiBUaGlzIGlzXG4gICAgICAgIC8vIGp1c3QgdG8gbWFrZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYW5ndWxhciBsaWZlY3ljbGUuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN0b3JlLnNlbGVjdCgnc2VsZWN0ZWRSaXRkZWVsSWQnKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKGlkID0+ICFpZCkpLnN1YnNjcmliZSh0aGlzLmRlc2VsZWN0Uml0ZGVlbFxuICAgICAgICApKTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ3JpdERlbGVuJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnb25nZXBsYW5kZUFjdGllcycpXVxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZU9uZ2VwbGFuZGVBY3RpZXNMaXN0KCkpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIGlzUml0ZGVlbFppY2h0YmFhcihyaXRkZWVsOiBSaXRkZWVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiByaXRkZWVsLmlzWmljaHRiYWFyKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlUml0ZGVlbFppY2h0YmFhcmhlaWQocml0ZGVlbDogUml0ZGVlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2VsZWN0Uml0ZGVlbCgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJpdGRlbGVuQWN0aW9ucy50b2dnbGVSaXRkZWVsWmljaHRiYWFyKHJpdGRlZWwpKTtcbiAgICB9XG5cbiAgICB0b2dnbGVaaWNodGJhYXJoZWlkQWxsZVJpdGRlbGVuKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXNlbGVjdFJpdGRlZWwoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMuc2V0WmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbihjaGVja2VkKSk7XG4gICAgfVxuXG4gICAgaXNSaXRkZWVsTmlldXcocml0ZGVlbDogUml0ZGVlbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiByaXRkZWVsLmlzTmlldXcoKSA/ICcrJyA6ICcnO1xuICAgIH1cblxuICAgIGdldFRpdGxlKHJpdGRlZWw6IFJpdGRlZWwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcml0ZGVlbC5nZXRCZXdlZ2luZ0lkKCk7XG4gICAgfVxuXG4gICAgZ2V0VHJlaW5OdW1tZXIocml0ZGVlbDogUml0ZGVlbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiByaXRkZWVsLmdldFRyZWluTnVtbWVyKCk7XG4gICAgfVxuXG4gICAgZGVsZXRlUml0ZGVlbChyaXRkZWVsOiBSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIHJpdGRlZWwuYWN0aWVzLmZvckVhY2goYWN0aWUgPT4ge1xuICAgICAgICAgICAgdGhpcy52ZXJodWlzQWN0aWVOYWFyT25nZXBsYW5kKGFjdGllKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RSaXRkZWVsKCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUml0ZGVsZW5BY3Rpb25zLmRlbGV0ZVJpdGRlZWwocml0ZGVlbCkpO1xuICAgIH1cblxuICAgIGRlbGV0ZUFjdGllc1VpdFJpdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJpdGRlZWwuYWN0aWVzLnNsaWNlKCkuZm9yRWFjaChhY3RpZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUFjdGllVWl0Uml0KGFjdGllKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlQWN0aWVVaXRSaXQoYWN0aWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aWVzID0gdGhpcy5zZWxlY3RlZFJpdGRlZWwuYWN0aWVzO1xuICAgICAgICBjb25zdCBpZHggPSBhY3RpZXMuaW5kZXhPZihhY3RpZSk7XG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy52ZXJodWlzQWN0aWVOYWFyT25nZXBsYW5kKGFjdGllKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUml0ZGVsZW5BY3Rpb25zLmRlbGV0ZVJpdGRlZWxBY3RpZSh0aGlzLnNlbGVjdGVkUml0ZGVlbCwgYWN0aWVzW2lkeF0pKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubmlldEdlcGxhbmRlQWN0aWVzLmluZGV4T2YoYWN0aWUpO1xuICAgICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICB0aGlzLm5pZXRHZXBsYW5kZUFjdGllcy5wdXNoKGFjdGllKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmVyaHVpc0FjdGllTmFhck9uZ2VwbGFuZChhY3RpZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwdWljcyA9IHRoaXMuZ2VwbGFuZGVBY3RpZXMuZ2V0KGFjdGllKTtcblxuICAgICAgICBpZiAocHVpY3MgJiYgcHVpY3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLkFkZE9uZ2VwbGFuZGVBY3RpZShuZXcgT25nZXBsYW5kZUFjdGllKGFjdGllLCBwdWljcykpKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5EZWxldGVHZXBsYW5kZUFjdGllKGFjdGllLCBwdWljcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdm9lZ0FjdGllc1RvZUFhblJpdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aWVzID0gdGhpcy5zZWxlY3RlZFJpdGRlZWxPbmdlcGxhbmRlQWN0aWVzO1xuICAgICAgICBhY3RpZXMuc2xpY2UoKS5mb3JFYWNoKGFjdGllID0+IHtcbiAgICAgICAgICAgIHRoaXMudm9lZ0FjdGllVG9lQWFuUml0KGFjdGllKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdm9lZ0FjdGllVG9lQWFuUml0KG9uZ2VwbGFuZGVBY3RpZTogT25nZXBsYW5kZUFjdGllKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuc2VsZWN0ZWRSaXRkZWVsT25nZXBsYW5kZUFjdGllcy5pbmRleE9mKG9uZ2VwbGFuZGVBY3RpZSk7XG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMuYWRkUml0ZGVlbEFjdGllKHRoaXMuc2VsZWN0ZWRSaXRkZWVsLCB0aGlzLnNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXNbaWR4XS5hY3RpZSkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLkFkZEdlcGxhbmRlQWN0aWUob25nZXBsYW5kZUFjdGllLmFjdGllLCBvbmdlcGxhbmRlQWN0aWUucHVpY3MpKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5EZWxldGVPbmdlcGxhbmRlQWN0aWUob25nZXBsYW5kZUFjdGllKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVPbmdlcGxhbmRlQWN0aWVzTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSaXRkZWVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHJpdFB1aWNzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3Qgcml0ZGVlbFRvcG9FbGVtZW50cyA9IEFjdGllSGVscGVyLmdldEFjdGllVG9wb0VsZW1lbnRzKHRoaXMuc2VsZWN0ZWRSaXRkZWVsLCB0aGlzLnNibVNlcnZpY2UpO1xuICAgICAgICAgICAgY29uc3Qgd2lzc2VsT2JqZWN0ZW46IGRvbWVpbi5XaXNzZWxbXSA9IEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodGhpcy5zZWxlY3RlZFJpdGRlZWwuZ2V0Um91dGUoKS5nZXRXaXNzZWxPYmplY3RlbkluRGVSb3V0ZSgpKTtcblxuICAgICAgICAgICAgcml0ZGVlbFRvcG9FbGVtZW50cy5mb3JFYWNoKGVsZW0gPT4gcml0UHVpY3MucHVzaChlbGVtLmdldFB1aWMoKSkpO1xuICAgICAgICAgICAgY29uc3Qgb25nZXBsYW5kZUFjdGllc0FycmF5ID0gdGhpcy5vbmdlcGxhbmRlQWN0aWVzTWFwLnZhbHVlcygpO1xuICAgICAgICAgICAgb25nZXBsYW5kZUFjdGllc0FycmF5LmZvckVhY2gob2EgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGllcyA9IHRoaXMucml0ZGVlbFZpZXdNb2RlbHMuZmxhdE1hcChyZCA9PiByZC5yaXRkZWVsLmFjdGllcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeUFkZGVkID0gYWN0aWVzLmZpbHRlcihhID0+IGEuaWQgPT09IG9hLmFjdGllLmlkKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGlmICghYWxyZWFkeUFkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvYU1hdGNoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNWU1RBY3RpZShvYS5hY3RpZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9hTWF0Y2ggPSB0aGlzLm1hdGNoZWRXaXNzZWxNZXRLYW50Q29kZUluVlNUQWN0aWUob2EsIHdpc3NlbE9iamVjdGVuKSA/IG9hIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9hLnB1aWNzLmZpbHRlcihwID0+IHJpdFB1aWNzLmluY2x1ZGVzKHApIHx8IHRoaXMuYmV2YXRXaXNzZWxQdWljKHJpdFB1aWNzLCBwKSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2FNYXRjaCA9IG9hO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeUFkZGVkQXNPbmdlcGxhbmQgPSB0aGlzLnNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXMuZmlsdGVyKGEgPT4gYS5hY3RpZS5pZCA9PT0gb2EuYWN0aWUuaWQpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvYU1hdGNoICYmICFhbHJlYWR5QWRkZWRBc09uZ2VwbGFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJpdGRlZWxPbmdlcGxhbmRlQWN0aWVzLnB1c2gob2FNYXRjaCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1hdGNoZWRXaXNzZWxNZXRLYW50Q29kZUluVlNUQWN0aWUob25nZXBsYW5kZUFjdGllOiBPbmdlcGxhbmRlQWN0aWUsIHdpc3NlbHM6IGRvbWVpbi5XaXNzZWxbXSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwcGxnID0gb25nZXBsYW5kZUFjdGllLmFjdGllLnBwbGdOYWFtO1xuICAgICAgICBjb25zdCB3aXNzZWxLYW50Q29kZXMgPSBBY3RpZUhlbHBlci5nZXRXaXNzZWxLYW50Q29kZXMob25nZXBsYW5kZUFjdGllLmFjdGllKTtcblxuICAgICAgICBsZXQgZ2V2b25kZW5XaXNzZWxzID0gMDtcbiAgICAgICAgbGV0IGdldm9uZGVuV2lzc2VsS2FudENvZGVzID0gMDtcblxuICAgICAgICB3aXNzZWxLYW50Q29kZXMuZm9yRWFjaCgod2lzc2VsS2FudENvZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdldm9uZGVuV2lzc2VsID0gdGhpcy5maW5kV2lzc2VsT3BOYWFtRW5QcGxnKHdpc3NlbHMsIHdpc3NlbEthbnRDb2RlLm5hYW0sIHBwbGcpO1xuXG4gICAgICAgICAgICBpZiAoZ2V2b25kZW5XaXNzZWwpIHtcbiAgICAgICAgICAgICAgICBnZXZvbmRlbldpc3NlbHMrKztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXRLYW50Q29kZShnZXZvbmRlbldpc3NlbC5nZXRTdGFuZCgpKSA9PT0gd2lzc2VsS2FudENvZGUua2FudENvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V2b25kZW5XaXNzZWxLYW50Q29kZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBnZXZvbmRlbldpc3NlbHMgPiAwICYmIGdldm9uZGVuV2lzc2VscyA9PT0gZ2V2b25kZW5XaXNzZWxLYW50Q29kZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kV2lzc2VsT3BOYWFtRW5QcGxnKHdpc3NlbHM6IGRvbWVpbi5XaXNzZWxbXSwgd2lzc2VsTmFhbTogc3RyaW5nLCBwcGxnTmFhbTogc3RyaW5nKTogZG9tZWluLldpc3NlbCB7XG4gICAgICAgIHJldHVybiB3aXNzZWxzLmZpbmQod28gPT4gd28uZ2V0TmFtZSgpID09PSB3aXNzZWxOYWFtICYmIHdvLmdldFBQTEcoKSA9PT0gcHBsZ05hYW0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmV2YXRXaXNzZWxQdWljKHJpdFB1aWNzOiBzdHJpbmdbXSwgcCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcml0UHVpY3MuaW5jbHVkZXModGhpcy5zYm1TZXJ2aWNlLmdldFdpc3NlbE1ldFN0b3Jpbmdza2FkZXJQdWljKHApPy5nZXRQdWljKCkpO1xuICAgIH1cblxuICAgIHNlbGVjdGVkUml0ZGVlbENsYXNzKHJpdGRlZWw6IFJpdGRlZWwpOiBzdHJpbmcge1xuICAgICAgICBpZiAocml0ZGVlbC5nZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKCkpIHtcbiAgICAgICAgICAgIGlmIChyaXRkZWVsLmVxdWFscyh0aGlzLnNlbGVjdGVkUml0ZGVlbCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NlbGVjdGVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAndmlzaWJsZS1vdXRzaWRlLXdpbmRvdyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJpdGRlZWwuaXNOaWV0QmVzY2hpa2JhYXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJpdGRlZWwuZXF1YWxzKHRoaXMuc2VsZWN0ZWRSaXRkZWVsKSkge1xuICAgICAgICAgICAgcmV0dXJuICdzZWxlY3RlZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHNlbGVjdFJpdGRlZWwoZXZlbnQ6IE1vdXNlRXZlbnQsIHJpdGRlZWw6IFJpdGRlZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50Py5jdHJsS2V5KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzRW1pdHRlci5lbWl0KHJpdGRlZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJpdGRlZWw/LmVxdWFscyh0aGlzLnNlbGVjdGVkUml0ZGVlbCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc2VsZWN0Uml0ZGVlbCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJpdGRlZWwgPSByaXRkZWVsO1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQWN0aWVLbm9wcGVuVmFuUml0ZGVlbCA9ICF0aGlzLnNlbGVjdGVkUml0ZGVlbC5pc1ppY2h0YmFhcigpO1xuXG4gICAgICAgICAgICBpZiAocml0ZGVlbC5hY3RpZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUml0ZGVlbEFjdGllcyA9IHJpdGRlZWwuYWN0aWVzO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlT25nZXBsYW5kZUFjdGllc0xpc3QoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJpdGRlZWxBY3RpZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFjdGllT21zY2hyaWp2aW5nVGVrc3QoYWN0aWU6IEFjdGllKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5iZXBhYWxQcmVmaXhWb29yQWN0aWVPbXNjaHJpanZpbmcoYWN0aWUpO1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNWU1RBY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1hYWtWc3RBY3RpZU9tc2NocmlqdmluZyhhY3RpZSwgcHJlZml4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJlZml4ICsgYWN0aWUucml0QWN0aWVUeXBlT21zY2hyaWp2aW5nO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFha1ZzdEFjdGllT21zY2hyaWp2aW5nKGFjdGllOiBBY3RpZSwgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7IHByZWZpeCB9JHsgQWN0aWVIZWxwZXIuZ2V0VlNUQWN0aWVPbXNjaHJpanZpbmcoYWN0aWUpIH1gO1xuICAgIH1cblxuICAgIGJlcGFhbFByZWZpeFZvb3JBY3RpZU9tc2NocmlqdmluZyhhY3RpZTogQWN0aWUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBub1ByZWZpeCA9ICcnO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJpdGRlZWwuYWN0aWVzLmluY2x1ZGVzKGFjdGllKSkge1xuICAgICAgICAgICAgLy8gQWZ3aWprZW5kZSBuYWFtIGJpaiBuaWV0IGdldmlzdWFsaXNlZXJkZSBhY3RpZSBpbiByaXRcbiAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gdGhpcy5nZXBsYW5kZUFjdGllcy5nZXQoYWN0aWUpO1xuICAgICAgICAgICAgcmV0dXJuIHB1aWNzLmxlbmd0aCA+IDAgPyBub1ByZWZpeCA6IHRoaXMuTkdfQUNUSUVfUFJFRklYO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub1ByZWZpeDtcbiAgICB9XG5cbiAgICBhY3RpZVZhbkttVGVrc3QoYWN0aWU6IEFjdGllKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllLndpc3NlbE5hYW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGllLnZhbktpbG9tZXRlcmxpbnQgPyBhY3RpZS52YW5LaWxvbWV0ZXJsaW50ICsgJyAnICsgYWN0aWUudmFuS2lsb21ldHJlcmluZyA6ICctJztcbiAgICB9XG5cbiAgICBhY3RpZVRvdEttVGVrc3QoYWN0aWU6IEFjdGllKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLnRvdEtpbG9tZXRlcmxpbnQgPyBhY3RpZS50b3RLaWxvbWV0ZXJsaW50ICsgJyAnICsgYWN0aWUudG90S2lsb21ldHJlcmluZyA6ICctJztcbiAgICB9XG5cbiAgICBkZXNlbGVjdFJpdGRlZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUFjdGllS25vcHBlblZhblJpdGRlZWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJpdGRlZWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSaXRkZWVsQWN0aWVzID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSaXRkZWVsT25nZXBsYW5kZUFjdGllcyA9IFtdO1xuICAgIH1cblxuICAgIGdldFBwbGdTdHJpbmcocml0ZGVlbDogUml0ZGVlbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiByaXRkZWVsLmdldFBwbGdTdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEthbnRDb2RlKHN0YW5kOiBkb21laW4uU3RhbmQpOiBzdHJpbmcge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChzdGFuZCA9PT0gd2luZG93Wydkb21laW4nXS5TdGFuZC5MSU5LUykge1xuICAgICAgICAgICAgcmV0dXJuICdMJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1InO1xuICAgIH1cblxuICAgIHBsYW5BbGxlUml0QWN0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtldXJBbGxlQWN0aWVzR29lZC5lbWl0KCk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RSaXRkZWVsKCk7XG4gICAgfVxufVxuXG5jbGFzcyBSaXRkZWVsVmlld01vZGVsIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgcml0ZGVlbDogUml0ZGVlbCxcbiAgICAgICAgcmVhZG9ubHkgc2VsZWN0ZWRSaXRkZWVsQ2xhc3M6IHN0cmluZyxcbiAgICAgICAgcmVhZG9ubHkgaXNaaWNodGJhYXI6IGJvb2xlYW4sXG4gICAgICAgIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmcsXG4gICAgICAgIHJlYWRvbmx5IGlzTmlldEJlc2NoaWtiYWFyOiBib29sZWFuLFxuICAgICAgICByZWFkb25seSBpc05pZXV3OiBzdHJpbmcsXG4gICAgICAgIHJlYWRvbmx5IHZhblBybFNwb29yOiBzdHJpbmcsXG4gICAgICAgIHJlYWRvbmx5IG5hYXJQcmxTcG9vcjogc3RyaW5nLFxuICAgICAgICByZWFkb25seSBkd2FuZ051bW1lcjogbnVtYmVyLFxuICAgICAgICByZWFkb25seSBwcGxnU3RyaW5nOiBzdHJpbmcsXG4gICAgICAgIHJlYWRvbmx5IHRyZWluTnVtbWVyOiBzdHJpbmdcbiAgICApIHtcbiAgICB9XG59XG4iLCI8ZGl2IGlkPVwicml0ZGVsZW4tbGlqc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1oZWFkZXJcIj5cbiAgICAgICAgPGgzIFthdHRyLmRhdGEtdGVzdC1pZF09XCIndGl0bGUtcml0LWRldGFpbHMnXCI+Uml0ZGV0YWlsczwvaDM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLXBhbmUgdGFibGVGaXhIZWFkXCIgaWQ9XCJ0b3AtcGFuZVwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbYXR0ci5kYXRhLXRlc3QtaWRdPVwiJ3RhYmxlLXJpdC1kZXRhaWxzJ1wiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tib3ggY29sLXZpc2liaWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlWmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbihpbnB1dC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyaXRkZXRhaWxzLXNlbGVjdGVlckFsbGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlNlbGVjdGVlciBhbGxlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cIidjaGVja2JveC1hbGxlLWJld2VnaW5nZW4nXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlZhbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk5hYXI8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5EVzwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlBQTEcocyk8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5UcmVpbm5yLjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByaXRkZWVsVmlld01vZGVsIG9mIHJpdGRlZWxWaWV3TW9kZWxzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyBzZWxlY3RlZFJpdGRlZWxDbGFzcyhyaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpIH19XCIgaWQ9XCJyaXRkZXRhaWxzLXJ7e2l9fVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJyaXRkZXRhaWxzLXJ7e2l9fS16aWNodGJhYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCInY2hlY2tib3gtcicraVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94IGNvbC12aXNpYmlsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyaXRkZWVsVmlld01vZGVsLmlzWmljaHRiYWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwicml0ZGVlbFZpZXdNb2RlbC50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSaXRkZWVsWmljaHRiYWFyaGVpZChyaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cInJpdGRlZWxWaWV3TW9kZWwuaXNOaWV0QmVzY2hpa2JhYXJcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtcnt7aX19LWdld2lqemlnZFwiIChjbGljayk9XCJzZWxlY3RSaXRkZWVsKCRldmVudCwgcml0ZGVlbFZpZXdNb2RlbC5yaXRkZWVsKVwiPnt7cml0ZGVlbFZpZXdNb2RlbC5pc05pZXV3fX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgaWQ9XCJyaXRkZXRhaWxzLXJ7e2l9fS12YW5TcG9vclwiIChjbGljayk9XCJzZWxlY3RSaXRkZWVsKCRldmVudCwgcml0ZGVlbFZpZXdNb2RlbC5yaXRkZWVsKVwiPnt7cml0ZGVlbFZpZXdNb2RlbC52YW5QcmxTcG9vcn19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGlkPVwicml0ZGV0YWlscy1ye3tpfX0tbmFhclNwb29yXCIgKGNsaWNrKT1cInNlbGVjdFJpdGRlZWwoJGV2ZW50LCByaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpXCI+e3tyaXRkZWVsVmlld01vZGVsLm5hYXJQcmxTcG9vcn19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGlkPVwicml0ZGV0YWlscy1ye3tpfX0tZHdhbmdOdW1tZXJcIiAoY2xpY2spPVwic2VsZWN0Uml0ZGVlbCgkZXZlbnQsIHJpdGRlZWxWaWV3TW9kZWwucml0ZGVlbClcIj57e3JpdGRlZWxWaWV3TW9kZWwuZHdhbmdOdW1tZXJ9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtcnt7aX19LXBwbGdzXCIgKGNsaWNrKT1cInNlbGVjdFJpdGRlZWwoJGV2ZW50LCByaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpXCI+e3tyaXRkZWVsVmlld01vZGVsLnBwbGdTdHJpbmd9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtcnt7aX19LXRyZWluTnVtbWVyXCIgKGNsaWNrKT1cInNlbGVjdFJpdGRlZWwoJGV2ZW50LCByaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpXCI+e3tyaXRkZWVsVmlld01vZGVsLnRyZWluTnVtbWVyfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInJpdGRldGFpbHMtcnt7aX19LWRlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxveGlhLWJ0biBsb3hpYS1idG4tZGFuZ2VyIGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSaXRkZWVsKHJpdGRlZWxWaWV3TW9kZWwucml0ZGVlbClcIj5YXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGllLXBhbmVcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFJpdGRlZWwgICYmIChzZWxlY3RlZFJpdGRlZWxBY3RpZXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZFJpdGRlZWxPbmdlcGxhbmRlQWN0aWVzLmxlbmd0aCA+IDApIFwiXG4gICAgICAgICAgICAgICAgIGlkPVwiYWN0aWUtcGFuZVwiPlxuICAgICAgICAgICAgICAgIDxoND5HZXBsYW5kZSBhY3RpZXM8L2g0PlxuICAgICAgICAgICAgICAgIDx0YWJsZSBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+QWN0aWU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+VmFuPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlRvdDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJzZWxlY3RlZFJpdGRlZWxBY3RpZXMubGVuZ3RoPT09MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImJ1bGtTZXRPbmdlcGxhbmRCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cIid1bnBsYW4tYWxsLWFjdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb3hpYS1idG4gbG94aWEtYnRuLWRhbmdlciBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUFjdGllc1VpdFJpdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQWN0aWVLbm9wcGVuVmFuUml0ZGVlbFwiPlhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBhY3RpZSBvZiBzZWxlY3RlZFJpdGRlZWxBY3RpZXM7IGxldCBpID0gaW5kZXhcIiBpZD1cInJpdGRldGFpbHMtYXt7aX19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgaWQ9XCJyaXRkZXRhaWxzLWF7e2l9fS1vbXNjaHJpanZpbmdcIiBjbGFzcz1cIm5vd3JhcFwiPnt7IGFjdGllT21zY2hyaWp2aW5nVGVrc3QoYWN0aWUpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtYXt7aX19LXZhbkttTGludFwiPnt7IGFjdGllVmFuS21UZWtzdChhY3RpZSl9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgaWQ9XCJyaXRkZXRhaWxzLWF7e2l9fS10b3RLbUxpbnRcIj57eyBhY3RpZVRvdEttVGVrc3QoYWN0aWUpfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInJpdGRldGFpbHMtYXt7aX19LWRlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG94aWEtYnRuIGxveGlhLWJ0bi1kYW5nZXIgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBY3RpZVVpdFJpdChhY3RpZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVBY3RpZUtub3BwZW5WYW5SaXRkZWVsXCI+WFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDxoND5PbmdlcGxhbmRlIGFjdGllczwvaDQ+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5BY3RpZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5WYW48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+VG90PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cInNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXMubGVuZ3RoPT09MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImJ1bGtTZXRHZXBsYW5kQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCIncGxhbi1hbGwtYWN0aW9ucydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxveGlhLWJ0biBsb3hpYS1idG4tc3VjY2VzcyBsb3hpYS1idG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZvZWdBY3RpZXNUb2VBYW5SaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUFjdGllS25vcHBlblZhblJpdGRlZWxcIj5eXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb25nZXBsYW5kZUFjdGllIG9mIHNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyaXRkZXRhaWxzLW9he3tpfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtb2F7e2l9fS1vbXNjaHJpanZpbmdcIiBjbGFzcz1cIm5vd3JhcFwiPnt7YWN0aWVPbXNjaHJpanZpbmdUZWtzdChvbmdlcGxhbmRlQWN0aWUuYWN0aWUpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtb2F7e2l9fS12YW5LbUxpbnRcIj57eyBhY3RpZVZhbkttVGVrc3Qob25nZXBsYW5kZUFjdGllLmFjdGllKX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtb2F7e2l9fS10b3RLbUxpbnRcIj57eyBhY3RpZVRvdEttVGVrc3Qob25nZXBsYW5kZUFjdGllLmFjdGllKX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246cmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyaXRkZXRhaWxzLW9he3tpfX0tZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb3hpYS1idG4gbG94aWEtYnRuLXN1Y2Nlc3MgbG94aWEtYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2b2VnQWN0aWVUb2VBYW5SaXQob25nZXBsYW5kZUFjdGllKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUFjdGllS25vcHBlblZhblJpdGRlZWxcIj5eXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrbm9wLXBhbmVcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG94aWEtYnRuIGxveGlhLWJ0bi1wcmltYXJ5IGxveGlhLWJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCIncGxhbi1hbGwtYWN0aW9ucy1mb3ItZmlsZSdcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJUZXh0XT1cIidQbGFuIGFjdGllcyBoZWxlIHJpdCdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGxhbkFsbGVSaXRBY3RpZXMoKVwiPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0ZGVsZW4tbGlqc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvcml0ZGVsZW4tbGlqc3Qvcml0ZGVsZW4tbGlqc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvcml0ZGVsZW4tbGlqc3Qvcml0ZGVsZW4tbGlqc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQVMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSTdELE9BQU8sS0FBSyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxLQUFLLGVBQWUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7OztBQVFuRCxNQUFNLE9BQU8sc0JBQXNCO0lBa0IvQixZQUE2QixLQUE0QixFQUFtQixVQUEyQztRQUExRixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUFtQixlQUFVLEdBQVYsVUFBVSxDQUFpQztRQWpCOUcsdUJBQWtCLEdBQVksRUFBRSxDQUFDO1FBRWhDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztR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R0FBTCxLQUFLLENBQVE7UUFDYixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVM7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFFaEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RvbWVpbiwgSnNKYXZhVXRpbH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCB7U3RvcmV9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge09uZ2VwbGFuZGVBY3RpZX0gZnJvbSAnLi4vLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQge1JpdGRlZWx9IGZyb20gJy4uLy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHtBY3RpZX0gZnJvbSAnLi4vLi4vb3B0aW1vJztcbmltcG9ydCB7U2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsZXJpbmdzLWJlZWxkLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBNc3RBY3Rpb25zIGZyb20gJy4uLy4uL3N0YXRlL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBSaXRkZWxlbkFjdGlvbnMgZnJvbSAnLi4vLi4vc3RhdGUvYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcbmltcG9ydCB7TXN0RWRpdG9yU3RhdGV9IGZyb20gJy4uLy4uL3N0YXRlL21zdC1lZGl0b3Itc3RhdGUnO1xuaW1wb3J0IHtBY3RpZUhlbHBlcn0gZnJvbSAnLi4vLi4vdXRpbC9hY3RpZS1oZWxwZXInO1xuaW1wb3J0IHtBcnJheU11bHRpbWFwfSBmcm9tICcuLi8uLi91dGlsL211bHRpLW1hcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncml0ZGVsZW4tbGlqc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yaXRkZWxlbi1saWpzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcml0ZGVsZW4tbGlqc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcbn0pXG5leHBvcnQgY2xhc3MgUml0ZGVsZW5MaWpzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgbmlldEdlcGxhbmRlQWN0aWVzOiBBY3RpZVtdID0gW107XG5cbiAgICBAT3V0cHV0KCkgZm9jdXNFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxSaXRkZWVsPigpO1xuICAgIEBPdXRwdXQoKSBrZXVyQWxsZUFjdGllc0dvZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICByaXRkZWVsVmlld01vZGVsczogUml0ZGVlbFZpZXdNb2RlbFtdID0gW107XG4gICAgc2VsZWN0ZWRSaXRkZWVsOiBSaXRkZWVsIHwgdW5kZWZpbmVkO1xuICAgIHNlbGVjdGVkUml0ZGVlbEFjdGllczogQWN0aWVbXSA9IFtdO1xuICAgIHNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXM6IE9uZ2VwbGFuZGVBY3RpZVtdID0gW107XG4gICAgZGlzYWJsZUFjdGllS25vcHBlblZhblJpdGRlZWwgPSB0cnVlO1xuICAgIGVkaXRhYmxlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIG9uZ2VwbGFuZGVBY3RpZXNNYXA6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBPbmdlcGxhbmRlQWN0aWU+ID0gbmV3IEFycmF5TXVsdGltYXAoKTtcbiAgICBwcml2YXRlIGdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+ID0gbmV3IEFycmF5TXVsdGltYXAoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE5HX0FDVElFX1BSRUZJWCA9ICcqICc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdG9yZTogU3RvcmU8TXN0RWRpdG9yU3RhdGU+LCBwcml2YXRlIHJlYWRvbmx5IHNibVNlcnZpY2U6IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3RvcmUuc2VsZWN0KCdyaXREZWxlbicpLnN1YnNjcmliZSgocml0ZGVsZW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMucml0ZGVlbFZpZXdNb2RlbHMgPSByaXRkZWxlbj8ubWFwKHJpdGRlZWwgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUml0ZGVlbFZpZXdNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgcml0ZGVlbCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJpdGRlZWxDbGFzcyhyaXRkZWVsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1JpdGRlZWxaaWNodGJhYXIocml0ZGVlbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGl0bGUocml0ZGVlbCksXG4gICAgICAgICAgICAgICAgICAgIHJpdGRlZWwuaXNOaWV0QmVzY2hpa2JhYXIoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1JpdGRlZWxOaWV1dyhyaXRkZWVsKSxcbiAgICAgICAgICAgICAgICAgICAgcml0ZGVlbC5nZXRWYW5QcmxTcG9vcigpLFxuICAgICAgICAgICAgICAgICAgICByaXRkZWVsLmdldE5hYXJQcmxTcG9vclRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgcml0ZGVlbC5nZXREd2FuZ051bW1lcigpLFxuICAgICAgICAgICAgICAgICAgICByaXRkZWVsLmdldFBwbGdTdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUcmVpbk51bW1lcihyaXRkZWVsKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN0b3JlLnNlbGVjdCgnb25nZXBsYW5kZUFjdGllcycpLnN1YnNjcmliZShhY3RpZXMgPT4gdGhpcy5vbmdlcGxhbmRlQWN0aWVzTWFwID0gYWN0aWVzKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN0b3JlLnNlbGVjdCgnZ2VwbGFuZGVBY3RpZXMnKS5zdWJzY3JpYmUoYWN0aWVzID0+IHRoaXMuZ2VwbGFuZGVBY3RpZXMgPSBhY3RpZXMpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3RvcmUuc2VsZWN0KCdlZGl0YWJsZScpLnN1YnNjcmliZShlZGl0YWJsZSA9PiB0aGlzLmVkaXRhYmxlID0gZWRpdGFibGUpKTtcblxuICAgICAgICAvLyBsaXN0ZW4gdG8gY2hhbmdlcyBmcm9tIHN2Zy12aWV3ZXItY29tcG9uZW50LCBzYXZpbmcgcml0ZGVlbCBpbiBzdG9yZSBpc24ndCBjb29sIGJlY2F1c2Ugb2YgYWxsIHRoZSBnd3QgaW4gaXQuIFRoaXMgaXNcbiAgICAgICAgLy8ganVzdCB0byBtYWtlIGNoYW5nZXMgd2l0aGluIHRoZSBhbmd1bGFyIGxpZmVjeWNsZS5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3RvcmUuc2VsZWN0KCdzZWxlY3RlZFJpdGRlZWxJZCcpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoaWQgPT4gIWlkKSkuc3Vic2NyaWJlKHRoaXMuZGVzZWxlY3RSaXRkZWVsXG4gICAgICAgICkpO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgncml0RGVsZW4nKSxcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdvbmdlcGxhbmRlQWN0aWVzJyldXG4gICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlT25nZXBsYW5kZUFjdGllc0xpc3QoKSkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgaXNSaXRkZWVsWmljaHRiYWFyKHJpdGRlZWw6IFJpdGRlZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHJpdGRlZWwuaXNaaWNodGJhYXIoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVSaXRkZWVsWmljaHRiYWFyaGVpZChyaXRkZWVsOiBSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RSaXRkZWVsKCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUml0ZGVsZW5BY3Rpb25zLnRvZ2dsZVJpdGRlZWxaaWNodGJhYXIocml0ZGVlbCkpO1xuICAgIH1cblxuICAgIHRvZ2dsZVppY2h0YmFhcmhlaWRBbGxlUml0ZGVsZW4oY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2VsZWN0Uml0ZGVlbCgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJpdGRlbGVuQWN0aW9ucy5zZXRaaWNodGJhYXJoZWlkQWxsZVJpdGRlbGVuKGNoZWNrZWQpKTtcbiAgICB9XG5cbiAgICBpc1JpdGRlZWxOaWV1dyhyaXRkZWVsOiBSaXRkZWVsKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHJpdGRlZWwuaXNOaWV1dygpID8gJysnIDogJyc7XG4gICAgfVxuXG4gICAgZ2V0VGl0bGUocml0ZGVlbDogUml0ZGVlbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiByaXRkZWVsLmdldEJld2VnaW5nSWQoKTtcbiAgICB9XG5cbiAgICBnZXRUcmVpbk51bW1lcihyaXRkZWVsOiBSaXRkZWVsKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHJpdGRlZWwuZ2V0VHJlaW5OdW1tZXIoKTtcbiAgICB9XG5cbiAgICBkZWxldGVSaXRkZWVsKHJpdGRlZWw6IFJpdGRlZWwpOiB2b2lkIHtcbiAgICAgICAgcml0ZGVlbC5hY3RpZXMuZm9yRWFjaChhY3RpZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZlcmh1aXNBY3RpZU5hYXJPbmdlcGxhbmQoYWN0aWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kZXNlbGVjdFJpdGRlZWwoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMuZGVsZXRlUml0ZGVlbChyaXRkZWVsKSk7XG4gICAgfVxuXG4gICAgZGVsZXRlQWN0aWVzVWl0Uml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUml0ZGVlbD8uYWN0aWVzLnNsaWNlKCkuZm9yRWFjaChhY3RpZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUFjdGllVWl0Uml0KGFjdGllKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlQWN0aWVVaXRSaXQoYWN0aWU6IEFjdGllKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJpdGRlZWwpIHJldHVybjtcblxuICAgICAgICBjb25zdCBhY3RpZXMgPSB0aGlzLnNlbGVjdGVkUml0ZGVlbC5hY3RpZXMgPz8gW107XG4gICAgICAgIGNvbnN0IGlkeCA9IGFjdGllcy5pbmRleE9mKGFjdGllKTtcbiAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnZlcmh1aXNBY3RpZU5hYXJPbmdlcGxhbmQoYWN0aWUpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMuZGVsZXRlUml0ZGVlbEFjdGllKHRoaXMuc2VsZWN0ZWRSaXRkZWVsLCBhY3RpZXNbaWR4XSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5uaWV0R2VwbGFuZGVBY3RpZXMuaW5kZXhPZihhY3RpZSk7XG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgIHRoaXMubmlldEdlcGxhbmRlQWN0aWVzLnB1c2goYWN0aWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJodWlzQWN0aWVOYWFyT25nZXBsYW5kKGFjdGllOiBBY3RpZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwdWljcyA9IHRoaXMuZ2VwbGFuZGVBY3RpZXMuZ2V0KGFjdGllKTtcblxuICAgICAgICBpZiAocHVpY3MgJiYgcHVpY3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLkFkZE9uZ2VwbGFuZGVBY3RpZShuZXcgT25nZXBsYW5kZUFjdGllKGFjdGllLCBwdWljcykpKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5EZWxldGVHZXBsYW5kZUFjdGllKGFjdGllLCBwdWljcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdm9lZ0FjdGllc1RvZUFhblJpdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aWVzID0gdGhpcy5zZWxlY3RlZFJpdGRlZWxPbmdlcGxhbmRlQWN0aWVzO1xuICAgICAgICBhY3RpZXMuc2xpY2UoKS5mb3JFYWNoKGFjdGllID0+IHtcbiAgICAgICAgICAgIHRoaXMudm9lZ0FjdGllVG9lQWFuUml0KGFjdGllKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdm9lZ0FjdGllVG9lQWFuUml0KG9uZ2VwbGFuZGVBY3RpZTogT25nZXBsYW5kZUFjdGllKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuc2VsZWN0ZWRSaXRkZWVsT25nZXBsYW5kZUFjdGllcy5pbmRleE9mKG9uZ2VwbGFuZGVBY3RpZSk7XG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSaXRkZWxlbkFjdGlvbnMuYWRkUml0ZGVlbEFjdGllKHRoaXMuc2VsZWN0ZWRSaXRkZWVsLCB0aGlzLnNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXNbaWR4XS5hY3RpZSkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNc3RBY3Rpb25zLkFkZEdlcGxhbmRlQWN0aWUob25nZXBsYW5kZUFjdGllLmFjdGllLCBvbmdlcGxhbmRlQWN0aWUucHVpY3MpKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTXN0QWN0aW9ucy5EZWxldGVPbmdlcGxhbmRlQWN0aWUob25nZXBsYW5kZUFjdGllKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVPbmdlcGxhbmRlQWN0aWVzTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSaXRkZWVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHJpdFB1aWNzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3Qgcml0ZGVlbFRvcG9FbGVtZW50cyA9IEFjdGllSGVscGVyLmdldEFjdGllVG9wb0VsZW1lbnRzKHRoaXMuc2VsZWN0ZWRSaXRkZWVsLCB0aGlzLnNibVNlcnZpY2UpO1xuICAgICAgICAgICAgY29uc3Qgd2lzc2VsT2JqZWN0ZW46IGRvbWVpbi5XaXNzZWxbXSA9IEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodGhpcy5zZWxlY3RlZFJpdGRlZWwuZ2V0Um91dGUoKS5nZXRXaXNzZWxPYmplY3RlbkluRGVSb3V0ZSgpKTtcblxuICAgICAgICAgICAgcml0ZGVlbFRvcG9FbGVtZW50cy5mb3JFYWNoKGVsZW0gPT4gcml0UHVpY3MucHVzaChlbGVtLmdldFB1aWMoKSkpO1xuICAgICAgICAgICAgY29uc3Qgb25nZXBsYW5kZUFjdGllc0FycmF5ID0gdGhpcy5vbmdlcGxhbmRlQWN0aWVzTWFwLnZhbHVlcygpO1xuICAgICAgICAgICAgb25nZXBsYW5kZUFjdGllc0FycmF5LmZvckVhY2gob2EgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGllcyA9IHRoaXMucml0ZGVlbFZpZXdNb2RlbHMuZmxhdE1hcChyZCA9PiByZC5yaXRkZWVsLmFjdGllcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeUFkZGVkID0gYWN0aWVzLmZpbHRlcihhID0+IGEuaWQgPT09IG9hLmFjdGllLmlkKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGlmICghYWxyZWFkeUFkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvYU1hdGNoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNWU1RBY3RpZShvYS5hY3RpZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9hTWF0Y2ggPSB0aGlzLm1hdGNoZWRXaXNzZWxNZXRLYW50Q29kZUluVlNUQWN0aWUob2EsIHdpc3NlbE9iamVjdGVuKSA/IG9hIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9hLnB1aWNzLmZpbHRlcihwID0+IHJpdFB1aWNzLmluY2x1ZGVzKHApIHx8IHRoaXMuYmV2YXRXaXNzZWxQdWljKHJpdFB1aWNzLCBwKSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2FNYXRjaCA9IG9hO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeUFkZGVkQXNPbmdlcGxhbmQgPSB0aGlzLnNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXMuZmlsdGVyKGEgPT4gYS5hY3RpZS5pZCA9PT0gb2EuYWN0aWUuaWQpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvYU1hdGNoICYmICFhbHJlYWR5QWRkZWRBc09uZ2VwbGFuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJpdGRlZWxPbmdlcGxhbmRlQWN0aWVzLnB1c2gob2FNYXRjaCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1hdGNoZWRXaXNzZWxNZXRLYW50Q29kZUluVlNUQWN0aWUob25nZXBsYW5kZUFjdGllOiBPbmdlcGxhbmRlQWN0aWUsIHdpc3NlbHM6IGRvbWVpbi5XaXNzZWxbXSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwcGxnID0gb25nZXBsYW5kZUFjdGllLmFjdGllLnBwbGdOYWFtO1xuICAgICAgICBjb25zdCB3aXNzZWxLYW50Q29kZXMgPSBBY3RpZUhlbHBlci5nZXRXaXNzZWxLYW50Q29kZXMob25nZXBsYW5kZUFjdGllLmFjdGllKTtcblxuICAgICAgICBsZXQgZ2V2b25kZW5XaXNzZWxzID0gMDtcbiAgICAgICAgbGV0IGdldm9uZGVuV2lzc2VsS2FudENvZGVzID0gMDtcblxuICAgICAgICB3aXNzZWxLYW50Q29kZXMuZm9yRWFjaCgod2lzc2VsS2FudENvZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdldm9uZGVuV2lzc2VsID0gdGhpcy5maW5kV2lzc2VsT3BOYWFtRW5QcGxnKHdpc3NlbHMsIHdpc3NlbEthbnRDb2RlLm5hYW0sIHBwbGcpO1xuXG4gICAgICAgICAgICBpZiAoZ2V2b25kZW5XaXNzZWwpIHtcbiAgICAgICAgICAgICAgICBnZXZvbmRlbldpc3NlbHMrKztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXRLYW50Q29kZShnZXZvbmRlbldpc3NlbC5nZXRTdGFuZCgpKSA9PT0gd2lzc2VsS2FudENvZGUua2FudENvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V2b25kZW5XaXNzZWxLYW50Q29kZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBnZXZvbmRlbldpc3NlbHMgPiAwICYmIGdldm9uZGVuV2lzc2VscyA9PT0gZ2V2b25kZW5XaXNzZWxLYW50Q29kZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kV2lzc2VsT3BOYWFtRW5QcGxnKHdpc3NlbHM6IGRvbWVpbi5XaXNzZWxbXSwgd2lzc2VsTmFhbTogc3RyaW5nLCBwcGxnTmFhbTogc3RyaW5nKTogZG9tZWluLldpc3NlbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB3aXNzZWxzLmZpbmQod28gPT4gd28uZ2V0TmFtZSgpID09PSB3aXNzZWxOYWFtICYmIHdvLmdldFBQTEcoKSA9PT0gcHBsZ05hYW0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmV2YXRXaXNzZWxQdWljKHJpdFB1aWNzOiBzdHJpbmdbXSwgcDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiByaXRQdWljcy5pbmNsdWRlcyh0aGlzLnNibVNlcnZpY2UuZ2V0V2lzc2VsTWV0U3RvcmluZ3NrYWRlclB1aWMocCk/LmdldFB1aWMoKSk7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRSaXRkZWVsQ2xhc3Mocml0ZGVlbDogUml0ZGVlbCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChyaXRkZWVsLmdldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUoKSkge1xuICAgICAgICAgICAgaWYgKHJpdGRlZWwuZXF1YWxzKHRoaXMuc2VsZWN0ZWRSaXRkZWVsKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnc2VsZWN0ZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICd2aXNpYmxlLW91dHNpZGUtd2luZG93JztcbiAgICAgICAgfVxuICAgICAgICBpZiAocml0ZGVlbC5pc05pZXRCZXNjaGlrYmFhcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICAgICAgfVxuICAgICAgICBpZiAocml0ZGVlbC5lcXVhbHModGhpcy5zZWxlY3RlZFJpdGRlZWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3NlbGVjdGVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgc2VsZWN0Uml0ZGVlbChldmVudDogTW91c2VFdmVudCwgcml0ZGVlbDogUml0ZGVlbCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQ/LmN0cmxLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNFbWl0dGVyLmVtaXQocml0ZGVlbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocml0ZGVlbD8uZXF1YWxzKHRoaXMuc2VsZWN0ZWRSaXRkZWVsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RSaXRkZWVsKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUml0ZGVlbCA9IHJpdGRlZWw7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVBY3RpZUtub3BwZW5WYW5SaXRkZWVsID0gIXRoaXMuc2VsZWN0ZWRSaXRkZWVsLmlzWmljaHRiYWFyKCk7XG5cbiAgICAgICAgICAgIGlmIChyaXRkZWVsLmFjdGllcykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSaXRkZWVsQWN0aWVzID0gcml0ZGVlbC5hY3RpZXM7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVPbmdlcGxhbmRlQWN0aWVzTGlzdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUml0ZGVlbEFjdGllcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSaXRkZWVsT25nZXBsYW5kZUFjdGllcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWN0aWVPbXNjaHJpanZpbmdUZWtzdChhY3RpZTogQWN0aWUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLmJlcGFhbFByZWZpeFZvb3JBY3RpZU9tc2NocmlqdmluZyhhY3RpZSk7XG4gICAgICAgIGlmIChBY3RpZUhlbHBlci5pc1ZTVEFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFha1ZzdEFjdGllT21zY2hyaWp2aW5nKGFjdGllLCBwcmVmaXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmVmaXggKyBhY3RpZS5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWFrVnN0QWN0aWVPbXNjaHJpanZpbmcoYWN0aWU6IEFjdGllLCBwcmVmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHsgcHJlZml4IH0keyBBY3RpZUhlbHBlci5nZXRWU1RBY3RpZU9tc2NocmlqdmluZyhhY3RpZSkgfWA7XG4gICAgfVxuXG4gICAgYmVwYWFsUHJlZml4Vm9vckFjdGllT21zY2hyaWp2aW5nKGFjdGllOiBBY3RpZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5vUHJlZml4ID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUml0ZGVlbD8uYWN0aWVzLmluY2x1ZGVzKGFjdGllKSkge1xuICAgICAgICAgICAgLy8gQWZ3aWprZW5kZSBuYWFtIGJpaiBuaWV0IGdldmlzdWFsaXNlZXJkZSBhY3RpZSBpbiByaXRcbiAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gdGhpcy5nZXBsYW5kZUFjdGllcy5nZXQoYWN0aWUpO1xuICAgICAgICAgICAgcmV0dXJuIHB1aWNzLmxlbmd0aCA+IDAgPyBub1ByZWZpeCA6IHRoaXMuTkdfQUNUSUVfUFJFRklYO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub1ByZWZpeDtcbiAgICB9XG5cbiAgICBhY3RpZVZhbkttVGVrc3QoYWN0aWU6IEFjdGllKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllLndpc3NlbE5hYW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGllLnZhbktpbG9tZXRlcmxpbnQgPyBhY3RpZS52YW5LaWxvbWV0ZXJsaW50ICsgJyAnICsgYWN0aWUudmFuS2lsb21ldHJlcmluZyA6ICctJztcbiAgICB9XG5cbiAgICBhY3RpZVRvdEttVGVrc3QoYWN0aWU6IEFjdGllKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLnRvdEtpbG9tZXRlcmxpbnQgPyBhY3RpZS50b3RLaWxvbWV0ZXJsaW50ICsgJyAnICsgYWN0aWUudG90S2lsb21ldHJlcmluZyA6ICctJztcbiAgICB9XG5cbiAgICBkZXNlbGVjdFJpdGRlZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUFjdGllS25vcHBlblZhblJpdGRlZWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJpdGRlZWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSaXRkZWVsQWN0aWVzID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSaXRkZWVsT25nZXBsYW5kZUFjdGllcyA9IFtdO1xuICAgIH1cblxuICAgIGdldFBwbGdTdHJpbmcocml0ZGVlbDogUml0ZGVlbCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiByaXRkZWVsLmdldFBwbGdTdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEthbnRDb2RlKHN0YW5kOiBkb21laW4uU3RhbmQpOiBzdHJpbmcge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChzdGFuZCA9PT0gd2luZG93Wydkb21laW4nXS5TdGFuZC5MSU5LUykge1xuICAgICAgICAgICAgcmV0dXJuICdMJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1InO1xuICAgIH1cblxuICAgIHBsYW5BbGxlUml0QWN0aWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtldXJBbGxlQWN0aWVzR29lZC5lbWl0KCk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RSaXRkZWVsKCk7XG4gICAgfVxufVxuXG5jbGFzcyBSaXRkZWVsVmlld01vZGVsIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcmVhZG9ubHkgcml0ZGVlbDogUml0ZGVlbCxcbiAgICAgICAgcmVhZG9ubHkgc2VsZWN0ZWRSaXRkZWVsQ2xhc3M6IHN0cmluZyxcbiAgICAgICAgcmVhZG9ubHkgaXNaaWNodGJhYXI6IGJvb2xlYW4sXG4gICAgICAgIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmcsXG4gICAgICAgIHJlYWRvbmx5IGlzTmlldEJlc2NoaWtiYWFyOiBib29sZWFuLFxuICAgICAgICByZWFkb25seSBpc05pZXV3OiBzdHJpbmcsXG4gICAgICAgIHJlYWRvbmx5IHZhblBybFNwb29yOiBzdHJpbmcsXG4gICAgICAgIHJlYWRvbmx5IG5hYXJQcmxTcG9vcjogc3RyaW5nLFxuICAgICAgICByZWFkb25seSBkd2FuZ051bW1lcjogbnVtYmVyLFxuICAgICAgICByZWFkb25seSBwcGxnU3RyaW5nOiBzdHJpbmcsXG4gICAgICAgIHJlYWRvbmx5IHRyZWluTnVtbWVyOiBzdHJpbmdcbiAgICApIHtcbiAgICB9XG59XG4iLCI8ZGl2IGlkPVwicml0ZGVsZW4tbGlqc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1oZWFkZXJcIj5cbiAgICAgICAgPGgzIFthdHRyLmRhdGEtdGVzdC1pZF09XCIndGl0bGUtcml0LWRldGFpbHMnXCI+Uml0ZGV0YWlsczwvaDM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLXBhbmUgdGFibGVGaXhIZWFkXCIgaWQ9XCJ0b3AtcGFuZVwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbYXR0ci5kYXRhLXRlc3QtaWRdPVwiJ3RhYmxlLXJpdC1kZXRhaWxzJ1wiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICNpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tib3ggY29sLXZpc2liaWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlWmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbihpbnB1dC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyaXRkZXRhaWxzLXNlbGVjdGVlckFsbGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlNlbGVjdGVlciBhbGxlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cIidjaGVja2JveC1hbGxlLWJld2VnaW5nZW4nXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlZhbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk5hYXI8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5EVzwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlBQTEcocyk8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5UcmVpbm5yLjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByaXRkZWVsVmlld01vZGVsIG9mIHJpdGRlZWxWaWV3TW9kZWxzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7eyBzZWxlY3RlZFJpdGRlZWxDbGFzcyhyaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpIH19XCIgaWQ9XCJyaXRkZXRhaWxzLXJ7e2l9fVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJyaXRkZXRhaWxzLXJ7e2l9fS16aWNodGJhYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCInY2hlY2tib3gtcicraVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94IGNvbC12aXNpYmlsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyaXRkZWVsVmlld01vZGVsLmlzWmljaHRiYWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwicml0ZGVlbFZpZXdNb2RlbC50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSaXRkZWVsWmljaHRiYWFyaGVpZChyaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cInJpdGRlZWxWaWV3TW9kZWwuaXNOaWV0QmVzY2hpa2JhYXJcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtcnt7aX19LWdld2lqemlnZFwiIChjbGljayk9XCJzZWxlY3RSaXRkZWVsKCRldmVudCwgcml0ZGVlbFZpZXdNb2RlbC5yaXRkZWVsKVwiPnt7cml0ZGVlbFZpZXdNb2RlbC5pc05pZXV3fX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgaWQ9XCJyaXRkZXRhaWxzLXJ7e2l9fS12YW5TcG9vclwiIChjbGljayk9XCJzZWxlY3RSaXRkZWVsKCRldmVudCwgcml0ZGVlbFZpZXdNb2RlbC5yaXRkZWVsKVwiPnt7cml0ZGVlbFZpZXdNb2RlbC52YW5QcmxTcG9vcn19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGlkPVwicml0ZGV0YWlscy1ye3tpfX0tbmFhclNwb29yXCIgKGNsaWNrKT1cInNlbGVjdFJpdGRlZWwoJGV2ZW50LCByaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpXCI+e3tyaXRkZWVsVmlld01vZGVsLm5hYXJQcmxTcG9vcn19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGlkPVwicml0ZGV0YWlscy1ye3tpfX0tZHdhbmdOdW1tZXJcIiAoY2xpY2spPVwic2VsZWN0Uml0ZGVlbCgkZXZlbnQsIHJpdGRlZWxWaWV3TW9kZWwucml0ZGVlbClcIj57e3JpdGRlZWxWaWV3TW9kZWwuZHdhbmdOdW1tZXJ9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtcnt7aX19LXBwbGdzXCIgKGNsaWNrKT1cInNlbGVjdFJpdGRlZWwoJGV2ZW50LCByaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpXCI+e3tyaXRkZWVsVmlld01vZGVsLnBwbGdTdHJpbmd9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtcnt7aX19LXRyZWluTnVtbWVyXCIgKGNsaWNrKT1cInNlbGVjdFJpdGRlZWwoJGV2ZW50LCByaXRkZWVsVmlld01vZGVsLnJpdGRlZWwpXCI+e3tyaXRkZWVsVmlld01vZGVsLnRyZWluTnVtbWVyfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInJpdGRldGFpbHMtcnt7aX19LWRlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxveGlhLWJ0biBsb3hpYS1idG4tZGFuZ2VyIGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSaXRkZWVsKHJpdGRlZWxWaWV3TW9kZWwucml0ZGVlbClcIj5YXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGllLXBhbmVcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFJpdGRlZWwgICYmIChzZWxlY3RlZFJpdGRlZWxBY3RpZXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZFJpdGRlZWxPbmdlcGxhbmRlQWN0aWVzLmxlbmd0aCA+IDApIFwiXG4gICAgICAgICAgICAgICAgIGlkPVwiYWN0aWUtcGFuZVwiPlxuICAgICAgICAgICAgICAgIDxoND5HZXBsYW5kZSBhY3RpZXM8L2g0PlxuICAgICAgICAgICAgICAgIDx0YWJsZSBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+QWN0aWU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+VmFuPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlRvdDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJzZWxlY3RlZFJpdGRlZWxBY3RpZXMubGVuZ3RoPT09MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImJ1bGtTZXRPbmdlcGxhbmRCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cIid1bnBsYW4tYWxsLWFjdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb3hpYS1idG4gbG94aWEtYnRuLWRhbmdlciBidG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUFjdGllc1VpdFJpdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlQWN0aWVLbm9wcGVuVmFuUml0ZGVlbFwiPlhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBhY3RpZSBvZiBzZWxlY3RlZFJpdGRlZWxBY3RpZXM7IGxldCBpID0gaW5kZXhcIiBpZD1cInJpdGRldGFpbHMtYXt7aX19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgaWQ9XCJyaXRkZXRhaWxzLWF7e2l9fS1vbXNjaHJpanZpbmdcIiBjbGFzcz1cIm5vd3JhcFwiPnt7IGFjdGllT21zY2hyaWp2aW5nVGVrc3QoYWN0aWUpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtYXt7aX19LXZhbkttTGludFwiPnt7IGFjdGllVmFuS21UZWtzdChhY3RpZSl9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgaWQ9XCJyaXRkZXRhaWxzLWF7e2l9fS10b3RLbUxpbnRcIj57eyBhY3RpZVRvdEttVGVrc3QoYWN0aWUpfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInJpdGRldGFpbHMtYXt7aX19LWRlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG94aWEtYnRuIGxveGlhLWJ0bi1kYW5nZXIgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBY3RpZVVpdFJpdChhY3RpZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVBY3RpZUtub3BwZW5WYW5SaXRkZWVsXCI+WFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDxoND5PbmdlcGxhbmRlIGFjdGllczwvaDQ+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5BY3RpZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5WYW48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+VG90PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cInNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXMubGVuZ3RoPT09MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImJ1bGtTZXRHZXBsYW5kQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCIncGxhbi1hbGwtYWN0aW9ucydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxveGlhLWJ0biBsb3hpYS1idG4tc3VjY2VzcyBsb3hpYS1idG4tc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZvZWdBY3RpZXNUb2VBYW5SaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUFjdGllS25vcHBlblZhblJpdGRlZWxcIj5eXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb25nZXBsYW5kZUFjdGllIG9mIHNlbGVjdGVkUml0ZGVlbE9uZ2VwbGFuZGVBY3RpZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyaXRkZXRhaWxzLW9he3tpfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtb2F7e2l9fS1vbXNjaHJpanZpbmdcIiBjbGFzcz1cIm5vd3JhcFwiPnt7YWN0aWVPbXNjaHJpanZpbmdUZWtzdChvbmdlcGxhbmRlQWN0aWUuYWN0aWUpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtb2F7e2l9fS12YW5LbUxpbnRcIj57eyBhY3RpZVZhbkttVGVrc3Qob25nZXBsYW5kZUFjdGllLmFjdGllKX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBpZD1cInJpdGRldGFpbHMtb2F7e2l9fS10b3RLbUxpbnRcIj57eyBhY3RpZVRvdEttVGVrc3Qob25nZXBsYW5kZUFjdGllLmFjdGllKX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246cmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyaXRkZXRhaWxzLW9he3tpfX0tZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb3hpYS1idG4gbG94aWEtYnRuLXN1Y2Nlc3MgbG94aWEtYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2b2VnQWN0aWVUb2VBYW5SaXQob25nZXBsYW5kZUFjdGllKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUFjdGllS25vcHBlblZhblJpdGRlZWxcIj5eXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrbm9wLXBhbmVcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG94aWEtYnRuIGxveGlhLWJ0bi1wcmltYXJ5IGxveGlhLWJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCIncGxhbi1hbGwtYWN0aW9ucy1mb3ItZmlsZSdcIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJUZXh0XT1cIidQbGFuIGFjdGllcyBoZWxlIHJpdCdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGxhbkFsbGVSaXRBY3RpZXMoKVwiPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -202,4 +202,4 @@ export class Ritdeel {
|
|
|
202
202
|
this.topoElementen = topoElementen;
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0ZGVlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9tb2RlbC9yaXRkZWVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsTUFBTSxDQUFOLElBQVksb0JBSVg7QUFKRCxXQUFZLG9CQUFvQjtJQUM1Qix5RUFBYSxDQUFBO0lBQ2IsMkdBQThCLENBQUE7SUFDOUIsdUdBQTRCLENBQUE7QUFDaEMsQ0FBQyxFQUpXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFJL0I7QUFFRCxNQUFNLE9BQU8sT0FBTztJQUtoQixZQUE2QiwwQkFBMkQsRUFDckUsTUFBZSxFQUNOLFFBQThCLEVBQ3ZDLG1DQUFnRixFQUNoRixZQUFnQyxFQUMvQixhQUF1QztRQUw5QiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQWlDO1FBQ3JFLFdBQU0sR0FBTixNQUFNLENBQVM7UUFDTixhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUN2Qyx3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQTZDO1FBQ2hGLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFUbkQsdUJBQWtCLEdBQThCLEVBQUUsQ0FBQztRQUNuRCxrQkFBYSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQztRQUMvQyw2QkFBd0IsR0FBRyxLQUFLLENBQUM7SUFRekMsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFdBQXlCO1FBQ2xDLE1BQU0sZ0NBQWdDLEdBQ2xDLElBQUksK0JB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QXdCLENBQUMsVUFBMkM7UUFDaEUsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUM1QixNQUFNLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBQzVGLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkb21laW4sIEpzSmF2YVV0aWwsIHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBBY3RpZSwgQmV3ZWdpbmcgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgQmV3ZWdpbmdVdGlscyB9IGZyb20gJy4uL3NlcnZpY2VzL2Jld2VnaW5nLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSB9IGZyb20gJy4vcmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZSc7XG5cbmV4cG9ydCBlbnVtIFJpdGRlZWxaaWNodGJhYXJoZWlkIHtcbiAgICBaSUNIVEJBQVIgPSAxLFxuICAgIE9OWklDSFRCQUFSX0RPT1JfR0VCUlVJS0VSID0gMixcbiAgICBPTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0gPSAzXG59XG5cbmV4cG9ydCBjbGFzcyBSaXRkZWVsIHtcbiAgICBwcml2YXRlIGFsdGVybmF0aWV2ZVJvdXRlczogc2JibGFkLkFsdGVybmF0aXZlUm91dGVbXSA9IFtdO1xuICAgIHByaXZhdGUgemljaHRiYWFyaGVpZCA9IFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUjtcbiAgICBwcml2YXRlIHppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaTogUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSxcbiAgICAgICAgICAgICAgICBwdWJsaWMgYWN0aWVzOiBBY3RpZVtdLFxuICAgICAgICAgICAgICAgIHB1YmxpYyByZWFkb25seSBiZXdlZ2luZzogQmV3ZWdpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHVibGljIHZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpOiBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHB1YmxpYyB2ZXJ2b2xnU3Bvb3I6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHRvcG9FbGVtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSkge1xuICAgIH1cblxuICAgIGdldEFsdGVybmF0aWV2ZVJvdXRlcygpOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWx0ZXJuYXRpZXZlUm91dGVzO1xuICAgIH1cblxuICAgIGNvcHlNZXREd2FuZyhuaWV1d2VEd2FuZzogZG9tZWluLkR3YW5nKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IG5pZXV3ZVJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpID1cbiAgICAgICAgICAgIG5ldyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllKFxuICAgICAgICAgICAgICAgIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkucmlqd2VncGxhbiwgdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWcsIG5pZXV3ZUR3YW5nKTtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKG5pZXV3ZVJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCBbXSwgdGhpcy5iZXdlZ2luZyxcbiAgICAgICAgICAgIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMudmVydm9sZ1Nwb29yLCB0aGlzLnRvcG9FbGVtZW50ZW4pO1xuICAgICAgICBjb3B5LmFsdGVybmF0aWV2ZVJvdXRlcyA9IHRoaXMuYWx0ZXJuYXRpZXZlUm91dGVzO1xuICAgICAgICBjb3B5LnppY2h0YmFhcmhlaWQgPSB0aGlzLnppY2h0YmFhcmhlaWQ7XG4gICAgICAgIGNvcHkuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID0gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXMoYWx0ZXJuYXRpZXZlUm91dGVzOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgUml0ZGVlbCh0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCB0aGlzLmFjdGllcywgdGhpcy5iZXdlZ2luZyxcbiAgICAgICAgICAgIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMudmVydm9sZ1Nwb29yLCB0aGlzLnRvcG9FbGVtZW50ZW4pO1xuICAgICAgICBjb3B5LmFsdGVybmF0aWV2ZVJvdXRlcyA9IGFsdGVybmF0aWV2ZVJvdXRlcztcbiAgICAgICAgY29weS56aWNodGJhYXJoZWlkID0gdGhpcy56aWNodGJhYXJoZWlkO1xuICAgICAgICBjb3B5LnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IHRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuXG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXNab25kZXJBY3RpZXMoYWx0ZXJuYXRpZXZlUm91dGVzOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXMoYWx0ZXJuYXRpZXZlUm91dGVzKTtcbiAgICAgICAgaWYgKGNvcHkuYmV3ZWdpbmcpIHtcbiAgICAgICAgICAgIGNvcHkuYWN0aWVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgY29weU1ldFppY2h0YmFhcmhlaWQoemljaHRiYWFyaGVpZDogUml0ZGVlbFppY2h0YmFhcmhlaWQpOiBSaXRkZWVsIHtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMuYWN0aWVzLCB0aGlzLmJld2VnaW5nLFxuICAgICAgICAgICAgdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSwgdGhpcy52ZXJ2b2xnU3Bvb3IsIHRoaXMudG9wb0VsZW1lbnRlbik7XG4gICAgICAgIGNvcHkuYWx0ZXJuYXRpZXZlUm91dGVzID0gdGhpcy5hbHRlcm5hdGlldmVSb3V0ZXM7XG4gICAgICAgIGNvcHkuemljaHRiYWFyaGVpZCA9IHppY2h0YmFhcmhlaWQ7XG4gICAgICAgIGNvcHkuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID0gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG5cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZSh6aWNodGJhYXJoZWlkOiBSaXRkZWVsWmljaHRiYWFyaGVpZCwgemljaHRiYWFyQnVpdGVuUGFnaW5hdGllOiBib29sZWFuKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlNZXRaaWNodGJhYXJoZWlkKHppY2h0YmFhcmhlaWQpO1xuICAgICAgICBjb3B5LnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IHppY2h0YmFhckJ1aXRlblBhZ2luYXRpZTtcblxuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG5cbiAgICBjb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZSh6aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU6IGJvb2xlYW4pOiBSaXRkZWVsIHtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMuYWN0aWVzLCB0aGlzLmJld2VnaW5nLFxuICAgICAgICAgICAgdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSwgdGhpcy52ZXJ2b2xnU3Bvb3IsIHRoaXMudG9wb0VsZW1lbnRlbik7XG4gICAgICAgIGNvcHkuYWx0ZXJuYXRpZXZlUm91dGVzID0gdGhpcy5hbHRlcm5hdGlldmVSb3V0ZXM7XG4gICAgICAgIGNvcHkuemljaHRiYWFyaGVpZCA9IHRoaXMuemljaHRiYWFyaGVpZDtcbiAgICAgICAgY29weS56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWUgPSB6aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG5cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgZXF1YWxzKG90aGVyOiBSaXRkZWVsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghb3RoZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3RoZXIucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkgPT09IHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmk7XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VncGxhbigpOiBkb21laW4uUmlqd2VncGxhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZ3BsYW47XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VnKCk6IGRvbWVpbi5SaWp3ZWcge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWc7XG4gICAgfVxuXG4gICAgZ2V0RHdhbmcoKTogZG9tZWluLkR3YW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZHdhbmc7XG4gICAgfVxuXG4gICAgZ2V0Um91dGUoKTogZG9tZWluLlJvdXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0Um91dGUoKTtcbiAgICB9XG5cbiAgICBnZXRTZWluZW4oKTogZG9tZWluLlNlaW5bXSB7XG4gICAgICAgIGNvbnN0IHNlaW5lbjogZG9tZWluLlNlaW5bXSA9IEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXRSb3V0ZSgpLmdldFNlaW5lbigpKTtcbiAgICAgICAgaWYgKHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlaW46IGRvbWVpbi5TZWluW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0Um91dGUoKS5nZXRTZWluZW4oKSk7XG4gICAgICAgICAgICBzZWluZW4ucHVzaCguLi5zZWluKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VpbmVuO1xuICAgIH1cblxuICAgIGdldFZhblBybFNwb29yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldFZhblBybFNwb29yKCk7XG4gICAgfVxuXG4gICAgZ2V0VmlzdWVlbE5hYXJQcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy52ZXJ2b2xnU3Bvb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcnZvbGdTcG9vcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldE5hYXJQcmxTcG9vcigpO1xuICAgIH1cblxuICAgIGdldE5hYXJQcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXROYWFyUHJsU3Bvb3IoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyUHJsU3Bvb3JUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXR2YWwgPSB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldE5hYXJQcmxTcG9vcigpO1xuICAgICAgICBpZiAodGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSkge1xuICAgICAgICAgICAgcmV0dmFsICs9ICdfZSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmVydm9sZ1Nwb29yKSB7XG4gICAgICAgICAgICByZXR2YWwgKz0gJygnICsgdGhpcy52ZXJ2b2xnU3Bvb3IgKyAnKSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldHZhbDtcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5SaWp3ZWdwbGFuKCk6IGRvbWVpbi5SaWp3ZWdwbGFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkucmlqd2VncGxhbjtcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5SaWp3ZWcoKTogZG9tZWluLlJpandlZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZztcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5Ed2FuZygpOiBkb21laW4uRHdhbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5kd2FuZztcbiAgICB9XG5cbiAgICBnZXREd2FuZ051bW1lcigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXREd2FuZ051bW1lcigpO1xuICAgIH1cblxuICAgIGdldFppY2h0YmFhcmhlaWQoKTogUml0ZGVlbFppY2h0YmFhcmhlaWQge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkO1xuICAgIH1cblxuICAgIGlzWmljaHRiYWFyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5aSUNIVEJBQVI7XG4gICAgfVxuXG4gICAgaXNaaWNodGJhYXJCaW5uZW5XaW5kb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzWmljaHRiYWFyKCkgJiYgIXRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuICAgIH1cblxuICAgIGlzQmlubmVuV2luZG93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSIHx8XG4gICAgICAgICAgICAgICAgdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUilcbiAgICAgICAgICAgICYmIHRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID09PSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc05pZXRCZXNjaGlrYmFhcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuT05aSUNIVEJBQVJfRE9PUl9TWVNURUVNO1xuICAgIH1cblxuICAgIGlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUjtcbiAgICB9XG5cbiAgICBpc05pZXV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuYmV3ZWdpbmcgfHwgdGhpcy5iZXdlZ2luZy53aWp6aWdTdGF0dXMgPT09IEJld2VnaW5nVXRpbHMuVE9FR0VWT0VHRDtcbiAgICB9XG5cbiAgICBnZXRQcGxnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZ3BsYW4uZ2V0UFBMRygpO1xuICAgIH1cblxuICAgIGdldFBwbGdTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VmFuU2VpblBwbGcoKSA9PT0gdGhpcy5nZXROYWFyU2VpblBwbGcoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFuU2VpblBwbGcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhblNlaW5QcGxnKCkgKyAnIC8gJyArIHRoaXMuZ2V0TmFhclNlaW5QcGxnKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoZWVmdFZyaWplYmFhbkluZm8oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpICYmICEhdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5kd2FuZztcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5QcmxSb3V0ZSgpOiBkb21laW4uUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXRSb3V0ZSgpO1xuICAgIH1cblxuICAgIGdldFRvcG9sb2dpZUVsZW1lbnRlbigpOiBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy50b3BvRWxlbWVudGVuO1xuICAgIH1cblxuICAgIGdldEJld2VnaW5nSWQoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYmV3ZWdpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiAnJyArIHRoaXMuYmV3ZWdpbmcuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGdldFRyZWluTnVtbWVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJld2VnaW5nPy50cmVpbk51bW1lcikge1xuICAgICAgICAgICAgcmV0dXJuICcnICsgdGhpcy5iZXdlZ2luZy50cmVpbk51bW1lcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZ2V0VmFuU2VpblBwbGcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmV3ZWdpbmcgPyB0aGlzLmJld2VnaW5nLnZhblNlaW5QcGxnIDogdGhpcy5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpLmdldFBQTEcoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyU2VpblBwbGcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmV3ZWdpbmcgPyB0aGlzLmJld2VnaW5nLm5hYXJTZWluUHBsZyA6IHRoaXMuZ2V0Um91dGUoKS5nZXRFaW5kU2VpbigpLmdldFBQTEcoKTtcbiAgICB9XG5cbiAgICBnZXRWYW5TZWluTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpLmdldE5hbWUoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyU2Vpbk5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGUoKS5nZXRFaW5kU2VpbigpLmdldE5hbWUoKTtcbiAgICB9XG5cbiAgICBnZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG4gICAgfVxuXG4gICAgYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHNibVNlcnZpY2U6IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9wb0VsZW1lbnRlbiA9IHNibVNlcnZpY2UuYmVwYWFsUm91dGVFbGVtZW50ZW4odGhpcy5nZXRSb3V0ZSgpKTtcblxuICAgICAgICBpZiAodGhpcy5oZWVmdFZyaWplYmFhbkluZm8oKSkge1xuICAgICAgICAgICAgY29uc3QgdnJpamViYWFuVG9wb0VsZW1lbnRlbiA9IHNibVNlcnZpY2UuYmVwYWFsUm91dGVFbGVtZW50ZW4odGhpcy5nZXRWcmlqZWJhYW5QcmxSb3V0ZSgpKTtcbiAgICAgICAgICAgIHRvcG9FbGVtZW50ZW4ucHVzaCguLi52cmlqZWJhYW5Ub3BvRWxlbWVudGVuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvcG9FbGVtZW50ZW4gPSB0b3BvRWxlbWVudGVuO1xuICAgIH1cbn1cbiJdfQ==
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0ZGVlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9tb2RlbC9yaXRkZWVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsTUFBTSxDQUFOLElBQVksb0JBSVg7QUFKRCxXQUFZLG9CQUFvQjtJQUM1Qix5RUFBYSxDQUFBO0lBQ2IsMkdBQThCLENBQUE7SUFDOUIsdUdBQTRCLENBQUE7QUFDaEMsQ0FBQyxFQUpXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFJL0I7QUFFRCxNQUFNLE9BQU8sT0FBTztJQUtoQixZQUE2QiwwQkFBMkQsRUFDckUsTUFBZSxFQUNOLFFBQThCLEVBQ3ZDLG1DQUFnRixFQUNoRixZQUFnQyxFQUMvQixhQUF1QztRQUw5QiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQWlDO1FBQ3JFLFdBQU0sR0FBTixNQUFNLENBQVM7UUFDTixhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUN2Qyx3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQTZDO1FBQ2hGLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFUbkQsdUJBQWtCLEdBQThCLEVBQUUsQ0FBQztRQUNuRCxrQkFBYSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQztRQUMvQyw2QkFBd0IsR0FBRyxLQUFLLENBQUM7SUFRekMsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFdBQXlCO1FBQ2xDLE1BQU0sZ0NBQWdDLEdBQ2xDLElBQUksK0JBQStCLENBQy9CLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RyxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFDeEUsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELHlCQUF5QixDQUFDLGtCQUE2QztRQUNuRSxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUNoRixJQUFJLENBQUMsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBRTlELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxxQ0FBcUMsQ0FBQyxrQkFBNkM7UUFDL0UsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxhQUFtQztRQUNwRCxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUNoRixJQUFJLENBQUMsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBRTlELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxhQUFtQyxFQUFFLHdCQUFpQztRQUNsRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBRXpELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxtQ0FBbUMsQ0FBQyx3QkFBaUM7UUFDakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFDaEYsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQTBCO1FBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQywwQkFBMEIsS0FBSyxJQUFJLENBQUMsMEJBQTBCLENBQUM7SUFDaEYsQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sTUFBTSxHQUFrQixVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLElBQUksSUFBSSxDQUFDLG1DQUFtQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLEdBQWtCLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDcEgsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzdCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDL0QsSUFBSSxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztZQUMzQyxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFVBQVUsQ0FBQztJQUMvRCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsT0FBTyxJQUFJLENBQUMsbUNBQW1DLENBQUMsTUFBTSxDQUFDO0lBQzNELENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUM7SUFDMUQsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLG9CQUFvQixDQUFDLFNBQVMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ2hFLENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssb0JBQW9CLENBQUMsU0FBUztZQUNyRCxJQUFJLENBQUMsYUFBYSxLQUFLLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDO2VBQ3hFLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxLQUFLLENBQUM7SUFDbkQsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxvQkFBb0IsQ0FBQyx3QkFBd0IsQ0FBQztJQUNoRixDQUFDO0lBRUQsMEJBQTBCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxvQkFBb0IsQ0FBQywwQkFBMEIsQ0FBQztJQUNsRixDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxVQUFVLENBQUM7SUFDckYsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbEUsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLElBQUksQ0FBQyxtQ0FBbUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLEtBQUssQ0FBQztJQUN4RyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxxQkFBcUI7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEcsQ0FBQztJQUVELGVBQWU7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEcsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCwrQkFBK0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDekMsQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQTJDO1FBQ2hFLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUV2RSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDNUIsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztZQUM1RixhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZG9tZWluLCBKc0phdmFVdGlsLCBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IHsgQWN0aWUsIEJld2VnaW5nIH0gZnJvbSAnLi4vb3B0aW1vJztcbmltcG9ydCB7IEJld2VnaW5nVXRpbHMgfSBmcm9tICcuLi9zZXJ2aWNlcy9iZXdlZ2luZy11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zaWduYWxlcmluZ3MtYmVlbGQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUgfSBmcm9tICcuL3JpandlZ3BsYW4tcmlqd2VnLWR3YW5nLWNvbWJpbmF0aWUnO1xuXG5leHBvcnQgZW51bSBSaXRkZWVsWmljaHRiYWFyaGVpZCB7XG4gICAgWklDSFRCQUFSID0gMSxcbiAgICBPTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUiA9IDIsXG4gICAgT05aSUNIVEJBQVJfRE9PUl9TWVNURUVNID0gM1xufVxuXG5leHBvcnQgY2xhc3MgUml0ZGVlbCB7XG4gICAgcHJpdmF0ZSBhbHRlcm5hdGlldmVSb3V0ZXM6IHNiYmxhZC5BbHRlcm5hdGl2ZVJvdXRlW10gPSBbXTtcbiAgICBwcml2YXRlIHppY2h0YmFhcmhlaWQgPSBSaXRkZWVsWmljaHRiYWFyaGVpZC5aSUNIVEJBQVI7XG4gICAgcHJpdmF0ZSB6aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmk6IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUsXG4gICAgICAgICAgICAgICAgcHVibGljIGFjdGllczogQWN0aWVbXSxcbiAgICAgICAgICAgICAgICBwdWJsaWMgcmVhZG9ubHkgYmV3ZWdpbmc6IEJld2VnaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHB1YmxpYyB2cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaTogUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwdWJsaWMgdmVydm9sZ1Nwb29yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSB0b3BvRWxlbWVudGVuOiBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50W10pIHtcbiAgICB9XG5cbiAgICBnZXRBbHRlcm5hdGlldmVSb3V0ZXMoKTogc2JibGFkLkFsdGVybmF0aXZlUm91dGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsdGVybmF0aWV2ZVJvdXRlcztcbiAgICB9XG5cbiAgICBjb3B5TWV0RHdhbmcobmlldXdlRHdhbmc6IGRvbWVpbi5Ed2FuZyk6IFJpdGRlZWwge1xuICAgICAgICBjb25zdCBuaWV1d2VSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSA9XG4gICAgICAgICAgICBuZXcgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZShcbiAgICAgICAgICAgICAgICB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZ3BsYW4sIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkucmlqd2VnLCBuaWV1d2VEd2FuZyk7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgUml0ZGVlbChuaWV1d2VSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSwgW10sIHRoaXMuYmV3ZWdpbmcsXG4gICAgICAgICAgICB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCB0aGlzLnZlcnZvbGdTcG9vciwgdGhpcy50b3BvRWxlbWVudGVuKTtcbiAgICAgICAgY29weS5hbHRlcm5hdGlldmVSb3V0ZXMgPSB0aGlzLmFsdGVybmF0aWV2ZVJvdXRlcztcbiAgICAgICAgY29weS56aWNodGJhYXJoZWlkID0gdGhpcy56aWNodGJhYXJoZWlkO1xuICAgICAgICBjb3B5LnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IHRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG5cbiAgICBjb3B5TWV0QWx0ZXJuYXRpZXZlUm91dGVzKGFsdGVybmF0aWV2ZVJvdXRlczogc2JibGFkLkFsdGVybmF0aXZlUm91dGVbXSk6IFJpdGRlZWwge1xuICAgICAgICBjb25zdCBjb3B5ID0gbmV3IFJpdGRlZWwodGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSwgdGhpcy5hY3RpZXMsIHRoaXMuYmV3ZWdpbmcsXG4gICAgICAgICAgICB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCB0aGlzLnZlcnZvbGdTcG9vciwgdGhpcy50b3BvRWxlbWVudGVuKTtcbiAgICAgICAgY29weS5hbHRlcm5hdGlldmVSb3V0ZXMgPSBhbHRlcm5hdGlldmVSb3V0ZXM7XG4gICAgICAgIGNvcHkuemljaHRiYWFyaGVpZCA9IHRoaXMuemljaHRiYWFyaGVpZDtcbiAgICAgICAgY29weS56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWUgPSB0aGlzLnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZTtcblxuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG5cbiAgICBjb3B5TWV0QWx0ZXJuYXRpZXZlUm91dGVzWm9uZGVyQWN0aWVzKGFsdGVybmF0aWV2ZVJvdXRlczogc2JibGFkLkFsdGVybmF0aXZlUm91dGVbXSk6IFJpdGRlZWwge1xuICAgICAgICBjb25zdCBjb3B5ID0gdGhpcy5jb3B5TWV0QWx0ZXJuYXRpZXZlUm91dGVzKGFsdGVybmF0aWV2ZVJvdXRlcyk7XG4gICAgICAgIGlmIChjb3B5LmJld2VnaW5nKSB7XG4gICAgICAgICAgICBjb3B5LmFjdGllcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGNvcHlNZXRaaWNodGJhYXJoZWlkKHppY2h0YmFhcmhlaWQ6IFJpdGRlZWxaaWNodGJhYXJoZWlkKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgUml0ZGVlbCh0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCB0aGlzLmFjdGllcywgdGhpcy5iZXdlZ2luZyxcbiAgICAgICAgICAgIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMudmVydm9sZ1Nwb29yLCB0aGlzLnRvcG9FbGVtZW50ZW4pO1xuICAgICAgICBjb3B5LmFsdGVybmF0aWV2ZVJvdXRlcyA9IHRoaXMuYWx0ZXJuYXRpZXZlUm91dGVzO1xuICAgICAgICBjb3B5LnppY2h0YmFhcmhlaWQgPSB6aWNodGJhYXJoZWlkO1xuICAgICAgICBjb3B5LnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IHRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuXG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGNvcHlNZXRaaWNodGJhYXJoZWlkRW5QYWdpbmF0aWUoemljaHRiYWFyaGVpZDogUml0ZGVlbFppY2h0YmFhcmhlaWQsIHppY2h0YmFhckJ1aXRlblBhZ2luYXRpZTogYm9vbGVhbik6IFJpdGRlZWwge1xuICAgICAgICBjb25zdCBjb3B5ID0gdGhpcy5jb3B5TWV0WmljaHRiYWFyaGVpZCh6aWNodGJhYXJoZWlkKTtcbiAgICAgICAgY29weS56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWUgPSB6aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG5cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgY29weU1ldFppY2h0YmFhcmhlaWRCdWl0ZW5QYWdpbmF0aWUoemljaHRiYWFyQnVpdGVuUGFnaW5hdGllOiBib29sZWFuKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgUml0ZGVlbCh0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCB0aGlzLmFjdGllcywgdGhpcy5iZXdlZ2luZyxcbiAgICAgICAgICAgIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMudmVydm9sZ1Nwb29yLCB0aGlzLnRvcG9FbGVtZW50ZW4pO1xuICAgICAgICBjb3B5LmFsdGVybmF0aWV2ZVJvdXRlcyA9IHRoaXMuYWx0ZXJuYXRpZXZlUm91dGVzO1xuICAgICAgICBjb3B5LnppY2h0YmFhcmhlaWQgPSB0aGlzLnppY2h0YmFhcmhlaWQ7XG4gICAgICAgIGNvcHkuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID0gemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuXG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGVxdWFscyhvdGhlcjogUml0ZGVlbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIW90aGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG90aGVyLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpID09PSB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpO1xuICAgIH1cblxuICAgIGdldFJpandlZ3BsYW4oKTogZG9tZWluLlJpandlZ3BsYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWdwbGFuO1xuICAgIH1cblxuICAgIGdldFJpandlZygpOiBkb21laW4uUmlqd2VnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkucmlqd2VnO1xuICAgIH1cblxuICAgIGdldER3YW5nKCk6IGRvbWVpbi5Ed2FuZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmR3YW5nO1xuICAgIH1cblxuICAgIGdldFJvdXRlKCk6IGRvbWVpbi5Sb3V0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldFJvdXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0U2VpbmVuKCk6IGRvbWVpbi5TZWluW10ge1xuICAgICAgICBjb25zdCBzZWluZW46IGRvbWVpbi5TZWluW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0Um91dGUoKS5nZXRTZWluZW4oKSk7XG4gICAgICAgIGlmICh0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWluOiBkb21laW4uU2VpbltdID0gSnNKYXZhVXRpbC5saXN0VG9BcnJheSh0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldFJvdXRlKCkuZ2V0U2VpbmVuKCkpO1xuICAgICAgICAgICAgc2VpbmVuLnB1c2goLi4uc2Vpbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlaW5lbjtcbiAgICB9XG5cbiAgICBnZXRWYW5QcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXRWYW5QcmxTcG9vcigpO1xuICAgIH1cblxuICAgIGdldFZpc3VlZWxOYWFyUHJsU3Bvb3IoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMudmVydm9sZ1Nwb29yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52ZXJ2b2xnU3Bvb3I7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXROYWFyUHJsU3Bvb3IoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyUHJsU3Bvb3IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0TmFhclBybFNwb29yKCk7XG4gICAgfVxuXG4gICAgZ2V0TmFhclBybFNwb29yVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmV0dmFsID0gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXROYWFyUHJsU3Bvb3IoKTtcbiAgICAgICAgaWYgKHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkpIHtcbiAgICAgICAgICAgIHJldHZhbCArPSAnX2UnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZlcnZvbGdTcG9vcikge1xuICAgICAgICAgICAgcmV0dmFsICs9ICcoJyArIHRoaXMudmVydm9sZ1Nwb29yICsgJyknO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXR2YWw7XG4gICAgfVxuXG4gICAgZ2V0VnJpamViYWFuUmlqd2VncGxhbigpOiBkb21laW4uUmlqd2VncGxhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZ3BsYW47XG4gICAgfVxuXG4gICAgZ2V0VnJpamViYWFuUmlqd2VnKCk6IGRvbWVpbi5SaWp3ZWcge1xuICAgICAgICByZXR1cm4gdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWc7XG4gICAgfVxuXG4gICAgZ2V0VnJpamViYWFuRHdhbmcoKTogZG9tZWluLkR3YW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZHdhbmc7XG4gICAgfVxuXG4gICAgZ2V0RHdhbmdOdW1tZXIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0RHdhbmdOdW1tZXIoKTtcbiAgICB9XG5cbiAgICBnZXRaaWNodGJhYXJoZWlkKCk6IFJpdGRlZWxaaWNodGJhYXJoZWlkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuemljaHRiYWFyaGVpZDtcbiAgICB9XG5cbiAgICBpc1ppY2h0YmFhcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSO1xuICAgIH1cblxuICAgIGlzWmljaHRiYWFyQmlubmVuV2luZG93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ppY2h0YmFhcigpICYmICF0aGlzLnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZTtcbiAgICB9XG5cbiAgICBpc0Jpbm5lbldpbmRvdygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnppY2h0YmFhcmhlaWQgPT09IFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUiB8fFxuICAgICAgICAgICAgICAgIHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuT05aSUNIVEJBQVJfRE9PUl9HRUJSVUlLRVIpXG4gICAgICAgICAgICAmJiB0aGlzLnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9PT0gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNOaWV0QmVzY2hpa2JhYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnppY2h0YmFhcmhlaWQgPT09IFJpdGRlZWxaaWNodGJhYXJoZWlkLk9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTTtcbiAgICB9XG5cbiAgICBpc09uemljaHRiYWFyRG9vckdlYnJ1aWtlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuT05aSUNIVEJBQVJfRE9PUl9HRUJSVUlLRVI7XG4gICAgfVxuXG4gICAgaXNOaWV1dygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmJld2VnaW5nIHx8IHRoaXMuYmV3ZWdpbmcud2lqemlnU3RhdHVzID09PSBCZXdlZ2luZ1V0aWxzLlRPRUdFVk9FR0Q7XG4gICAgfVxuXG4gICAgZ2V0UHBsZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWdwbGFuLmdldFBQTEcoKTtcbiAgICB9XG5cbiAgICBnZXRQcGxnU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmdldFZhblNlaW5QcGxnKCkgPT09IHRoaXMuZ2V0TmFhclNlaW5QcGxnKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhblNlaW5QcGxnKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRWYW5TZWluUHBsZygpICsgJyAvICcgKyB0aGlzLmdldE5hYXJTZWluUHBsZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGVlZnRWcmlqZWJhYW5JbmZvKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSAmJiAhIXRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZHdhbmc7XG4gICAgfVxuXG4gICAgZ2V0VnJpamViYWFuUHJsUm91dGUoKTogZG9tZWluLlJvdXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0Um91dGUoKTtcbiAgICB9XG5cbiAgICBnZXRUb3BvbG9naWVFbGVtZW50ZW4oKTogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9wb0VsZW1lbnRlbjtcbiAgICB9XG5cbiAgICBnZXRCZXdlZ2luZ0lkKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJld2VnaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gJycgKyB0aGlzLmJld2VnaW5nLmlkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBnZXRUcmVpbk51bW1lcigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5iZXdlZ2luZz8udHJlaW5OdW1tZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAnJyArIHRoaXMuYmV3ZWdpbmcudHJlaW5OdW1tZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGdldFZhblNlaW5QcGxnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmJld2VnaW5nID8gdGhpcy5iZXdlZ2luZy52YW5TZWluUHBsZyA6IHRoaXMuZ2V0Um91dGUoKS5nZXRCZWdpblNlaW4oKS5nZXRQUExHKCk7XG4gICAgfVxuXG4gICAgZ2V0TmFhclNlaW5QcGxnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmJld2VnaW5nID8gdGhpcy5iZXdlZ2luZy5uYWFyU2VpblBwbGcgOiB0aGlzLmdldFJvdXRlKCkuZ2V0RWluZFNlaW4oKS5nZXRQUExHKCk7XG4gICAgfVxuXG4gICAgZ2V0VmFuU2Vpbk5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGUoKS5nZXRCZWdpblNlaW4oKS5nZXROYW1lKCk7XG4gICAgfVxuXG4gICAgZ2V0TmFhclNlaW5OYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJvdXRlKCkuZ2V0RWluZFNlaW4oKS5nZXROYW1lKCk7XG4gICAgfVxuXG4gICAgZ2V0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuICAgIH1cblxuICAgIGJlcGFhbFRvcG9sb2dpZUVsZW1lbnRlbihzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvcG9FbGVtZW50ZW4gPSBzYm1TZXJ2aWNlLmJlcGFhbFJvdXRlRWxlbWVudGVuKHRoaXMuZ2V0Um91dGUoKSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGVlZnRWcmlqZWJhYW5JbmZvKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZyaWplYmFhblRvcG9FbGVtZW50ZW4gPSBzYm1TZXJ2aWNlLmJlcGFhbFJvdXRlRWxlbWVudGVuKHRoaXMuZ2V0VnJpamViYWFuUHJsUm91dGUoKSk7XG4gICAgICAgICAgICB0b3BvRWxlbWVudGVuLnB1c2goLi4udnJpamViYWFuVG9wb0VsZW1lbnRlbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b3BvRWxlbWVudGVuID0gdG9wb0VsZW1lbnRlbjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -45,7 +45,7 @@ export class RitLezerService {
|
|
|
45
45
|
ritDelen.push(new Ritdeel(dwangInfo, beweging.ritActies, beweging, vrijebaanDwangInfo, vervolgSpoor, []));
|
|
46
46
|
}
|
|
47
47
|
extractVrijebaanDwangInfo(beweging, rijwegPlan, rijweg) {
|
|
48
|
-
let vrijebaanDwangInfo =
|
|
48
|
+
let vrijebaanDwangInfo = undefined;
|
|
49
49
|
let vervolgSpoor;
|
|
50
50
|
if (beweging.naarSpoor.endsWith(SPOOR_NAAR_VRIJEBAAN_POSTFIX) ||
|
|
51
51
|
beweging.naarSpoor.endsWith(SPOOR_NAAR_VEERWISSEL_VRIJEBAAN_POSTFIX)) {
|
|
@@ -59,9 +59,9 @@ export class RitLezerService {
|
|
|
59
59
|
vrijebaanRijweg = vrijebaanRijwegen[0];
|
|
60
60
|
vrijebaanDwang = vrijebaanRijweg.getDwangVoorDwangNummer(0);
|
|
61
61
|
vervolgSpoor = vrijebaanRijwegplan.getVervolgSpoor(vrijebaanRijweg);
|
|
62
|
+
vrijebaanDwangInfo =
|
|
63
|
+
new RijwegplanRijwegDwangCombinatie(vrijebaanRijwegplan, vrijebaanRijweg, vrijebaanDwang);
|
|
62
64
|
}
|
|
63
|
-
vrijebaanDwangInfo =
|
|
64
|
-
new RijwegplanRijwegDwangCombinatie(vrijebaanRijwegplan, vrijebaanRijweg, vrijebaanDwang);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
return { vrijebaanDwangInfo, vervolgSpoor };
|
|
@@ -101,4 +101,4 @@ export class RitLezerService {
|
|
|
101
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RitLezerService, decorators: [{
|
|
102
102
|
type: Injectable
|
|
103
103
|
}], ctorParameters: () => [{ type: i1.EditorService }, { type: i2.MessagesService }] });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0LWxlemVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvc2VydmljZXMvcml0LWxlemVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUd6RCxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLHVDQUF1QyxHQUFHLElBQUksQ0FBQztBQUdyRCxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUFvQix1QkFBc0MsRUFDN0IsZUFBZ0M7UUFEekMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFlO1FBQzdCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUM3RCxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVEsRUFBRSxzQkFBK0I7UUFDckQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDM0QsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUM3RixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVP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Q0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ25GLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLDJCQUEyQixDQUFDLEtBQWE7UUFDN0MsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxXQUFtQjtRQUM3QyxPQUFPLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xELENBQUM7SUFFTyxXQUFXLENBQUMsUUFBa0I7UUFDbEMsT0FBTyxRQUFRLENBQUMsWUFBWSxLQUFLLFdBQVcsQ0FBQztJQUNqRCxDQUFDOzhHQXJHUSxlQUFlO2tIQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkb21laW4sIEpzSmF2YVV0aWwgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IHsgTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRvbWljLWNvbXBvbmVudHMvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIH0gZnJvbSAnLi4vbW9kZWwvcmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBCZXdlZ2luZywgUml0IH0gZnJvbSAnLi4vb3B0aW1vJztcbmltcG9ydCB7IE1lc3NhZ2VCdWlsZGVyIH0gZnJvbSAnLi4vdXRpbC9tZXNzYWdlLWJ1aWxkZXInO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4vZWRpdG9yLnNlcnZpY2UnO1xuXG5jb25zdCBTUE9PUl9OQUFSX1ZSSUpFQkFBTl9QT1NURklYID0gJ19lJztcbmNvbnN0IFNQT09SX05BQVJfVkVFUldJU1NFTF9WUklKRUJBQU5fUE9TVEZJWCA9ICdfdic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSaXRMZXplclNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmlqd2VnUGxhbkVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlc1NlcnZpY2U6IE1lc3NhZ2VzU2VydmljZSkge1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXJzZVJpdChyaXQ6IFJpdCwgcml0R2V3aWp6aWdkVG9lZ2VzdGFhbjogYm9vbGVhbik6IFJpdGRlZWxbXSB7XG4gICAgICAgIGNvbnN0IHJpdERlbGVuID0gW107XG4gICAgICAgIGNvbnN0IG1pc3NpbmdQcGxncyA9IFtdO1xuICAgICAgICBpZiAoIXRoaXMucml0QmVzdGFuZElzR2V3aWp6aWdkKHJpdCwgcml0R2V3aWp6aWdkVG9lZ2VzdGFhbikpIHtcbiAgICAgICAgICAgIHJpdC5iZXdlZ2luZ2VuLmZvckVhY2goYmV3ZWdpbmcgPT4gdGhpcy5wYXJzZUJld2VnaW5nKGJld2VnaW5nLCByaXREZWxlbiwgbWlzc2luZ1BwbGdzKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJpdERlbGVuO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VCZXdlZ2luZyhiZXdlZ2luZzogQmV3ZWdpbmcsIHJpdERlbGVuOiBhbnlbXSwgbWlzc2luZ1BwbGdzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCByaWp3ZWdQbGFuID0gdGhpcy5nZXRSaWp3ZWdQbGFuKGJld2VnaW5nLnZhblBwbGcpO1xuICAgICAgICBpZiAoIXJpandlZ1BsYW4pIHtcbiAgICAgICAgICAgIGlmICghbWlzc2luZ1BwbGdzLmluY2x1ZGVzKGJld2VnaW5nLnZhblBwbGcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1NlcnZpY2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIucmlqd2VncGxhbk5pZXRHZXZvbmRlbihiZXdlZ2luZykpO1xuICAgICAgICAgICAgICAgIG1pc3NpbmdQcGxncy5wdXNoKGJld2VnaW5nLnZhblBwbGcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJpandlZyA9IHRoaXMuZ2V0Umlqd2VnKHJpandlZ1BsYW4sIGJld2VnaW5nLnZhblNwb29yLCBiZXdlZ2luZy5uYWFyU3Bvb3IpO1xuICAgICAgICBpZiAoIXJpandlZykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1NlcnZpY2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIucmlqd2VnTmlldEdldm9uZGVuKGJld2VnaW5nKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkd2FuZyA9IHRoaXMuZ2V0RHdhbmcocmlqd2VnLCBiZXdlZ2luZy5kd2FuZ051bW1lcik7XG4gICAgICAgIGlmICghZHdhbmcpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJ2aWNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLmR3YW5nTmlldEdldm9uZGVuKGJld2VnaW5nKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB2cmlqZWJhYW5Ed2FuZ0luZm8sIHZlcnZvbGdTcG9vciB9ID0gdGhpcy5leHRyYWN0VnJpamViYWFuRHdhbmdJbmZvKGJld2VnaW5nLCByaWp3ZWdQbGFuLCByaWp3ZWcpO1xuICAgICAgICBjb25zdCBkd2FuZ0luZm8gPSBuZXcgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZShyaWp3ZWdQbGFuLCByaWp3ZWcsIGR3YW5nKTtcbiAgICAgICAgcml0RGVsZW4ucHVzaChuZXcgUml0ZGVlbChkd2FuZ0luZm8sIGJld2VnaW5nLnJpdEFjdGllcywgYmV3ZWdpbmcsIHZyaWplYmFhbkR3YW5nSW5mbywgdmVydm9sZ1Nwb29yLCBbXSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdFZyaWplYmFhbkR3YW5nSW5mbyhiZXdlZ2luZzogQmV3ZWdpbmcsIHJpandlZ1BsYW46IGRvbWVpbi5SaWp3ZWdwbGFuLCByaWp3ZWc6IGRvbWVpbi5SaWp3ZWcpIHtcbiAgICAgICAgbGV0IHZyaWplYmFhbkR3YW5nSW5mbyA9IG51bGw7XG4gICAgICAgIGxldCB2ZXJ2b2xnU3Bvb3I7XG4gICAgICAgIGlmIChiZXdlZ2luZy5uYWFyU3Bvb3IuZW5kc1dpdGgoU1BPT1JfTkFBUl9WUklKRUJBQU5fUE9TVEZJWCkgfHxcbiAgICAgICAgICAgIGJld2VnaW5nLm5hYXJTcG9vci5lbmRzV2l0aChTUE9PUl9OQUFSX1ZFRVJXSVNTRUxfVlJJSkVCQUFOX1BPU1RGSVgpKSB7XG4gICAgICAgICAgICBsZXQgdnJpamViYWFuUmlqd2VnOiBkb21laW4uUmlqd2VnO1xuICAgICAgICAgICAgbGV0IHZyaWplYmFhbkR3YW5nO1xuICAgICAgICAgICAgY29uc3QgdnJpamViYWFuUmlqd2VncGxhbiA9XG4gICAgICAgICAgICAgICAgdGhpcy5yaWp3ZWdQbGFuRWRpdG9yU2VydmljZS5nZXRWcmlqZWJhYW5SaWp3ZWdwbGFuKHJpandlZ1BsYW4uZ2V0UFBMRygpLFxuICAgICAgICAgICAgICAgICAgICByaWp3ZWcuZ2V0RWluZFNlaW4oKS5nZXROYW1lKCkpO1xuICAgICAgICAgICAgaWYgKHZyaWplYmFhblJpandlZ3BsYW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWp3ZWdlbkFycmF5OiBkb21laW4uUmlqd2VnW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHZyaWplYmFhblJpandlZ3BsYW4uZ2V0Umlqd2VnZW4oKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2cmlqZWJhYW5SaWp3ZWdlbiA9XG4gICAgICAgICAgICAgICAgICAgIHJpandlZ2VuQXJyYXkuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgdmJSaWp3ZWcgPT4gdmJSaWp3ZWcuZ2V0QmVnaW5TZWluKCkuZ2V0TmFtZSgpID09PSByaWp3ZWcuZ2V0RWluZFNlaW4oKS5nZXROYW1lKCkpO1xuICAgICAgICAgICAgICAgIGlmICh2cmlqZWJhYW5SaWp3ZWdlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZyaWplYmFhblJpandlZyA9IHZyaWplYmFhblJpandlZ2VuWzBdO1xuICAgICAgICAgICAgICAgICAgICB2cmlqZWJhYW5Ed2FuZyA9IHZyaWplYmFhblJpandlZy5nZXREd2FuZ1Zvb3JEd2FuZ051bW1lcigwKTtcbiAgICAgICAgICAgICAgICAgICAgdmVydm9sZ1Nwb29yID0gdnJpamViYWFuUmlqd2VncGxhbi5nZXRWZXJ2b2xnU3Bvb3IodnJpamViYWFuUmlqd2VnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdnJpamViYWFuRHdhbmdJbmZvID1cbiAgICAgICAgICAgICAgICAgICAgbmV3IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUodnJpamViYWFuUmlqd2VncGxhbiwgdnJpamViYWFuUmlqd2VnLCB2cmlqZWJhYW5Ed2FuZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdnJpamViYWFuRHdhbmdJbmZvLCB2ZXJ2b2xnU3Bvb3IgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJpandlZ1BsYW4ocHBsZzogc3RyaW5nKTogZG9tZWluLlJpandlZ3BsYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdQbGFuRWRpdG9yU2VydmljZS5nZXRSaWp3ZWdwbGFuKHBwbGcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHdhbmcocmlqd2VnOiBkb21laW4uUmlqd2VnLCBkd2FuZ051bW1lcjogbnVtYmVyKTogZG9tZWluLkR3YW5nIHtcbiAgICAgICAgcmV0dXJuIHJpandlZy5nZXREd2FuZ1Zvb3JEd2FuZ051bW1lcih0aGlzLmNvbnZlcnRlZXJEd2FuZ051bW1lcihkd2FuZ051bW1lcikpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Umlqd2VnKHJpandlZ1BsYW46IGRvbWVpbi5SaWp3ZWdwbGFuLCB2YW5TcG9vcjogc3RyaW5nLCBuYWFyU3Bvb3I6IHN0cmluZyk6IGRvbWVpbi5SaWp3ZWcge1xuICAgICAgICBjb25zdCB2YW5QcmxTcG9vciA9IHRoaXMudmVyd2lqZGVyRXh0ZW5kZWRJbmZvcm1hdGllKHZhblNwb29yKTtcbiAgICAgICAgY29uc3QgbmFhclBybFNwb29yID0gdGhpcy52ZXJ3aWpkZXJFeHRlbmRlZEluZm9ybWF0aWUobmFhclNwb29yKTtcbiAgICAgICAgcmV0dXJuIHJpandlZ1BsYW4uZ2V0Umlqd2VnKHZhblBybFNwb29yLCBuYWFyUHJsU3Bvb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcml0QmVzdGFuZElzR2V3aWp6aWdkKHJpdDogUml0LCByaXRHZXdpanppZ2RUb2VnZXN0YWFuOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIGZvciAoY29uc3QgYmV3ZWdpbmcgb2Ygcml0LmJld2VnaW5nZW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzR2V3aWp6aWdkKGJld2VnaW5nKSAmJiAhcml0R2V3aWp6aWdkVG9lZ2VzdGFhbikge1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJ2aWNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLnJpdEZpbGVBbEdld2lqemlnZEVycm9yKGJld2VnaW5nKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2lqZGVyRXh0ZW5kZWRJbmZvcm1hdGllKHNwb29yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3Bvb3Iuc3BsaXQoJ18nKVswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRlZXJEd2FuZ051bW1lcihkd2FuZ051bW1lcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChkd2FuZ051bW1lciA9PT0gLTEpID8gMCA6IGR3YW5nTnVtbWVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNHZXdpanppZ2QoYmV3ZWdpbmc6IEJld2VnaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBiZXdlZ2luZy53aWp6aWdTdGF0dXMgPT09ICdHZXdpanppZ2QnO1xuICAgIH1cbn1cbiJdfQ==
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0LWxlemVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvc2VydmljZXMvcml0LWxlemVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUd6RCxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLHVDQUF1QyxHQUFHLElBQUksQ0FBQztBQUdyRCxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUFvQix1QkFBc0MsRUFDN0IsZUFBZ0M7UUFEekMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFlO1FBQzdCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUM3RCxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVEsRUFBRSxzQkFBK0I7UUFDckQsTUFBTSxRQUFRLEdBQWMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sWUFBWSxHQUFhLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDM0QsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUM3RixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVP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ZSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDbkYsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sMkJBQTJCLENBQUMsS0FBYTtRQUM3QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFdBQW1CO1FBQzdDLE9BQU8sQ0FBQyxXQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbEQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxRQUFrQjtRQUNsQyxPQUFPLFFBQVEsQ0FBQyxZQUFZLEtBQUssV0FBVyxDQUFDO0lBQ2pELENBQUM7OEdBdEdRLGVBQWU7a0hBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRvbWVpbiwgSnNKYXZhVXRpbCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi9hdG9taWMtY29tcG9uZW50cy9zZXJ2aWNlcy9tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUgfSBmcm9tICcuLi9tb2RlbC9yaWp3ZWdwbGFuLXJpandlZy1kd2FuZy1jb21iaW5hdGllJztcbmltcG9ydCB7IFJpdGRlZWwgfSBmcm9tICcuLi9tb2RlbC9yaXRkZWVsJztcbmltcG9ydCB7IEJld2VnaW5nLCBSaXQgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgTWVzc2FnZUJ1aWxkZXIgfSBmcm9tICcuLi91dGlsL21lc3NhZ2UtYnVpbGRlcic7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi9lZGl0b3Iuc2VydmljZSc7XG5cbmNvbnN0IFNQT09SX05BQVJfVlJJSkVCQUFOX1BPU1RGSVggPSAnX2UnO1xuY29uc3QgU1BPT1JfTkFBUl9WRUVSV0lTU0VMX1ZSSUpFQkFBTl9QT1NURklYID0gJ192JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJpdExlemVyU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByaWp3ZWdQbGFuRWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VzU2VydmljZTogTWVzc2FnZXNTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlUml0KHJpdDogUml0LCByaXRHZXdpanppZ2RUb2VnZXN0YWFuOiBib29sZWFuKTogUml0ZGVlbFtdIHtcbiAgICAgICAgY29uc3Qgcml0RGVsZW46IFJpdGRlZWxbXSA9IFtdO1xuICAgICAgICBjb25zdCBtaXNzaW5nUHBsZ3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmICghdGhpcy5yaXRCZXN0YW5kSXNHZXdpanppZ2Qocml0LCByaXRHZXdpanppZ2RUb2VnZXN0YWFuKSkge1xuICAgICAgICAgICAgcml0LmJld2VnaW5nZW4uZm9yRWFjaChiZXdlZ2luZyA9PiB0aGlzLnBhcnNlQmV3ZWdpbmcoYmV3ZWdpbmcsIHJpdERlbGVuLCBtaXNzaW5nUHBsZ3MpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcml0RGVsZW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUJld2VnaW5nKGJld2VnaW5nOiBCZXdlZ2luZywgcml0RGVsZW46IFJpdGRlZWxbXSwgbWlzc2luZ1BwbGdzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCByaWp3ZWdQbGFuID0gdGhpcy5nZXRSaWp3ZWdQbGFuKGJld2VnaW5nLnZhblBwbGcpO1xuICAgICAgICBpZiAoIXJpandlZ1BsYW4pIHtcbiAgICAgICAgICAgIGlmICghbWlzc2luZ1BwbGdzLmluY2x1ZGVzKGJld2VnaW5nLnZhblBwbGcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1NlcnZpY2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIucmlqd2VncGxhbk5pZXRHZXZvbmRlbihiZXdlZ2luZykpO1xuICAgICAgICAgICAgICAgIG1pc3NpbmdQcGxncy5wdXNoKGJld2VnaW5nLnZhblBwbGcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJpandlZyA9IHRoaXMuZ2V0Umlqd2VnKHJpandlZ1BsYW4sIGJld2VnaW5nLnZhblNwb29yLCBiZXdlZ2luZy5uYWFyU3Bvb3IpO1xuICAgICAgICBpZiAoIXJpandlZykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1NlcnZpY2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIucmlqd2VnTmlldEdldm9uZGVuKGJld2VnaW5nKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkd2FuZyA9IHRoaXMuZ2V0RHdhbmcocmlqd2VnLCBiZXdlZ2luZy5kd2FuZ051bW1lcik7XG4gICAgICAgIGlmICghZHdhbmcpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJ2aWNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLmR3YW5nTmlldEdldm9uZGVuKGJld2VnaW5nKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB2cmlqZWJhYW5Ed2FuZ0luZm8sIHZlcnZvbGdTcG9vciB9ID0gdGhpcy5leHRyYWN0VnJpamViYWFuRHdhbmdJbmZvKGJld2VnaW5nLCByaWp3ZWdQbGFuLCByaWp3ZWcpO1xuICAgICAgICBjb25zdCBkd2FuZ0luZm8gPSBuZXcgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZShyaWp3ZWdQbGFuLCByaWp3ZWcsIGR3YW5nKTtcbiAgICAgICAgcml0RGVsZW4ucHVzaChuZXcgUml0ZGVlbChkd2FuZ0luZm8sIGJld2VnaW5nLnJpdEFjdGllcywgYmV3ZWdpbmcsIHZyaWplYmFhbkR3YW5nSW5mbywgdmVydm9sZ1Nwb29yLCBbXSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdFZyaWplYmFhbkR3YW5nSW5mbyhiZXdlZ2luZzogQmV3ZWdpbmcsIHJpandlZ1BsYW46IGRvbWVpbi5SaWp3ZWdwbGFuLCByaWp3ZWc6IGRvbWVpbi5SaWp3ZWcpOiB7IHZyaWplYmFhbkR3YW5nSW5mbzogUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSB8IHVuZGVmaW5lZCwgdmVydm9sZ1Nwb29yOiBzdHJpbmcgfCB1bmRlZmluZWQgfSB7XG4gICAgICAgIGxldCB2cmlqZWJhYW5Ed2FuZ0luZm86IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB2ZXJ2b2xnU3Bvb3I7XG4gICAgICAgIGlmIChiZXdlZ2luZy5uYWFyU3Bvb3IuZW5kc1dpdGgoU1BPT1JfTkFBUl9WUklKRUJBQU5fUE9TVEZJWCkgfHxcbiAgICAgICAgICAgIGJld2VnaW5nLm5hYXJTcG9vci5lbmRzV2l0aChTUE9PUl9OQUFSX1ZFRVJXSVNTRUxfVlJJSkVCQUFOX1BPU1RGSVgpKSB7XG4gICAgICAgICAgICBsZXQgdnJpamViYWFuUmlqd2VnOiBkb21laW4uUmlqd2VnO1xuICAgICAgICAgICAgbGV0IHZyaWplYmFhbkR3YW5nO1xuICAgICAgICAgICAgY29uc3QgdnJpamViYWFuUmlqd2VncGxhbiA9XG4gICAgICAgICAgICAgICAgdGhpcy5yaWp3ZWdQbGFuRWRpdG9yU2VydmljZS5nZXRWcmlqZWJhYW5SaWp3ZWdwbGFuKHJpandlZ1BsYW4uZ2V0UFBMRygpLFxuICAgICAgICAgICAgICAgICAgICByaWp3ZWcuZ2V0RWluZFNlaW4oKS5nZXROYW1lKCkpO1xuICAgICAgICAgICAgaWYgKHZyaWplYmFhblJpandlZ3BsYW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWp3ZWdlbkFycmF5OiBkb21laW4uUmlqd2VnW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHZyaWplYmFhblJpandlZ3BsYW4uZ2V0Umlqd2VnZW4oKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2cmlqZWJhYW5SaWp3ZWdlbiA9XG4gICAgICAgICAgICAgICAgICAgIHJpandlZ2VuQXJyYXkuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgdmJSaWp3ZWcgPT4gdmJSaWp3ZWcuZ2V0QmVnaW5TZWluKCkuZ2V0TmFtZSgpID09PSByaWp3ZWcuZ2V0RWluZFNlaW4oKS5nZXROYW1lKCkpO1xuICAgICAgICAgICAgICAgIGlmICh2cmlqZWJhYW5SaWp3ZWdlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZyaWplYmFhblJpandlZyA9IHZyaWplYmFhblJpandlZ2VuWzBdO1xuICAgICAgICAgICAgICAgICAgICB2cmlqZWJhYW5Ed2FuZyA9IHZyaWplYmFhblJpandlZy5nZXREd2FuZ1Zvb3JEd2FuZ051bW1lcigwKTtcbiAgICAgICAgICAgICAgICAgICAgdmVydm9sZ1Nwb29yID0gdnJpamViYWFuUmlqd2VncGxhbi5nZXRWZXJ2b2xnU3Bvb3IodnJpamViYWFuUmlqd2VnKTtcblxuICAgICAgICAgICAgICAgICAgICB2cmlqZWJhYW5Ed2FuZ0luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUodnJpamViYWFuUmlqd2VncGxhbiwgdnJpamViYWFuUmlqd2VnLCB2cmlqZWJhYW5Ed2FuZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHZyaWplYmFhbkR3YW5nSW5mbywgdmVydm9sZ1Nwb29yIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSaWp3ZWdQbGFuKHBwbGc6IHN0cmluZyk6IGRvbWVpbi5SaWp3ZWdwbGFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VnUGxhbkVkaXRvclNlcnZpY2UuZ2V0Umlqd2VncGxhbihwcGxnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldER3YW5nKHJpandlZzogZG9tZWluLlJpandlZywgZHdhbmdOdW1tZXI6IG51bWJlcik6IGRvbWVpbi5Ed2FuZyB7XG4gICAgICAgIHJldHVybiByaWp3ZWcuZ2V0RHdhbmdWb29yRHdhbmdOdW1tZXIodGhpcy5jb252ZXJ0ZWVyRHdhbmdOdW1tZXIoZHdhbmdOdW1tZXIpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJpandlZyhyaWp3ZWdQbGFuOiBkb21laW4uUmlqd2VncGxhbiwgdmFuU3Bvb3I6IHN0cmluZywgbmFhclNwb29yOiBzdHJpbmcpOiBkb21laW4uUmlqd2VnIHtcbiAgICAgICAgY29uc3QgdmFuUHJsU3Bvb3IgPSB0aGlzLnZlcndpamRlckV4dGVuZGVkSW5mb3JtYXRpZSh2YW5TcG9vcik7XG4gICAgICAgIGNvbnN0IG5hYXJQcmxTcG9vciA9IHRoaXMudmVyd2lqZGVyRXh0ZW5kZWRJbmZvcm1hdGllKG5hYXJTcG9vcik7XG4gICAgICAgIHJldHVybiByaWp3ZWdQbGFuLmdldFJpandlZyh2YW5QcmxTcG9vciwgbmFhclBybFNwb29yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJpdEJlc3RhbmRJc0dld2lqemlnZChyaXQ6IFJpdCwgcml0R2V3aWp6aWdkVG9lZ2VzdGFhbjogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGNvbnN0IGJld2VnaW5nIG9mIHJpdC5iZXdlZ2luZ2VuKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0dld2lqemlnZChiZXdlZ2luZykgJiYgIXJpdEdld2lqemlnZFRvZWdlc3RhYW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzU2VydmljZS5zaG93TWVzc2FnZShNZXNzYWdlQnVpbGRlci5yaXRGaWxlQWxHZXdpanppZ2RFcnJvcihiZXdlZ2luZykpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcndpamRlckV4dGVuZGVkSW5mb3JtYXRpZShzcG9vcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHNwb29yLnNwbGl0KCdfJylbMF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0ZWVyRHdhbmdOdW1tZXIoZHdhbmdOdW1tZXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoZHdhbmdOdW1tZXIgPT09IC0xKSA/IDAgOiBkd2FuZ051bW1lcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzR2V3aWp6aWdkKGJld2VnaW5nOiBCZXdlZ2luZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYmV3ZWdpbmcud2lqemlnU3RhdHVzID09PSAnR2V3aWp6aWdkJztcbiAgICB9XG59XG4iXX0=
|