@smarterplan/ngx-smarterplan-core 1.4.6 → 1.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/helpers.service.mjs +27 -20
- package/esm2022/lib/mattertagData.mjs +84 -84
- package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +3 -8
- package/esm2022/lib/services/locale.service.mjs +3 -5
- package/esm2022/lib/services/matterport-import.service.mjs +3 -3
- package/esm2022/lib/services/matterport-measurement.service.mjs +78 -0
- package/esm2022/lib/services/matterport-navigation.service.mjs +157 -0
- package/esm2022/lib/services/matterport-object3d.service.mjs +234 -0
- package/esm2022/lib/services/matterport-pointer.service.mjs +130 -0
- package/esm2022/lib/services/matterport-tag.service.mjs +458 -0
- package/esm2022/lib/services/matterport.service.mjs +427 -988
- package/esm2022/lib/services/models/equipment.service.mjs +3 -4
- package/esm2022/lib/services/models/feature.service.mjs +3 -3
- package/esm2022/lib/services/models/measurement.service.mjs +3 -3
- package/esm2022/lib/services/models/ticket.service.mjs +3 -4
- package/esm2022/lib/services/navigator.service.mjs +10 -2
- package/esm2022/lib/services/tag.service.mjs +45 -19
- package/esm2022/lib/services/viewer.service.mjs +51 -16
- package/esm2022/lib/types.service.mjs +1 -1
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +2028 -1490
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/helpers.service.d.ts +6 -0
- package/lib/mattertagData.d.ts +52 -10
- package/lib/services/matterport-measurement.service.d.ts +35 -0
- package/lib/services/matterport-navigation.service.d.ts +38 -0
- package/lib/services/matterport-object3d.service.d.ts +31 -0
- package/lib/services/matterport-pointer.service.d.ts +31 -0
- package/lib/services/matterport-tag.service.d.ts +104 -0
- package/lib/services/matterport.service.d.ts +91 -92
- package/lib/services/models/equipment.service.d.ts +2 -2
- package/lib/services/models/feature.service.d.ts +2 -2
- package/lib/services/models/measurement.service.d.ts +2 -2
- package/lib/services/models/ticket.service.d.ts +2 -2
- package/lib/services/tag.service.d.ts +4 -0
- package/lib/services/viewer.service.d.ts +1 -1
- package/lib/types.service.d.ts +2 -0
- package/package.json +1 -1
- package/esm2022/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +0 -66
- package/esm2022/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +0 -63
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +0 -26
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +0 -26
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
2
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
3
3
|
import { PoiType } from '../../types.service';
|
|
4
4
|
import { deleteFromS3, uploadFileToS3 } from '../s3.service';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -20,7 +20,7 @@ export class MeasurementService {
|
|
|
20
20
|
navigationService;
|
|
21
21
|
path = 'measurements/';
|
|
22
22
|
currentMeasurements = { space: [], zone: [] };
|
|
23
|
-
measurementsTags = new
|
|
23
|
+
measurementsTags = new BehaviorSubject(null);
|
|
24
24
|
measurementsUpdated = new Subject();
|
|
25
25
|
currentSpaceID;
|
|
26
26
|
zoneIDFilter;
|
|
@@ -216,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
216
216
|
type: Inject,
|
|
217
217
|
args: ['currentAwsKinesisAnalyticsService']
|
|
218
218
|
}] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.CommentService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.ZoneChangeService }, { type: i7.NavigationService }] });
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQWUsT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBRy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFVN0QsTUFBTSxPQUFPLGtCQUFrQjtJQXNDbkI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUEzQ1YsSUFBSSxHQUFHLGVBQWUsQ0FBQztJQUV2QixtQkFBbUIsR0FHZixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRTVCLGdCQUFnQixHQUF1QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXJELG1CQUFtQixHQUdkLElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkIsY0FBYyxDQUFTO0lBRXZCLFlBQVksQ0FBUztJQUVyQixVQUFVLENBQVM7SUFFbkIsaUJBQWlCLEdBQVksS0FBSyxDQUFDLENBQUMscURBQXFEO0lBRXpGLFVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU3QyxRQUFRLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7SUFFM0MsbUJBQW1CLENBQU0sQ0FBQyxLQUFLO0lBRS9CLGNBQWMsR0FBVyxJQUFJLENBQUM7SUFFOUIsYUFBYSxHQUFTLElBQUksQ0FBQztJQUVuQixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVq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QUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQzdCLE1BQU0sV0FBVyxHQUNmLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0EzUFUsa0JBQWtCLGtCQW9DbkIsbUNBQW1DOzRHQXBDbEMsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXFDSSxNQUFNOzJCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vLi4vaGVscGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVhc3VyZW1lbnQsIFBvaVR5cGUsIENvbW1lbnQsIFBPSSwgWm9uZSB9IGZyb20gJy4uLy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWxldGVGcm9tUzMsIHVwbG9hZEZpbGVUb1MzIH0gZnJvbSAnLi4vczMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb21tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9pU2VydmljZSB9IGZyb20gJy4vcG9pLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWFzdXJlbWVudFNlcnZpY2Uge1xyXG4gIHBhdGggPSAnbWVhc3VyZW1lbnRzLyc7XHJcblxyXG4gIGN1cnJlbnRNZWFzdXJlbWVudHM6IHtcclxuICAgIHNwYWNlOiBNZWFzdXJlbWVudFtdO1xyXG4gICAgem9uZTogTWVhc3VyZW1lbnRbXTtcclxuICB9ID0geyBzcGFjZTogW10sIHpvbmU6IFtdIH07XHJcblxyXG4gIG1lYXN1cmVtZW50c1RhZ3M6IFN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIG1lYXN1cmVtZW50c1VwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgc3BhY2U6IE1lYXN1cmVtZW50W107XHJcbiAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xyXG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgem9uZUlERmlsdGVyOiBzdHJpbmc7XHJcblxyXG4gIGRhdGVGaWx0ZXI6IERhdGVbXTtcclxuXHJcbiAgbWVhc3VyZW1lbnRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgZmFsc2UgbWVhbnMgbm8gZmlsdGVyaW5nLCBldmVyeXRoaW5nIGlzIGFsbG93ZWRcclxuXHJcbiAgdXBkYXRlRG9uZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xyXG5cclxuICBmbG9vcnNQZXJTcGFjZTogWm9uZVtdID0gbnVsbDtcclxuXHJcbiAgc2VsZWN0ZWRGbG9vcjogWm9uZSA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXHJcbiAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzID0gYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkO1xyXG4gICAgY29uc3QgaXNNdXNldW1Vc2VyID0gdGhpcy51c2VyU2VydmljZS5oYXNPbmx5TXVzZXVtUm9sZSgpO1xyXG4gICAgaWYgKCFpc011c2V1bVVzZXIpIHtcclxuICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLnN1YnNjcmliZSgoem9uZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBudWxsIH0pO1xyXG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudEZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmICh6b25lLmlkICE9PSB0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJnb2luZyB0byBpbml0IG1lYXN1cmVtZW50cyBmcm9tIHpvbmVcIik7XHJcbiAgICAgICAgICB0aGlzLmluaXRNZWFzdXJlbWVudHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRlRmlsdGVyID0gZGF0ZVJhbmdlO1xyXG4gICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRlRmlsdGVyID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmN1cnJlbnREYXRlRmlsdGVyO1xyXG4gICAgICB0aGlzLnVwZGF0ZURvbmUuc3Vic2NyaWJlKCgpID0+IHRoaXMuaW5pdE1lYXN1cmVtZW50cygpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5zdWJzY3JpYmUoKGZsb29yKSA9PiB7XHJcbiAgICAgIGlmIChmbG9vcikge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IGZsb29yO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgYXN5bmMgaW5pdE1lYXN1cmVtZW50cygpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgbGV0IG1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMuZ2V0TWVhc3VyZW1lbnRzRm9yU3BhY2VGb3JVc2VyKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICAgKTtcclxuICAgICAgaWYgKG1lYXN1cmVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcikge1xyXG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckRhdGVSYW5nZShcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnRzLFxyXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50RmlsdGVyKSB7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gbWVhc3VyZW1lbnRzO1xyXG4gICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcblxyXG4gICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgY29uc3QgY29tbWVudHNab25lID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMubWFwKChtZWFzdXJlKSA9PiBtZWFzdXJlLmNvbW1lbnQpLFxyXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IG1lYXN1cmVtZW50cy5maWx0ZXIoKG1lYXN1cmUpID0+XHJcbiAgICAgICAgICAgIGNvbW1lbnRzWm9uZS5pbmNsdWRlcyhtZWFzdXJlLmNvbW1lbnQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobWVhc3VyZW1lbnRzLm1hcCgobSkgPT4gbS5jb21tZW50KSk7XHJcblxyXG4gICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5ldyBEYXRlKGIuY29tbWVudC5jcmVhdGVkQXQpIC1cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBuZXcgRGF0ZShhLmNvbW1lbnQuY3JlYXRlZEF0KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuem9uZSA9IG1lYXN1cmVtZW50cztcclxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy5zcGFjZSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XHJcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IFtdIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xyXG4gICAgY29uc3QgZGVsZXRlZENvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZUNvbW1lbnQoXHJcbiAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuaWRcclxuICAgICk7XHJcbiAgICBpZiAoZGVsZXRlZENvbW1lbnQpIHtcclxuICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShtZWFzdXJlbWVudC5wb2kuaWQpO1xyXG4gICAgICBjb25zdCBwcmVmaXggPSBgJHttZWFzdXJlbWVudC5jb21tZW50LmlkLnNsaWNlKDAsIDgpfV9gO1xyXG4gICAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5wYXRoICsgcHJlZml4fW1lc3VyZS5qcGVnYDtcclxuICAgICAgYXdhaXQgZGVsZXRlRnJvbVMzKHBhdGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlbGV0ZWRDb21tZW50O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlTWVhc3VyZW1lbnRGb3JTcGFjZShcclxuICAgIGNvbW1lbnRJbnB1dDogQ29tbWVudCxcclxuICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmcgfSxcclxuICAgIHNjcmVlbnNob3Q6IGFueSxcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnQ+IHtcclxuICAgIGNvbnN0IGxhc3RNZWFzdXJlID0gZGF0YU1lYXN1cmVtZW50cy5tZWFzdXJlO1xyXG4gICAgY29uc3Qgc3dlZXBJRCA9IGRhdGFNZWFzdXJlbWVudHMuc3dlZXA7XHJcbiAgICBjb25zdCBsYXN0UG9pbnQgPSBsYXN0TWVhc3VyZVtsYXN0TWVhc3VyZS5sZW5ndGggLSAxXTtcclxuICAgIGxldCBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVDb21tZW50KGNvbW1lbnRJbnB1dCk7XHJcbiAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgY29vcmRpbmF0ZTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIHg6IGxhc3RQb2ludC54LFxyXG4gICAgICAgIHk6IGxhc3RQb2ludC55LFxyXG4gICAgICAgIHo6IGxhc3RQb2ludC56LFxyXG4gICAgICB9KSxcclxuICAgICAgdHlwZTogUG9pVHlwZS5NRUFTVVJFLFxyXG4gICAgICBlbGVtZW50SUQ6IGNvbW1lbnQuaWQsXHJcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiBzd2VlcElELFxyXG4gICAgfSBhcyBQT0k7XHJcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XHJcbiAgICBjb25zdCBzY3JlZW4gPSBhd2FpdCBmZXRjaChzY3JlZW5zaG90KTtcclxuICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBzY3JlZW4uYmxvYigpO1xyXG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgJ21lc3VyZS5qcGVnJywgeyB0eXBlOiAnaW1hZ2UvanBlZycgfSk7XHJcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB1cGxvYWRGaWxlVG9TMyh0aGlzLnBhdGgsIGZpbGUsIGNvbW1lbnQuaWQpO1xyXG4gICAgaWYgKHVybCkge1xyXG4gICAgICBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVDb21tZW50KHtcclxuICAgICAgICBpZDogY29tbWVudC5pZCxcclxuICAgICAgICBhbm5leGU6IHVybCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtZWFzdXJlbWVudCA9IHtcclxuICAgICAgY29tbWVudCxcclxuICAgICAgcG9pLFxyXG4gICAgfSBhcyBNZWFzdXJlbWVudDtcclxuXHJcbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3NcclxuICAgICAgJiYgISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkXHJcbiAgICAgICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xyXG4gICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiAnT2JqZWN0IENyZWF0aW9uJyxcclxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ21lYXN1cmVtZW50JyxcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnQ6IG1lYXN1cmVtZW50LFxyXG4gICAgICAgICAgICAvL3pvbmVJZDogc3BhY2VJRCxcclxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5jdSxcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuem9uZUlERmlsdGVyLFxyXG4gICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHN0cmVhbU5hbWU6ICdzbWFydGVycGxhbktpbmVzaXMtYW5hbHl0aWNzJyxcclxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgICdBV1NLaW5lc2lzJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIGEgZGF0ZSBmaWx0ZXIgaXMgY3VycmVudGx5IGFwcGxpZWRcclxuICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIgJiYgdGhpcy5kYXRlRmlsdGVyLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAvLyBVcGRhdGUgdGhlIGVuZCBkYXRlIG9mIHRoZSBmaWx0ZXIgdG8gdGhlIGN1cnJlbnQgZGF0ZSB0byBlbnN1cmUgdGhlIG5ld2x5IGNyZWF0ZWQgbWVhc3VyZW1lbnQgaXMgaW5jbHVkZWRcclxuICAgICAgY29uc3QgbmV3RW5kRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbHRlciA9IFt0aGlzLmRhdGVGaWx0ZXJbMF0sIG5ld0VuZERhdGVdO1xyXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQobmV3RmlsdGVyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWVhc3VyZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRNb2RlbDNERm9yTWVhc3VyZW1lbnQobWVhc3VyZW1lbnQ6IE1lYXN1cmVtZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChtZWFzdXJlbWVudC5jb21tZW50LmlkKTtcclxuICAgIGlmIChwb2kgJiYgcG9pLm1hdHRlcnBvcnRTd2VlcElEKSB7XHJcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25zID1cclxuICAgICAgICBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yTWF0dGVycG9ydElERm9yU3BhY2UoXHJcbiAgICAgICAgICBwb2kubWF0dGVycG9ydFN3ZWVwSUQsXHJcbiAgICAgICAgICBtZWFzdXJlbWVudC5jb21tZW50LnNwYWNlSURcclxuICAgICAgICApO1xyXG4gICAgICBjb25zdCBbcG9pTmF2aWdhdGlvbl0gPSBuYXZpZ2F0aW9ucztcclxuICAgICAgcmV0dXJuIHBvaU5hdmlnYXRpb24ubm9kZS5tb2RlbDNEO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRNZWFzdXJlbWVudHNGb3JTcGFjZUZvclVzZXIoXHJcbiAgICBzcGFjZUlEOiBzdHJpbmdcclxuICApOiBQcm9taXNlPE1lYXN1cmVtZW50W10+IHtcclxuICAgIGxldCBjb21tZW50cyA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZ2V0Q29tbWVudHNCeVNwYWNlSUQoc3BhY2VJRCk7XHJcbiAgICBjb21tZW50cyA9IGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJNZWFzdXJlbWVudHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgIHNwYWNlSUQsXHJcbiAgICAgIGNvbW1lbnRzXHJcbiAgICApO1xyXG4gICAgbGV0IG1lYXN1cmVtZW50cyA9IFtdO1xyXG4gICAgaWYgKGNvbW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgY29tbWVudHMubWFwKGFzeW5jIChjb21tZW50KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtZWFzdXJlbWVudCA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UucmVhZENvbW1lbnRBc01lYXN1cmVtZW50KGNvbW1lbnQuaWQpO1xyXG4gICAgICAgICAgbWVhc3VyZW1lbnRzLnB1c2gobWVhc3VyZW1lbnQpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWVhc3VyZW1lbnRzO1xyXG4gIH1cclxuXHJcbiAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFM0QsT0FBTyxFQUFlLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUcvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBVTdELE1BQU0sT0FBTyxrQkFBa0I7SUFzQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBM0NWLElBQUksR0FBRyxlQUFlLENBQUM7SUFFdkIsbUJBQW1CLEdBR2YsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUU1QixnQkFBZ0IsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7SUFFcEYsbUJBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixjQUFjLENBQVM7SUFFdkIsWUFBWSxDQUFTO0lBRXJCLFVBQVUsQ0FBUztJQUVuQixpQkFBaUIsR0FBWSxLQUFLLENBQUMsQ0FBQyxxREFBcUQ7SUFFekYsVUFBVSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTdDLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxtQkFBbUIsQ0FBTSxDQUFDLEtBQUs7SUFFL0IsY0FBYyxHQUFXLElBQUksQ0FBQztJQUU5QixhQUFhLEdBQVMsSUFBSSxDQUFDO0lBRW5CLFFBQVEsR0FBRyxJQUFJ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QUFDLEdBQUcsQ0FDZixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxXQUFXLEdBQ2YsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakUsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQTNQVSxrQkFBa0Isa0JBb0NuQixtQ0FBbUM7NEdBcENsQyxrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lYXN1cmVtZW50LCBQb2lUeXBlLCBDb21tZW50LCBQT0ksIFpvbmUgfSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL2ZpbHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZGVsZXRlRnJvbVMzLCB1cGxvYWRGaWxlVG9TMyB9IGZyb20gJy4uL3MzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tICcuL3BvaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVhc3VyZW1lbnRTZXJ2aWNlIHtcclxuICBwYXRoID0gJ21lYXN1cmVtZW50cy8nO1xyXG5cclxuICBjdXJyZW50TWVhc3VyZW1lbnRzOiB7XHJcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcclxuICAgIHpvbmU6IE1lYXN1cmVtZW50W107XHJcbiAgfSA9IHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9O1xyXG5cclxuICBtZWFzdXJlbWVudHNUYWdzOiBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tbWVudFtdPihudWxsKTtcclxuXHJcbiAgbWVhc3VyZW1lbnRzVXBkYXRlZDogU3ViamVjdDx7XHJcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcclxuICAgIHpvbmU6IE1lYXN1cmVtZW50W107XHJcbiAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcclxuXHJcbiAgZGF0ZUZpbHRlcjogRGF0ZVtdO1xyXG5cclxuICBtZWFzdXJlbWVudEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiBmYWxzZSBtZWFucyBubyBmaWx0ZXJpbmcsIGV2ZXJ5dGhpbmcgaXMgYWxsb3dlZFxyXG5cclxuICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXHJcblxyXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZEZsb29yOiBab25lID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnY3VycmVudEF3c0tpbmVzaXNBbmFseXRpY3NTZXJ2aWNlJylcclxuICAgIGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDogYW55LFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XHJcbiAgICBjb25zdCBpc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICBpZiAoIWlzTXVzZXVtVXNlcikge1xyXG4gICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XHJcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50RmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImdvaW5nIHRvIGluaXQgbWVhc3VyZW1lbnRzIGZyb20gem9uZVwiKTtcclxuICAgICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmZpbHRlclNlcnZpY2Uuc3Vic2NyaWJlVG9EYXRhRmlsdGVyVXBkYXRlKChkYXRlUmFuZ2UpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGVGaWx0ZXIgPSBkYXRlUmFuZ2U7XHJcbiAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclNlcnZpY2UuY3VycmVudERhdGVGaWx0ZXI7XHJcbiAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0TWVhc3VyZW1lbnRzKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpID0+IHtcclxuICAgICAgaWYgKGZsb29yKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZsb29yID0gZmxvb3I7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBhc3luYyBpbml0TWVhc3VyZW1lbnRzKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xyXG4gICAgICBsZXQgbWVhc3VyZW1lbnRzID0gYXdhaXQgdGhpcy5nZXRNZWFzdXJlbWVudHNGb3JTcGFjZUZvclVzZXIoXHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRFxyXG4gICAgICApO1xyXG4gICAgICBpZiAobWVhc3VyZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRlRmlsdGVyKSB7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTWVhc3VyZW1lbnRzRm9yRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMsXHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlclxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubWVhc3VyZW1lbnRGaWx0ZXIpIHtcclxuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuc3BhY2UgPSBtZWFzdXJlbWVudHM7XHJcbiAgICAgICAgLy8gZW1pdCBvbiB0YWdzIHNob3VsZCBiZSBhZnRlciBzZXR0aW5nIGN1cnJlbnQuc3BhY2UgISFcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICBjb25zdCBjb21tZW50c1pvbmUgPSBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgICAgIG1lYXN1cmVtZW50cy5tYXAoKG1lYXN1cmUpID0+IG1lYXN1cmUuY29tbWVudCksXHJcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzLmZpbHRlcigobWVhc3VyZSkgPT5cclxuICAgICAgICAgICAgY29tbWVudHNab25lLmluY2x1ZGVzKG1lYXN1cmUuY29tbWVudClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChtZWFzdXJlbWVudHMubWFwKChtKSA9PiBtLmNvbW1lbnQpKTtcclxuXHJcbiAgICAgICAgbWVhc3VyZW1lbnRzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgbmV3IERhdGUoYi5jb21tZW50LmNyZWF0ZWRBdCkgLVxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5ldyBEYXRlKGEuY29tbWVudC5jcmVhdGVkQXQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gbWVhc3VyZW1lbnRzO1xyXG4gICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudE1lYXN1cmVtZW50cyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gW107XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnpvbmUgPSBbXTtcclxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobnVsbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlTWVhc3VyZW1lbnQobWVhc3VyZW1lbnQ6IE1lYXN1cmVtZW50KTogUHJvbWlzZTxDb21tZW50PiB7XHJcbiAgICBjb25zdCBkZWxldGVkQ29tbWVudCA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZGVsZXRlQ29tbWVudChcclxuICAgICAgbWVhc3VyZW1lbnQuY29tbWVudC5pZFxyXG4gICAgKTtcclxuICAgIGlmIChkZWxldGVkQ29tbWVudCkge1xyXG4gICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKG1lYXN1cmVtZW50LnBvaS5pZCk7XHJcbiAgICAgIGNvbnN0IHByZWZpeCA9IGAke21lYXN1cmVtZW50LmNvbW1lbnQuaWQuc2xpY2UoMCwgOCl9X2A7XHJcbiAgICAgIGNvbnN0IHBhdGggPSBgJHt0aGlzLnBhdGggKyBwcmVmaXh9bWVzdXJlLmpwZWdgO1xyXG4gICAgICBhd2FpdCBkZWxldGVGcm9tUzMocGF0aCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVsZXRlZENvbW1lbnQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVNZWFzdXJlbWVudEZvclNwYWNlKFxyXG4gICAgY29tbWVudElucHV0OiBDb21tZW50LFxyXG4gICAgZGF0YU1lYXN1cmVtZW50czogeyBtZWFzdXJlOiBhbnlbXTsgc3dlZXA6IHN0cmluZyB9LFxyXG4gICAgc2NyZWVuc2hvdDogYW55LFxyXG4gICAgc3BhY2VJRDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxNZWFzdXJlbWVudD4ge1xyXG4gICAgY29uc3QgbGFzdE1lYXN1cmUgPSBkYXRhTWVhc3VyZW1lbnRzLm1lYXN1cmU7XHJcbiAgICBjb25zdCBzd2VlcElEID0gZGF0YU1lYXN1cmVtZW50cy5zd2VlcDtcclxuICAgIGNvbnN0IGxhc3RQb2ludCA9IGxhc3RNZWFzdXJlW2xhc3RNZWFzdXJlLmxlbmd0aCAtIDFdO1xyXG4gICAgbGV0IGNvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmNyZWF0ZUNvbW1lbnQoY29tbWVudElucHV0KTtcclxuICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICBjb29yZGluYXRlOiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgeDogbGFzdFBvaW50LngsXHJcbiAgICAgICAgeTogbGFzdFBvaW50LnksXHJcbiAgICAgICAgejogbGFzdFBvaW50LnosXHJcbiAgICAgIH0pLFxyXG4gICAgICB0eXBlOiBQb2lUeXBlLk1FQVNVUkUsXHJcbiAgICAgIGVsZW1lbnRJRDogY29tbWVudC5pZCxcclxuICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHN3ZWVwSUQsXHJcbiAgICB9IGFzIFBPSTtcclxuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgIGNvbnN0IHNjcmVlbiA9IGF3YWl0IGZldGNoKHNjcmVlbnNob3QpO1xyXG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHNjcmVlbi5ibG9iKCk7XHJcbiAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCAnbWVzdXJlLmpwZWcnLCB7IHR5cGU6ICdpbWFnZS9qcGVnJyB9KTtcclxuICAgIGNvbnN0IHVybCA9IGF3YWl0IHVwbG9hZEZpbGVUb1MzKHRoaXMucGF0aCwgZmlsZSwgY29tbWVudC5pZCk7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgIGNvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnVwZGF0ZUNvbW1lbnQoe1xyXG4gICAgICAgIGlkOiBjb21tZW50LmlkLFxyXG4gICAgICAgIGFubmV4ZTogdXJsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1lYXN1cmVtZW50ID0ge1xyXG4gICAgICBjb21tZW50LFxyXG4gICAgICBwb2ksXHJcbiAgICB9IGFzIE1lYXN1cmVtZW50O1xyXG5cclxuICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljc1xyXG4gICAgICAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmRcclxuICAgICAgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxyXG4gICAgICAgICAgICBvYmplY3RUeXBlOiAnbWVhc3VyZW1lbnQnLFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudDogbWVhc3VyZW1lbnQsXHJcbiAgICAgICAgICAgIC8vem9uZUlkOiBzcGFjZUlELFxyXG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgYSBkYXRlIGZpbHRlciBpcyBjdXJyZW50bHkgYXBwbGllZFxyXG4gICAgaWYgKHRoaXMuZGF0ZUZpbHRlciAmJiB0aGlzLmRhdGVGaWx0ZXIubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZW5kIGRhdGUgb2YgdGhlIGZpbHRlciB0byB0aGUgY3VycmVudCBkYXRlIHRvIGVuc3VyZSB0aGUgbmV3bHkgY3JlYXRlZCBtZWFzdXJlbWVudCBpcyBpbmNsdWRlZFxyXG4gICAgICBjb25zdCBuZXdFbmREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgY29uc3QgbmV3RmlsdGVyID0gW3RoaXMuZGF0ZUZpbHRlclswXSwgbmV3RW5kRGF0ZV07XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChuZXdGaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtZWFzdXJlbWVudDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1vZGVsM0RGb3JNZWFzdXJlbWVudChtZWFzdXJlbWVudDogTWVhc3VyZW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG1lYXN1cmVtZW50LmNvbW1lbnQuaWQpO1xyXG4gICAgaWYgKHBvaSAmJiBwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcclxuICAgICAgY29uc3QgbmF2aWdhdGlvbnMgPVxyXG4gICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3JNYXR0ZXJwb3J0SURGb3JTcGFjZShcclxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcclxuICAgICAgICAgIG1lYXN1cmVtZW50LmNvbW1lbnQuc3BhY2VJRFxyXG4gICAgICAgICk7XHJcbiAgICAgIGNvbnN0IFtwb2lOYXZpZ2F0aW9uXSA9IG5hdmlnYXRpb25zO1xyXG4gICAgICByZXR1cm4gcG9pTmF2aWdhdGlvbi5ub2RlLm1vZGVsM0Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnRbXT4ge1xyXG4gICAgbGV0IGNvbW1lbnRzID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50c0J5U3BhY2VJRChzcGFjZUlEKTtcclxuICAgIGNvbW1lbnRzID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck1lYXN1cmVtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgc3BhY2VJRCxcclxuICAgICAgY29tbWVudHNcclxuICAgICk7XHJcbiAgICBsZXQgbWVhc3VyZW1lbnRzID0gW107XHJcbiAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICBjb21tZW50cy5tYXAoYXN5bmMgKGNvbW1lbnQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5yZWFkQ29tbWVudEFzTWVhc3VyZW1lbnQoY29tbWVudC5pZCk7XHJcbiAgICAgICAgICBtZWFzdXJlbWVudHMucHVzaChtZWFzdXJlbWVudCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZWFzdXJlbWVudHM7XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable class-methods-use-this */
|
|
2
2
|
/* eslint-disable consistent-return */
|
|
3
3
|
import { Inject, Injectable } from '@angular/core';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
4
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
5
5
|
import { openModalForVisitSwitch } from '../../helpers.service';
|
|
6
6
|
import { TicketType, TicketPriority, TicketStatus, EventStatus, EventType, PoiType, } from '../../types.service';
|
|
7
7
|
import { BaseObjectService } from './base-object.service';
|
|
@@ -38,7 +38,7 @@ export class TicketsService extends BaseObjectService {
|
|
|
38
38
|
zone: [],
|
|
39
39
|
space: [],
|
|
40
40
|
};
|
|
41
|
-
ticketTags = new
|
|
41
|
+
ticketTags = new BehaviorSubject(null);
|
|
42
42
|
ticketsFiltered = [];
|
|
43
43
|
ticketsUpdated = new Subject();
|
|
44
44
|
currentSpaceID;
|
|
@@ -490,7 +490,6 @@ export class TicketsService extends BaseObjectService {
|
|
|
490
490
|
}
|
|
491
491
|
}
|
|
492
492
|
else {
|
|
493
|
-
/** Si on force le switch de la visit */
|
|
494
493
|
window.open(`${url}?model3D=${result.model3D}&sweep=true`, '_blank');
|
|
495
494
|
}
|
|
496
495
|
}
|
|
@@ -541,4 +540,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
541
540
|
type: Inject,
|
|
542
541
|
args: ['currentAPIService']
|
|
543
542
|
}] }, { type: i1.OperationService }, { type: i2.EventService }, { type: i3.AffectationService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.NavigatorService }, { type: i7.FilterService }, { type: i8.InterventionService }, { type: i9.NavigationService }, { type: i10.ViewerService }, { type: i11.ZoneChangeService }, { type: i12.NgbModal }] });
|
|
544
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy90aWNrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0Msc0NBQXNDO0FBQ3RDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBQyxPQUFPLEVBQTBCLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBQyx1QkFBdUIsRUFBWSxNQUFNLHVCQUF1QixDQUFDO0FBRXpFLE9BQU8sRUFHTCxVQUFVLEVBQ1YsY0FBYyxFQUNkLFlBQVksRUFDWixXQUFXLEVBQ1gsU0FBUyxFQUdULE9BQU8sR0FHUixNQUFNLHFCQUFxQixDQUFDO0FBSzdCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBSXhELE9BQU8sZUFBZSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sYUFBYSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hFLE9BQU8sYUFBYSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JFLE9BQU8sZUFBZSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVN2RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGlCQUFpQjtJQXdEekM7SUFDQTtJQUNBO0lBRUE7SUFDQTtJQUNBO0lBQ0E7SUFFQTtJQUNBO0lBQ0E7SUFsRVYsY0FBYyxHQUF3QztRQUNwRCxJQUFJLEVBQUUsRUFBRTtRQUNSLEtBQUssRUFBRSxFQUFFO0tBQ1YsQ0FBQztJQUVGLFVBQVUsR0FBc0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU5QyxlQUFlLEdBQWEsRUFBRSxDQUFDO0lBRS9CLGNBQWMsR0FHVCxJQUFJLE9B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LFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1lBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDN0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQzFELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0FubUJVLGNBQWMsa0JBcURmLG1DQUFtQyxhQUVuQyxtQkFBbUI7NEdBdkRsQixjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXNESSxNQUFNOzJCQUFDLG1DQUFtQzs7MEJBRTFDLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjb25zaXN0ZW50LXJldHVybiAqL1xyXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TmdiTW9kYWx9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7b3Blbk1vZGFsRm9yVmlzaXRTd2l0Y2gsIHdhaXRVbnRpbH0gZnJvbSAnLi4vLi4vaGVscGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHtNYXR0ZXJ0YWdEYXRhfSBmcm9tICcuLi8uLi9tYXR0ZXJ0YWdEYXRhJztcclxuaW1wb3J0IHtcclxuICBFdmVudCxcclxuICBUaWNrZXQsXHJcbiAgVGlja2V0VHlwZSxcclxuICBUaWNrZXRQcmlvcml0eSxcclxuICBUaWNrZXRTdGF0dXMsXHJcbiAgRXZlbnRTdGF0dXMsXHJcbiAgRXZlbnRUeXBlLFxyXG4gIEFmZmVjdGF0aW9uLFxyXG4gIFBPSSxcclxuICBQb2lUeXBlLFxyXG4gIElVcGRhdGUsXHJcbiAgWm9uZSxcclxufSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtGaWx0ZXJTZXJ2aWNlfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7TmF2aWdhdG9yU2VydmljZX0gZnJvbSAnLi4vbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Jhc2VVc2VyU2VydmljZX0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3ZXJTZXJ2aWNlfSBmcm9tICcuLi92aWV3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZU9iamVjdFNlcnZpY2V9IGZyb20gJy4vYmFzZS1vYmplY3Quc2VydmljZSc7XHJcbmltcG9ydCB7TmF2aWdhdGlvblNlcnZpY2V9IGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtPcGVyYXRpb25TZXJ2aWNlfSBmcm9tICcuL29wZXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtQb2lTZXJ2aWNlfSBmcm9tICcuL3BvaS5zZXJ2aWNlJztcclxuaW1wb3J0IEluZm9ybWF0aW9uSWNvbiBmcm9tICdAaWNvbmlmeS9pY29ucy1tZGkvaW5mb3JtYXRpb24tb3V0bGluZSc7XHJcbmltcG9ydCBBY2NpZGVudEljb24gZnJvbSAnQGljb25pZnkvaWNvbnMtbWRpL2FsZXJ0JztcclxuaW1wb3J0IFdvcmRPcmRlckljb24gZnJvbSAnQGljb25pZnkvaWNvbnMtbWRpL2FjY291bnQtaGFyZC1oYXQnO1xyXG5pbXBvcnQgUmVwb3J0aW5nSWNvbiBmcm9tICdAaWNvbmlmeS9pY29ucy1tZGkvZmlsZS1kb2N1bWVudC1vdXRsaW5lJztcclxuaW1wb3J0IE1haW50ZW5hbmNlSWNvbiBmcm9tICdAaWNvbmlmeS9pY29ucy1tZGkvdG9vbHMnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi9ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtJbnRlcnZlbnRpb25TZXJ2aWNlfSBmcm9tICcuLi9pbnRlcnZlbnRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7QWZmZWN0YXRpb25TZXJ2aWNlfSBmcm9tICcuL2FmZmVjdGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1pvbmVDaGFuZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGlja2V0c1NlcnZpY2UgZXh0ZW5kcyBCYXNlT2JqZWN0U2VydmljZSB7XHJcbiAgY3VycmVudFRpY2tldHM6IHsgem9uZTogVGlja2V0W107IHNwYWNlOiBUaWNrZXRbXSB9ID0ge1xyXG4gICAgem9uZTogW10sXHJcbiAgICBzcGFjZTogW10sXHJcbiAgfTtcclxuXHJcbiAgdGlja2V0VGFnczogU3ViamVjdDxUaWNrZXRbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB0aWNrZXRzRmlsdGVyZWQ6IFRpY2tldFtdID0gW107XHJcblxyXG4gIHRpY2tldHNVcGRhdGVkOiBTdWJqZWN0PHtcclxuICAgIHpvbmU6IFRpY2tldFtdO1xyXG4gICAgc3BhY2U6IFRpY2tldFtdO1xyXG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgem9uZUlERmlsdGVyOiBzdHJpbmc7XHJcblxyXG4gIGRhdGVGaWx0ZXI6IERhdGVbXTtcclxuXHJcbiAgdGlja2V0VHlwZUZpbHRlcjogVGlja2V0VHlwZVtdO1xyXG5cclxuICByZXBvcnRpbmdJY29uID0gUmVwb3J0aW5nSWNvbjtcclxuXHJcbiAgbWFpbnRlbmFuY2VJY29uID0gTWFpbnRlbmFuY2VJY29uO1xyXG5cclxuICB3b3Jrb3JkZXJJY29uID0gV29yZE9yZGVySWNvbjtcclxuXHJcbiAgaW5mb3JtYXRpb25JY29uID0gSW5mb3JtYXRpb25JY29uO1xyXG5cclxuICBhY2NpZGVudEljb24gPSBBY2NpZGVudEljb247XHJcblxyXG4gIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB1cGRhdGluZzogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIEFQSTogYW55O1xyXG4gIGF3c0tpbmVzaXNBbmFseXRpY3M6IGFueTsgLy9BV1NcclxuXHJcbiAgaXNNdXNldW1Vc2VyID0gZmFsc2U7XHJcblxyXG4gIG5hdlN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBmaWxldHJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZmxvb3JzUGVyU3BhY2U6IFpvbmVbXSA9IG51bGw7XHJcblxyXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdjdXJyZW50QXdzS2luZXNpc0FuYWx5dGljc1NlcnZpY2UnKVxyXG4gICAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcclxuICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcclxuICAgIHByaXZhdGUgb3BlcmF0aW9uU2VydmljZTogT3BlcmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFmZmVjdGF0aW9uU2VydmljZTogQWZmZWN0YXRpb25TZXJ2aWNlLFxyXG4gICAgcG9pU2VydmljZTogUG9pU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgaW50ZXJ2ZW50aW9uU2VydmljZTogSW50ZXJ2ZW50aW9uU2VydmljZSxcclxuICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihwb2lTZXJ2aWNlLCBuYXZpZ2F0aW9uU2VydmljZSk7XHJcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XHJcbiAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgdGhpcy5pc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICB0aGlzLmluaXRTdWJzY3JpcHRpb25zKCk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzQ2hhbmdlZC5zdWJzY3JpYmUoKGlzQ29ubmVjdGVkKSA9PiB7XHJcbiAgICAgIGlmIChpc0Nvbm5lY3RlZCkge1xyXG4gICAgICAgIHRoaXMuaXNNdXNldW1Vc2VyID0gdGhpcy51c2VyU2VydmljZS5oYXNPbmx5TXVzZXVtUm9sZSgpO1xyXG4gICAgICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbnMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5uYXZTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgIHRoaXMubmF2U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB0aGlzLmZpbGV0clN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS5mbG9vckhhc0NoYW5nZWQuc3Vic2NyaWJlKChmbG9vcikgPT4ge1xyXG4gICAgICBpZiAoZmxvb3IpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0VGlja2V0cygpIHtcclxuICAgIGxldCB0aWNrZXRzRmlsdGVyZWQgPSBbXTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUaWNrZXRzQnlTcGFjZSh0aGlzLmN1cnJlbnRTcGFjZUlEKS50aGVuKCh0aWNrZXRzKSA9PiB7XHJcbiAgICAgICAgaWYgKHRpY2tldHMpIHtcclxuICAgICAgICAgIHRpY2tldHNGaWx0ZXJlZCA9IHRpY2tldHM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGlja2V0c0ZpbHRlcmVkID1cclxuICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgICAgIHRpY2tldHNGaWx0ZXJlZCxcclxuICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICAgICApO1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIgJiYgdGhpcy5kYXRlRmlsdGVyWzBdICE9IFwiSW52YWxpZCBEYXRlXCIgJiYgdGhpcy5kYXRlRmlsdGVyWzFdICE9IFwiSW52YWxpZCBEYXRlXCIpIHtcclxuICAgICAgICB0aWNrZXRzRmlsdGVyZWQgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvckRhdGVSYW5nZShcclxuICAgICAgICAgIHRpY2tldHNGaWx0ZXJlZCxcclxuICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlclxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudGlja2V0VHlwZUZpbHRlcikge1xyXG4gICAgICAgIHRpY2tldHNGaWx0ZXJlZCA9IHRpY2tldHNGaWx0ZXJlZC5maWx0ZXIoKHRpY2tldCkgPT5cclxuICAgICAgICAgIHRoaXMudGlja2V0VHlwZUZpbHRlci5pbmNsdWRlcyh0aWNrZXQudHlwZSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudFRpY2tldHMuc3BhY2UgPSB0aWNrZXRzRmlsdGVyZWQ7XHJcblxyXG4gICAgICBpZiAodGhpcy56b25lSURGaWx0ZXIpIHtcclxuICAgICAgICB0aWNrZXRzRmlsdGVyZWQgPSBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgICB0aWNrZXRzRmlsdGVyZWQsXHJcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlclxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50VGlja2V0cy56b25lID0gdGlja2V0c0ZpbHRlcmVkO1xyXG4gICAgICB0aGlzLnRpY2tldFRhZ3MubmV4dCh0aWNrZXRzRmlsdGVyZWQpO1xyXG4gICAgICB0aGlzLnRpY2tldHNVcGRhdGVkLm5leHQodGhpcy5jdXJyZW50VGlja2V0cyk7XHJcbiAgICAgIHRoaXMudXBkYXRpbmcubmV4dChmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRpY2tldFRhZ3MubmV4dChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGFkYXB0VGlja2V0KHRpY2tldDogVGlja2V0KTogUHJvbWlzZTxUaWNrZXQ+IHtcclxuICAgIGlmICh0aWNrZXQuY29tbWVudHMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aWNrZXQuY29tbWVudHMuaXRlbXMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoYi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoYS5jcmVhdGVkQXQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGlja2V0LmV2ZW50cy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vIFNvcnQgZXZlbnRzIGJ5IGRhdGVcclxuICAgICAgdGlja2V0LmV2ZW50cy5pdGVtcy5zb3J0KChldmVudDEsIGV2ZW50MikgPT4ge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZXZlbnQyLmNyZWF0ZWRBdCkgLSBuZXcgRGF0ZShldmVudDEuY3JlYXRlZEF0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aWNrZXQucHJlc3RhdGFpcmUgPSBhd2FpdCB0aGlzLmludGVydmVudGlvblNlcnZpY2UuZ2V0UHJlc3RhdGFpcmVGb3JUaWNrZXQoXHJcbiAgICAgIHRpY2tldFxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aWNrZXQ7XHJcbiAgfVxyXG5cclxuICBnZXRQcmlvcml0eUNvbG9yKHRpY2tldDogVGlja2V0KTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGlja2V0LnByaW9yaXR5KSB7XHJcbiAgICAgIGNhc2UgVGlja2V0UHJpb3JpdHkuTUFYSU1VTTpcclxuICAgICAgICByZXR1cm4gJ2NyaW1zb24nO1xyXG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5LkhJR0g6XHJcbiAgICAgICAgcmV0dXJuICdyZWQnO1xyXG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5Lk1FRElVTTpcclxuICAgICAgICByZXR1cm4gJ29yYW5nZSc7XHJcbiAgICAgIGNhc2UgVGlja2V0UHJpb3JpdHkuTE9XOlxyXG4gICAgICAgIHJldHVybiAnZ3JlZW4nO1xyXG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5Lk1JTklNVU06XHJcbiAgICAgICAgcmV0dXJuICdibHVlJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2JsdWUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzQ29sb3IodGlja2V0OiBUaWNrZXQpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh0aWNrZXQuc3RhdHVzKSB7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlRPX0JFX1BST0NFU1NFRDpcclxuICAgICAgICByZXR1cm4gJyNCMEIwQjEnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5QTEFOTkVEOlxyXG4gICAgICAgIHJldHVybiAnI0VCREYyNyc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLklOX1BST0dSRVNTOlxyXG4gICAgICAgIHJldHVybiAnI0VCREYyNyc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLldBSVRJTkdfRk9SX1ZBTElEQVRJT046XHJcbiAgICAgICAgcmV0dXJuICcjRUJERjI3JztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuVkFMSURBVEVEOlxyXG4gICAgICAgIHJldHVybiAnI0JDRTJFNSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlJFSkVDVEVEOlxyXG4gICAgICAgIHJldHVybiAnI2U4NGMzNSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlJFU09MVkVEOlxyXG4gICAgICAgIHJldHVybiAnI0JDRTJFNSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLkFSQ0hJVkVEOlxyXG4gICAgICAgIHJldHVybiAnI0IwQjBCMSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLkxBVEU6XHJcbiAgICAgICAgcmV0dXJuICcjZTg0YzM1JztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQkxPQ0tFRDpcclxuICAgICAgICByZXR1cm4gJyNlODRjMzUnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5DT01QTEVURUQ6XHJcbiAgICAgICAgcmV0dXJuICcjMzg4NjU5JztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuREVMQVlFRDpcclxuICAgICAgICByZXR1cm4gJyNEQjc1NDMnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5DQU5DRUxMRUQ6XHJcbiAgICAgICAgcmV0dXJuICcjZTg0YzM1JztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuVE9fUkVETzpcclxuICAgICAgICByZXR1cm4gJyNEQjc1NDMnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5DUkVBVEVEOlxyXG4gICAgICAgIHJldHVybiAnI0IwQjBCMSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcjQkNFMkU1JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRpY2tldFByaW9yaXR5TnVtYmVyKHQpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5Lk1JTklNVU1cclxuICAgICAgPyAtMVxyXG4gICAgICA6IHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5LkxPV1xyXG4gICAgICAgID8gMFxyXG4gICAgICAgIDogdC5wcmlvcml0eSA9PT0gVGlja2V0UHJpb3JpdHkuTUVESVVNXHJcbiAgICAgICAgICA/IDFcclxuICAgICAgICAgIDogdC5wcmlvcml0eSA9PT0gVGlja2V0UHJpb3JpdHkuSElHSFxyXG4gICAgICAgICAgICA/IDJcclxuICAgICAgICAgICAgOiB0LnByaW9yaXR5ID09PSBUaWNrZXRQcmlvcml0eS5NQVhJTVVNXHJcbiAgICAgICAgICAgICAgPyAzXHJcbiAgICAgICAgICAgICAgOiAtMTtcclxuICB9XHJcblxyXG4gIGdldFRpY2tldEljb24odHlwZTogVGlja2V0VHlwZSk6IGFueSB7XHJcbiAgICAvLyBjb25zdCB0eXBlSWNvbiA6IFRpY2tldFR5cGUgPSB0aWNrZXQudHlwZTtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFRpY2tldFR5cGUuUkVQT1JUSU5HOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcG9ydGluZ0ljb247XHJcbiAgICAgIGNhc2UgVGlja2V0VHlwZS5SRVFVRVNUX0ZPUl9JTlRFUlZFTlRJT046XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpbnRlbmFuY2VJY29uO1xyXG4gICAgICBjYXNlIFRpY2tldFR5cGUuUkVRVUVTVF9GT1JfTUFJTlRFTkFOQ0U6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpbnRlbmFuY2VJY29uO1xyXG4gICAgICBjYXNlIFRpY2tldFR5cGUuV09SS19PUkRFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy53b3Jrb3JkZXJJY29uO1xyXG4gICAgICBjYXNlIFRpY2tldFR5cGUuSU5DSURFTlQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjaWRlbnRJY29uO1xyXG4gICAgICBjYXNlIFRpY2tldFR5cGUuSU5GT1JNQVRJT046XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5mb3JtYXRpb25JY29uO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLm1haW50ZW5hbmNlSWNvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZEV2ZW50VG9UaWNrZXQodGlja2V0OiBUaWNrZXQsIGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+IHtcclxuICAgIGNvbnN0IGN1cnJlbnRNaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbih0aWNrZXQuc3BhY2VJRCk7XHJcbiAgICBldmVudC5ncm91cCA9IGV2ZW50Lmdyb3VwID8gZXZlbnQuZ3JvdXAgOiAnZGVmYXVsdCc7XHJcbiAgICBldmVudC50aWNrZXRJRCA9IGV2ZW50LnRpY2tldElEID8gZXZlbnQudGlja2V0SUQgOiB0aWNrZXQuaWQ7XHJcbiAgICBldmVudC5zdGF0dXMgPSBldmVudC5zdGF0dXMgPyBldmVudC5zdGF0dXMgOiBFdmVudFN0YXR1cy5DUkVBVEVEO1xyXG4gICAgZXZlbnQudHlwZSA9IGV2ZW50LnR5cGUgPyBldmVudC50eXBlIDogRXZlbnRUeXBlLlRJQ0tFVDtcclxuICAgIGV2ZW50Lm93bmVySUQgPSBldmVudC5vd25lcklEID8gZXZlbnQub3duZXJJRCA6IGN1cnJlbnRNaXNzaW9uLmlkO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVjZWl2ZWRFdmVudCA9IGF3YWl0IHRoaXMuZXZlbnRTZXJ2aWNlLmNyZWF0ZUV2ZW50KGV2ZW50KTtcclxuICAgICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzICYmICEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCAmJiB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkKCkpIHtcclxuICAgICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXHJcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICBldmVudFR5cGU6ICdUaWNrZXQgQ2hhbmdlJyxcclxuICAgICAgICAgICAgICB0aWNrZXRJZDogZXZlbnQudGlja2V0SUQsXHJcbiAgICAgICAgICAgICAgdGlja2V0OiB0aWNrZXQsXHJcbiAgICAgICAgICAgICAgc3RhdHVzOiBldmVudC5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxyXG4gICAgICAgICAgICAgIHVzZXI6IHRoaXMudXNlclNlcnZpY2UuY3UsXHJcbiAgICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgICAgem9uZUlkOiB0aGlzLnpvbmVJREZpbHRlcixcclxuICAgICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHJlYW1OYW1lOiAnc21hcnRlcnBsYW5LaW5lc2lzLWFuYWx5dGljcycsXHJcbiAgICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAnQVdTS2luZXNpcydcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdFdmVudCBzdWNjZXNzZnVsbHkgY3JlYXRlZCAhJyk7XHJcbiAgICAgIHJldHVybiByZWNlaXZlZEV2ZW50O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRUaWNrZXQodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPFRpY2tldCB8IHZvaWQ+IHtcclxuICAgIHRpY2tldC5zdGF0dXMgPSBUaWNrZXRTdGF0dXMuQ1JFQVRFRDtcclxuICAgIGlmICghdGlja2V0Lm93bmVyTWlzc2lvbklEKSB7XHJcbiAgICAgIHRpY2tldC5vd25lck1pc3Npb25JRCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oXHJcbiAgICAgICAgdGlja2V0LnNwYWNlSURcclxuICAgICAgKS5pZDtcclxuICAgIH1cclxuICAgIC8vIFRPRE8hISEgZmlsdGVyIG1pc3Npb25zIGJ5IHNwYWNlIG9mIHRpY2tldFxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVjZWl2ZWRUaWNrZXQgPSBhd2FpdCB0aGlzLmNyZWF0ZVRpY2tldCh0aWNrZXQpO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnISEhIFJlc3BvbnNlIGZyb20gY3JlYXRpbmcgdGlja2V0IDonKTtcclxuICAgICAgLy8gY29uc29sZS5sb2cocmVjZWl2ZWRUaWNrZXQpO1xyXG4gICAgICB0aGlzLmFkZEV2ZW50VG9UaWNrZXQocmVjZWl2ZWRUaWNrZXQsIHtcclxuICAgICAgICB0aXRsZTogJ0Nyw6lhdGlvbiBkdSB0aWNrZXQnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgVGlja2V0IGNyw6nDqSBwYXIgLWAsXHJcbiAgICAgICAgdHJhbnNsYXRpb25QYXRoOiAndGlja2V0RXZlbnQudGlja2V0LmNyZWF0ZWQnLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51cGRhdGVEb25lLm5leHQodHJ1ZSk7XHJcbiAgICAgIHJldHVybiByZWNlaXZlZFRpY2tldDsgLy8gaW5zdGVhZCBvZiB0cnVlXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZygnVGlja2V0IGNyZWF0aW9uIEZBSUxFRCcpO1xyXG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlVGlja2V0V2l0aEV2ZW50KFxyXG4gICAgdGlja2V0OiBJVXBkYXRlICYgUGFydGlhbDxUaWNrZXQ+LFxyXG4gICAgZXZlbnQ/OiBFdmVudFxyXG4gICk6IFByb21pc2U8VGlja2V0PiB7XHJcbiAgICBjb25zdCByZWNlaXZlZFRpY2tldCA9IGF3YWl0IHRoaXMudXBkYXRlVGlja2V0KHRpY2tldCk7XHJcbiAgICBpZiAocmVjZWl2ZWRUaWNrZXQpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1VwZGF0ZWQgdGlja2V0IDonKTtcclxuICAgICAgY29uc29sZS5sb2cocmVjZWl2ZWRUaWNrZXQpO1xyXG4gICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmFkZEV2ZW50VG9UaWNrZXQocmVjZWl2ZWRUaWNrZXQsIGV2ZW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0ZURvbmUubmV4dCh0cnVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZWNlaXZlZFRpY2tldDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbW92ZUFzc2lnbmVlRnJvbVRpY2tldChcclxuICAgIHRpY2tldDogVGlja2V0LFxyXG4gICAgYXNzaWduZWU6IEFmZmVjdGF0aW9uXHJcbiAgKTogUHJvbWlzZTxUaWNrZXQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGFmZmVjdGF0aW9uID1cclxuICAgICAgICBhd2FpdCB0aGlzLmFmZmVjdGF0aW9uU2VydmljZS5zb2Z0RGVsZXRlQWZmZWN0YXRpb25CeUlEKGFzc2lnbmVlLmlkKTtcclxuICAgICAgaWYgKCFhZmZlY3RhdGlvbikge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGByZW1vdmVBc3NpZ25lZUZyb21UaWNrZXQoJHt0aWNrZXQuaWR9LCAke2Fzc2lnbmVlLmlkfSkgZmFpbGVkYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRpY2tldDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZVRpY2tldExvY2F0aW9uKFxyXG4gICAgdGlja2V0OiBUaWNrZXQsXHJcbiAgICB0YWdEYXRhOiBNYXR0ZXJ0YWdEYXRhXHJcbiAgKTogUHJvbWlzZTxQT0k+IHtcclxuICAgIGNvbnN0IHBvaUlucHV0ID0ge1xyXG4gICAgICBjb29yZGluYXRlOiB0YWdEYXRhLmdldENvb3JkaW5hdGVTdHJpbmcoKSxcclxuICAgICAgdHlwZTogUG9pVHlwZS5USUNLRVQsXHJcbiAgICAgIGVsZW1lbnRJRDogdGlja2V0LmlkLFxyXG4gICAgICBtZXRhZGF0YTogdGFnRGF0YS5nZXRNZXRhZGF0YVN0cmluZygpLFxyXG4gICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogdGFnRGF0YS5nZXRTd2VlcElEKCksXHJcbiAgICB9IGFzIFBPSTtcclxuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgIGF3YWl0IHRoaXMuYWRkRXZlbnRUb1RpY2tldCh0aWNrZXQsIHtcclxuICAgICAgdGl0bGU6ICdDaGFuZ2VtZW50IHBvc2l0aW9uIGR1IHRpY2tldCcsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkxlIHBvaW50IGQnaW50w6lyw6p0IGR1IHRpY2tldCBhIMOpdMOpIG1vZGlmacOpXCIsXHJcbiAgICAgIHN0YXR1czogRXZlbnRTdGF0dXMuUE9TSVRJT05fU0VULFxyXG4gICAgICB0cmFuc2xhdGlvblBhdGg6ICd0aWNrZXRFdmVudC5wb3NpdGlvbi5zZXQnLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcG9pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlU3RhdHVzT2ZUaWNrZXQoXHJcbiAgICB0aWNrZXQ6IFRpY2tldCxcclxuICAgIHN0YXR1czogVGlja2V0U3RhdHVzXHJcbiAgKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXMgPSB0aWNrZXQuc3RhdHVzO1xyXG4gICAgY29uc3Qgb2xkVGlja2V0U3RhdHVzID0gdGlja2V0LnN0YXR1cztcclxuICAgIHRpY2tldC5zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICBpZiAoY3VycmVudFN0YXR1cyA9PT0gc3RhdHVzKSB7XHJcbiAgICAgIHJldHVybiB0aWNrZXQ7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygnVXBkYXRpbmcgc3RhdHVzJyk7XHJcbiAgICByZXR1cm4gdGhpcy51cGRhdGVUaWNrZXQoe1xyXG4gICAgICBpZDogdGlja2V0LmlkLFxyXG4gICAgICBzdGF0dXMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZVR5cGVPZlRpY2tldCh0aWNrZXQ6IFRpY2tldCwgdHlwZTogVGlja2V0VHlwZSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBwcmV2aW91c1R5cGUgPSB0aWNrZXQudHlwZTtcclxuICAgIHRpY2tldC50eXBlID0gdHlwZTtcclxuICAgIGF3YWl0IHRoaXMudXBkYXRlVGlja2V0V2l0aEV2ZW50KFxyXG4gICAgICB7aWQ6IHRpY2tldC5pZCwgdHlwZTogdGlja2V0LnR5cGV9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdUeXBlIGNoYW5nw6knLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQ2hhbmdlbWVudCBkZSAke3ByZXZpb3VzVHlwZX0gdmVycyAke3RpY2tldC50eXBlfWAsXHJcbiAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHt0eXBlOiB0aWNrZXQudHlwZX0pLFxyXG4gICAgICAgIHRyYW5zbGF0aW9uUGF0aDogJ3RpY2tldEV2ZW50LnRpY2tldC50eXBlJyxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aWNrZXQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRUaWNrZXRzRm9yVXNlckZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8VGlja2V0W10+IHtcclxuICAgIGNvbnN0IHRpY2tldHNTcGFjZSA9IGF3YWl0IHRoaXMuZ2V0VGlja2V0c0J5U3BhY2Uoc3BhY2VJRCk7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgIHRpY2tldHNTcGFjZSxcclxuICAgICAgc3BhY2VJRFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKiBCYXNpYyBDUlVEIG9wZXJhdGlvbnMgKi9cclxuICBhc3luYyByZWFkVGlja2V0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0VGlja2V0KGlkKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZVRpY2tldChpbnB1dDogVGlja2V0KTogUHJvbWlzZTxUaWNrZXQ+IHtcclxuICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxyXG4gICAgICAgICAgICBvYmplY3RUeXBlOiAndGlja2V0JyxcclxuICAgICAgICAgICAgLy96b25lSWQ6IGlucHV0LnNwYWNlSUQsIC8vIFRPRE86IGNoZWNrIGlmIHNwYWNlSWQgPT0gem9uZUlkXHJcbiAgICAgICAgICAgIGRvbWFpbjogaW5wdXQuZG9tYWluLFxyXG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVRpY2tldChpbnB1dCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVUaWNrZXQoaW5wdXQ6IElVcGRhdGUgJiBQYXJ0aWFsPFRpY2tldD4pOiBQcm9taXNlPFRpY2tldD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVUaWNrZXQoaW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlVGlja2V0KHRpY2tldDogVGlja2V0KTogUHJvbWlzZTxUaWNrZXQ+IHtcclxuICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlVGlja2V0KHtpZDogdGlja2V0LmlkfSk7XHJcblxyXG4gICAgLy8gZGVsZXRlIFBPSVxyXG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKHRpY2tldC5pZCk7XHJcbiAgICBpZiAocG9pKSB7XHJcbiAgICAgIHRoaXMucG9pU2VydmljZS5kZWxldGVQb2kocG9pLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjbGVhbiBwYXJlbnRJRFxyXG4gICAgaWYgKHRpY2tldC5jaGlsZHJlbi5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRpY2tldC5jaGlsZHJlbi5pdGVtcy5tYXAoYXN5bmMgKGNoaWxkVGlja2V0KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVUaWNrZXQoe1xyXG4gICAgICAgICAgICBpZDogY2hpbGRUaWNrZXQuaWQsXHJcbiAgICAgICAgICAgIHBhcmVudElEOiBudWxsLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvdWxkIG5vdCB1cGRhdGUgdGlja2V0JywgY2hpbGRUaWNrZXQuaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUV2ZW50KHtcclxuICAgICAgICAgIHRpdGxlOiAnVGlja2V0IHBhcmVudCBzdXBwcmltw6knLFxyXG4gICAgICAgICAgdGlja2V0SUQ6IGNoaWxkVGlja2V0LmlkLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBUaWNrZXQgXFxcIiR0aWNrZXQudGl0bGV9XFxcIiBhIMOpdMOpIHN1cHByaW3DqWAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gZGVsZXRlIGV2ZW50c1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgIHRpY2tldC5ldmVudHMuaXRlbXMubWFwKGFzeW5jIChldmVudF8pID0+IHtcclxuICAgICAgICBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRXZlbnQoe2lkOiBldmVudF8uaWR9KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICAvLyBkZWxldGUgYWZmZWN0YXRpb25uc1xyXG4gICAgaWYgKHRpY2tldC5hc3NpZ25lZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGlja2V0LmFzc2lnbmVlcy5pdGVtcykge1xyXG4gICAgICAgIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVBZmZlY3RhdGlvbih7aWQ6IGVsZW1lbnQuaWR9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZGVsZXRlIGNvbW1lbnRzXHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgdGlja2V0LmNvbW1lbnRzLml0ZW1zLm1hcChhc3luYyAoY29tbWVudCkgPT4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVDb21tZW50KHtpZDogY29tbWVudC5pZH0pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5kZWxldGVPcGVyYXRpb25zRm9yVGlja2V0KHRpY2tldC5pZCk7XHJcbiAgICByZXR1cm4gZGVsZXRlZDtcclxuICB9XHJcblxyXG4gIC8qKiBDdXN0b20gcmVxdWVzdHMgKi9cclxuICBhc3luYyBnZXRUaWNrZXRzQnlTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFRpY2tldFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgIC5UaWNrZXRzQnlTcGFjZShzcGFjZUlEKVxyXG4gICAgICAudGhlbigodGlja2V0cykgPT4gdGlja2V0cy5pdGVtcyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVJY29uRm9yQWxsVGlja2V0c0luU3BhY2UoXHJcbiAgICB0YWdJY29uOiBzdHJpbmcsXHJcbiAgICBzcGFjZUlEOiBzdHJpbmdcclxuICApOiBQcm9taXNlPHsgdGlja2V0czogVGlja2V0W107IHBvaXM6IFBPSVtdIH0+IHtcclxuICAgIGNvbnN0IHRpY2tldHMgPSBhd2FpdCB0aGlzLmdldFRpY2tldHNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHModGlja2V0cywgdGFnSWNvbik7XHJcbiAgICByZXR1cm4ge3RpY2tldHMsIHBvaXN9O1xyXG4gIH1cclxuXHJcbiAgLyoqIEFyY2hpdmUgcmVsYXRlZCAqL1xyXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBhcmNoaXZlZCB0aGlzIHRpY2tldCAqL1xyXG4gIGlzQXJjaGl2ZWQodGlja2V0OiBUaWNrZXQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aWNrZXQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgPyB0aWNrZXQuYXJjaGl2ZWRGb3JNaXNzaW9uSUQuaW5jbHVkZXMoXHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbih0aWNrZXQuc3BhY2VJRCkuaWRcclxuICAgICAgKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0QXJjaGl2ZWQodGlja2V0OiBUaWNrZXQsIGFyY2hpdmVkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgYXJjaGl2ZWRMaXN0ID0gdGlja2V0LmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgID8gdGlja2V0LmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBtaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHRpY2tldC5zcGFjZUlEKS5pZDtcclxuXHJcbiAgICBhcmNoaXZlZExpc3QgPSBhcmNoaXZlZExpc3QuZmlsdGVyKChtKSA9PiBtICE9PSBtaXNzaW9uSUQpO1xyXG5cclxuICAgIGlmIChhcmNoaXZlZCkge1xyXG4gICAgICBhcmNoaXZlZExpc3QucHVzaChtaXNzaW9uSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnVwZGF0ZVRpY2tldFdpdGhFdmVudCh7XHJcbiAgICAgIGlkOiB0aWNrZXQuaWQsXHJcbiAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5hdmlnYXRlVG9UaWNrZXRJbjNEKFxyXG4gICAgdGlja2V0OiBUaWNrZXQsXHJcbiAgICBmb3JjZVN3aXRjaFZpc2l0OiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGxldCB1cmwgPSBgdmlzaXQvJHt0aWNrZXQuc3BhY2VJRH1gO1xyXG4gICAgaWYgKGZvcmNlU3dpdGNoVmlzaXQpIHtcclxuICAgICAgdXJsICs9IGAvZGV0YWlsLyR7dGlja2V0LmlkfWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjYW5Hb1RvVGFnID0gYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbl9tb3ZlX3RvX3RhZyhcclxuICAgICAgYCR7dGlja2V0LmlkfWBcclxuICAgICk7XHJcbiAgICBpZiAoY2FuR29Ub1RhZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldE1vZGVsM2RBbmRTd2VlcCh0aWNrZXQpO1xyXG4gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5tb2RlbDNEKSB7XHJcbiAgICAgIGFsZXJ0KCdFcnJvciB3aGlsZSBnZXR0aW5nIHZpcnR1YWwgdmlzaXQgbW9kZWwnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmb3JjZVN3aXRjaFZpc2l0KSB7XHJcbiAgICAgICAvLyBjaGVjayBpZiB3ZSBhcmUgbW92aW5nIHdpdGhpbiB0aGUgc2FtZSAzRCBtb2RlbFxyXG4gICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21vZGVsM0QnKTtcclxuICAgICAgIGlmIChjdXJyZW50TW9kZWwgJiYgY3VycmVudE1vZGVsID09PSByZXN1bHQubW9kZWwzRCkge1xyXG4gICAgICAgICAvLyB3ZSBhZGQgdGFnIHRvIHRoZSB2aXNpdFxyXG4gICAgICAgICBjb25zdCBwb2kgPSB0aWNrZXQucG9pcy5pdGVtc1swXTtcclxuICAgICAgICAgaWYgKHBvaS5jb29yZGluYXRlKSB7XHJcbiAgICAgICAgICAgLy8gd2UgZm9yY2UgYWRkIGJlY2F1c2Ugd2UgbWlnaHQgYmUgaW4gYW4gYW5vdGhlciB6b25lXHJcbiAgICAgICAgICAgYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbkFkZE9iamVjdEZyb21QT0kodGlja2V0LCBwb2kpO1xyXG4gICAgICAgICAgIGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25fbW92ZV90b190YWcodGlja2V0LmlkKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgLyoqIFNpIG9uIG5lIGZvcmNlIHBhcyBsYSB2aXNpdGUsIG9uIGRlbWFuZGUgc2kgb24gdmV1dCBldHJlIHN3aXRjaCAqL1xyXG4gICAgICAgICBvcGVuTW9kYWxGb3JWaXNpdFN3aXRjaChcclxuICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZSxcclxuICAgICAgICAgICByZXN1bHQubW9kZWwzRCxcclxuICAgICAgICAgICB0aWNrZXQuc3BhY2VJRCxcclxuICAgICAgICAgICB7c3dlZXBUb01vdmU6IHJlc3VsdC5zd2VlcCwgcm90YXRpb246IHJlc3VsdC5yb3RhdGlvbn1cclxuICAgICAgICAgKTtcclxuICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8qKiBTaSBvbiBmb3JjZSBsZSBzd2l0Y2ggZGUgbGEgdmlzaXQgKi9cclxuICAgICAgd2luZG93Lm9wZW4oYCR7dXJsfT9tb2RlbDNEPSR7cmVzdWx0Lm1vZGVsM0R9JnN3ZWVwPXRydWVgLCAnX2JsYW5rJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0U3Vic2NyaXB0aW9ucygpIHtcclxuICAgIGlmICghdGhpcy5pc011c2V1bVVzZXIpIHtcclxuICAgICAgdGhpcy5uYXZTdWJzY3JpcHRpb24gPSB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKFxyXG4gICAgICAgICh6b25lKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGlja2V0VGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLnRpY2tldHNVcGRhdGVkLm5leHQoe3NwYWNlOiBbXSwgem9uZTogbnVsbH0pO1xyXG4gICAgICAgICAgICB0aGlzLnRpY2tldFR5cGVGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJnb2luZyB0byBpbml0IHRpY2tldHMgZnJvbSB6b25lXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRUaWNrZXRzKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5maWxldHJTdWJzY3JpcHRpb24gPSB0aGlzLmZpbHRlclNlcnZpY2Uuc3Vic2NyaWJlVG9EYXRhRmlsdGVyVXBkYXRlKFxyXG4gICAgICAgIChkYXRlUmFuZ2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IGRhdGVSYW5nZTtcclxuICAgICAgICAgIHRoaXMuaW5pdFRpY2tldHMoKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclNlcnZpY2UuY3VycmVudERhdGVGaWx0ZXI7XHJcbiAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRUaWNrZXRzKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
543
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy90aWNrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0Msc0NBQXNDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUUzRSxPQUFPLEVBR0wsVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsRUFHVCxPQUFPLEdBR1IsTUFBTSxxQkFBcUIsQ0FBQztBQUs3QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUkxRCxPQUFPLGVBQWUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLGFBQWEsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLGFBQWEsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRSxPQUFPLGVBQWUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFTdkQsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7SUF3RHpDO0lBQ0E7SUFDQTtJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBRUE7SUFDQTtJQUNBO0lBbEVWLGNBQWMsR0FBd0M7UUFDcEQsSUFBSSxFQUFFLEVBQUU7UUFDUixLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7SUFFRixVQUFVLEdBQThCLElBQUksZUFBZSxDQUFXLElBQUksQ0FBQyxDQUFDO0lBRTVFLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFF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QUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztZQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzdCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBam1CVSxjQUFjLGtCQXFEZixtQ0FBbUMsYUFFbkMsbUJBQW1COzRHQXZEbEIsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFzREksTUFBTTsyQkFBQyxtQ0FBbUM7OzBCQUUxQyxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY29uc2lzdGVudC1yZXR1cm4gKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG9wZW5Nb2RhbEZvclZpc2l0U3dpdGNoLCB3YWl0VW50aWwgfSBmcm9tICcuLi8uLi9oZWxwZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXR0ZXJ0YWdEYXRhIH0gZnJvbSAnLi4vLi4vbWF0dGVydGFnRGF0YSc7XHJcbmltcG9ydCB7XHJcbiAgRXZlbnQsXHJcbiAgVGlja2V0LFxyXG4gIFRpY2tldFR5cGUsXHJcbiAgVGlja2V0UHJpb3JpdHksXHJcbiAgVGlja2V0U3RhdHVzLFxyXG4gIEV2ZW50U3RhdHVzLFxyXG4gIEV2ZW50VHlwZSxcclxuICBBZmZlY3RhdGlvbixcclxuICBQT0ksXHJcbiAgUG9pVHlwZSxcclxuICBJVXBkYXRlLFxyXG4gIFpvbmUsXHJcbn0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi92aWV3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VPYmplY3RTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLW9iamVjdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE9wZXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL29wZXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9pU2VydmljZSB9IGZyb20gJy4vcG9pLnNlcnZpY2UnO1xyXG5pbXBvcnQgSW5mb3JtYXRpb25JY29uIGZyb20gJ0BpY29uaWZ5L2ljb25zLW1kaS9pbmZvcm1hdGlvbi1vdXRsaW5lJztcclxuaW1wb3J0IEFjY2lkZW50SWNvbiBmcm9tICdAaWNvbmlmeS9pY29ucy1tZGkvYWxlcnQnO1xyXG5pbXBvcnQgV29yZE9yZGVySWNvbiBmcm9tICdAaWNvbmlmeS9pY29ucy1tZGkvYWNjb3VudC1oYXJkLWhhdCc7XHJcbmltcG9ydCBSZXBvcnRpbmdJY29uIGZyb20gJ0BpY29uaWZ5L2ljb25zLW1kaS9maWxlLWRvY3VtZW50LW91dGxpbmUnO1xyXG5pbXBvcnQgTWFpbnRlbmFuY2VJY29uIGZyb20gJ0BpY29uaWZ5L2ljb25zLW1kaS90b29scyc7XHJcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4vZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVydmVudGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcnZlbnRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFmZmVjdGF0aW9uU2VydmljZSB9IGZyb20gJy4vYWZmZWN0YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uL3pvbmVDaGFuZ2Uuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpY2tldHNTZXJ2aWNlIGV4dGVuZHMgQmFzZU9iamVjdFNlcnZpY2Uge1xyXG4gIGN1cnJlbnRUaWNrZXRzOiB7IHpvbmU6IFRpY2tldFtdOyBzcGFjZTogVGlja2V0W10gfSA9IHtcclxuICAgIHpvbmU6IFtdLFxyXG4gICAgc3BhY2U6IFtdLFxyXG4gIH07XHJcblxyXG4gIHRpY2tldFRhZ3M6IEJlaGF2aW9yU3ViamVjdDxUaWNrZXRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpY2tldFtdPihudWxsKTtcclxuXHJcbiAgdGlja2V0c0ZpbHRlcmVkOiBUaWNrZXRbXSA9IFtdO1xyXG5cclxuICB0aWNrZXRzVXBkYXRlZDogU3ViamVjdDx7XHJcbiAgICB6b25lOiBUaWNrZXRbXTtcclxuICAgIHNwYWNlOiBUaWNrZXRbXTtcclxuICB9PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gIHpvbmVJREZpbHRlcjogc3RyaW5nO1xyXG5cclxuICBkYXRlRmlsdGVyOiBEYXRlW107XHJcblxyXG4gIHRpY2tldFR5cGVGaWx0ZXI6IFRpY2tldFR5cGVbXTtcclxuXHJcbiAgcmVwb3J0aW5nSWNvbiA9IFJlcG9ydGluZ0ljb247XHJcblxyXG4gIG1haW50ZW5hbmNlSWNvbiA9IE1haW50ZW5hbmNlSWNvbjtcclxuXHJcbiAgd29ya29yZGVySWNvbiA9IFdvcmRPcmRlckljb247XHJcblxyXG4gIGluZm9ybWF0aW9uSWNvbiA9IEluZm9ybWF0aW9uSWNvbjtcclxuXHJcbiAgYWNjaWRlbnRJY29uID0gQWNjaWRlbnRJY29uO1xyXG5cclxuICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBBUEk6IGFueTtcclxuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXHJcblxyXG4gIGlzTXVzZXVtVXNlciA9IGZhbHNlO1xyXG5cclxuICBuYXZTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZmlsZXRyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZEZsb29yOiBab25lID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnY3VycmVudEF3c0tpbmVzaXNBbmFseXRpY3NTZXJ2aWNlJylcclxuICAgIGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDogYW55LFxyXG4gICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxyXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25TZXJ2aWNlOiBPcGVyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgYWZmZWN0YXRpb25TZXJ2aWNlOiBBZmZlY3RhdGlvblNlcnZpY2UsXHJcbiAgICBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbnRlcnZlbnRpb25TZXJ2aWNlOiBJbnRlcnZlbnRpb25TZXJ2aWNlLFxyXG4gICAgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWxcclxuICApIHtcclxuICAgIHN1cGVyKHBvaVNlcnZpY2UsIG5hdmlnYXRpb25TZXJ2aWNlKTtcclxuICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyA9IGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDtcclxuICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB0aGlzLmlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcclxuICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbnMoKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoaXNDb25uZWN0ZWQpID0+IHtcclxuICAgICAgaWYgKGlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0U3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm5hdlN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5uYXZTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgIHRoaXMuZmlsZXRyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5zdWJzY3JpYmUoKGZsb29yKSA9PiB7XHJcbiAgICAgIGlmIChmbG9vcikge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IGZsb29yO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRUaWNrZXRzKCkge1xyXG4gICAgbGV0IHRpY2tldHNGaWx0ZXJlZCA9IFtdO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdldFRpY2tldHNCeVNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpLnRoZW4oKHRpY2tldHMpID0+IHtcclxuICAgICAgICBpZiAodGlja2V0cykge1xyXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkID0gdGlja2V0cztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aWNrZXRzRmlsdGVyZWQgPVxyXG4gICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxyXG4gICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRFxyXG4gICAgICAgICk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlciAmJiB0aGlzLmRhdGVGaWx0ZXJbMF0gIT0gXCJJbnZhbGlkIERhdGVcIiAmJiB0aGlzLmRhdGVGaWx0ZXJbMV0gIT0gXCJJbnZhbGlkIERhdGVcIikge1xyXG4gICAgICAgIHRpY2tldHNGaWx0ZXJlZCA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxyXG4gICAgICAgICAgdGhpcy5kYXRlRmlsdGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50aWNrZXRUeXBlRmlsdGVyKSB7XHJcbiAgICAgICAgdGlja2V0c0ZpbHRlcmVkID0gdGlja2V0c0ZpbHRlcmVkLmZpbHRlcigodGlja2V0KSA9PlxyXG4gICAgICAgICAgdGhpcy50aWNrZXRUeXBlRmlsdGVyLmluY2x1ZGVzKHRpY2tldC50eXBlKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50VGlja2V0cy5zcGFjZSA9IHRpY2tldHNGaWx0ZXJlZDtcclxuICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgdGlja2V0c0ZpbHRlcmVkID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgdGlja2V0c0ZpbHRlcmVkLFxyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudFRpY2tldHMuem9uZSA9IHRpY2tldHNGaWx0ZXJlZDtcclxuICAgICAgdGhpcy50aWNrZXRUYWdzLm5leHQodGlja2V0c0ZpbHRlcmVkKTtcclxuICAgICAgdGhpcy50aWNrZXRzVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudFRpY2tldHMpO1xyXG4gICAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50aWNrZXRUYWdzLm5leHQobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGFwdFRpY2tldCh0aWNrZXQ6IFRpY2tldCk6IFByb21pc2U8VGlja2V0PiB7XHJcbiAgICBpZiAodGlja2V0LmNvbW1lbnRzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGlja2V0LmNvbW1lbnRzLml0ZW1zLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGIuY3JlYXRlZEF0KSAtIG5ldyBEYXRlKGEuY3JlYXRlZEF0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRpY2tldC5ldmVudHMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyBTb3J0IGV2ZW50cyBieSBkYXRlXHJcbiAgICAgIHRpY2tldC5ldmVudHMuaXRlbXMuc29ydCgoZXZlbnQxLCBldmVudDIpID0+IHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGV2ZW50Mi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoZXZlbnQxLmNyZWF0ZWRBdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGlja2V0LnByZXN0YXRhaXJlID0gYXdhaXQgdGhpcy5pbnRlcnZlbnRpb25TZXJ2aWNlLmdldFByZXN0YXRhaXJlRm9yVGlja2V0KFxyXG4gICAgICB0aWNrZXRcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGlja2V0O1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJpb3JpdHlDb2xvcih0aWNrZXQ6IFRpY2tldCk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHRpY2tldC5wcmlvcml0eSkge1xyXG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5Lk1BWElNVU06XHJcbiAgICAgICAgcmV0dXJuICdjcmltc29uJztcclxuICAgICAgY2FzZSBUaWNrZXRQcmlvcml0eS5ISUdIOlxyXG4gICAgICAgIHJldHVybiAncmVkJztcclxuICAgICAgY2FzZSBUaWNrZXRQcmlvcml0eS5NRURJVU06XHJcbiAgICAgICAgcmV0dXJuICdvcmFuZ2UnO1xyXG4gICAgICBjYXNlIFRpY2tldFByaW9yaXR5LkxPVzpcclxuICAgICAgICByZXR1cm4gJ2dyZWVuJztcclxuICAgICAgY2FzZSBUaWNrZXRQcmlvcml0eS5NSU5JTVVNOlxyXG4gICAgICAgIHJldHVybiAnYmx1ZSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICdibHVlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0NvbG9yKHRpY2tldDogVGlja2V0KTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGlja2V0LnN0YXR1cykge1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5UT19CRV9QUk9DRVNTRUQ6XHJcbiAgICAgICAgcmV0dXJuICcjQjBCMEIxJztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuUExBTk5FRDpcclxuICAgICAgICByZXR1cm4gJyNFQkRGMjcnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5JTl9QUk9HUkVTUzpcclxuICAgICAgICByZXR1cm4gJyNFQkRGMjcnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5XQUlUSU5HX0ZPUl9WQUxJREFUSU9OOlxyXG4gICAgICAgIHJldHVybiAnI0VCREYyNyc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlZBTElEQVRFRDpcclxuICAgICAgICByZXR1cm4gJyNCQ0UyRTUnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5SRUpFQ1RFRDpcclxuICAgICAgICByZXR1cm4gJyNlODRjMzUnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5SRVNPTFZFRDpcclxuICAgICAgICByZXR1cm4gJyNCQ0UyRTUnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5BUkNISVZFRDpcclxuICAgICAgICByZXR1cm4gJyNCMEIwQjEnO1xyXG4gICAgICBjYXNlIFRpY2tldFN0YXR1cy5MQVRFOlxyXG4gICAgICAgIHJldHVybiAnI2U4NGMzNSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLkJMT0NLRUQ6XHJcbiAgICAgICAgcmV0dXJuICcjZTg0YzM1JztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQ09NUExFVEVEOlxyXG4gICAgICAgIHJldHVybiAnIzM4ODY1OSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLkRFTEFZRUQ6XHJcbiAgICAgICAgcmV0dXJuICcjREI3NTQzJztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQ0FOQ0VMTEVEOlxyXG4gICAgICAgIHJldHVybiAnI2U4NGMzNSc7XHJcbiAgICAgIGNhc2UgVGlja2V0U3RhdHVzLlRPX1JFRE86XHJcbiAgICAgICAgcmV0dXJuICcjREI3NTQzJztcclxuICAgICAgY2FzZSBUaWNrZXRTdGF0dXMuQ1JFQVRFRDpcclxuICAgICAgICByZXR1cm4gJyNCMEIwQjEnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnI0JDRTJFNSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaWNrZXRQcmlvcml0eU51bWJlcih0KTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0LnByaW9yaXR5ID09PSBUaWNrZXRQcmlvcml0eS5NSU5JTVVNXHJcbiAgICAgID8gLTFcclxuICAgICAgOiB0LnByaW9yaXR5ID09PSBUaWNrZXRQcmlvcml0eS5MT1dcclxuICAgICAgICA/IDBcclxuICAgICAgICA6IHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5Lk1FRElVTVxyXG4gICAgICAgICAgPyAxXHJcbiAgICAgICAgICA6IHQucHJpb3JpdHkgPT09IFRpY2tldFByaW9yaXR5LkhJR0hcclxuICAgICAgICAgICAgPyAyXHJcbiAgICAgICAgICAgIDogdC5wcmlvcml0eSA9PT0gVGlja2V0UHJpb3JpdHkuTUFYSU1VTVxyXG4gICAgICAgICAgICAgID8gM1xyXG4gICAgICAgICAgICAgIDogLTE7XHJcbiAgfVxyXG5cclxuICBnZXRUaWNrZXRJY29uKHR5cGU6IFRpY2tldFR5cGUpOiBhbnkge1xyXG4gICAgLy8gY29uc3QgdHlwZUljb24gOiBUaWNrZXRUeXBlID0gdGlja2V0LnR5cGU7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLlJFUE9SVElORzpcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXBvcnRpbmdJY29uO1xyXG4gICAgICBjYXNlIFRpY2tldFR5cGUuUkVRVUVTVF9GT1JfSU5URVJWRU5USU9OOlxyXG4gICAgICAgIHJldHVybiB0aGlzLm1haW50ZW5hbmNlSWNvbjtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLlJFUVVFU1RfRk9SX01BSU5URU5BTkNFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLm1haW50ZW5hbmNlSWNvbjtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLldPUktfT1JERVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya29yZGVySWNvbjtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLklOQ0lERU5UOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmFjY2lkZW50SWNvbjtcclxuICAgICAgY2FzZSBUaWNrZXRUeXBlLklORk9STUFUSU9OOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmluZm9ybWF0aW9uSWNvbjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5tYWludGVuYW5jZUljb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRFdmVudFRvVGlja2V0KHRpY2tldDogVGlja2V0LCBldmVudDogRXZlbnQpOiBQcm9taXNlPEV2ZW50PiB7XHJcbiAgICBjb25zdCBjdXJyZW50TWlzc2lvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24odGlja2V0LnNwYWNlSUQpO1xyXG4gICAgZXZlbnQuZ3JvdXAgPSBldmVudC5ncm91cCA/IGV2ZW50Lmdyb3VwIDogJ2RlZmF1bHQnO1xyXG4gICAgZXZlbnQudGlja2V0SUQgPSBldmVudC50aWNrZXRJRCA/IGV2ZW50LnRpY2tldElEIDogdGlja2V0LmlkO1xyXG4gICAgZXZlbnQuc3RhdHVzID0gZXZlbnQuc3RhdHVzID8gZXZlbnQuc3RhdHVzIDogRXZlbnRTdGF0dXMuQ1JFQVRFRDtcclxuICAgIGV2ZW50LnR5cGUgPSBldmVudC50eXBlID8gZXZlbnQudHlwZSA6IEV2ZW50VHlwZS5USUNLRVQ7XHJcbiAgICBldmVudC5vd25lcklEID0gZXZlbnQub3duZXJJRCA/IGV2ZW50Lm93bmVySUQgOiBjdXJyZW50TWlzc2lvbi5pZDtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlY2VpdmVkRXZlbnQgPSBhd2FpdCB0aGlzLmV2ZW50U2VydmljZS5jcmVhdGVFdmVudChldmVudCk7XHJcbiAgICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgZXZlbnRUeXBlOiAnVGlja2V0IENoYW5nZScsXHJcbiAgICAgICAgICAgICAgdGlja2V0SWQ6IGV2ZW50LnRpY2tldElELFxyXG4gICAgICAgICAgICAgIHRpY2tldDogdGlja2V0LFxyXG4gICAgICAgICAgICAgIHN0YXR1czogZXZlbnQuc3RhdHVzLFxyXG4gICAgICAgICAgICAgIGV2ZW50OiBldmVudCxcclxuICAgICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxyXG4gICAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgICAvLyBwYXJ0aXRpb25LZXk6IFwiXCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBjb25zb2xlLmxvZygnRXZlbnQgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgIScpO1xyXG4gICAgICByZXR1cm4gcmVjZWl2ZWRFdmVudDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgYWRkVGlja2V0KHRpY2tldDogVGlja2V0KTogUHJvbWlzZTxUaWNrZXQgfCB2b2lkPiB7XHJcbiAgICB0aWNrZXQuc3RhdHVzID0gVGlja2V0U3RhdHVzLkNSRUFURUQ7XHJcbiAgICBpZiAoIXRpY2tldC5vd25lck1pc3Npb25JRCkge1xyXG4gICAgICB0aWNrZXQub3duZXJNaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKFxyXG4gICAgICAgIHRpY2tldC5zcGFjZUlEXHJcbiAgICAgICkuaWQ7XHJcbiAgICB9XHJcbiAgICAvLyBUT0RPISEhIGZpbHRlciBtaXNzaW9ucyBieSBzcGFjZSBvZiB0aWNrZXRcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlY2VpdmVkVGlja2V0ID0gYXdhaXQgdGhpcy5jcmVhdGVUaWNrZXQodGlja2V0KTtcclxuICAgICAgLy8gY29uc29sZS5sb2coJyEhISBSZXNwb25zZSBmcm9tIGNyZWF0aW5nIHRpY2tldCA6Jyk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKHJlY2VpdmVkVGlja2V0KTtcclxuICAgICAgdGhpcy5hZGRFdmVudFRvVGlja2V0KHJlY2VpdmVkVGlja2V0LCB7XHJcbiAgICAgICAgdGl0bGU6ICdDcsOpYXRpb24gZHUgdGlja2V0JyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogYFRpY2tldCBjcsOpw6kgcGFyIC1gLFxyXG4gICAgICAgIHRyYW5zbGF0aW9uUGF0aDogJ3RpY2tldEV2ZW50LnRpY2tldC5jcmVhdGVkJyxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXBkYXRlRG9uZS5uZXh0KHRydWUpO1xyXG4gICAgICByZXR1cm4gcmVjZWl2ZWRUaWNrZXQ7IC8vIGluc3RlYWQgb2YgdHJ1ZVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1RpY2tldCBjcmVhdGlvbiBGQUlMRUQnKTtcclxuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZXJyb3IpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZVRpY2tldFdpdGhFdmVudChcclxuICAgIHRpY2tldDogSVVwZGF0ZSAmIFBhcnRpYWw8VGlja2V0PixcclxuICAgIGV2ZW50PzogRXZlbnRcclxuICApOiBQcm9taXNlPFRpY2tldD4ge1xyXG4gICAgY29uc3QgcmVjZWl2ZWRUaWNrZXQgPSBhd2FpdCB0aGlzLnVwZGF0ZVRpY2tldCh0aWNrZXQpO1xyXG4gICAgaWYgKHJlY2VpdmVkVGlja2V0KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIHRpY2tldCA6Jyk7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJlY2VpdmVkVGlja2V0KTtcclxuICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5hZGRFdmVudFRvVGlja2V0KHJlY2VpdmVkVGlja2V0LCBldmVudCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVEb25lLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVjZWl2ZWRUaWNrZXQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmVBc3NpZ25lZUZyb21UaWNrZXQoXHJcbiAgICB0aWNrZXQ6IFRpY2tldCxcclxuICAgIGFzc2lnbmVlOiBBZmZlY3RhdGlvblxyXG4gICk6IFByb21pc2U8VGlja2V0PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBhZmZlY3RhdGlvbiA9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5hZmZlY3RhdGlvblNlcnZpY2Uuc29mdERlbGV0ZUFmZmVjdGF0aW9uQnlJRChhc3NpZ25lZS5pZCk7XHJcbiAgICAgIGlmICghYWZmZWN0YXRpb24pIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICBgcmVtb3ZlQXNzaWduZWVGcm9tVGlja2V0KCR7dGlja2V0LmlkfSwgJHthc3NpZ25lZS5pZH0pIGZhaWxlZGBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aWNrZXQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVUaWNrZXRMb2NhdGlvbihcclxuICAgIHRpY2tldDogVGlja2V0LFxyXG4gICAgdGFnRGF0YTogTWF0dGVydGFnRGF0YVxyXG4gICk6IFByb21pc2U8UE9JPiB7XHJcbiAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgY29vcmRpbmF0ZTogdGFnRGF0YS5nZXRDb29yZGluYXRlU3RyaW5nKCksXHJcbiAgICAgIHR5cGU6IFBvaVR5cGUuVElDS0VULFxyXG4gICAgICBlbGVtZW50SUQ6IHRpY2tldC5pZCxcclxuICAgICAgbWV0YWRhdGE6IHRhZ0RhdGEuZ2V0TWV0YWRhdGFTdHJpbmcoKSxcclxuICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHRhZ0RhdGEuZ2V0U3dlZXBJRCgpLFxyXG4gICAgfSBhcyBQT0k7XHJcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XHJcbiAgICBhd2FpdCB0aGlzLmFkZEV2ZW50VG9UaWNrZXQodGlja2V0LCB7XHJcbiAgICAgIHRpdGxlOiAnQ2hhbmdlbWVudCBwb3NpdGlvbiBkdSB0aWNrZXQnLFxyXG4gICAgICBkZXNjcmlwdGlvbjogXCJMZSBwb2ludCBkJ2ludMOpcsOqdCBkdSB0aWNrZXQgYSDDqXTDqSBtb2RpZmnDqVwiLFxyXG4gICAgICBzdGF0dXM6IEV2ZW50U3RhdHVzLlBPU0lUSU9OX1NFVCxcclxuICAgICAgdHJhbnNsYXRpb25QYXRoOiAndGlja2V0RXZlbnQucG9zaXRpb24uc2V0JyxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHBvaTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZVN0YXR1c09mVGlja2V0KFxyXG4gICAgdGlja2V0OiBUaWNrZXQsXHJcbiAgICBzdGF0dXM6IFRpY2tldFN0YXR1c1xyXG4gICk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBjdXJyZW50U3RhdHVzID0gdGlja2V0LnN0YXR1cztcclxuICAgIGNvbnN0IG9sZFRpY2tldFN0YXR1cyA9IHRpY2tldC5zdGF0dXM7XHJcbiAgICB0aWNrZXQuc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgaWYgKGN1cnJlbnRTdGF0dXMgPT09IHN0YXR1cykge1xyXG4gICAgICByZXR1cm4gdGlja2V0O1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coJ1VwZGF0aW5nIHN0YXR1cycpO1xyXG4gICAgcmV0dXJuIHRoaXMudXBkYXRlVGlja2V0KHtcclxuICAgICAgaWQ6IHRpY2tldC5pZCxcclxuICAgICAgc3RhdHVzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVUeXBlT2ZUaWNrZXQodGlja2V0OiBUaWNrZXQsIHR5cGU6IFRpY2tldFR5cGUpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgcHJldmlvdXNUeXBlID0gdGlja2V0LnR5cGU7XHJcbiAgICB0aWNrZXQudHlwZSA9IHR5cGU7XHJcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVRpY2tldFdpdGhFdmVudChcclxuICAgICAgeyBpZDogdGlja2V0LmlkLCB0eXBlOiB0aWNrZXQudHlwZSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdUeXBlIGNoYW5nw6knLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQ2hhbmdlbWVudCBkZSAke3ByZXZpb3VzVHlwZX0gdmVycyAke3RpY2tldC50eXBlfWAsXHJcbiAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdHlwZTogdGlja2V0LnR5cGUgfSksXHJcbiAgICAgICAgdHJhbnNsYXRpb25QYXRoOiAndGlja2V0RXZlbnQudGlja2V0LnR5cGUnLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRpY2tldDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRpY2tldHNGb3JVc2VyRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxUaWNrZXRbXT4ge1xyXG4gICAgY29uc3QgdGlja2V0c1NwYWNlID0gYXdhaXQgdGhpcy5nZXRUaWNrZXRzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgdGlja2V0c1NwYWNlLFxyXG4gICAgICBzcGFjZUlEXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIEJhc2ljIENSVUQgb3BlcmF0aW9ucyAqL1xyXG4gIGFzeW5jIHJlYWRUaWNrZXQoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRUaWNrZXQoaWQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlVGlja2V0KGlucHV0OiBUaWNrZXQpOiBQcm9taXNlPFRpY2tldD4ge1xyXG4gICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzICYmICEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCAmJiB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkKCkpIHtcclxuICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICB7XHJcbiAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGV2ZW50VHlwZTogJ09iamVjdCBDcmVhdGlvbicsXHJcbiAgICAgICAgICAgIG9iamVjdFR5cGU6ICd0aWNrZXQnLFxyXG4gICAgICAgICAgICAvL3pvbmVJZDogaW5wdXQuc3BhY2VJRCwgLy8gVE9ETzogY2hlY2sgaWYgc3BhY2VJZCA9PSB6b25lSWRcclxuICAgICAgICAgICAgZG9tYWluOiBpbnB1dC5kb21haW4sXHJcbiAgICAgICAgICAgIHVzZXI6IHRoaXMudXNlclNlcnZpY2UuY3UsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgem9uZUlkOiB0aGlzLnpvbmVJREZpbHRlcixcclxuICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzdHJlYW1OYW1lOiAnc21hcnRlcnBsYW5LaW5lc2lzLWFuYWx5dGljcycsXHJcbiAgICAgICAgICAvLyBwYXJ0aXRpb25LZXk6IFwiXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAnQVdTS2luZXNpcydcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlVGlja2V0KGlucHV0KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZVRpY2tldChpbnB1dDogSVVwZGF0ZSAmIFBhcnRpYWw8VGlja2V0Pik6IFByb21pc2U8VGlja2V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZVRpY2tldChpbnB1dCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGVUaWNrZXQodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPFRpY2tldD4ge1xyXG4gICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVUaWNrZXQoeyBpZDogdGlja2V0LmlkIH0pO1xyXG5cclxuICAgIC8vIGRlbGV0ZSBQT0lcclxuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZCh0aWNrZXQuaWQpO1xyXG4gICAgaWYgKHBvaSkge1xyXG4gICAgICB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKHBvaS5pZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2xlYW4gcGFyZW50SURcclxuICAgIGlmICh0aWNrZXQuY2hpbGRyZW4uaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aWNrZXQuY2hpbGRyZW4uaXRlbXMubWFwKGFzeW5jIChjaGlsZFRpY2tldCkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlVGlja2V0KHtcclxuICAgICAgICAgICAgaWQ6IGNoaWxkVGlja2V0LmlkLFxyXG4gICAgICAgICAgICBwYXJlbnRJRDogbnVsbCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgY29uc29sZS53YXJuKCdDb3VsZCBub3QgdXBkYXRlIHRpY2tldCcsIGNoaWxkVGlja2V0LmlkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVFdmVudCh7XHJcbiAgICAgICAgICB0aXRsZTogJ1RpY2tldCBwYXJlbnQgc3VwcHJpbcOpJyxcclxuICAgICAgICAgIHRpY2tldElEOiBjaGlsZFRpY2tldC5pZCxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgVGlja2V0IFxcXCIkdGlja2V0LnRpdGxlfVxcXCIgYSDDqXTDqSBzdXBwcmltw6lgLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIGRlbGV0ZSBldmVudHNcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICB0aWNrZXQuZXZlbnRzLml0ZW1zLm1hcChhc3luYyAoZXZlbnRfKSA9PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUV2ZW50KHsgaWQ6IGV2ZW50Xy5pZCB9KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICAvLyBkZWxldGUgYWZmZWN0YXRpb25uc1xyXG4gICAgaWYgKHRpY2tldC5hc3NpZ25lZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGlja2V0LmFzc2lnbmVlcy5pdGVtcykge1xyXG4gICAgICAgIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVBZmZlY3RhdGlvbih7IGlkOiBlbGVtZW50LmlkIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBkZWxldGUgY29tbWVudHNcclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICB0aWNrZXQuY29tbWVudHMuaXRlbXMubWFwKGFzeW5jIChjb21tZW50KSA9PiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUNvbW1lbnQoeyBpZDogY29tbWVudC5pZCB9KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBhd2FpdCB0aGlzLm9wZXJhdGlvblNlcnZpY2UuZGVsZXRlT3BlcmF0aW9uc0ZvclRpY2tldCh0aWNrZXQuaWQpO1xyXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogQ3VzdG9tIHJlcXVlc3RzICovXHJcbiAgYXN5bmMgZ2V0VGlja2V0c0J5U3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxUaWNrZXRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fX1xyXG4gICAgICAuVGlja2V0c0J5U3BhY2Uoc3BhY2VJRClcclxuICAgICAgLnRoZW4oKHRpY2tldHMpID0+IHRpY2tldHMuaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlSWNvbkZvckFsbFRpY2tldHNJblNwYWNlKFxyXG4gICAgdGFnSWNvbjogc3RyaW5nLFxyXG4gICAgc3BhY2VJRDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTx7IHRpY2tldHM6IFRpY2tldFtdOyBwb2lzOiBQT0lbXSB9PiB7XHJcbiAgICBjb25zdCB0aWNrZXRzID0gYXdhaXQgdGhpcy5nZXRUaWNrZXRzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIGNvbnN0IHBvaXMgPSBhd2FpdCB0aGlzLnVwZGF0ZUljb25Gb3JBbGxPYmplY3RzKHRpY2tldHMsIHRhZ0ljb24pO1xyXG4gICAgcmV0dXJuIHsgdGlja2V0cywgcG9pcyB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIEFyY2hpdmUgcmVsYXRlZCAqL1xyXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBhcmNoaXZlZCB0aGlzIHRpY2tldCAqL1xyXG4gIGlzQXJjaGl2ZWQodGlja2V0OiBUaWNrZXQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aWNrZXQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgPyB0aWNrZXQuYXJjaGl2ZWRGb3JNaXNzaW9uSUQuaW5jbHVkZXMoXHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbih0aWNrZXQuc3BhY2VJRCkuaWRcclxuICAgICAgKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0QXJjaGl2ZWQodGlja2V0OiBUaWNrZXQsIGFyY2hpdmVkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgYXJjaGl2ZWRMaXN0ID0gdGlja2V0LmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgID8gdGlja2V0LmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBtaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHRpY2tldC5zcGFjZUlEKS5pZDtcclxuXHJcbiAgICBhcmNoaXZlZExpc3QgPSBhcmNoaXZlZExpc3QuZmlsdGVyKChtKSA9PiBtICE9PSBtaXNzaW9uSUQpO1xyXG5cclxuICAgIGlmIChhcmNoaXZlZCkge1xyXG4gICAgICBhcmNoaXZlZExpc3QucHVzaChtaXNzaW9uSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnVwZGF0ZVRpY2tldFdpdGhFdmVudCh7XHJcbiAgICAgIGlkOiB0aWNrZXQuaWQsXHJcbiAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5hdmlnYXRlVG9UaWNrZXRJbjNEKFxyXG4gICAgdGlja2V0OiBUaWNrZXQsXHJcbiAgICBmb3JjZVN3aXRjaFZpc2l0OiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGxldCB1cmwgPSBgdmlzaXQvJHt0aWNrZXQuc3BhY2VJRH1gO1xyXG4gICAgaWYgKGZvcmNlU3dpdGNoVmlzaXQpIHtcclxuICAgICAgdXJsICs9IGAvZGV0YWlsLyR7dGlja2V0LmlkfWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjYW5Hb1RvVGFnID0gYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbl9tb3ZlX3RvX3RhZyhcclxuICAgICAgYCR7dGlja2V0LmlkfWBcclxuICAgICk7XHJcbiAgICBpZiAoY2FuR29Ub1RhZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldE1vZGVsM2RBbmRTd2VlcCh0aWNrZXQpO1xyXG4gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5tb2RlbDNEKSB7XHJcbiAgICAgIGFsZXJ0KCdFcnJvciB3aGlsZSBnZXR0aW5nIHZpcnR1YWwgdmlzaXQgbW9kZWwnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmb3JjZVN3aXRjaFZpc2l0KSB7XHJcbiAgICAgIC8vIGNoZWNrIGlmIHdlIGFyZSBtb3Zpbmcgd2l0aGluIHRoZSBzYW1lIDNEIG1vZGVsXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtb2RlbDNEJyk7XHJcbiAgICAgIGlmIChjdXJyZW50TW9kZWwgJiYgY3VycmVudE1vZGVsID09PSByZXN1bHQubW9kZWwzRCkge1xyXG4gICAgICAgIC8vIHdlIGFkZCB0YWcgdG8gdGhlIHZpc2l0XHJcbiAgICAgICAgY29uc3QgcG9pID0gdGlja2V0LnBvaXMuaXRlbXNbMF07XHJcbiAgICAgICAgaWYgKHBvaS5jb29yZGluYXRlKSB7XHJcbiAgICAgICAgICAvLyB3ZSBmb3JjZSBhZGQgYmVjYXVzZSB3ZSBtaWdodCBiZSBpbiBhbiBhbm90aGVyIHpvbmVcclxuICAgICAgICAgIGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25BZGRPYmplY3RGcm9tUE9JKHRpY2tldCwgcG9pKTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25fbW92ZV90b190YWcodGlja2V0LmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLyoqIFNpIG9uIG5lIGZvcmNlIHBhcyBsYSB2aXNpdGUsIG9uIGRlbWFuZGUgc2kgb24gdmV1dCBldHJlIHN3aXRjaCAqL1xyXG4gICAgICAgIG9wZW5Nb2RhbEZvclZpc2l0U3dpdGNoKFxyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UsXHJcbiAgICAgICAgICByZXN1bHQubW9kZWwzRCxcclxuICAgICAgICAgIHRpY2tldC5zcGFjZUlELFxyXG4gICAgICAgICAgeyBzd2VlcFRvTW92ZTogcmVzdWx0LnN3ZWVwLCByb3RhdGlvbjogcmVzdWx0LnJvdGF0aW9uIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3aW5kb3cub3BlbihgJHt1cmx9P21vZGVsM0Q9JHtyZXN1bHQubW9kZWwzRH0mc3dlZXA9dHJ1ZWAsICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRTdWJzY3JpcHRpb25zKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzTXVzZXVtVXNlcikge1xyXG4gICAgICB0aGlzLm5hdlN1YnNjcmlwdGlvbiA9IHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHpvbmUpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy50aWNrZXRUYWdzLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMudGlja2V0c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcclxuICAgICAgICAgICAgdGhpcy50aWNrZXRUeXBlRmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh6b25lLmlkICE9PSB0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ29pbmcgdG8gaW5pdCB0aWNrZXRzIGZyb20gem9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5pbml0VGlja2V0cygpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZmlsZXRyU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZShcclxuICAgICAgICAoZGF0ZVJhbmdlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXIgPSBkYXRlUmFuZ2U7XHJcbiAgICAgICAgICB0aGlzLmluaXRUaWNrZXRzKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlRmlsdGVyID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmN1cnJlbnREYXRlRmlsdGVyO1xyXG4gICAgICB0aGlzLnVwZGF0ZURvbmUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgdGhpcy5pbml0VGlja2V0cygpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -176,6 +176,11 @@ export class NavigatorService {
|
|
|
176
176
|
// if first load and zones are not set
|
|
177
177
|
this.zonesForUserForSpace = await this.zoneService.getZonesBySpaceForUser(this.currentSpaceID);
|
|
178
178
|
this.audioZonesForUserForSpace = this.zonesForUserForSpace.filter((zone) => zone.audioID);
|
|
179
|
+
this.zonesForUserForSpace = await this.zoneService.getZonesBySpaceForUser(this.currentSpaceID);
|
|
180
|
+
this.audioZonesForUserForSpace = this.zonesForUserForSpace.filter((zone) => zone.audioID);
|
|
181
|
+
if (!this.currentSweep) {
|
|
182
|
+
this.currentSweep = this.matterportService.getCurrentSweep();
|
|
183
|
+
}
|
|
179
184
|
this.setZonesForCurrentSweep();
|
|
180
185
|
}
|
|
181
186
|
checkRotationForSweep(sweep) {
|
|
@@ -189,7 +194,10 @@ export class NavigatorService {
|
|
|
189
194
|
if (!this.currentSweep) {
|
|
190
195
|
return;
|
|
191
196
|
}
|
|
192
|
-
|
|
197
|
+
const uuid = this.matterportService.getSweepUUIDForSid(this.currentSweep);
|
|
198
|
+
console.log('uuid', uuid);
|
|
199
|
+
const sweepToMatch = uuid ?? this.currentSweep;
|
|
200
|
+
let zonesForSweep = this.zonesForUserForSpace?.filter((zone) => zone.sweepIDs && zone.sweepIDs.includes(sweepToMatch));
|
|
193
201
|
const audioZones = this.audioZonesForUserForSpace?.filter((zone) => zone.sweepIDs && zone.sweepIDs.includes(this.currentSweep));
|
|
194
202
|
this.audioZonesChange.next(audioZones);
|
|
195
203
|
this.currentAudioZones = audioZones;
|
|
@@ -229,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
229
237
|
providedIn: 'root',
|
|
230
238
|
}]
|
|
231
239
|
}], ctorParameters: () => [{ type: i1.MatterportService }, { type: i2.ViewerService }, { type: i3.ZoneService }, { type: i4.BaseUserService }, { type: i5.ZoneChangeService }, { type: i6.Router }, { type: i6.ActivatedRoute }] });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVlyRCxNQUFNLE9BQU8sZ0JBQWdCO0lBdUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTVDVixZQUFZLENBQWdCO0lBRTVCLFdBQVcsQ0FBZ0I7SUFFM0IsY0FBYyxDQUFrQztJQUVoRCxjQUFjLENBQWdCO0lBRTlCLGNBQWMsQ0FBZ0I7SUFFOUIsV0FBVyxDQUFjO0lBRXpCLGlCQUFpQixHQUFrRCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTdFLFNBQVMsQ0FBYztJQUV2QixnQkFBZ0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUV6RCxrQkFBa0IsR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzRCxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRTFDLHVCQUF1QixDQUFTO0lBRWhDLG1CQUFtQixDQUFTO0lBRTVCLDBCQUEwQixDQUFnQjtJQUUxQyxnQkFBZ0IsR0FBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVsRCxvQkFBb0IsQ0FBZ0I7SUFFcEMsaUJBQWlCLENBQVM7SUFFMUIseUJBQXlCLENBQVM7SUFHbEMsWUFDVSxpQkFBb0MsRUFDcEMsYUFBNEIsRUFDNUIsV0FBd0IsRUFDeEIsV0FBNEIsRUFDNUIsaUJBQW9DLEVBQ3BDLE1BQWMsRUFDZCxLQUFxQjtRQU5yQixzQkFBaUIsR0FBakIs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QU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxRQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFTLENBQUMsTUFBTSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDNUMsSUFBSSxDQUFDLDBCQUEwQixDQUNoQyxDQUFDO1FBRUYsSUFDRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDMUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEVBQ3ZELENBQUM7WUFDRCxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUM7WUFDckQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDSCxJQUFJO0lBQ04sQ0FBQzt3R0F4UVUsZ0JBQWdCOzRHQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFpvbmUgfSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0dGVycG9ydFNlcnZpY2UgfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvem9uZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tICcuL3pvbmVDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJy4vdmlld2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0b3JTZXJ2aWNlIHtcclxuICBjdXJyZW50U3dlZXA6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHRhcmdldFN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICB0YXJnZXRSb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgY3VycmVudE1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICBjdXJyZW50Wm9uZTogWm9uZSB8IG51bGw7XHJcblxyXG4gIHZpc2l0TGFzdFBvc2l0aW9uOiBNYXA8c3RyaW5nLCB7IHN3ZWVwOiBzdHJpbmc7IHJvdGF0aW9uOiBhbnkgfT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGZsb29yVG9HbzogWm9uZSB8IG51bGw7XHJcblxyXG4gIGxvY2F0aW9uSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBuYXZCYXJab25lSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBpc1Zpc2libGVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY3VycmVudE5hdkJhckxvY2F0aW9uSUQ6IHN0cmluZztcclxuXHJcbiAgY3VycmVudE5hdkJhclpvbmVJRDogc3RyaW5nO1xyXG5cclxuICB6b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDogWm9uZVtdIHwgbnVsbDtcclxuXHJcbiAgYXVkaW9ab25lc0NoYW5nZTogU3ViamVjdDxab25lW10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgem9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXSB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRBdWRpb1pvbmVzOiBab25lW107XHJcblxyXG4gIGF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXR0ZXJwb3J0U2VydmljZTogTWF0dGVycG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICkge1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jdXJyZW50U3dlZXBcclxuICAgICAgLnBpcGUoZmlyc3QoKSkgLy8gIHRha2UgZmlyc3QgaW4gb3JkZXIgbm90IHRvIHdhaXQgMiBzZWMgYW4gZmlyc3QgbG9hZFxyXG4gICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcclxuICAgICAgICBpZiAodGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTd2VlcFxyXG4gICAgICAvLy5waXBlKGRlYm91bmNlVGltZTxzdHJpbmc+KDE1MDApKSAvLyAgZGVsYXlzIHZhbHVlcyBlbWl0dGVkIGFuZCByZXR1cm4gb25seSB0aGUgbGF0ZXN0XHJcbiAgICAgIC5zdWJzY3JpYmUoKHN3ZWVwOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoc3dlZXAgPT09IHRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gc3dlZXA7XHJcbiAgICAgICAgaWYgKHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnZpZXdlcklzT24uc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YToge1xyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcbiAgICAgICAgbW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICBzd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbDtcclxuICAgICAgfSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEICE9PSBkYXRhLnNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBkYXRhLnNwYWNlSUQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGF0YS5zcGFjZUlEKSB7XHJcbiAgICAgICAgICB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5hdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IG51bGw7XHJcbiAgICAgICAgICAvLyBzYXZlIGxhc3QgcG9zaXRpb25cclxuICAgICAgICAgIGNvbnN0IGxhc3RQb3NlID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5wb3NlQ2FtZXJhO1xyXG4gICAgICAgICAgaWYgKGxhc3RQb3NlICYmIHRoaXMuY3VycmVudE1vZGVsM0QgJiYgdGhpcy51c2VyU2VydmljZS5jdSkge1xyXG4gICAgICAgICAgICB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLnNldCh0aGlzLmN1cnJlbnRNb2RlbDNELCB7XHJcbiAgICAgICAgICAgICAgLyoqT3ZlcnJpZGUgc3dlZXAvcm90YXRpb24gaWYgZXhpc3QgKi9cclxuICAgICAgICAgICAgICBzd2VlcDogdGhpcy50YXJnZXRTd2VlcCA/PyBsYXN0UG9zZS5zd2VlcCxcclxuICAgICAgICAgICAgICByb3RhdGlvbjogdGhpcy50YXJnZXRSb3RhdGlvbiA/PyBsYXN0UG9zZS5yb3RhdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgICAgLyoqT3ZlcnJpZGUgc3dlZXAvcm90YXRpb24gaWYgZXhpc3QuIFRhcmdldCBpcyByZXNldCBhZnRlciAobnVsbCkqL1xyXG4gICAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IHRoaXMudGFyZ2V0U3dlZXAgPz8gZGF0YS5zd2VlcDtcclxuICAgICAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uID8/IGRhdGEucm90YXRpb247XHJcbiAgICAgICAgICB0aGlzLm9uVmlld2VyTG9hZGVkKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzQ2hhbmdlZC5zdWJzY3JpYmUoKGlzQ29ubmVjdGVkKSA9PiB7XHJcbiAgICAgIGlmICghaXNDb25uZWN0ZWQpIHtcclxuICAgICAgICAvLyB1c2VyIGRpc2Nvbm5lY3RlZCwgY2xlYW4gTWFwXHJcbiAgICAgICAgdGhpcy52aXNpdExhc3RQb3NpdGlvbiA9IG5ldyBNYXAoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgY29uc3QgZGVlcFBhcmFtc0Jhc2U2NCA9IHBhcmFtc1snZGVlcFBhcmFtcyddO1xyXG4gICAgICBpZihkZWVwUGFyYW1zQmFzZTY0KXtcclxuICAgICAgICBjb25zdCBkZWVwUGFyYW1zIDogYW55ID0gSlNPTi5wYXJzZShhdG9iKGRlZXBQYXJhbXNCYXNlNjQpKTtcclxuICAgICAgICB0aGlzLnRhcmdldFN3ZWVwID0gZGVlcFBhcmFtcy5zd2VlcElEO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSBkZWVwUGFyYW1zLnJvdGF0aW9uO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgLyoqQ2xlYXIgdGhpcyBxdWVyeSBwYXJhbXMgKi9cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZGVlcFBhcmFtczogbnVsbCB9LCBxdWVyeVBhcmFtc0hhbmRsaW5nIDogXCJtZXJnZVwiXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgZ2V0RGVlcExpbmsoKSA6IHN0cmluZ3tcclxuICAgIGxldCBkYXRhID0gbnVsbDtcclxuXHJcbiAgICBpZih0aGlzLmN1cnJlbnRTd2VlcCl7IC8qKlRvZG8gY2hlY2sgbWF0dGVycG9ydCBtb2QgYW5kIGFkYXB0ICovXHJcbiAgICAgIGRhdGEgPSB7XHJcbiAgICAgICAgc3dlZXBJRCA6IHRoaXMuY3VycmVudFN3ZWVwLFxyXG4gICAgICAgIHJvdGF0aW9uIDogdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRDdXJyZW50Q2FtZXJhUG9zaXRpb24oKS5yb3RhdGlvblxyXG4gICAgICB9O1xyXG5cclxuICAgICAgZGF0YSA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBtb2RlbDNEID0gdGhpcy5jdXJyZW50TW9kZWwzRDtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtdLCB7XHJcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRlZXBQYXJhbXM6IGRhdGEsIG1vZGVsM0QgfSxcclxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gYCR7bG9jYXRpb24ub3JpZ2lufSR7dXJsLnRvU3RyaW5nKCl9YDtcclxuICB9XHJcblxyXG4gIGdldExhc3RQb3NpdGlvbkZvck1vZGVsKG1vZGVsM0Q6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uZ2V0KG1vZGVsM0QpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKFxyXG4gICAgc3dlZXA6IHN0cmluZyxcclxuICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbFxyXG4gICkge1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fZ29fdG9fc3dlZXAoc3dlZXAsIHJvdGF0aW9uKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdvVG9GbG9vcihmbG9vcjogWm9uZSkge1xyXG4gICAgbGV0IG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlID0gbnVsbDtcclxuICAgIGlmIChmbG9vci5tZXRhZGF0YSkge1xyXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IEpTT04ucGFyc2UoZmxvb3IubWV0YWRhdGEpO1xyXG4gICAgICBpZiAobWV0YWRhdGEubWF0dGVycG9ydEZsb29yU2VxdWVuY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlID0gbWV0YWRhdGEubWF0dGVycG9ydEZsb29yU2VxdWVuY2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX2Zsb29yKFxyXG4gICAgICBmbG9vci5uYW1lLFxyXG4gICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uVmlld2VyTG9hZGVkKCkge1xyXG4gICAgbGV0IHN3ZWVwVG9Hbzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBsZXQgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMudGFyZ2V0U3dlZXApIHtcclxuICAgICAgc3dlZXBUb0dvID0gdGhpcy50YXJnZXRTd2VlcDtcclxuICAgICAgcm90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uXHJcbiAgICAgICAgPyB0aGlzLnRhcmdldFJvdGF0aW9uXHJcbiAgICAgICAgOiB0aGlzLmNoZWNrUm90YXRpb25Gb3JTd2VlcCh0aGlzLnRhcmdldFN3ZWVwKTtcclxuICAgICAgICAvKipSZXNldCAvIENvbnN1bWUgdGFyZ2V0ICovXHJcbiAgICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBsYXN0UG9zdGlvbiA9IHRoaXMuZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwodGhpcy5jdXJyZW50TW9kZWwzRCEpO1xyXG4gICAgICBpZiAobGFzdFBvc3Rpb24pIHtcclxuICAgICAgICBzd2VlcFRvR28gPSBsYXN0UG9zdGlvbi5zd2VlcDtcclxuICAgICAgICByb3RhdGlvbiA9IGxhc3RQb3N0aW9uLnJvdGF0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YXJnZXRSb3RhdGlvbikge1xyXG4gICAgICByb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb247XHJcbiAgICB9XHJcbiAgICBpZiAoc3dlZXBUb0dvICYmICF0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcImdvIHRvIHN3ZWVwXCIsIHN3ZWVwVG9Hbyk7XHJcbiAgICAgIHRoaXMuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHN3ZWVwVG9Hbywgcm90YXRpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmxvb3JUb0dvKSB7XHJcbiAgICAgIHRoaXMuZ29Ub0Zsb29yKHRoaXMuZmxvb3JUb0dvKTtcclxuICAgICAgdGhpcy5mbG9vclRvR28gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgZmlyc3QgbG9hZCBhbmQgem9uZXMgYXJlIG5vdCBzZXRcclxuICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXHJcbiAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuYXVkaW9JRFxyXG4gICAgKTtcclxuICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrUm90YXRpb25Gb3JTd2VlcChzd2VlcDogc3RyaW5nKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCB7XHJcbiAgICBjb25zdCBsYXN0UG9zaXRpb24gPSB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldCh0aGlzLmN1cnJlbnRNb2RlbDNEISk7XHJcbiAgICBpZiAobGFzdFBvc2l0aW9uICYmIGxhc3RQb3NpdGlvbi5zd2VlcCA9PT0gc3dlZXApIHtcclxuICAgICAgcmV0dXJuIGxhc3RQb3NpdGlvbi5yb3RhdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKSB7XHJcbiAgICBpZiAoIXRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCB6b25lc0ZvclN3ZWVwID0gdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZT8uZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHRoaXMuY3VycmVudFN3ZWVwKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGF1ZGlvWm9uZXMgPSB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U/LmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRTd2VlcClcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNDaGFuZ2UubmV4dChhdWRpb1pvbmVzKTtcclxuICAgIHRoaXMuY3VycmVudEF1ZGlvWm9uZXMgPSBhdWRpb1pvbmVzO1xyXG5cclxuICAgIC8vIGZpbHRlciBvdXQgYXVkaW8gem9uZSAobm90IHRvIHNob3cgdG8gdXNlciBpdCdzIG5hbWUpXHJcbiAgICB6b25lc0ZvclN3ZWVwID0gem9uZXNGb3JTd2VlcC5maWx0ZXIoKHpvbmUpID0+ICF6b25lLmF1ZGlvKTtcclxuICAgIC8vIExJTkUgQkVMT1cgSVMgQ09NTUVOVEVEIFNJTkNFIENSRUFURVMgSU5GSU5JVEUgU1BJTk5FUiBGT1IgWk9ORVMgV0lUSE9VVCBBVURJTy4uLlxyXG4gICAgLy8gaWYgKHpvbmVzRm9yU3dlZXAgJiYgem9uZXNGb3JTd2VlcC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSB6b25lc0ZvclN3ZWVwLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICBpZiAoYS5zd2VlcElEcyEubGVuZ3RoID09PSBiLnN3ZWVwSURzIS5sZW5ndGgpIHtcclxuICAgICAgICAgIC8vIGlmIHRoZSBzYW1lIGFtb3VudCBvZiBzd2VlcHM6IGZsb29yID09IHRoZSB3aG9sZSBzcGFjZVxyXG4gICAgICAgICAgaWYgKGEubGF5ZXIgJiYgYi5sYXllcikge1xyXG4gICAgICAgICAgICAvLyBwdXQgdHlwZSBCVUlMRElORyBhdCB0aGUgZW5kXHJcbiAgICAgICAgICAgIHJldHVybiBhLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcclxuICAgICAgICAgICAgICA/IC0xXHJcbiAgICAgICAgICAgICAgOiBiLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcclxuICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gYS5wYXJlbnQ/LnN3ZWVwSURzID8gLTEgOiBiLnBhcmVudD8uc3dlZXBJRHMgPyAxIDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEuc3dlZXBJRHMhLmxlbmd0aCAtIGIuc3dlZXBJRHMhLmxlbmd0aDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZXNGb3JVc2VyQ2hhbmdlLm5leHQoXHJcbiAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgIHRoaXMuY3VycmVudFpvbmUgIT09IHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXBbMF1cclxuICAgICAgKSB7XHJcbiAgICAgICAgW3RoaXMuY3VycmVudFpvbmVdID0gdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDtcclxuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnRab25lKTtcclxuICAgICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBWXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUF1Q2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUNWLFlBQVksQ0FBZ0I7SUFFNUIsV0FBVyxDQUFnQjtJQUUzQixjQUFjLENBQWtDO0lBRWhELGNBQWMsQ0FBZ0I7SUFFOUIsY0FBYyxDQUFnQjtJQUU5QixXQUFXLENBQWM7SUFFekIsaUJBQWlCLEdBQWtELElBQUksR0FBRyxFQUFFLENBQUM7SUFFN0UsU0FBUyxDQUFjO0lBRXZCLGdCQUFnQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXpELGtCQUFrQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTNELGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFMUMsdUJBQXVCLENBQVM7SUFFaEMsbUJBQW1CLENBQVM7SUFFNUIsMEJBQTBCLENBQWdCO0lBRTFDLGdCQUFnQixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWxELG9CQUFvQixDQUFnQjtJQUVwQyxpQkFBaUIsQ0FBUztJQUUxQix5QkFBeUIsQ0FBUztJQUdsQyxZQUNVLGlCQUFvQyxFQUNwQyxhQUE0QixFQUM1QixXQUF3QixFQUN4QixXQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLEtBQXFCO1FBTnJCLHNCQUFpQixHQUFqQixp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Q3JELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSTtJQUNOLENBQUM7d0dBelJVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgWm9uZSB9IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXR0ZXJwb3J0U2VydmljZSB9IGZyb20gJy4vbWF0dGVycG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy96b25lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gJy4vem9uZUNoYW5nZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWaWV3ZXJTZXJ2aWNlIH0gZnJvbSAnLi92aWV3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvclNlcnZpY2Uge1xyXG4gIGN1cnJlbnRTd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgdGFyZ2V0U3dlZXA6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHRhcmdldFJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsO1xyXG5cclxuICBjdXJyZW50TW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRab25lOiBab25lIHwgbnVsbDtcclxuXHJcbiAgdmlzaXRMYXN0UG9zaXRpb246IE1hcDxzdHJpbmcsIHsgc3dlZXA6IHN0cmluZzsgcm90YXRpb246IGFueSB9PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgZmxvb3JUb0dvOiBab25lIHwgbnVsbDtcclxuXHJcbiAgbG9jYXRpb25JRENoYW5nZTogU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIG5hdkJhclpvbmVJRENoYW5nZTogU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGlzVmlzaWJsZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBjdXJyZW50TmF2QmFyTG9jYXRpb25JRDogc3RyaW5nO1xyXG5cclxuICBjdXJyZW50TmF2QmFyWm9uZUlEOiBzdHJpbmc7XHJcblxyXG4gIHpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwOiBab25lW10gfCBudWxsO1xyXG5cclxuICBhdWRpb1pvbmVzQ2hhbmdlOiBTdWJqZWN0PFpvbmVbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB6b25lc0ZvclVzZXJGb3JTcGFjZTogWm9uZVtdIHwgbnVsbDtcclxuXHJcbiAgY3VycmVudEF1ZGlvWm9uZXM6IFpvbmVbXTtcclxuXHJcbiAgYXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZTogWm9uZVtdO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTd2VlcFxyXG4gICAgICAucGlwZShmaXJzdCgpKSAvLyAgdGFrZSBmaXJzdCBpbiBvcmRlciBub3QgdG8gd2FpdCAyIHNlYyBhbiBmaXJzdCBsb2FkXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN3ZWVwOiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IHN3ZWVwO1xyXG4gICAgICAgIGlmICh0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3VycmVudFN3ZWVwXHJcbiAgICAgIC8vLnBpcGUoZGVib3VuY2VUaW1lPHN0cmluZz4oMTUwMCkpIC8vICBkZWxheXMgdmFsdWVzIGVtaXR0ZWQgYW5kIHJldHVybiBvbmx5IHRoZSBsYXRlc3RcclxuICAgICAgLnN1YnNjcmliZSgoc3dlZXA6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChzd2VlcCA9PT0gdGhpcy5jdXJyZW50U3dlZXApIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcclxuICAgICAgICBpZiAodGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnZpZXdlclNlcnZpY2Uudmlld2VySXNPbi5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiB7XHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICBtb2RlbDNEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICAgIHN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsO1xyXG4gICAgICB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQgIT09IGRhdGEuc3BhY2VJRCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IGRhdGEuc3BhY2VJRDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkYXRhLnNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcCA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2UubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gbnVsbDtcclxuICAgICAgICAgIC8vIHNhdmUgbGFzdCBwb3NpdGlvblxyXG4gICAgICAgICAgY29uc3QgbGFzdFBvc2UgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnBvc2VDYW1lcmE7XHJcbiAgICAgICAgICBpZiAobGFzdFBvc2UgJiYgdGhpcy5jdXJyZW50TW9kZWwzRCAmJiB0aGlzLnVzZXJTZXJ2aWNlLmN1KSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uc2V0KHRoaXMuY3VycmVudE1vZGVsM0QsIHtcclxuICAgICAgICAgICAgICAvKipPdmVycmlkZSBzd2VlcC9yb3RhdGlvbiBpZiBleGlzdCAqL1xyXG4gICAgICAgICAgICAgIHN3ZWVwOiB0aGlzLnRhcmdldFN3ZWVwID8/IGxhc3RQb3NlLnN3ZWVwLFxyXG4gICAgICAgICAgICAgIHJvdGF0aW9uOiB0aGlzLnRhcmdldFJvdGF0aW9uID8/IGxhc3RQb3NlLnJvdGF0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsM0QgPSBkYXRhLm1vZGVsM0Q7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsM0QgPSBkYXRhLm1vZGVsM0Q7XHJcbiAgICAgICAgICAvKipPdmVycmlkZSBzd2VlcC9yb3RhdGlvbiBpZiBleGlzdC4gVGFyZ2V0IGlzIHJlc2V0IGFmdGVyIChudWxsKSovXHJcbiAgICAgICAgICB0aGlzLnRhcmdldFN3ZWVwID0gdGhpcy50YXJnZXRTd2VlcCA/PyBkYXRhLnN3ZWVwO1xyXG4gICAgICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb24gPz8gZGF0YS5yb3RhdGlvbjtcclxuICAgICAgICAgIHRoaXMub25WaWV3ZXJMb2FkZWQoKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoaXNDb25uZWN0ZWQpID0+IHtcclxuICAgICAgaWYgKCFpc0Nvbm5lY3RlZCkge1xyXG4gICAgICAgIC8vIHVzZXIgZGlzY29ubmVjdGVkLCBjbGVhbiBNYXBcclxuICAgICAgICB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uID0gbmV3IE1hcCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICBjb25zdCBkZWVwUGFyYW1zQmFzZTY0ID0gcGFyYW1zWydkZWVwUGFyYW1zJ107XHJcbiAgICAgIGlmIChkZWVwUGFyYW1zQmFzZTY0KSB7XHJcbiAgICAgICAgY29uc3QgZGVlcFBhcmFtczogYW55ID0gSlNPTi5wYXJzZShhdG9iKGRlZXBQYXJhbXNCYXNlNjQpKTtcclxuICAgICAgICB0aGlzLnRhcmdldFN3ZWVwID0gZGVlcFBhcmFtcy5zd2VlcElEO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSBkZWVwUGFyYW1zLnJvdGF0aW9uO1xyXG5cclxuICAgICAgICAvKipDbGVhciB0aGlzIHF1ZXJ5IHBhcmFtcyAqL1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XHJcbiAgICAgICAgICBxdWVyeVBhcmFtczogeyBkZWVwUGFyYW1zOiBudWxsIH0sIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwibWVyZ2VcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBnZXREZWVwTGluaygpOiBzdHJpbmcge1xyXG4gICAgbGV0IGRhdGEgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmN1cnJlbnRTd2VlcCkgeyAvKipUb2RvIGNoZWNrIG1hdHRlcnBvcnQgbW9kIGFuZCBhZGFwdCAqL1xyXG4gICAgICBkYXRhID0ge1xyXG4gICAgICAgIHN3ZWVwSUQ6IHRoaXMuY3VycmVudFN3ZWVwLFxyXG4gICAgICAgIHJvdGF0aW9uOiB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEN1cnJlbnRDYW1lcmFQb3NpdGlvbigpLnJvdGF0aW9uXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBkYXRhID0gYnRvYShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbW9kZWwzRCA9IHRoaXMuY3VycmVudE1vZGVsM0Q7XHJcblxyXG4gICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbXSwge1xyXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICBxdWVyeVBhcmFtczogeyBkZWVwUGFyYW1zOiBkYXRhLCBtb2RlbDNEIH0sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwibWVyZ2VcIlxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGAke2xvY2F0aW9uLm9yaWdpbn0ke3VybC50b1N0cmluZygpfWA7XHJcbiAgfVxyXG5cclxuICBnZXRMYXN0UG9zaXRpb25Gb3JNb2RlbChtb2RlbDNEOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldChtb2RlbDNEKTtcclxuICB9XHJcblxyXG4gIGdvVG9Td2VlcFdpdGhSb3RhdGlvbihcclxuICAgIHN3ZWVwOiBzdHJpbmcsXHJcbiAgICByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCA9IG51bGxcclxuICApIHtcclxuICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX3N3ZWVwKHN3ZWVwLCByb3RhdGlvbik7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnb1RvRmxvb3IoZmxvb3I6IFpvbmUpIHtcclxuICAgIGxldCBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG51bGw7XHJcbiAgICBpZiAoZmxvb3IubWV0YWRhdGEpIHtcclxuICAgICAgY29uc3QgbWV0YWRhdGEgPSBKU09OLnBhcnNlKGZsb29yLm1ldGFkYXRhKTtcclxuICAgICAgaWYgKG1ldGFkYXRhLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG1ldGFkYXRhLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl9nb190b19mbG9vcihcclxuICAgICAgZmxvb3IubmFtZSxcclxuICAgICAgbWF0dGVycG9ydEZsb29yU2VxdWVuY2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblZpZXdlckxvYWRlZCgpIHtcclxuICAgIGxldCBzd2VlcFRvR286IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcclxuICAgIGlmICh0aGlzLnRhcmdldFN3ZWVwKSB7XHJcbiAgICAgIHN3ZWVwVG9HbyA9IHRoaXMudGFyZ2V0U3dlZXA7XHJcbiAgICAgIHJvdGF0aW9uID0gdGhpcy50YXJnZXRSb3RhdGlvblxyXG4gICAgICAgID8gdGhpcy50YXJnZXRSb3RhdGlvblxyXG4gICAgICAgIDogdGhpcy5jaGVja1JvdGF0aW9uRm9yU3dlZXAodGhpcy50YXJnZXRTd2VlcCk7XHJcbiAgICAgIC8qKlJlc2V0IC8gQ29uc3VtZSB0YXJnZXQgKi9cclxuICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMudGFyZ2V0U3dlZXAgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgbGFzdFBvc3Rpb24gPSB0aGlzLmdldExhc3RQb3NpdGlvbkZvck1vZGVsKHRoaXMuY3VycmVudE1vZGVsM0QhKTtcclxuICAgICAgaWYgKGxhc3RQb3N0aW9uKSB7XHJcbiAgICAgICAgc3dlZXBUb0dvID0gbGFzdFBvc3Rpb24uc3dlZXA7XHJcbiAgICAgICAgcm90YXRpb24gPSBsYXN0UG9zdGlvbi5yb3RhdGlvbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFyZ2V0Um90YXRpb24pIHtcclxuICAgICAgcm90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uO1xyXG4gICAgfVxyXG4gICAgaWYgKHN3ZWVwVG9HbyAmJiAhdGhpcy5mbG9vclRvR28pIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coXCJnbyB0byBzd2VlcFwiLCBzd2VlcFRvR28pO1xyXG4gICAgICB0aGlzLmdvVG9Td2VlcFdpdGhSb3RhdGlvbihzd2VlcFRvR28sIHJvdGF0aW9uKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICB0aGlzLmdvVG9GbG9vcih0aGlzLmZsb29yVG9Hbyk7XHJcbiAgICAgIHRoaXMuZmxvb3JUb0dvID0gbnVsbDtcclxuICAgIH1cclxuICAgIC8vIGlmIGZpcnN0IGxvYWQgYW5kIHpvbmVzIGFyZSBub3Qgc2V0XHJcbiAgICB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0J5U3BhY2VGb3JVc2VyKFxyXG4gICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEXHJcbiAgICApO1xyXG4gICAgdGhpcy5hdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlID0gdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZS5maWx0ZXIoXHJcbiAgICAgICh6b25lKSA9PiB6b25lLmF1ZGlvSURcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihcclxuICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRFxyXG4gICAgKTtcclxuICAgIHRoaXMuYXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZSA9IHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5hdWRpb0lEXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghdGhpcy5jdXJyZW50U3dlZXApIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEN1cnJlbnRTd2VlcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrUm90YXRpb25Gb3JTd2VlcChzd2VlcDogc3RyaW5nKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCB7XHJcbiAgICBjb25zdCBsYXN0UG9zaXRpb24gPSB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldCh0aGlzLmN1cnJlbnRNb2RlbDNEISk7XHJcbiAgICBpZiAobGFzdFBvc2l0aW9uICYmIGxhc3RQb3NpdGlvbi5zd2VlcCA9PT0gc3dlZXApIHtcclxuICAgICAgcmV0dXJuIGxhc3RQb3NpdGlvbi5yb3RhdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKSB7XHJcbiAgICBpZiAoIXRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1dWlkID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRTd2VlcFVVSURGb3JTaWQodGhpcy5jdXJyZW50U3dlZXApO1xyXG4gICAgY29uc29sZS5sb2coJ3V1aWQnLCB1dWlkKTtcclxuICAgIGNvbnN0IHN3ZWVwVG9NYXRjaCA9IHV1aWQgPz8gdGhpcy5jdXJyZW50U3dlZXA7XHJcblxyXG4gICAgbGV0IHpvbmVzRm9yU3dlZXAgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlPy5maWx0ZXIoXHJcbiAgICAgICh6b25lKSA9PiB6b25lLnN3ZWVwSURzICYmIHpvbmUuc3dlZXBJRHMuaW5jbHVkZXMoc3dlZXBUb01hdGNoKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGF1ZGlvWm9uZXMgPSB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U/LmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRTd2VlcClcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNDaGFuZ2UubmV4dChhdWRpb1pvbmVzKTtcclxuICAgIHRoaXMuY3VycmVudEF1ZGlvWm9uZXMgPSBhdWRpb1pvbmVzO1xyXG5cclxuICAgIC8vIGZpbHRlciBvdXQgYXVkaW8gem9uZSAobm90IHRvIHNob3cgdG8gdXNlciBpdCdzIG5hbWUpXHJcbiAgICB6b25lc0ZvclN3ZWVwID0gem9uZXNGb3JTd2VlcC5maWx0ZXIoKHpvbmUpID0+ICF6b25lLmF1ZGlvKTtcclxuICAgIC8vIExJTkUgQkVMT1cgSVMgQ09NTUVOVEVEIFNJTkNFIENSRUFURVMgSU5GSU5JVEUgU1BJTk5FUiBGT1IgWk9ORVMgV0lUSE9VVCBBVURJTy4uLlxyXG4gICAgLy8gaWYgKHpvbmVzRm9yU3dlZXAgJiYgem9uZXNGb3JTd2VlcC5sZW5ndGggPiAwKSB7XHJcbiAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwID0gem9uZXNGb3JTd2VlcC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGlmIChhLnN3ZWVwSURzIS5sZW5ndGggPT09IGIuc3dlZXBJRHMhLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIGlmIHRoZSBzYW1lIGFtb3VudCBvZiBzd2VlcHM6IGZsb29yID09IHRoZSB3aG9sZSBzcGFjZVxyXG4gICAgICAgIGlmIChhLmxheWVyICYmIGIubGF5ZXIpIHtcclxuICAgICAgICAgIC8vIHB1dCB0eXBlIEJVSUxESU5HIGF0IHRoZSBlbmRcclxuICAgICAgICAgIHJldHVybiBhLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcclxuICAgICAgICAgICAgPyAtMVxyXG4gICAgICAgICAgICA6IGIubGF5ZXIubmFtZSAhPT0gJ0JVSUxESU5HJ1xyXG4gICAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICAgIDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEucGFyZW50Py5zd2VlcElEcyA/IC0xIDogYi5wYXJlbnQ/LnN3ZWVwSURzID8gMSA6IDA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGEuc3dlZXBJRHMhLmxlbmd0aCAtIGIuc3dlZXBJRHMhLmxlbmd0aDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lc0ZvclVzZXJDaGFuZ2UubmV4dChcclxuICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLmN1cnJlbnRab25lICE9PSB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwWzBdXHJcbiAgICApIHtcclxuICAgICAgW3RoaXMuY3VycmVudFpvbmVdID0gdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDtcclxuICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLm5leHQodGhpcy5jdXJyZW50Wm9uZSk7XHJcbiAgICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|