@loxia/mst-viewer 8.1.3-202512221725 → 8.1.3-202512242157
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/generated/openapi/api/api.mjs +26 -0
- package/esm2022/generated/openapi/api/appConfigController.service.mjs +140 -0
- package/esm2022/generated/openapi/api/appConfigController.serviceInterface.mjs +2 -0
- package/esm2022/generated/openapi/api/bewegingController.service.mjs +155 -0
- package/esm2022/generated/openapi/api/bewegingController.serviceInterface.mjs +2 -0
- package/esm2022/generated/openapi/api/class0BuildProperties.service.mjs +140 -0
- package/esm2022/generated/openapi/api/class0BuildProperties.serviceInterface.mjs +2 -0
- package/esm2022/generated/openapi/api/connectorController.service.mjs +146 -0
- package/esm2022/generated/openapi/api/connectorController.serviceInterface.mjs +2 -0
- package/esm2022/generated/openapi/api/logController.service.mjs +150 -0
- package/esm2022/generated/openapi/api/logController.serviceInterface.mjs +2 -0
- package/esm2022/generated/openapi/api/p21Controller.service.mjs +236 -0
- package/esm2022/generated/openapi/api/p21Controller.serviceInterface.mjs +2 -0
- package/esm2022/generated/openapi/api/sbController.service.mjs +203 -0
- package/esm2022/generated/openapi/api/sbController.serviceInterface.mjs +2 -0
- package/esm2022/generated/openapi/api/svgController.service.mjs +155 -0
- package/esm2022/generated/openapi/api/svgController.serviceInterface.mjs +2 -0
- package/esm2022/generated/openapi/api.module.mjs +40 -0
- package/esm2022/generated/openapi/configuration.mjs +99 -0
- package/esm2022/generated/openapi/encoder.mjs +19 -0
- package/esm2022/generated/openapi/index.mjs +7 -0
- package/esm2022/generated/openapi/model/actieDto.mjs +13 -0
- package/esm2022/generated/openapi/model/algemeneRitDto.mjs +13 -0
- package/esm2022/generated/openapi/model/bewegingDto.mjs +2 -0
- package/esm2022/generated/openapi/model/frontendKeycloakConfig.mjs +13 -0
- package/esm2022/generated/openapi/model/frontendProperties.mjs +2 -0
- package/esm2022/generated/openapi/model/kilometrering.mjs +13 -0
- package/esm2022/generated/openapi/model/logDto.mjs +2 -0
- package/esm2022/generated/openapi/model/models.mjs +18 -0
- package/esm2022/generated/openapi/model/ritRequestDto.mjs +2 -0
- package/esm2022/generated/openapi/model/sein.mjs +10 -0
- package/esm2022/generated/openapi/model/signaleringsElement.mjs +13 -0
- package/esm2022/generated/openapi/model/signaleringsbeeldDto.mjs +13 -0
- package/esm2022/generated/openapi/model/spoornummer.mjs +13 -0
- package/esm2022/generated/openapi/model/spoortakFragment.mjs +2 -0
- package/esm2022/generated/openapi/model/svgInfoDto.mjs +2 -0
- package/esm2022/generated/openapi/model/svgTopology.mjs +2 -0
- package/esm2022/generated/openapi/model/topologyElement.mjs +2 -0
- package/esm2022/generated/openapi/model/wissel.mjs +2 -0
- package/esm2022/generated/openapi/param.mjs +2 -0
- package/esm2022/generated/openapi/variables.mjs +9 -0
- package/esm2022/generated.version.mjs +2 -0
- package/esm2022/lib/atomic-components/message/index.mjs +4 -0
- package/esm2022/lib/atomic-components/message/message.component.mjs +34 -0
- package/esm2022/lib/atomic-components/message/message.mjs +8 -0
- package/esm2022/lib/atomic-components/message/severity.enum.mjs +9 -0
- package/esm2022/lib/atomic-components/messages/messages.component.mjs +20 -0
- package/esm2022/lib/atomic-components/overlay/overlay.component.mjs +11 -0
- package/esm2022/lib/atomic-components/progress-indicator/progress-indicator.component.mjs +11 -0
- package/esm2022/lib/atomic-components/progress-indicator/progress-indicator.entity.mjs +11 -0
- package/esm2022/lib/atomic-components/services/messages.service.mjs +27 -0
- package/esm2022/lib/components/carousel-controls/carousel-controls.component.mjs +39 -0
- package/esm2022/lib/components/mstviewer/mstviewer.component.mjs +116 -0
- package/esm2022/lib/components/ritdelen-lijst/ritdelen-lijst.component.mjs +273 -0
- package/esm2022/lib/components/ritdelen-view/ritdelen-view.component.mjs +103 -0
- package/esm2022/lib/components/rpe/rpe.component.mjs +37 -0
- package/esm2022/lib/components/svg-visualisatie/svg-visualisatie.component.mjs +275 -0
- package/esm2022/lib/components/viewer-controls/viewer-controls.component.mjs +55 -0
- package/esm2022/lib/model/alternatief-rit-deel.mjs +7 -0
- package/esm2022/lib/model/km-range.mjs +39 -0
- package/esm2022/lib/model/melding-event.mjs +7 -0
- package/esm2022/lib/model/nieuwe-route.mjs +10 -0
- package/esm2022/lib/model/ongeplande-actie.mjs +7 -0
- package/esm2022/lib/model/rijwegplan-rijweg-dwang-combinatie.mjs +24 -0
- package/esm2022/lib/model/ritdeel.mjs +205 -0
- package/esm2022/lib/model/sein-op-ritdeel.mjs +7 -0
- package/esm2022/lib/model/wissel-kant-code.mjs +7 -0
- package/esm2022/lib/mst-viewer.module.mjs +144 -0
- package/esm2022/lib/optimo.mjs +9 -0
- package/esm2022/lib/resources/mstlogging.resource.mjs +25 -0
- package/esm2022/lib/resources/signaleringsbeeldinfo.resource.mjs +66 -0
- package/esm2022/lib/services/base-rest.service.mjs +28 -0
- package/esm2022/lib/services/beweging-utils.service.mjs +139 -0
- package/esm2022/lib/services/beweging-verrijker.service.mjs +30 -0
- package/esm2022/lib/services/connector.service.mjs +30 -0
- package/esm2022/lib/services/debug.service.mjs +59 -0
- package/esm2022/lib/services/editor.service.mjs +50 -0
- package/esm2022/lib/services/print-beweging.service.mjs +69 -0
- package/esm2022/lib/services/rit-lezer.service.mjs +104 -0
- package/esm2022/lib/services/signalerings-beeld-manager.service.mjs +92 -0
- package/esm2022/lib/services/viewer-control.service.mjs +84 -0
- package/esm2022/lib/state/actions/actions.mjs +133 -0
- package/esm2022/lib/state/actions/ritdelen.actions.mjs +45 -0
- package/esm2022/lib/state/effect/bepaal-ongeplande-acties.effect.mjs +79 -0
- package/esm2022/lib/state/effect/bepaal-sb-infos.effect.mjs +67 -0
- package/esm2022/lib/state/effect/beweging-invoegen.effect.mjs +73 -0
- package/esm2022/lib/state/effect/delete-ongeplande-actie.effect.mjs +39 -0
- package/esm2022/lib/state/effect/focus-effect.mjs +36 -0
- package/esm2022/lib/state/effect/laad-route-files.effect.mjs +64 -0
- package/esm2022/lib/state/effect/laad-signaleringsbeelden.effect.mjs +361 -0
- package/esm2022/lib/state/effect/rit-goedkeuren.effect.mjs +23 -0
- package/esm2022/lib/state/effect/ritdelen.effect.mjs +113 -0
- package/esm2022/lib/state/effect/svg-view.effect.mjs +89 -0
- package/esm2022/lib/state/mst-editor-state.mjs +88 -0
- package/esm2022/lib/state/reducer/rit-delen.reducer.mjs +62 -0
- package/esm2022/lib/util/actie-helper.mjs +441 -0
- package/esm2022/lib/util/actie-popover-bepaler.mjs +90 -0
- package/esm2022/lib/util/date.service.mjs +17 -0
- package/esm2022/lib/util/logging-helper.mjs +56 -0
- package/esm2022/lib/util/melding-builder.mjs +13 -0
- package/esm2022/lib/util/message-builder.mjs +32 -0
- package/esm2022/lib/util/multi-map.mjs +75 -0
- package/esm2022/lib/util/utils.mjs +35 -0
- package/esm2022/lib/util/zone-util.mjs +33 -0
- package/esm2022/loxia-mst-viewer.mjs +5 -0
- package/esm2022/public-api.mjs +9 -0
- package/esm2022/src/generated/openapi/api/api.mjs +26 -0
- package/esm2022/src/generated/openapi/api/appConfigController.service.mjs +140 -0
- package/esm2022/src/generated/openapi/api/appConfigController.serviceInterface.mjs +2 -0
- package/esm2022/src/generated/openapi/api/bewegingController.service.mjs +155 -0
- package/esm2022/src/generated/openapi/api/bewegingController.serviceInterface.mjs +2 -0
- package/esm2022/src/generated/openapi/api/class0BuildProperties.service.mjs +140 -0
- package/esm2022/src/generated/openapi/api/class0BuildProperties.serviceInterface.mjs +2 -0
- package/esm2022/src/generated/openapi/api/connectorController.service.mjs +146 -0
- package/esm2022/src/generated/openapi/api/connectorController.serviceInterface.mjs +2 -0
- package/esm2022/src/generated/openapi/api/logController.service.mjs +150 -0
- package/esm2022/src/generated/openapi/api/logController.serviceInterface.mjs +2 -0
- package/esm2022/src/generated/openapi/api/p21Controller.service.mjs +236 -0
- package/esm2022/src/generated/openapi/api/p21Controller.serviceInterface.mjs +2 -0
- package/esm2022/src/generated/openapi/api/sbController.service.mjs +203 -0
- package/esm2022/src/generated/openapi/api/sbController.serviceInterface.mjs +2 -0
- package/esm2022/src/generated/openapi/api/svgController.service.mjs +155 -0
- package/esm2022/src/generated/openapi/api/svgController.serviceInterface.mjs +2 -0
- package/esm2022/src/generated/openapi/api.module.mjs +40 -0
- package/esm2022/src/generated/openapi/configuration.mjs +99 -0
- package/esm2022/src/generated/openapi/encoder.mjs +19 -0
- package/esm2022/src/generated/openapi/index.mjs +7 -0
- package/esm2022/src/generated/openapi/loxia-mst-viewer-src-generated-openapi.mjs +5 -0
- package/esm2022/src/generated/openapi/model/actieDto.mjs +13 -0
- package/esm2022/src/generated/openapi/model/algemeneRitDto.mjs +13 -0
- package/esm2022/src/generated/openapi/model/bewegingDto.mjs +2 -0
- package/esm2022/src/generated/openapi/model/frontendKeycloakConfig.mjs +13 -0
- package/esm2022/src/generated/openapi/model/frontendProperties.mjs +2 -0
- package/esm2022/src/generated/openapi/model/kilometrering.mjs +13 -0
- package/esm2022/src/generated/openapi/model/logDto.mjs +2 -0
- package/esm2022/src/generated/openapi/model/models.mjs +18 -0
- package/esm2022/src/generated/openapi/model/ritRequestDto.mjs +2 -0
- package/esm2022/src/generated/openapi/model/sein.mjs +10 -0
- package/esm2022/src/generated/openapi/model/signaleringsElement.mjs +13 -0
- package/esm2022/src/generated/openapi/model/signaleringsbeeldDto.mjs +13 -0
- package/esm2022/src/generated/openapi/model/spoornummer.mjs +13 -0
- package/esm2022/src/generated/openapi/model/spoortakFragment.mjs +2 -0
- package/esm2022/src/generated/openapi/model/svgInfoDto.mjs +2 -0
- package/esm2022/src/generated/openapi/model/svgTopology.mjs +2 -0
- package/esm2022/src/generated/openapi/model/topologyElement.mjs +2 -0
- package/esm2022/src/generated/openapi/model/wissel.mjs +2 -0
- package/esm2022/src/generated/openapi/param.mjs +2 -0
- package/esm2022/src/generated/openapi/variables.mjs +9 -0
- package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs +224 -43
- package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs.map +1 -1
- package/fesm2022/loxia-mst-viewer.mjs +774 -533
- package/fesm2022/loxia-mst-viewer.mjs.map +1 -1
- package/generated/openapi/api/api.d.ts +4 -1
- package/generated/openapi/api/sbController.service.d.ts +8 -8
- package/generated/openapi/api/sbController.serviceInterface.d.ts +3 -3
- package/generated/openapi/api/svgController.service.d.ts +40 -0
- package/generated/openapi/api/svgController.serviceInterface.d.ts +27 -0
- package/generated/openapi/model/algemeneRitDto.d.ts +0 -8
- package/generated/openapi/model/{signaleringsbeeldRequestDto.d.ts → kilometrering.d.ts} +3 -4
- package/generated/openapi/model/models.d.ts +9 -1
- package/generated/openapi/model/sein.d.ts +46 -0
- package/{src/generated/openapi/model/signaleringsbeeldRequestDto.d.ts → generated/openapi/model/signaleringsElement.d.ts} +4 -4
- package/generated/openapi/model/spoornummer.d.ts +17 -0
- package/generated/openapi/model/spoortakFragment.d.ts +26 -0
- package/generated/openapi/model/svgInfoDto.d.ts +16 -0
- package/generated/openapi/model/svgTopology.d.ts +21 -0
- package/generated/openapi/model/topologyElement.d.ts +18 -0
- package/generated/openapi/model/wissel.d.ts +31 -0
- package/lib/atomic-components/message/message.component.d.ts +2 -2
- package/lib/atomic-components/overlay/overlay.component.d.ts +1 -1
- package/lib/atomic-components/progress-indicator/progress-indicator.entity.d.ts +1 -1
- package/lib/components/carousel-controls/carousel-controls.component.d.ts +1 -3
- package/lib/components/mstviewer/mstviewer.component.d.ts +2 -2
- package/lib/components/ritdelen-lijst/ritdelen-lijst.component.d.ts +2 -2
- package/lib/components/rpe/rpe.component.d.ts +1 -1
- package/lib/components/svg-visualisatie/svg-visualisatie.component.d.ts +2 -1
- package/lib/components/viewer-controls/viewer-controls.component.d.ts +3 -4
- package/lib/model/km-range.d.ts +1 -1
- package/lib/model/nieuwe-route.d.ts +2 -2
- package/lib/model/ritdeel.d.ts +11 -10
- package/lib/resources/signaleringsbeeldinfo.resource.d.ts +10 -15
- package/lib/services/editor.service.d.ts +2 -2
- package/lib/services/print-beweging.service.d.ts +4 -6
- package/lib/services/rit-lezer.service.d.ts +1 -1
- package/lib/services/signalerings-beeld-manager.service.d.ts +2 -2
- package/lib/services/viewer-control.service.d.ts +0 -5
- package/lib/state/actions/actions.d.ts +23 -22
- package/lib/state/actions/ritdelen.actions.d.ts +3 -7
- package/lib/state/effect/bepaal-ongeplande-acties.effect.d.ts +2 -1
- package/lib/state/effect/delete-ongeplande-actie.effect.d.ts +1 -1
- package/lib/state/effect/laad-route-files.effect.d.ts +4 -5
- package/lib/state/effect/laad-signaleringsbeelden.effect.d.ts +13 -13
- package/lib/state/effect/ritdelen.effect.d.ts +7 -6
- package/lib/state/effect/svg-view.effect.d.ts +12 -6
- package/lib/state/mst-editor-state.d.ts +29 -91
- package/lib/util/actie-helper.d.ts +4 -4
- package/lib/util/logging-helper.d.ts +2 -1
- package/lib/util/utils.d.ts +0 -1
- package/package.json +10 -6
- package/src/generated/openapi/api/api.d.ts +4 -1
- package/src/generated/openapi/api/sbController.service.d.ts +8 -8
- package/src/generated/openapi/api/sbController.serviceInterface.d.ts +3 -3
- package/src/generated/openapi/api/svgController.service.d.ts +40 -0
- package/src/generated/openapi/api/svgController.serviceInterface.d.ts +27 -0
- package/src/generated/openapi/model/algemeneRitDto.d.ts +0 -8
- package/src/generated/openapi/model/kilometrering.d.ts +15 -0
- package/src/generated/openapi/model/models.d.ts +9 -1
- package/src/generated/openapi/model/sein.d.ts +46 -0
- package/src/generated/openapi/model/signaleringsElement.d.ts +16 -0
- package/src/generated/openapi/model/spoornummer.d.ts +17 -0
- package/src/generated/openapi/model/spoortakFragment.d.ts +26 -0
- package/src/generated/openapi/model/svgInfoDto.d.ts +16 -0
- package/src/generated/openapi/model/svgTopology.d.ts +21 -0
- package/src/generated/openapi/model/topologyElement.d.ts +18 -0
- package/src/generated/openapi/model/wissel.d.ts +31 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { combineLatest } from 'rxjs';
|
|
3
|
+
import { AlternatiefRitDeel } from '../../model/alternatief-rit-deel';
|
|
4
|
+
import { OngeplandeActie } from '../../model/ongeplande-actie';
|
|
5
|
+
import { SeinOpRitdeel } from '../../model/sein-op-ritdeel';
|
|
6
|
+
import { AddOngeplandeActie, BepaalOngeplandeActies, BewegingInvoegen, ClearProgress, navigeerBuitenRit, ResetNieuweRoute, SetActieOpRitSelectieIds, SetAlternatievenClickableIds, SetAlternatievenSelectieIds, SetBeginSeinRightClickableIds, SetBeginSeinSelectieIds, SetEindSeinenClickableIds, SetEindSeinSelectieIds, SetGebrokenRitSelectieIds, SetGeplandeActies, SetNieuwRouteEindSein, SetRitSelectieIds } from '../../state/actions/actions';
|
|
7
|
+
import { ritdeelInvoegen, setAlternatieveRitDelen } from '../../state/actions/ritdelen.actions';
|
|
8
|
+
import { ActiePopoverBepaler } from '../../util/actie-popover-bepaler';
|
|
9
|
+
import { ArrayMultimap } from '../../util/multi-map';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@ngrx/store";
|
|
12
|
+
import * as i2 from "../../services/viewer-control.service";
|
|
13
|
+
import * as i3 from "../../util/actie-helper";
|
|
14
|
+
import * as i4 from "../../services/signalerings-beeld-manager.service";
|
|
15
|
+
import * as i5 from "../../services/editor.service";
|
|
16
|
+
import * as i6 from "@angular/common";
|
|
17
|
+
import * as i7 from "@loxia/imx-viewer";
|
|
18
|
+
export class SvgVisualisatieComponent {
|
|
19
|
+
constructor(store, viewerControlsService, actieHelper, sbmService, editorService) {
|
|
20
|
+
this.store = store;
|
|
21
|
+
this.viewerControlsService = viewerControlsService;
|
|
22
|
+
this.actieHelper = actieHelper;
|
|
23
|
+
this.sbmService = sbmService;
|
|
24
|
+
this.editorService = editorService;
|
|
25
|
+
this.nietGeplandeActies = [];
|
|
26
|
+
this.useClickArea = false;
|
|
27
|
+
this.svgInfos$ = this.store.select('svgInfos');
|
|
28
|
+
this.popoverInfos = [];
|
|
29
|
+
this.clickableIds = [];
|
|
30
|
+
this.selectieInfos$ = this.store.select('selectieInfos');
|
|
31
|
+
this.rightClickableIds = [];
|
|
32
|
+
this.contextMenuActions = [];
|
|
33
|
+
this.contextMenuStyle = { display: 'none' };
|
|
34
|
+
this.editable = false;
|
|
35
|
+
this.puicNaarBeginSeinRitdeel = new Map();
|
|
36
|
+
this.puicNaarEindSeinCombinatie = new Map();
|
|
37
|
+
this.puicNaarAlternatieveRoute = new Map();
|
|
38
|
+
this.ongeplandeActiesBepaald = false;
|
|
39
|
+
this.subscriptions = [];
|
|
40
|
+
this.onRitdelenUpdate();
|
|
41
|
+
this.triggerClickableIdBepaling();
|
|
42
|
+
this.triggerRightClickableIdBepaling();
|
|
43
|
+
this.handleNieuweRouteToegevoegd();
|
|
44
|
+
this.setupTriggerPopoverBepaling();
|
|
45
|
+
this.subscriptions.push(this.store.select('editable').subscribe(editable => {
|
|
46
|
+
this.editable = editable;
|
|
47
|
+
}));
|
|
48
|
+
this.subscriptions.push(this.store.select('ongeplandeActiesBepaald')
|
|
49
|
+
.subscribe(ongeplandeActiesBepaald => this.ongeplandeActiesBepaald = ongeplandeActiesBepaald));
|
|
50
|
+
this.subscriptions.push(this.store.select('focusIds')
|
|
51
|
+
.subscribe(focusIds => {
|
|
52
|
+
if (focusIds && this.imxviewer) {
|
|
53
|
+
this.imxviewer.focusOnIds(focusIds);
|
|
54
|
+
}
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
ngOnInit() {
|
|
58
|
+
document.getElementById('contextMenu')?.addEventListener('mouseleave', () => this.hideContextMenu());
|
|
59
|
+
}
|
|
60
|
+
ngOnDestroy() {
|
|
61
|
+
this.subscriptions.forEach(s => s.unsubscribe());
|
|
62
|
+
}
|
|
63
|
+
handleImxviewClick(evt) {
|
|
64
|
+
const puic = evt.id;
|
|
65
|
+
const alternatieveRitDeel = this.puicNaarAlternatieveRoute.get(puic);
|
|
66
|
+
const combinatie = this.puicNaarEindSeinCombinatie.get(puic);
|
|
67
|
+
if (alternatieveRitDeel) {
|
|
68
|
+
alternatieveRitDeel.ritDeel.acties.forEach(actie => {
|
|
69
|
+
const puics = this.actieHelper.bepaalPuicsVoorActie(actie);
|
|
70
|
+
if (puics.length > 0) {
|
|
71
|
+
this.store.dispatch(AddOngeplandeActie(new OngeplandeActie(actie, puics)));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
this.store.dispatch(setAlternatieveRitDelen(alternatieveRitDeel));
|
|
75
|
+
}
|
|
76
|
+
else if (combinatie) {
|
|
77
|
+
this.store.dispatch(SetNieuwRouteEindSein(combinatie));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
const rand = this.sbmService.getTopologyElementByPuic(puic);
|
|
81
|
+
if (rand) {
|
|
82
|
+
this.store.dispatch(navigeerBuitenRit(puic));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
handleImxviewRightClick(evt) {
|
|
87
|
+
const fn = () => {
|
|
88
|
+
const startSeinOpRitdeel = this.puicNaarBeginSeinRitdeel.get(evt.id);
|
|
89
|
+
if (startSeinOpRitdeel) {
|
|
90
|
+
this.bewegingInvoegen(startSeinOpRitdeel);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
this.contextMenuActions = [];
|
|
94
|
+
this.contextMenuActions.push({ label: 'beweging invoegen', click: fn });
|
|
95
|
+
this.contextMenuStyle = {
|
|
96
|
+
left: (evt.event.offsetX - 5) + 'px',
|
|
97
|
+
top: (evt.event.offsetY - 5) + 'px',
|
|
98
|
+
display: 'inline',
|
|
99
|
+
position: 'absolute'
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
bewegingInvoegen(startSeinOpRitdeel) {
|
|
103
|
+
this.hideContextMenu();
|
|
104
|
+
this.store.dispatch(BewegingInvoegen(startSeinOpRitdeel, this.puicNaarEindSeinCombinatie));
|
|
105
|
+
}
|
|
106
|
+
hideContextMenu() {
|
|
107
|
+
this.contextMenuStyle = {
|
|
108
|
+
display: 'none',
|
|
109
|
+
position: 'absolute'
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
handleNieuweRouteToegevoegd() {
|
|
113
|
+
this.store.select('nieuweRoute')
|
|
114
|
+
.subscribe((nieuweRoute) => {
|
|
115
|
+
if (nieuweRoute?.isValid()) {
|
|
116
|
+
this.store.dispatch(ResetNieuweRoute());
|
|
117
|
+
this.store.dispatch(ritdeelInvoegen(nieuweRoute));
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
onRitdelenUpdate() {
|
|
122
|
+
this.subscriptions.push(this.store.select('ritDelen').subscribe(ritDelen => {
|
|
123
|
+
if (ritDelen && ritDelen.length > 0) {
|
|
124
|
+
this.bepaalRouteHighlights(ritDelen);
|
|
125
|
+
if (this.editable) {
|
|
126
|
+
this.bepaalContextMenuVoorBeginSeinen(ritDelen);
|
|
127
|
+
}
|
|
128
|
+
if (!this.ongeplandeActiesBepaald) {
|
|
129
|
+
this.bepaalOngeplandeActies();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
triggerClickableIdBepaling() {
|
|
135
|
+
this.subscriptions.push(combineLatest([
|
|
136
|
+
this.store.select('alternatievenClickableIds'),
|
|
137
|
+
this.store.select('eindSeinenClickableIds'),
|
|
138
|
+
this.store.select('connectorClickableIds')
|
|
139
|
+
]).subscribe(([alternatievenClickableIds, eindSeinenClickableIds, connectorClickableIds]) => this.clickableIds = [...alternatievenClickableIds, ...eindSeinenClickableIds, ...connectorClickableIds]));
|
|
140
|
+
}
|
|
141
|
+
triggerRightClickableIdBepaling() {
|
|
142
|
+
this.subscriptions.push(combineLatest([this.store.select('beginSeinRightClickableIds')]).subscribe(([beginSeinRightClickableIds]) => {
|
|
143
|
+
const ids = [];
|
|
144
|
+
ids.push(...beginSeinRightClickableIds);
|
|
145
|
+
this.rightClickableIds = ids;
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
setupTriggerPopoverBepaling() {
|
|
149
|
+
this.subscriptions.push(combineLatest([
|
|
150
|
+
this.store.select('ritDelen'),
|
|
151
|
+
this.store.select('ongeplandeActies'),
|
|
152
|
+
this.store.select('geplandeActies')
|
|
153
|
+
]).subscribe(([ritdelen, ongeplandeActies, geplandeActies]) => {
|
|
154
|
+
if (ritdelen && ritdelen.length > 0 && geplandeActies && ongeplandeActies) {
|
|
155
|
+
this.popoverInfos = ActiePopoverBepaler.bepaalPopoverInfos(ritdelen, geplandeActies, ongeplandeActies);
|
|
156
|
+
}
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
bepaalOngeplandeActies() {
|
|
160
|
+
if (this.nietGeplandeActies) {
|
|
161
|
+
this.store.dispatch(BepaalOngeplandeActies(this.nietGeplandeActies));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
bepaalContextMenuVoorBeginSeinen(ritDelen) {
|
|
165
|
+
if (!this.sbmService.isReady()) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
let ids = [];
|
|
169
|
+
ritDelen.filter(ritDeel => ritDeel.isZichtbaar()).forEach(ritDeel => {
|
|
170
|
+
const puics = ritDeel.getSeinen().flatMap(sein => this.verzamelBeginSeinInformatie(sein, ritDeel));
|
|
171
|
+
ids = ids.concat(puics);
|
|
172
|
+
});
|
|
173
|
+
this.store.dispatch(SetBeginSeinRightClickableIds(ids));
|
|
174
|
+
this.store.dispatch(SetBeginSeinSelectieIds([]));
|
|
175
|
+
this.store.dispatch(SetEindSeinSelectieIds([]));
|
|
176
|
+
this.store.dispatch(SetEindSeinenClickableIds([]));
|
|
177
|
+
}
|
|
178
|
+
verzamelBeginSeinInformatie(sein, ritDeel) {
|
|
179
|
+
const puics = [];
|
|
180
|
+
const sbSein = this.sbmService.getSBSein(sein);
|
|
181
|
+
if (sbSein) {
|
|
182
|
+
const puic = sbSein.getPuic();
|
|
183
|
+
puics.push(puic);
|
|
184
|
+
this.puicNaarBeginSeinRitdeel.set(puic, new SeinOpRitdeel(sein, ritDeel));
|
|
185
|
+
}
|
|
186
|
+
const altSbSein = this.sbmService.getTechnischAlternatiefSBSein(sbSein);
|
|
187
|
+
if (altSbSein) {
|
|
188
|
+
const puic = altSbSein.getPuic();
|
|
189
|
+
puics.push(puic);
|
|
190
|
+
const rwp = this.editorService.getRijwegplan(altSbSein.getPPLG());
|
|
191
|
+
const domeinSein = rwp.getBeginSein(altSbSein.getName());
|
|
192
|
+
// sein kan niet altijd gevonden worden omdat er niet altijd een rijweg vanaf dit sein is, bijv bij veerwissel.
|
|
193
|
+
if (domeinSein) {
|
|
194
|
+
this.puicNaarBeginSeinRitdeel.set(puic, new SeinOpRitdeel(domeinSein, ritDeel));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return puics;
|
|
198
|
+
}
|
|
199
|
+
bepaalRouteHighlights(ritDelen) {
|
|
200
|
+
let ritSelectiePuics = [];
|
|
201
|
+
const actieOpRitSelectiePuics = new ArrayMultimap();
|
|
202
|
+
let gebrokenRitSelectiePuics = [];
|
|
203
|
+
const alternatieveRoutePuics = [];
|
|
204
|
+
const clickableIds = [];
|
|
205
|
+
let laatsteNaarSpoor;
|
|
206
|
+
const bestaatUit1Ritdeel = ritDelen.length === 1;
|
|
207
|
+
let gebrokenRit = false;
|
|
208
|
+
ritDelen.forEach(ritDeel => {
|
|
209
|
+
if (ritDeel.isZichtbaar()) {
|
|
210
|
+
const map = this.actieHelper.bepaalActiePuicsUitRitdeel(ritDeel);
|
|
211
|
+
map.keys().forEach(key => actieOpRitSelectiePuics.putAll(key, map.get(key)));
|
|
212
|
+
const isGebrokenRitdeel = !bestaatUit1Ritdeel && this.isGebrokenRitdeel(ritDeel, laatsteNaarSpoor);
|
|
213
|
+
const puics = [...this.getPuics(ritDeel.getTopologieElementen()),
|
|
214
|
+
...this.sbmService.getPuicsVoorSeinenInRoute(ritDeel.getRoute())];
|
|
215
|
+
if (puics && isGebrokenRitdeel) {
|
|
216
|
+
gebrokenRitSelectiePuics = gebrokenRitSelectiePuics.concat(puics);
|
|
217
|
+
}
|
|
218
|
+
else if (puics) {
|
|
219
|
+
ritSelectiePuics = ritSelectiePuics.concat(puics);
|
|
220
|
+
}
|
|
221
|
+
this.bepaalAlternatieven(ritDeel, clickableIds, alternatieveRoutePuics);
|
|
222
|
+
gebrokenRit = gebrokenRit || isGebrokenRitdeel;
|
|
223
|
+
}
|
|
224
|
+
laatsteNaarSpoor = ritDeel.getVisueelNaarPrlSpoor();
|
|
225
|
+
});
|
|
226
|
+
this.viewerControlsService.setValideRit(!gebrokenRit);
|
|
227
|
+
this.store.dispatch(SetGeplandeActies(actieOpRitSelectiePuics));
|
|
228
|
+
const actieOpRitSelectiePuicsArray = Array.from(actieOpRitSelectiePuics.values()).flat();
|
|
229
|
+
this.store.dispatch(SetActieOpRitSelectieIds(actieOpRitSelectiePuicsArray));
|
|
230
|
+
ritSelectiePuics = ritSelectiePuics.filter(item => actieOpRitSelectiePuicsArray.indexOf(item) < 0); // make mutually exclusive
|
|
231
|
+
this.store.dispatch(SetRitSelectieIds(ritSelectiePuics));
|
|
232
|
+
this.store.dispatch(SetGebrokenRitSelectieIds(gebrokenRitSelectiePuics));
|
|
233
|
+
this.store.dispatch(SetAlternatievenClickableIds(this.editable ? clickableIds : []));
|
|
234
|
+
this.store.dispatch(SetAlternatievenSelectieIds(this.editable ? alternatieveRoutePuics : []));
|
|
235
|
+
this.store.dispatch(ClearProgress());
|
|
236
|
+
}
|
|
237
|
+
bepaalAlternatieven(ritDeel, clickableIds, alternatieveRoutePuics) {
|
|
238
|
+
ritDeel.getAlternatieveRoutes()?.forEach(alternatieveRoute => {
|
|
239
|
+
const alternatieveTopoElementen = this.sbmService.bepaalAlternativeRouteHighlights(alternatieveRoute, ritDeel.getTopologieElementen());
|
|
240
|
+
const altPuics = this.getPuics(alternatieveTopoElementen);
|
|
241
|
+
if (altPuics) {
|
|
242
|
+
clickableIds.push(...altPuics);
|
|
243
|
+
altPuics.forEach(puic => {
|
|
244
|
+
this.puicNaarAlternatieveRoute.set(puic, new AlternatiefRitDeel(ritDeel, alternatieveRoute));
|
|
245
|
+
alternatieveRoutePuics.push(puic);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
isGebrokenRitdeel(ritDeel, laatsteNaarSpoor) {
|
|
251
|
+
const isGebrokenRitdeel = !(!laatsteNaarSpoor || ritDeel.getVanPrlSpoor() === laatsteNaarSpoor);
|
|
252
|
+
if (isGebrokenRitdeel) {
|
|
253
|
+
console.log('Rit van ' + ritDeel.getVanPrlSpoor() + ' naar ' + ritDeel.getNaarPrlSpoor()
|
|
254
|
+
+ ' in pplg ' + ritDeel.getPplg() + ' sluit niet aan op vorige beweging.');
|
|
255
|
+
}
|
|
256
|
+
return isGebrokenRitdeel;
|
|
257
|
+
}
|
|
258
|
+
getPuics(topoElementen) {
|
|
259
|
+
return topoElementen.map(e => e.getPuic());
|
|
260
|
+
}
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgVisualisatieComponent, deps: [{ token: i1.Store }, { token: i2.ViewerControlService }, { token: i3.ActieHelper }, { token: i4.SignaleringsBeeldManagerService }, { token: i5.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
262
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SvgVisualisatieComponent, selector: "svg-visualisatie", inputs: { nietGeplandeActies: "nietGeplandeActies", useClickArea: "useClickArea" }, viewQueries: [{ propertyName: "imxviewer", first: true, predicate: ["imxviewercontainer"], descendants: true }], ngImport: i0, template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"selectieInfos$ | async\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i7.ImxViewerComponent, selector: "imx-viewer", inputs: ["useClickArea", "inlineDgnCssImport", "svgInfo", "selectieInfos", "clickableIds", "rightClickableIds", "popoverInfos", "zoomScaleSensitivity", "autoAlignSvgsHorizontally", "initialPanAndZoom"], outputs: ["clickHandler", "rightClickHandler", "svgLoaded", "panned"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
263
|
+
}
|
|
264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgVisualisatieComponent, decorators: [{
|
|
265
|
+
type: Component,
|
|
266
|
+
args: [{ selector: 'svg-visualisatie', template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"selectieInfos$ | async\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"] }]
|
|
267
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.ViewerControlService }, { type: i3.ActieHelper }, { type: i4.SignaleringsBeeldManagerService }, { type: i5.EditorService }], propDecorators: { nietGeplandeActies: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}], useClickArea: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}], imxviewer: [{
|
|
272
|
+
type: ViewChild,
|
|
273
|
+
args: ['imxviewercontainer']
|
|
274
|
+
}] } });
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLXZpc3VhbGlzYXRpZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvY29tcG9uZW50cy9zdmctdmlzdWFsaXNhdGllL3N2Zy12aXN1YWxpc2F0aWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvc3ZnLXZpc3VhbGlzYXRpZS9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0UsT0FBTyxFQUFFLGFBQWEsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUs1RCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNwQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUdoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7OztBQU9yRCxNQUFNLE9BQU8sd0JBQXdCO0lBd0JqQyxZQUFvQixLQUE0QixFQUM3QixxQkFBMkMsRUFDMUMsV0FBd0IsRUFDeEIsVUFBMkMsRUFDM0MsYUFBNEI7UUFKNUIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFDN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQUMxQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFpQztRQUMzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTFCdkMsdUJBQWtCLEdBQVksRUFBRSxDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSTlCLGNBQVMsR0FBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsaUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBQ2pDLGlCQUFZLEdBQWEsRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFcEQsc0JBQWlCLEdBQWEsRUFBRSxDQUFDO1FBQ2pDLHVCQUFrQixHQUFRLEVBQUUsQ0FBQztRQUM3QixxQkFBZ0IsR0FBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM1QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVQsNkJBQXdCLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDNUQsK0JBQTBCLEdBQUcsSUFBSSxHQUFHLEVBQTJDLENBQUM7UUFDaEYsOEJBQXlCLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFFbEUsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQU92QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDO2FBQ3ZDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUMzSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7YUFDeEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xCLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDSixRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQWtCO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1RCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsR0FBa0I7UUFDdEMsTUFBTSxFQUFFLEdBQUcsR0FBUyxFQUFFO1lBQ2xCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckUsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRztZQUNwQixJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJO1lBQ3BDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUk7WUFDbkMsT0FBTyxFQUFFLFFBQVE7WUFDakIsUUFBUSxFQUFFLFVBQVU7U0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxrQkFBaUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDcEIsT0FBTyxFQUFFLE1BQU07WUFDZixRQUFRLEVBQUUsVUFBVTtTQUN2QixDQUFDO0lBQ04sQ0FBQztJQUVPLDJCQUEyQjtRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7YUFDM0IsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDVixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2RSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsZ0NBQWdDLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLDBCQUEwQjtRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUM7WUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUM7WUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUM7U0FBQyxDQUM5QyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLENBQUMsRUFBRSxFQUFFLENBQ3ZGLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLHlCQUF5QixFQUFFLEdBQUcsc0JBQXNCLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBRU8sK0JBQStCO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FDdEYsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDZixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsMEJBQTBCLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLENBQUMsQ0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sMkJBQTJCO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7U0FBQyxDQUN2QyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUU7WUFDckQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksY0FBYyxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzNHLENBQUM7UUFDTCxDQUFDLENBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNMLENBQUM7SUFFTyxnQ0FBZ0MsQ0FBQyxRQUFtQjtRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxHQUFHLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNuRyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLDJCQUEyQixDQUFDLElBQWlCLEVBQUUsT0FBZ0I7UUFDbkUsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQixJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN6RCwrR0FBK0c7WUFDL0csSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNwRixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxRQUFtQjtRQUM3QyxJQUFJLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUNwQyxNQUFNLHVCQUF1QixHQUFHLElBQUksYUFBYSxFQUFpQixDQUFDO1FBQ25FLElBQUksd0JBQXdCLEdBQWEsRUFBRSxDQUFDO1FBQzVDLE1BQU0sc0JBQXNCLEdBQWEsRUFBRSxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFhLEVBQUUsQ0FBQztRQUNsQyxJQUFJLGdCQUF3QixDQUFDO1FBQzdCLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxHQUFHLEdBQWlDLElBQUksQ0FBQyxXQUFXLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9GLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUU3RSxNQUFNLGlCQUFpQixHQUFHLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNuRyxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDNUQsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXRFLElBQUksS0FBSyxJQUFJLGlCQUFpQixFQUFFLENBQUM7b0JBQzdCLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEUsQ0FBQztxQkFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNmLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEQsQ0FBQztnQkFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO2dCQUV4RSxXQUFXLEdBQUcsV0FBVyxJQUFJLGlCQUFpQixDQUFDO1lBQ25ELENBQUM7WUFDRCxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSw0QkFBNEIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO1FBQzVFLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQjtRQUM5SCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFnQixFQUFFLFlBQXNCLEVBQUUsc0JBQWdDO1FBQ2xHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ3pELE1BQU0seUJBQXlCLEdBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztZQUV6RyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDMUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDWCxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7Z0JBQy9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQztvQkFDN0Ysc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUFnQixFQUFFLGdCQUF3QjtRQUNoRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUU7a0JBQ2xGLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcscUNBQXFDLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0lBRU8sUUFBUSxDQUFDLGFBQXFDO1FBQ2xELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7K0dBeFJRLHdCQUF3QjttR0FBeEIsd0JBQXdCLDZQQzVDckMsMjJCQWlCQTs7NEZEMkJhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDSSxrQkFBa0I7aU5BTW5CLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUUyQixTQUFTO3NCQUF6QyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElteFZpZXdlckNvbXBvbmVudCwgUG9wb3ZlckluZm8sIFNlbGVjdGllRXZlbnQsIFN2Z0luZm8gfSBmcm9tICdAbG94aWEvaW14LXZpZXdlcic7XG5pbXBvcnQgeyBkb21laW4sIHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWx0ZXJuYXRpZWZSaXREZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWx0ZXJuYXRpZWYtcml0LWRlZWwnO1xuaW1wb3J0IHsgT25nZXBsYW5kZUFjdGllIH0gZnJvbSAnLi4vLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQgeyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIH0gZnJvbSAnLi4vLi4vbW9kZWwvcmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBTZWluT3BSaXRkZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2Vpbi1vcC1yaXRkZWVsJztcbmltcG9ydCB7IEFjdGllIH0gZnJvbSAnLi4vLi4vb3B0aW1vJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsZXJpbmdzLWJlZWxkLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3ZXJDb250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXdlci1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBBZGRPbmdlcGxhbmRlQWN0aWUsXG4gICAgQmVwYWFsT25nZXBsYW5kZUFjdGllcyxcbiAgICBCZXdlZ2luZ0ludm9lZ2VuLFxuICAgIENsZWFyUHJvZ3Jlc3MsXG4gICAgbmF2aWdlZXJCdWl0ZW5SaXQsXG4gICAgUmVzZXROaWV1d2VSb3V0ZSxcbiAgICBTZXRBY3RpZU9wUml0U2VsZWN0aWVJZHMsXG4gICAgU2V0QWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcyxcbiAgICBTZXRBbHRlcm5hdGlldmVuU2VsZWN0aWVJZHMsXG4gICAgU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMsXG4gICAgU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMsXG4gICAgU2V0RWluZFNlaW5lbkNsaWNrYWJsZUlkcyxcbiAgICBTZXRFaW5kU2VpblNlbGVjdGllSWRzLFxuICAgIFNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMsXG4gICAgU2V0R2VwbGFuZGVBY3RpZXMsXG4gICAgU2V0TmlldXdSb3V0ZUVpbmRTZWluLFxuICAgIFNldFJpdFNlbGVjdGllSWRzXG59IGZyb20gJy4uLy4uL3N0YXRlL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgeyByaXRkZWVsSW52b2VnZW4sIHNldEFsdGVybmF0aWV2ZVJpdERlbGVuIH0gZnJvbSAnLi4vLi4vc3RhdGUvYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcbmltcG9ydCB7IE1zdEVkaXRvclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvbXN0LWVkaXRvci1zdGF0ZSc7XG5pbXBvcnQgeyBBY3RpZUhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWwvYWN0aWUtaGVscGVyJztcbmltcG9ydCB7IEFjdGllUG9wb3ZlckJlcGFsZXIgfSBmcm9tICcuLi8uLi91dGlsL2FjdGllLXBvcG92ZXItYmVwYWxlcic7XG5pbXBvcnQgeyBBcnJheU11bHRpbWFwIH0gZnJvbSAnLi4vLi4vdXRpbC9tdWx0aS1tYXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3N2Zy12aXN1YWxpc2F0aWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3ZnVmlzdWFsaXNhdGllQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgbmlldEdlcGxhbmRlQWN0aWVzOiBBY3RpZVtdID0gW107XG4gICAgQElucHV0KCkgdXNlQ2xpY2tBcmVhID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdpbXh2aWV3ZXJjb250YWluZXInKSBpbXh2aWV3ZXI/OiBJbXhWaWV3ZXJDb21wb25lbnQ7XG5cbiAgICBzdmdJbmZvcyQ6IE9ic2VydmFibGU8U3ZnSW5mb1tdPiA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzdmdJbmZvcycpO1xuICAgIHBvcG92ZXJJbmZvczogUG9wb3ZlckluZm9bXSA9IFtdO1xuICAgIGNsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcbiAgICBzZWxlY3RpZUluZm9zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzZWxlY3RpZUluZm9zJyk7XG5cbiAgICByaWdodENsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcbiAgICBjb250ZXh0TWVudUFjdGlvbnM6IGFueSA9IFtdO1xuICAgIGNvbnRleHRNZW51U3R5bGU6IGFueSA9IHsgZGlzcGxheTogJ25vbmUnIH07XG4gICAgZWRpdGFibGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcHVpY05hYXJCZWdpblNlaW5SaXRkZWVsID0gbmV3IE1hcDxzdHJpbmcsIFNlaW5PcFJpdGRlZWw+KCk7XG4gICAgcHJpdmF0ZSBwdWljTmFhckVpbmRTZWluQ29tYmluYXRpZSA9IG5ldyBNYXA8c3RyaW5nLCBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllPigpO1xuICAgIHByaXZhdGUgcHVpY05hYXJBbHRlcm5hdGlldmVSb3V0ZSA9IG5ldyBNYXA8c3RyaW5nLCBBbHRlcm5hdGllZlJpdERlZWw+KCk7XG5cbiAgICBwcml2YXRlIG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8TXN0RWRpdG9yU3RhdGU+LFxuICAgICAgICAgICAgICAgIHB1YmxpYyB2aWV3ZXJDb250cm9sc1NlcnZpY2U6IFZpZXdlckNvbnRyb2xTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYWN0aWVIZWxwZXI6IEFjdGllSGVscGVyLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgc2JtU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5vblJpdGRlbGVuVXBkYXRlKCk7XG4gICAgICAgIHRoaXMudHJpZ2dlckNsaWNrYWJsZUlkQmVwYWxpbmcoKTtcbiAgICAgICAgdGhpcy50cmlnZ2VyUmlnaHRDbGlja2FibGVJZEJlcGFsaW5nKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlTmlldXdlUm91dGVUb2VnZXZvZWdkKCk7XG4gICAgICAgIHRoaXMuc2V0dXBUcmlnZ2VyUG9wb3ZlckJlcGFsaW5nKCk7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5zZWxlY3QoJ2VkaXRhYmxlJykuc3Vic2NyaWJlKGVkaXRhYmxlID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGFibGUgPSBlZGl0YWJsZTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgnb25nZXBsYW5kZUFjdGllc0JlcGFhbGQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCA9PiB0aGlzLm9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkID0gb25nZXBsYW5kZUFjdGllc0JlcGFhbGQpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5zZWxlY3QoJ2ZvY3VzSWRzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZm9jdXNJZHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c0lkcyAmJiB0aGlzLmlteHZpZXdlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlteHZpZXdlci5mb2N1c09uSWRzKGZvY3VzSWRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZXh0TWVudScpPy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4gdGhpcy5oaWRlQ29udGV4dE1lbnUoKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBoYW5kbGVJbXh2aWV3Q2xpY2soZXZ0OiBTZWxlY3RpZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHB1aWMgPSBldnQuaWQ7XG4gICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVJpdERlZWwgPSB0aGlzLnB1aWNOYWFyQWx0ZXJuYXRpZXZlUm91dGUuZ2V0KHB1aWMpO1xuICAgICAgICBjb25zdCBjb21iaW5hdGllID0gdGhpcy5wdWljTmFhckVpbmRTZWluQ29tYmluYXRpZS5nZXQocHVpYyk7XG4gICAgICAgIGlmIChhbHRlcm5hdGlldmVSaXREZWVsKSB7XG4gICAgICAgICAgICBhbHRlcm5hdGlldmVSaXREZWVsLnJpdERlZWwuYWN0aWVzLmZvckVhY2goYWN0aWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gdGhpcy5hY3RpZUhlbHBlci5iZXBhYWxQdWljc1Zvb3JBY3RpZShhY3RpZSk7XG4gICAgICAgICAgICAgICAgaWYgKHB1aWNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZGRPbmdlcGxhbmRlQWN0aWUobmV3IE9uZ2VwbGFuZGVBY3RpZShhY3RpZSwgcHVpY3MpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNldEFsdGVybmF0aWV2ZVJpdERlbGVuKGFsdGVybmF0aWV2ZVJpdERlZWwpKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb21iaW5hdGllKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldE5pZXV3Um91dGVFaW5kU2Vpbihjb21iaW5hdGllKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByYW5kID0gdGhpcy5zYm1TZXJ2aWNlLmdldFRvcG9sb2d5RWxlbWVudEJ5UHVpYyhwdWljKTtcbiAgICAgICAgICAgIGlmIChyYW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuYXZpZ2VlckJ1aXRlblJpdChwdWljKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVJbXh2aWV3UmlnaHRDbGljayhldnQ6IFNlbGVjdGllRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm4gPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGFydFNlaW5PcFJpdGRlZWwgPSB0aGlzLnB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbC5nZXQoZXZ0LmlkKTtcbiAgICAgICAgICAgIGlmIChzdGFydFNlaW5PcFJpdGRlZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJld2VnaW5nSW52b2VnZW4oc3RhcnRTZWluT3BSaXRkZWVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMucHVzaCh7IGxhYmVsOiAnYmV3ZWdpbmcgaW52b2VnZW4nLCBjbGljazogZm4gfSk7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdHlsZSA9IHtcbiAgICAgICAgICAgIGxlZnQ6IChldnQuZXZlbnQub2Zmc2V0WCAtIDUpICsgJ3B4JyxcbiAgICAgICAgICAgIHRvcDogKGV2dC5ldmVudC5vZmZzZXRZIC0gNSkgKyAncHgnLFxuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGJld2VnaW5nSW52b2VnZW4oc3RhcnRTZWluT3BSaXRkZWVsOiBTZWluT3BSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZUNvbnRleHRNZW51KCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQmV3ZWdpbmdJbnZvZWdlbihzdGFydFNlaW5PcFJpdGRlZWwsIHRoaXMucHVpY05hYXJFaW5kU2VpbkNvbWJpbmF0aWUpKTtcbiAgICB9XG5cbiAgICBoaWRlQ29udGV4dE1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdHlsZSA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOaWV1d2VSb3V0ZVRvZWdldm9lZ2QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCduaWV1d2VSb3V0ZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuaWV1d2VSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmlldXdlUm91dGU/LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSZXNldE5pZXV3ZVJvdXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChyaXRkZWVsSW52b2VnZW4obmlldXdlUm91dGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJpdGRlbGVuVXBkYXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgncml0RGVsZW4nKS5zdWJzY3JpYmUocml0RGVsZW4gPT4ge1xuICAgICAgICAgICAgaWYgKHJpdERlbGVuICYmIHJpdERlbGVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbFJvdXRlSGlnaGxpZ2h0cyhyaXREZWxlbik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxDb250ZXh0TWVudVZvb3JCZWdpblNlaW5lbihyaXREZWxlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbE9uZ2VwbGFuZGVBY3RpZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJDbGlja2FibGVJZEJlcGFsaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnZWluZFNlaW5lbkNsaWNrYWJsZUlkcycpLFxuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2Nvbm5lY3RvckNsaWNrYWJsZUlkcycpXVxuICAgICAgICApLnN1YnNjcmliZSgoW2FsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMsIGVpbmRTZWluZW5DbGlja2FibGVJZHMsIGNvbm5lY3RvckNsaWNrYWJsZUlkc10pID0+XG4gICAgICAgICAgICB0aGlzLmNsaWNrYWJsZUlkcyA9IFsuLi5hbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzLCAuLi5laW5kU2VpbmVuQ2xpY2thYmxlSWRzLCAuLi5jb25uZWN0b3JDbGlja2FibGVJZHNdKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmlnZ2VyUmlnaHRDbGlja2FibGVJZEJlcGFsaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChjb21iaW5lTGF0ZXN0KFt0aGlzLnN0b3JlLnNlbGVjdCgnYmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMnKV1cbiAgICAgICAgKS5zdWJzY3JpYmUoKFtiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkc10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZHMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZHMucHVzaCguLi5iZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodENsaWNrYWJsZUlkcyA9IGlkcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cFRyaWdnZXJQb3BvdmVyQmVwYWxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ3JpdERlbGVuJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnb25nZXBsYW5kZUFjdGllcycpLFxuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2dlcGxhbmRlQWN0aWVzJyldXG4gICAgICAgICkuc3Vic2NyaWJlKChbcml0ZGVsZW4sIG9uZ2VwbGFuZGVBY3RpZXMsIGdlcGxhbmRlQWN0aWVzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyaXRkZWxlbiAmJiByaXRkZWxlbi5sZW5ndGggPiAwICYmIGdlcGxhbmRlQWN0aWVzICYmIG9uZ2VwbGFuZGVBY3RpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVySW5mb3MgPSBBY3RpZVBvcG92ZXJCZXBhbGVyLmJlcGFhbFBvcG92ZXJJbmZvcyhyaXRkZWxlbiwgZ2VwbGFuZGVBY3RpZXMsIG9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgYmVwYWFsT25nZXBsYW5kZUFjdGllcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmlldEdlcGxhbmRlQWN0aWVzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEJlcGFhbE9uZ2VwbGFuZGVBY3RpZXModGhpcy5uaWV0R2VwbGFuZGVBY3RpZXMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsQ29udGV4dE1lbnVWb29yQmVnaW5TZWluZW4ocml0RGVsZW46IFJpdGRlZWxbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2JtU2VydmljZS5pc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHJpdERlbGVuLmZpbHRlcihyaXREZWVsID0+IHJpdERlZWwuaXNaaWNodGJhYXIoKSkuZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gcml0RGVlbC5nZXRTZWluZW4oKS5mbGF0TWFwKHNlaW4gPT4gdGhpcy52ZXJ6YW1lbEJlZ2luU2VpbkluZm9ybWF0aWUoc2Vpbiwgcml0RGVlbCkpO1xuICAgICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChwdWljcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMoaWRzKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMoW10pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRFaW5kU2VpblNlbGVjdGllSWRzKFtdKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0RWluZFNlaW5lbkNsaWNrYWJsZUlkcyhbXSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyemFtZWxCZWdpblNlaW5JbmZvcm1hdGllKHNlaW46IGRvbWVpbi5TZWluLCByaXREZWVsOiBSaXRkZWVsKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBwdWljczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc2JTZWluID0gdGhpcy5zYm1TZXJ2aWNlLmdldFNCU2VpbihzZWluKTtcbiAgICAgICAgaWYgKHNiU2Vpbikge1xuICAgICAgICAgICAgY29uc3QgcHVpYyA9IHNiU2Vpbi5nZXRQdWljKCk7XG4gICAgICAgICAgICBwdWljcy5wdXNoKHB1aWMpO1xuICAgICAgICAgICAgdGhpcy5wdWljTmFhckJlZ2luU2VpblJpdGRlZWwuc2V0KHB1aWMsIG5ldyBTZWluT3BSaXRkZWVsKHNlaW4sIHJpdERlZWwpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbHRTYlNlaW4gPSB0aGlzLnNibVNlcnZpY2UuZ2V0VGVjaG5pc2NoQWx0ZXJuYXRpZWZTQlNlaW4oc2JTZWluKTtcbiAgICAgICAgaWYgKGFsdFNiU2Vpbikge1xuICAgICAgICAgICAgY29uc3QgcHVpYyA9IGFsdFNiU2Vpbi5nZXRQdWljKCk7XG4gICAgICAgICAgICBwdWljcy5wdXNoKHB1aWMpO1xuICAgICAgICAgICAgY29uc3QgcndwID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldFJpandlZ3BsYW4oYWx0U2JTZWluLmdldFBQTEcoKSk7XG4gICAgICAgICAgICBjb25zdCBkb21laW5TZWluID0gcndwLmdldEJlZ2luU2VpbihhbHRTYlNlaW4uZ2V0TmFtZSgpKTtcbiAgICAgICAgICAgIC8vIHNlaW4ga2FuIG5pZXQgYWx0aWpkIGdldm9uZGVuIHdvcmRlbiBvbWRhdCBlciBuaWV0IGFsdGlqZCBlZW4gcmlqd2VnIHZhbmFmIGRpdCBzZWluIGlzLCBiaWp2IGJpaiB2ZWVyd2lzc2VsLlxuICAgICAgICAgICAgaWYgKGRvbWVpblNlaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbC5zZXQocHVpYywgbmV3IFNlaW5PcFJpdGRlZWwoZG9tZWluU2Vpbiwgcml0RGVlbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwdWljcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFJvdXRlSGlnaGxpZ2h0cyhyaXREZWxlbjogUml0ZGVlbFtdKTogdm9pZCB7XG4gICAgICAgIGxldCByaXRTZWxlY3RpZVB1aWNzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCBhY3RpZU9wUml0U2VsZWN0aWVQdWljcyA9IG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCk7XG4gICAgICAgIGxldCBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVJvdXRlUHVpY3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGNsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgbGV0IGxhYXRzdGVOYWFyU3Bvb3I6IHN0cmluZztcbiAgICAgICAgY29uc3QgYmVzdGFhdFVpdDFSaXRkZWVsID0gcml0RGVsZW4ubGVuZ3RoID09PSAxO1xuICAgICAgICBsZXQgZ2Vicm9rZW5SaXQgPSBmYWxzZTtcbiAgICAgICAgcml0RGVsZW4uZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgICAgIGlmIChyaXREZWVsLmlzWmljaHRiYWFyKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXA6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4gPSB0aGlzLmFjdGllSGVscGVyLmJlcGFhbEFjdGllUHVpY3NVaXRSaXRkZWVsKHJpdERlZWwpO1xuICAgICAgICAgICAgICAgIG1hcC5rZXlzKCkuZm9yRWFjaChrZXkgPT4gYWN0aWVPcFJpdFNlbGVjdGllUHVpY3MucHV0QWxsKGtleSwgbWFwLmdldChrZXkpKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0dlYnJva2VuUml0ZGVlbCA9ICFiZXN0YWF0VWl0MVJpdGRlZWwgJiYgdGhpcy5pc0dlYnJva2VuUml0ZGVlbChyaXREZWVsLCBsYWF0c3RlTmFhclNwb29yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IFsuLi50aGlzLmdldFB1aWNzKHJpdERlZWwuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkpLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnNibVNlcnZpY2UuZ2V0UHVpY3NWb29yU2VpbmVuSW5Sb3V0ZShyaXREZWVsLmdldFJvdXRlKCkpXTtcblxuICAgICAgICAgICAgICAgIGlmIChwdWljcyAmJiBpc0dlYnJva2VuUml0ZGVlbCkge1xuICAgICAgICAgICAgICAgICAgICBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MgPSBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MuY29uY2F0KHB1aWNzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHB1aWNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJpdFNlbGVjdGllUHVpY3MgPSByaXRTZWxlY3RpZVB1aWNzLmNvbmNhdChwdWljcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxBbHRlcm5hdGlldmVuKHJpdERlZWwsIGNsaWNrYWJsZUlkcywgYWx0ZXJuYXRpZXZlUm91dGVQdWljcyk7XG5cbiAgICAgICAgICAgICAgICBnZWJyb2tlblJpdCA9IGdlYnJva2VuUml0IHx8IGlzR2Vicm9rZW5SaXRkZWVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFhdHN0ZU5hYXJTcG9vciA9IHJpdERlZWwuZ2V0VmlzdWVlbE5hYXJQcmxTcG9vcigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5zZXRWYWxpZGVSaXQoIWdlYnJva2VuUml0KTtcblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEdlcGxhbmRlQWN0aWVzKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzKSk7XG4gICAgICAgIGNvbnN0IGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzQXJyYXkgPSBBcnJheS5mcm9tKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzLnZhbHVlcygpKS5mbGF0KCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QWN0aWVPcFJpdFNlbGVjdGllSWRzKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzQXJyYXkpKTtcbiAgICAgICAgcml0U2VsZWN0aWVQdWljcyA9IHJpdFNlbGVjdGllUHVpY3MuZmlsdGVyKGl0ZW0gPT4gYWN0aWVPcFJpdFNlbGVjdGllUHVpY3NBcnJheS5pbmRleE9mKGl0ZW0pIDwgMCk7IC8vIG1ha2UgbXV0dWFsbHkgZXhjbHVzaXZlXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0Uml0U2VsZWN0aWVJZHMocml0U2VsZWN0aWVQdWljcykpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMoZ2Vicm9rZW5SaXRTZWxlY3RpZVB1aWNzKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcyh0aGlzLmVkaXRhYmxlID8gY2xpY2thYmxlSWRzIDogW10pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRBbHRlcm5hdGlldmVuU2VsZWN0aWVJZHModGhpcy5lZGl0YWJsZSA/IGFsdGVybmF0aWV2ZVJvdXRlUHVpY3MgOiBbXSkpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsZWFyUHJvZ3Jlc3MoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxBbHRlcm5hdGlldmVuKHJpdERlZWw6IFJpdGRlZWwsIGNsaWNrYWJsZUlkczogc3RyaW5nW10sIGFsdGVybmF0aWV2ZVJvdXRlUHVpY3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHJpdERlZWwuZ2V0QWx0ZXJuYXRpZXZlUm91dGVzKCk/LmZvckVhY2goYWx0ZXJuYXRpZXZlUm91dGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJuYXRpZXZlVG9wb0VsZW1lbnRlbiA9XG4gICAgICAgICAgICAgICAgdGhpcy5zYm1TZXJ2aWNlLmJlcGFhbEFsdGVybmF0aXZlUm91dGVIaWdobGlnaHRzKGFsdGVybmF0aWV2ZVJvdXRlLCByaXREZWVsLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpKTtcblxuICAgICAgICAgICAgY29uc3QgYWx0UHVpY3MgPSB0aGlzLmdldFB1aWNzKGFsdGVybmF0aWV2ZVRvcG9FbGVtZW50ZW4pO1xuICAgICAgICAgICAgaWYgKGFsdFB1aWNzKSB7XG4gICAgICAgICAgICAgICAgY2xpY2thYmxlSWRzLnB1c2goLi4uYWx0UHVpY3MpO1xuICAgICAgICAgICAgICAgIGFsdFB1aWNzLmZvckVhY2gocHVpYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVpY05hYXJBbHRlcm5hdGlldmVSb3V0ZS5zZXQocHVpYywgbmV3IEFsdGVybmF0aWVmUml0RGVlbChyaXREZWVsLCBhbHRlcm5hdGlldmVSb3V0ZSkpO1xuICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGlldmVSb3V0ZVB1aWNzLnB1c2gocHVpYyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNHZWJyb2tlblJpdGRlZWwocml0RGVlbDogUml0ZGVlbCwgbGFhdHN0ZU5hYXJTcG9vcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGlzR2Vicm9rZW5SaXRkZWVsID0gISghbGFhdHN0ZU5hYXJTcG9vciB8fCByaXREZWVsLmdldFZhblBybFNwb29yKCkgPT09IGxhYXRzdGVOYWFyU3Bvb3IpO1xuICAgICAgICBpZiAoaXNHZWJyb2tlblJpdGRlZWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSaXQgdmFuICcgKyByaXREZWVsLmdldFZhblBybFNwb29yKCkgKyAnIG5hYXIgJyArIHJpdERlZWwuZ2V0TmFhclBybFNwb29yKClcbiAgICAgICAgICAgICAgICArICcgaW4gcHBsZyAnICsgcml0RGVlbC5nZXRQcGxnKCkgKyAnIHNsdWl0IG5pZXQgYWFuIG9wIHZvcmlnZSBiZXdlZ2luZy4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNHZWJyb2tlblJpdGRlZWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQdWljcyh0b3BvRWxlbWVudGVuOiBzYmJsYWQuSGFzSWRlbnRpZmllcltdKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdG9wb0VsZW1lbnRlbi5tYXAoZSA9PiBlLmdldFB1aWMoKSk7XG4gICAgfVxufVxuIiwiPGlteC12aWV3ZXIgI2lteHZpZXdlcmNvbnRhaW5lclxuICAgICAgICAgICAgW3N2Z0luZm9dPVwic3ZnSW5mb3MkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3NlbGVjdGllSW5mb3NdPVwic2VsZWN0aWVJbmZvcyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbY2xpY2thYmxlSWRzXT1cImNsaWNrYWJsZUlkc1wiXG4gICAgICAgICAgICBbcmlnaHRDbGlja2FibGVJZHNdPVwicmlnaHRDbGlja2FibGVJZHNcIlxuICAgICAgICAgICAgW3BvcG92ZXJJbmZvc109XCJwb3BvdmVySW5mb3NcIlxuICAgICAgICAgICAgW2lubGluZURnbkNzc0ltcG9ydF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbdXNlQ2xpY2tBcmVhXT1cInVzZUNsaWNrQXJlYVwiXG4gICAgICAgICAgICBbem9vbVNjYWxlU2Vuc2l0aXZpdHldPVwiMC4yNVwiXG4gICAgICAgICAgICAoY2xpY2tIYW5kbGVyKT1cImhhbmRsZUlteHZpZXdDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIChyaWdodENsaWNrSGFuZGxlcik9XCJoYW5kbGVJbXh2aWV3UmlnaHRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICA+PC9pbXgtdmlld2VyPlxuXG48dWwgaWQ9XCJjb250ZXh0TWVudVwiIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJtZW51XCIgW25nU3R5bGVdPVwiY29udGV4dE1lbnVTdHlsZVwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbnRleHRNZW51QWN0aW9uc1wiPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmNsaWNrKClcIj57e2FjdGlvbi5sYWJlbH19PC9hPjwvbGk+XG48L3VsPlxuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input } from '@angular/core';
|
|
2
|
+
import { Subscription } from 'rxjs';
|
|
3
|
+
import { filter, tap } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@ngrx/store";
|
|
6
|
+
import * as i2 from "../../services/viewer-control.service";
|
|
7
|
+
import * as i3 from "../../services/beweging-utils.service";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "../carousel-controls/carousel-controls.component";
|
|
10
|
+
export class ViewerControlsComponent {
|
|
11
|
+
constructor(store, viewerControlsService, bewegingUtils) {
|
|
12
|
+
this.store = store;
|
|
13
|
+
this.viewerControlsService = viewerControlsService;
|
|
14
|
+
this.bewegingUtils = bewegingUtils;
|
|
15
|
+
this.paginationSize = 4;
|
|
16
|
+
this.treinpad = undefined;
|
|
17
|
+
this.goedgekeurd = new EventEmitter();
|
|
18
|
+
this.printing$ = this.viewerControlsService.isPrinting$();
|
|
19
|
+
this.valideRit$ = this.viewerControlsService.isValideRit$();
|
|
20
|
+
this.subscriptions = new Subscription();
|
|
21
|
+
this.editable = false;
|
|
22
|
+
this.subscriptions.add(this.store.select('editable').subscribe(editable => this.editable = editable));
|
|
23
|
+
}
|
|
24
|
+
ngOnChanges({ treinpad }) {
|
|
25
|
+
if (treinpad && this.treinpad) {
|
|
26
|
+
this.viewerControlsService.setOrigineelTreinPad(this.treinpad);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
showGoedkeuren() {
|
|
30
|
+
return this.editable;
|
|
31
|
+
}
|
|
32
|
+
goedkeurenClick() {
|
|
33
|
+
this.store.select('ritDelen').pipe(filter(ritdelen => !!ritdelen), tap(ritDelen => {
|
|
34
|
+
if (this.treinpad) {
|
|
35
|
+
delete this.treinpad.aantalRitActies;
|
|
36
|
+
this.treinpad.bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(ritDelen, this.viewerControlsService.origineelTreinPad.bewegingen);
|
|
37
|
+
this.goedgekeurd.emit(this.treinpad);
|
|
38
|
+
this.viewerControlsService.setOrigineelTreinPad(this.treinpad);
|
|
39
|
+
}
|
|
40
|
+
})).subscribe();
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlsComponent, deps: [{ token: i1.Store }, { token: i2.ViewerControlService }, { token: i3.BewegingUtils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ViewerControlsComponent, selector: "viewer-controls", inputs: { paginationSize: "paginationSize", treinpad: "treinpad", goedgekeurd: "goedgekeurd" }, usesOnChanges: true, ngImport: i0, template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.CarouselControlsComponent, selector: "carousel-controls", inputs: ["paginationSize", "sideNavOpen"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlsComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'viewer-controls', template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"] }]
|
|
48
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.ViewerControlService }, { type: i3.BewegingUtils }], propDecorators: { paginationSize: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], treinpad: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], goedgekeurd: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}] } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLWNvbnRyb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci1jb250cm9scy92aWV3ZXItY29udHJvbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyLWNvbnRyb2xzL3ZpZXdlci1jb250cm9scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVc3QyxNQUFNLE9BQU8sdUJBQXVCO0lBV2hDLFlBQW9CLEtBQTRCLEVBQzdCLHFCQUEyQyxFQUMxQyxhQUE0QjtRQUY1QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUM3QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzFDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBWnZDLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLGFBQVEsR0FBb0IsU0FBUyxDQUFDO1FBQ3RDLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbEUsY0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRCxlQUFVLEdBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQWlCO1FBQ25DLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDOUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QixHQUFHLENBQUUsUUFBUSxDQUFDLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM5SSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkUsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0F0Q1EsdUJBQXVCO21HQUF2Qix1QkFBdUIsNEtDZHBDLHl3QkFpQkE7OzRGREhhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDSSxpQkFBaUI7eUlBS2xCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEluZnJhTW9kZWwsIFJpdCB9IGZyb20gJy4uLy4uL29wdGltbyc7XG5pbXBvcnQgeyBCZXdlZ2luZ1V0aWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmV3ZWdpbmctdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3ZXJDb250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXdlci1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2aWV3ZXItY29udHJvbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92aWV3ZXItY29udHJvbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ZpZXdlci1jb250cm9scy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdlckNvbnRyb2xzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBwYWdpbmF0aW9uU2l6ZSA9IDQ7XG4gICAgQElucHV0KCkgdHJlaW5wYWQ6IFJpdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBnb2VkZ2VrZXVyZDogRXZlbnRFbWl0dGVyPFJpdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJpdD4oKTtcblxuICAgIHByaW50aW5nJCA9IHRoaXMudmlld2VyQ29udHJvbHNTZXJ2aWNlLmlzUHJpbnRpbmckKCk7XG4gICAgdmFsaWRlUml0JCAgPSB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5pc1ZhbGlkZVJpdCQoKTtcblxuICAgIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgZWRpdGFibGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwdWJsaWMgdmlld2VyQ29udHJvbHNTZXJ2aWNlOiBWaWV3ZXJDb250cm9sU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGJld2VnaW5nVXRpbHM6IEJld2VnaW5nVXRpbHMpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnN0b3JlLnNlbGVjdCgnZWRpdGFibGUnKS5zdWJzY3JpYmUoZWRpdGFibGUgPT4gdGhpcy5lZGl0YWJsZSA9IGVkaXRhYmxlKSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoeyB0cmVpbnBhZCB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0cmVpbnBhZCAmJiB0aGlzLnRyZWlucGFkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5zZXRPcmlnaW5lZWxUcmVpblBhZCh0aGlzLnRyZWlucGFkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dHb2Vka2V1cmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0YWJsZTtcbiAgICB9XG5cbiAgICBnb2Vka2V1cmVuQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdyaXREZWxlbicpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIocml0ZGVsZW4gPT4gISFyaXRkZWxlbiksXG4gICAgICAgICAgICB0YXAoIHJpdERlbGVuID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVpbnBhZCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy50cmVpbnBhZC5hYW50YWxSaXRBY3RpZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJlaW5wYWQuYmV3ZWdpbmdlbiA9IHRoaXMuYmV3ZWdpbmdVdGlscy5leHRyYWN0QmV3ZWdpbmdlblVpdFJpdGRlbGVuKHJpdERlbGVuLCB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5vcmlnaW5lZWxUcmVpblBhZC5iZXdlZ2luZ2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb2VkZ2VrZXVyZC5lbWl0KHRoaXMudHJlaW5wYWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5zZXRPcmlnaW5lZWxUcmVpblBhZCh0aGlzLnRyZWlucGFkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG59XG4iLCI8YnV0dG9uIGlkPVwidG9vblNpZGVOYXZLbm9wXCJcbiAgICAgICAgY2xhc3M9XCJsb3hpYS1idG4gbG94aWEtYnRuLXByaW1hcnkgbG94aWEtYnRuLXNtIG9wZW4tc2lkZW5hdi1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwidmlld2VyQ29udHJvbHNTZXJ2aWNlLnRvZ2dsZVNpZGVOYXZWaXNpYmxlKClcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInZpZXdlckNvbnRyb2xzU2VydmljZS5zaWRlTmF2T3BlbiQgfCBhc3luY1wiXG4gICAgICAgIFtoaWRkZW5dPVwicHJpbnRpbmckIHwgYXN5bmNcIj5SaXRkZXRhaWxzXG48L2J1dHRvbj5cbjxidXR0b24gKm5nSWY9XCJzaG93R29lZGtldXJlbigpXCJcbiAgICAgICAgaWQ9XCJnb2Vka2V1cmVuS25vcFwiXG4gICAgICAgIGNsYXNzPVwibG94aWEtYnRuIGxveGlhLWJ0bi1wcmltYXJ5IGxveGlhLWJ0bi1zbSBnb2Vka2V1cmVuLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJnb2Vka2V1cmVuQ2xpY2soKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIodmFsaWRlUml0JCB8IGFzeW5jICkgPT09IGZhbHNlXCJcbiAgICAgICAgW2hpZGRlbl09XCJwcmludGluZyQgfCBhc3luY1wiPkdvZWRrZXVyZW5cbjwvYnV0dG9uPlxuXG48Y2Fyb3VzZWwtY29udHJvbHMgW3BhZ2luYXRpb25TaXplXT1cInBhZ2luYXRpb25TaXplXCJcbiAgICAgICAgICAgICAgICAgICBbc2lkZU5hdk9wZW5dPVwidmlld2VyQ29udHJvbHNTZXJ2aWNlLnNpZGVOYXZPcGVuJCB8IGFzeW5jXCI+XG48L2Nhcm91c2VsLWNvbnRyb2xzPlxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class AlternatiefRitDeel {
|
|
2
|
+
constructor(ritDeel, alternatieveRoute) {
|
|
3
|
+
this.ritDeel = ritDeel;
|
|
4
|
+
this.alternatieveRoute = alternatieveRoute;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXJuYXRpZWYtcml0LWRlZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvbW9kZWwvYWx0ZXJuYXRpZWYtcml0LWRlZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQixZQUFtQixPQUFnQixFQUFTLGlCQUEwQztRQUFuRSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtJQUV0RixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IHsgUml0ZGVlbCB9IGZyb20gJy4vcml0ZGVlbCc7XG5cbmV4cG9ydCBjbGFzcyBBbHRlcm5hdGllZlJpdERlZWwge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHJpdERlZWw6IFJpdGRlZWwsIHB1YmxpYyBhbHRlcm5hdGlldmVSb3V0ZTogc2JibGFkLkFsdGVybmF0aXZlUm91dGUpIHtcblxuICAgIH1cblxufVxuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { JsJavaUtil } from '@loxia/rijwegen';
|
|
2
|
+
export class KmRange {
|
|
3
|
+
constructor(topologyElement, vanKilometreringen, totKilometreringen) {
|
|
4
|
+
this.topologyElement = topologyElement;
|
|
5
|
+
this.vanKilometreringen = vanKilometreringen;
|
|
6
|
+
this.totKilometreringen = totKilometreringen;
|
|
7
|
+
}
|
|
8
|
+
static rangeVoorPuntObject(topologyElement) {
|
|
9
|
+
return new KmRange(topologyElement, JsJavaUtil.listToArray(topologyElement.getKilometreringen()), JsJavaUtil.listToArray(topologyElement.getKilometreringen()));
|
|
10
|
+
}
|
|
11
|
+
static rangeVoorStrekObject(topologyElement, vanKilometreringen, totKilometreringen) {
|
|
12
|
+
return new KmRange(topologyElement, vanKilometreringen, totKilometreringen);
|
|
13
|
+
}
|
|
14
|
+
static getKilometrering(lintNaam, kilometreringen) {
|
|
15
|
+
const result = kilometreringen.filter(kilometrering => kilometrering.getKmLint() === lintNaam);
|
|
16
|
+
if (result.length >= 1) {
|
|
17
|
+
return result[0];
|
|
18
|
+
}
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
heeftOverlap(kilometrering1, kilometrering2) {
|
|
22
|
+
const vanKilometrering = KmRange.getKilometrering(kilometrering1.getKmLint(), this.vanKilometreringen);
|
|
23
|
+
const totKilometrering = KmRange.getKilometrering(kilometrering2.getKmLint(), this.totKilometreringen);
|
|
24
|
+
if (!vanKilometrering || !totKilometrering) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
let startKmWaarde = vanKilometrering.getKmWaarde();
|
|
28
|
+
let endKmWaarde = totKilometrering.getKmWaarde();
|
|
29
|
+
if (startKmWaarde > endKmWaarde) {
|
|
30
|
+
const temp = { end: endKmWaarde, start: startKmWaarde };
|
|
31
|
+
startKmWaarde = temp.end;
|
|
32
|
+
endKmWaarde = temp.start;
|
|
33
|
+
}
|
|
34
|
+
const actieStartKmWaarde = kilometrering1.getKmWaarde();
|
|
35
|
+
const actieEndKmWaarde = kilometrering2.getKmWaarde();
|
|
36
|
+
return endKmWaarde >= actieStartKmWaarde && actieEndKmWaarde >= startKmWaarde;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia20tcmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvbW9kZWwva20tcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBSXJELE1BQU0sT0FBTyxPQUFPO0lBQ2hCLFlBQTJCLGVBQWdDLEVBQ2hDLGtCQUFtQyxFQUNuQyxrQkFBbUM7UUFGbkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBaUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFpQjtJQUM5RCxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLGVBQWdDO1FBQzlELE9BQU8sSUFBSSxPQUFPLENBQUMsZUFBZSxFQUM5QixVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQzVELFVBQVUsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsZUFBZ0MsRUFDaEMsa0JBQW1DLEVBQ25DLGtCQUFtQztRQUNsRSxPQUFPLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBNEIsRUFBRSxlQUFnQztRQUN6RixNQUFNLE1BQU0sR0FBb0IsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNoSCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxZQUFZLENBQUMsY0FBNkIsRUFBRSxjQUE2QjtRQUNyRSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkcsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELElBQUksYUFBYSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25ELElBQUksV0FBVyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pELElBQUksYUFBYSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDeEQsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDekIsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RELE9BQU8sV0FBVyxJQUFJLGtCQUFrQixJQUFJLGdCQUFnQixJQUFJLGFBQWEsQ0FBQztJQUNsRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc0phdmFVdGlsLCBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IEtpbG9tZXRyZXJpbmcgPSBzYmJsYWQuS2lsb21ldHJlcmluZztcbmltcG9ydCBUb3BvbG9neUVsZW1lbnQgPSBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50O1xuXG5leHBvcnQgY2xhc3MgS21SYW5nZSB7XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgdG9wb2xvZ3lFbGVtZW50OiBUb3BvbG9neUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdmFuS2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdG90S2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10pIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJhbmdlVm9vclB1bnRPYmplY3QodG9wb2xvZ3lFbGVtZW50OiBUb3BvbG9neUVsZW1lbnQpOiBLbVJhbmdlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBLbVJhbmdlKHRvcG9sb2d5RWxlbWVudCxcbiAgICAgICAgICAgIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodG9wb2xvZ3lFbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKSxcbiAgICAgICAgICAgIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodG9wb2xvZ3lFbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZVZvb3JTdHJla09iamVjdCh0b3BvbG9neUVsZW1lbnQ6IFRvcG9sb2d5RWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbktpbG9tZXRyZXJpbmdlbjogS2lsb21ldHJlcmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90S2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10pOiBLbVJhbmdlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBLbVJhbmdlKHRvcG9sb2d5RWxlbWVudCwgdmFuS2lsb21ldHJlcmluZ2VuLCB0b3RLaWxvbWV0cmVyaW5nZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0S2lsb21ldHJlcmluZyhsaW50TmFhbTogc3RyaW5nIHwgdW5kZWZpbmVkLCBraWxvbWV0cmVyaW5nZW46IEtpbG9tZXRyZXJpbmdbXSk6IEtpbG9tZXRyZXJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCByZXN1bHQ6IEtpbG9tZXRyZXJpbmdbXSA9IGtpbG9tZXRyZXJpbmdlbi5maWx0ZXIoa2lsb21ldHJlcmluZyA9PiBraWxvbWV0cmVyaW5nLmdldEttTGludCgpID09PSBsaW50TmFhbSk7XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBoZWVmdE92ZXJsYXAoa2lsb21ldHJlcmluZzE6IEtpbG9tZXRyZXJpbmcsIGtpbG9tZXRyZXJpbmcyOiBLaWxvbWV0cmVyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHZhbktpbG9tZXRyZXJpbmcgPSBLbVJhbmdlLmdldEtpbG9tZXRyZXJpbmcoa2lsb21ldHJlcmluZzEuZ2V0S21MaW50KCksIHRoaXMudmFuS2lsb21ldHJlcmluZ2VuKTtcbiAgICAgICAgY29uc3QgdG90S2lsb21ldHJlcmluZyA9IEttUmFuZ2UuZ2V0S2lsb21ldHJlcmluZyhraWxvbWV0cmVyaW5nMi5nZXRLbUxpbnQoKSwgdGhpcy50b3RLaWxvbWV0cmVyaW5nZW4pO1xuICAgICAgICBpZiAoIXZhbktpbG9tZXRyZXJpbmcgfHwgIXRvdEtpbG9tZXRyZXJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdGFydEttV2FhcmRlID0gdmFuS2lsb21ldHJlcmluZy5nZXRLbVdhYXJkZSgpO1xuICAgICAgICBsZXQgZW5kS21XYWFyZGUgPSB0b3RLaWxvbWV0cmVyaW5nLmdldEttV2FhcmRlKCk7XG4gICAgICAgIGlmIChzdGFydEttV2FhcmRlID4gZW5kS21XYWFyZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAgPSB7IGVuZDogZW5kS21XYWFyZGUsIHN0YXJ0OiBzdGFydEttV2FhcmRlIH07XG4gICAgICAgICAgICBzdGFydEttV2FhcmRlID0gdGVtcC5lbmQ7XG4gICAgICAgICAgICBlbmRLbVdhYXJkZSA9IHRlbXAuc3RhcnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpZVN0YXJ0S21XYWFyZGUgPSBraWxvbWV0cmVyaW5nMS5nZXRLbVdhYXJkZSgpO1xuICAgICAgICBjb25zdCBhY3RpZUVuZEttV2FhcmRlID0ga2lsb21ldHJlcmluZzIuZ2V0S21XYWFyZGUoKTtcbiAgICAgICAgcmV0dXJuIGVuZEttV2FhcmRlID49IGFjdGllU3RhcnRLbVdhYXJkZSAmJiBhY3RpZUVuZEttV2FhcmRlID49IHN0YXJ0S21XYWFyZGU7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class MeldingEvent {
|
|
2
|
+
constructor(meldingMessage, meldingLevel) {
|
|
3
|
+
this.meldingMessage = meldingMessage;
|
|
4
|
+
this.meldingLevel = meldingLevel;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVsZGluZy1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9tb2RlbC9tZWxkaW5nLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLFlBQW1CLGNBQXNCLEVBQVMsWUFBb0I7UUFBbkQsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtJQUN0RSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTWVsZGluZ0V2ZW50IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbWVsZGluZ01lc3NhZ2U6IHN0cmluZywgcHVibGljIG1lbGRpbmdMZXZlbDogc3RyaW5nKSB7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export class NieuweRoute {
|
|
2
|
+
constructor(beginSeinOpRitdeel, combinatieVoorEindsein) {
|
|
3
|
+
this.beginSeinOpRitdeel = beginSeinOpRitdeel;
|
|
4
|
+
this.combinatieVoorEindsein = combinatieVoorEindsein;
|
|
5
|
+
}
|
|
6
|
+
isValid() {
|
|
7
|
+
return !!this.combinatieVoorEindsein;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlldXdlLXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL21vZGVsL25pZXV3ZS1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sV0FBVztJQUVwQixZQUFtQixrQkFBaUMsRUFBUyxzQkFBd0Q7UUFBbEcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFlO1FBQVMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFrQztJQUNySCxDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUN6QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIH0gZnJvbSAnLi9yaWp3ZWdwbGFuLXJpandlZy1kd2FuZy1jb21iaW5hdGllJztcbmltcG9ydCB7IFNlaW5PcFJpdGRlZWwgfSBmcm9tICcuL3NlaW4tb3Atcml0ZGVlbCc7XG5cbmV4cG9ydCBjbGFzcyBOaWV1d2VSb3V0ZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYmVnaW5TZWluT3BSaXRkZWVsOiBTZWluT3BSaXRkZWVsLCBwdWJsaWMgY29tYmluYXRpZVZvb3JFaW5kc2Vpbj86IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUpIHtcbiAgICB9XG5cbiAgICBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmNvbWJpbmF0aWVWb29yRWluZHNlaW47XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class OngeplandeActie {
|
|
2
|
+
constructor(actie, puics) {
|
|
3
|
+
this.actie = actie;
|
|
4
|
+
this.puics = puics;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25nZXBsYW5kZS1hY3RpZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9tb2RlbC9vbmdlcGxhbmRlLWFjdGllLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxlQUFlO0lBQ3hCLFlBQW1CLEtBQVksRUFDWixLQUFlO1FBRGYsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFVBQUssR0FBTCxLQUFLLENBQVU7SUFDbEMsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aWUgfSBmcm9tICcuLi9vcHRpbW8nO1xuXG5leHBvcnQgY2xhc3MgT25nZXBsYW5kZUFjdGllIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYWN0aWU6IEFjdGllLFxuICAgICAgICAgICAgICAgIHB1YmxpYyBwdWljczogc3RyaW5nW10pIHtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class RijwegplanRijwegDwangCombinatie {
|
|
2
|
+
constructor(rijwegplan, rijweg, dwang) {
|
|
3
|
+
this.rijwegplan = rijwegplan;
|
|
4
|
+
this.rijweg = rijweg;
|
|
5
|
+
this.dwang = dwang;
|
|
6
|
+
}
|
|
7
|
+
getDwangNummer() {
|
|
8
|
+
return this.dwang.getDwangNummer() === 0 ? -1 : this.dwang.getDwangNummer();
|
|
9
|
+
}
|
|
10
|
+
getVanPrlSpoor() {
|
|
11
|
+
return this.dwang.getVanPrlSpoor();
|
|
12
|
+
}
|
|
13
|
+
getNaarPrlSpoor() {
|
|
14
|
+
return this.dwang.getNaarPrlSpoor();
|
|
15
|
+
}
|
|
16
|
+
getRoute() {
|
|
17
|
+
return this.dwang.getRoute();
|
|
18
|
+
}
|
|
19
|
+
isVrijeBaanRijweg() {
|
|
20
|
+
const vbrwp = this.rijwegplan;
|
|
21
|
+
return !!vbrwp.getVervolgSpoor;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9tb2RlbC9yaWp3ZWdwbGFuLXJpandlZy1kd2FuZy1jb21iaW5hdGllLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTywrQkFBK0I7SUFDeEMsWUFBNEIsVUFBNkIsRUFDN0IsTUFBcUIsRUFDckIsS0FBbUI7UUFGbkIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBQy9DLENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELGVBQWU7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE1BQU0sS0FBSyxHQUF3QixJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7SUFDbkMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZG9tZWluIH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCBWcmlqZWJhYW5SaWp3ZWdwbGFuID0gZG9tZWluLlZyaWplYmFhblJpandlZ3BsYW47XG5cbmV4cG9ydCBjbGFzcyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcmlqd2VncGxhbjogZG9tZWluLlJpandlZ3BsYW4sXG4gICAgICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IHJpandlZzogZG9tZWluLlJpandlZyxcbiAgICAgICAgICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZHdhbmc6IGRvbWVpbi5Ed2FuZykge1xuICAgIH1cblxuICAgIGdldER3YW5nTnVtbWVyKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmR3YW5nLmdldER3YW5nTnVtbWVyKCkgPT09IDAgPyAtMSA6IHRoaXMuZHdhbmcuZ2V0RHdhbmdOdW1tZXIoKTtcbiAgICB9XG5cbiAgICBnZXRWYW5QcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kd2FuZy5nZXRWYW5QcmxTcG9vcigpO1xuICAgIH1cblxuICAgIGdldE5hYXJQcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kd2FuZy5nZXROYWFyUHJsU3Bvb3IoKTtcbiAgICB9XG5cbiAgICBnZXRSb3V0ZSgpOiBkb21laW4uUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy5kd2FuZy5nZXRSb3V0ZSgpO1xuICAgIH1cblxuICAgIGlzVnJpamVCYWFuUmlqd2VnKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2YnJ3cCA9IDxWcmlqZWJhYW5SaWp3ZWdwbGFuPnRoaXMucmlqd2VncGxhbjtcbiAgICAgICAgcmV0dXJuICEhdmJyd3AuZ2V0VmVydm9sZ1Nwb29yO1xuICAgIH1cbn1cbiJdfQ==
|