@colijnit/homedecorator 255.1.4 → 255.1.6
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/app/core/enum/message-type.enum.d.ts +3 -1
- package/app/core/interface/message-with-payload.interface.d.ts +6 -0
- package/app/core/model/homedecorator-settings-options.d.ts +2 -0
- package/app/core/service/homedecorator-app-event.service.d.ts +1 -0
- package/app/core/service/homedecorator-connector-adapter.service.d.ts +2 -0
- package/app/core/service/homedecorator-connector.service.d.ts +5 -4
- package/app/core/service/homedecorator-settings.service.d.ts +2 -1
- package/app/core/service/presets.service.d.ts +3 -1
- package/app/homedecorator.component.d.ts +3 -1
- package/app/homedecorator.module.d.ts +2 -1
- package/app/plugins/core3d/service/floor-pattern.service.d.ts +1 -1
- package/app/plugins/core3d/service/floor-tile-intersection.service.d.ts +2 -1
- package/app/plugins/core3d/service/floor.service.d.ts +3 -1
- package/app/plugins/core3d/service/post-processing.service.d.ts +21 -7
- package/app/plugins/core3d/service/scene.service.d.ts +1 -1
- package/app/plugins/core3d/service/ssr.service.d.ts +0 -1
- package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +11 -2
- package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +185 -15
- package/app/plugins/model-uploader/model-uploader.module.d.ts +5 -1
- package/app/plugins/render/render-dialog/render-dialog.component.d.ts +4 -1
- package/app/plugins/render/render-dialog/render-dialog.component.scss +5 -5
- package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +3 -1
- package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +1 -0
- package/app/plugins/room-planner/components/settings/settings.component.d.ts +5 -1
- package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +4 -1
- package/app/plugins/room-planner/room-planner/room-planner.component.scss +1 -0
- package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +1 -3
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +2 -0
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +1 -1
- package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +2 -0
- package/assets/icons/dash-button.svg +7 -0
- package/assets/icons/pen-ruler.svg +1 -0
- package/assets/icons/retry-button.svg +7 -0
- package/bundles/colijnit-homedecorator.umd.js +822 -601
- package/bundles/colijnit-homedecorator.umd.js.map +1 -1
- package/esm2015/app/app.version.js +3 -3
- package/esm2015/app/core/enum/message-type.enum.js +3 -1
- package/esm2015/app/core/interface/message-with-payload.interface.js +1 -1
- package/esm2015/app/core/model/homedecorator-settings-options.js +3 -1
- package/esm2015/app/core/service/3dm-api.js +4 -4
- package/esm2015/app/core/service/homedecorator-app-event.service.js +2 -1
- package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +25 -2
- package/esm2015/app/core/service/homedecorator-connector.service.js +25 -22
- package/esm2015/app/core/service/homedecorator-settings.service.js +3 -2
- package/esm2015/app/core/service/presets.service.js +13 -5
- package/esm2015/app/core/utils/material.utils.js +3 -3
- package/esm2015/app/homedecorator.component.js +26 -19
- package/esm2015/app/homedecorator.module.js +8 -4
- package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +5 -5
- package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/factory.js +3 -2
- package/esm2015/app/plugins/core3d/service/ar.service.js +2 -1
- package/esm2015/app/plugins/core3d/service/floor-pattern.service.js +24 -18
- package/esm2015/app/plugins/core3d/service/floor-tile-intersection.service.js +13 -8
- package/esm2015/app/plugins/core3d/service/floor.service.js +9 -4
- package/esm2015/app/plugins/core3d/service/light-presets.service.js +10 -8
- package/esm2015/app/plugins/core3d/service/lights.service.js +8 -1
- package/esm2015/app/plugins/core3d/service/outline.service.js +4 -6
- package/esm2015/app/plugins/core3d/service/post-processing.service.js +148 -51
- package/esm2015/app/plugins/core3d/service/scene-event.service.js +14 -7
- package/esm2015/app/plugins/core3d/service/scene.service.js +84 -74
- package/esm2015/app/plugins/core3d/service/ssr.service.js +2 -53
- package/esm2015/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.js +10 -5
- package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +2 -2
- package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +281 -166
- package/esm2015/app/plugins/model-uploader/model-uploader.module.js +22 -3
- package/esm2015/app/plugins/render/render-controls/render-controls.component.js +3 -2
- package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +19 -14
- package/esm2015/app/plugins/render/service/new-render.service.js +4 -2
- package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +4 -2
- package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +2 -2
- package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +29 -15
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +5 -2
- package/esm2015/app/plugins/room-planner/components/settings/settings.component.js +12 -5
- package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +31 -15
- package/esm2015/app/plugins/room-planner/room-planner/room-planner.component.js +691 -683
- package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +43 -41
- package/esm2015/app/plugins/threedselector/threedselector/threedselector.component.js +1 -1
- package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +26 -20
- package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +2 -2
- package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +15 -8
- package/esm2015/app/shared/loading-overlay/loading-overlay.component.js +4 -2
- package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +3 -3
- package/fesm2015/colijnit-homedecorator.js +1656 -1322
- package/fesm2015/colijnit-homedecorator.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,7 +15,6 @@ import { LightEnum } from '../../../core/enum/light.enum';
|
|
|
15
15
|
import { DialogType } from '../../../shared/dialog/enum/dialog-type.enum';
|
|
16
16
|
import { ErrorMessage } from '../../../core/model/error-message';
|
|
17
17
|
import { LightProperties } from '../../../core/model/light-properties';
|
|
18
|
-
import { LightCreateService } from '../../threedselector/threedselector/service/light-creation.service';
|
|
19
18
|
import * as i0 from "@angular/core";
|
|
20
19
|
import * as i1 from "./lights.service";
|
|
21
20
|
import * as i2 from "../../../core/service/homedecorator-settings.service";
|
|
@@ -67,7 +66,7 @@ export class LightPresetsService {
|
|
|
67
66
|
else {
|
|
68
67
|
if (!this._appService.sku) {
|
|
69
68
|
const navigatorType = this._screenSizeAnalysis.navigatorType();
|
|
70
|
-
let lightPreset = this.loadedLightPresets.find((preset) => preset.navigatorType === navigatorType && !preset.standalone);
|
|
69
|
+
let lightPreset = this.loadedLightPresets.find((preset) => preset.navigatorType === navigatorType && preset.default && !preset.standalone);
|
|
71
70
|
if (!lightPreset) {
|
|
72
71
|
lightPreset = this.loadedLightPresets.find((preset) => preset.default);
|
|
73
72
|
}
|
|
@@ -78,7 +77,7 @@ export class LightPresetsService {
|
|
|
78
77
|
}
|
|
79
78
|
if (this._appService.sku) {
|
|
80
79
|
const navigatorType = this._screenSizeAnalysis.navigatorType();
|
|
81
|
-
let lightPreset = this.loadedLightPresets.find((preset) => preset.navigatorType === navigatorType && preset.standalone);
|
|
80
|
+
let lightPreset = this.loadedLightPresets.find((preset) => preset.navigatorType === navigatorType && preset.default && preset.standalone);
|
|
82
81
|
if (!lightPreset) {
|
|
83
82
|
lightPreset = this.loadedLightPresets.find((preset) => preset.standalone);
|
|
84
83
|
}
|
|
@@ -240,17 +239,20 @@ export class LightPresetsService {
|
|
|
240
239
|
}
|
|
241
240
|
_createLightFromProperties(lightProperties) {
|
|
242
241
|
const lightType = lightProperties.type;
|
|
243
|
-
|
|
244
|
-
const
|
|
245
|
-
const light = getLights.createNewLight(lightType);
|
|
242
|
+
const lightConstructor = this._lightsMap.get(lightType);
|
|
243
|
+
const light = new lightConstructor();
|
|
246
244
|
light.userData.wallOffset = lightProperties.wallOffset;
|
|
247
245
|
light.userData.rotationOffset = lightProperties.rotationOffset;
|
|
248
246
|
light.userData.topDownDirectional = lightProperties.topDownDirectional;
|
|
249
247
|
for (const property in lightProperties) {
|
|
250
|
-
if (!
|
|
248
|
+
if (!(property in light)) {
|
|
251
249
|
continue;
|
|
252
250
|
}
|
|
253
251
|
if (property === 'position') {
|
|
252
|
+
if (light.userData.wallOffset === 0) {
|
|
253
|
+
light.position.x = lightProperties.position.x;
|
|
254
|
+
light.position.z = lightProperties.position.z;
|
|
255
|
+
}
|
|
254
256
|
light.position.y = lightProperties.position.y;
|
|
255
257
|
}
|
|
256
258
|
else if (property === 'color') {
|
|
@@ -293,4 +295,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
293
295
|
providedIn: 'root'
|
|
294
296
|
}]
|
|
295
297
|
}], ctorParameters: function () { return [{ type: i1.LightsService }, { type: i2.HomedecoratorSettingsService }, { type: i3.HomedecoratorAppService }, { type: i4.ViewModeService }, { type: i5.SceneService }, { type: i6.HomedecoratorDictionaryService }, { type: i7.DialogService }, { type: i8.ScreenSizeAnalysisService }]; } });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHQtcHJlc2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9jb3JlM2Qvc2VydmljZS9saWdodC1wcmVzZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUlmLFVBQVUsRUFFVixTQUFTLEVBQ1YsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFZeEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUUvRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sb0VBQW9FLENBQUM7Ozs7Ozs7Ozs7QUFNdEcsTUFBTSxPQUFPLG1CQUFtQjtJQXVCOUIsWUFDVSxjQUE2QixFQUM3QixnQkFBOEMsRUFDOUMsV0FBb0MsRUFDcEMsZ0JBQWlDLEVBQ2pDLGFBQTJCLEVBQzNCLGtCQUFrRCxFQUNsRCxjQUE2QixFQUM3QixtQkFBOEM7UUFQOUMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUM5QyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWdDO1FBQ2xELG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMkI7UUFwQmpELGlCQUFZLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBR3BGLGFBQWE7UUFDTCxlQUFVLEdBQWlDLElBQUksR0FBRyxDQUEwQjtZQUNsRixDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO1lBQ2hDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO1lBQzlDLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDdEMsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQztZQUM1QyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO1NBQ25DLENBQUMsQ0FBQztJQVlILENBQUM7SUEvQkQsSUFBVyxpQkFBaUIsQ0FBQyxLQUFrQjtRQUM3QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBMkJELElBQUk7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNqRSxJQUFJLE9BQU8sRUFBRTtnQkFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDeEM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBMkIsRUFBRSxFQUFFO1lBQzVFLElBQUksWUFBWSxFQUFFO2dCQUNoQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDO2dCQUN2QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUN4QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztpQkFDN0I7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO3dCQUN6QixNQUFNLGFBQWEsR0FBa0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUM5RSxJQUFJLFdBQVcsR0FBZ0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsS0FBSyxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3RJLElBQUksQ0FBQyxXQUFXLEVBQUU7NEJBQ2hCLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQ3hFO3dCQUNELElBQUksV0FBVyxFQUFFOzRCQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7eUJBQ25DO3FCQUNGO2lCQUNGO2dCQUNELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7b0JBQ3hCLE1BQU0sYUFBYSxHQUFrQixJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQzlFLElBQUksV0FBVyxHQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEtBQUssYUFBYSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDeEcsSUFBSSxDQUFDLFdBQVcsRUFBRTt3QkFDaEIsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDM0U7b0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7d0JBQzNCLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3hFO29CQUNELElBQUksV0FBVyxFQUFFO3dCQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQ25DO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFWSxtQkFBbUI7O1lBQzlCLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsQ0FBQztLQUFBO0lBRU0sb0JBQW9CO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRVksZUFBZSxDQUFDLFdBQXdCOztZQUNuRCx5REFBeUQ7WUFDekQsMkRBQTJEO1lBQzNELEVBQUU7WUFDRiw4Q0FBOEM7WUFDOUMsd0JBQXdCO1lBQ3hCLDBCQUEwQjtZQUMxQixvQkFBb0I7WUFDcEIsT0FBTztZQUNQLHNEQUFzRDtZQUN0RCxxQ0FBcUM7WUFDckMsK0JBQStCO1lBQy9CLDZDQUE2QztZQUU3QyxnREFBZ0Q7WUFDaEQsK0JBQStCO1lBQy9CLG1DQUFtQztZQUNuQyw2Q0FBNkM7WUFDN0MsOENBQThDO1lBQzlDLDBCQUEwQjtZQUMxQixxQ0FBcUM7WUFDckMsMkJBQTJCO1lBQzNCLDJDQUEyQztZQUMzQyw4REFBOEQ7WUFDOUQsc0NBQXNDO1lBQ3RDLDBDQUEwQztZQUMxQyxvREFBb0Q7WUFDcEQscURBQXFEO1lBQ3JELDRDQUE0QztZQUM1Qyx5Q0FBeUM7WUFDekMsa0RBQWtEO1lBRWxELGdFQUFnRTtZQUNoRSwyQkFBMkI7WUFDM0IsMkNBQTJDO1lBQzNDLHVEQUF1RDtZQUN2RCxpQ0FBaUM7WUFDakMsOENBQThDO1lBRzlDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEMsT0FBTztZQUNQLHNEQUFzRDtZQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQUM7WUFDbEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlGLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEcsS0FBSyxNQUFNLGVBQWUsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUNoRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDbEQ7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUM7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztLQUFBO0lBRU0sVUFBVSxDQUFDLE1BQW9CO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRVksa0JBQWtCLENBQUMsTUFBbUIsRUFBRSxlQUF5Qjs7WUFDNUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7WUFDeEUsTUFBTSxJQUFJLEdBQUc7Z0JBQ1gsSUFBSSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGlCQUFpQjtnQkFDbEUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUNkLEtBQUssRUFBRSxjQUFjO2FBQ3RCLENBQUM7WUFFRixNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUMzQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzFDLEtBQUssRUFBRSxVQUFVO2dCQUNqQixPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtpQkFDbkM7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2FBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbkIsTUFBTSxRQUFRLEdBQWdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEYsSUFBSSxRQUFRLEVBQUU7b0JBQ1osUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7aUJBQ3hCO1lBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFTSxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWEsRUFBRSxLQUFZO1FBQzVDLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDOUMsS0FBSyxNQUFNLFFBQVEsSUFBSSxlQUFlLEVBQUU7WUFDdEMsSUFBSSxlQUFlLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUN2RTtTQUNGO1FBQ0QsZUFBZSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUN2RCxlQUFlLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQy9ELGVBQWUsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsZUFBZSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQWlCLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRTtnQkFDNUQsT0FBTyxFQUFFLENBQUM7YUFDWDtpQkFBTTtnQkFDTCxNQUFNLGFBQWEsR0FBaUI7b0JBQ2xDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUTtvQkFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO29CQUMxQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztpQkFDdkYsQ0FBQztnQkFDRixNQUFNLFNBQVMsR0FBa0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQztnQkFDdkcsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFNLE1BQU0sRUFBQyxFQUFFO29CQUMvQyxJQUFJLE1BQU0sRUFBRTt3QkFDVixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO3FCQUMvQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDLENBQUEsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxlQUFnQztRQUNqRSxNQUFNLFNBQVMsR0FBYyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQ2xELCtEQUErRDtRQUMvRCxNQUFNLFNBQVMsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQy9ELE1BQU0sS0FBSyxHQUFVLFNBQVMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQztRQUN2RCxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDO1FBQy9ELEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDO1FBRXZFLEtBQUssTUFBTSxRQUFRLElBQUksZUFBZSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNuQyxTQUFTO2FBQ1Y7WUFDRCxJQUFJLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQy9DO2lCQUFNLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRTtnQkFDL0IsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEQ7aUJBQU0sSUFBSSxRQUFRLEtBQUssYUFBYSxFQUFFO2dCQUNwQyxLQUFhLENBQUMsV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNyRTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUN2RTtTQUNGO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQStCLEVBQUUsUUFBYSxFQUFFLEtBQVU7UUFDckYsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ3pCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUMsU0FBUztpQkFDVjtnQkFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3RDO1NBQ0Y7YUFBTTtZQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLE1BQW1CO1FBQ3pDLE1BQU0sTUFBTSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxNQUFNLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckUsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7aUhBblJVLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBbWJpZW50TGlnaHQsXHJcbiAgQ29sb3IsXHJcbiAgRGlyZWN0aW9uYWxMaWdodCxcclxuICBIZW1pc3BoZXJlTGlnaHQsXHJcbiAgTGlnaHQsXHJcbiAgTWVzaCxcclxuICBNZXNoU3RhbmRhcmRNYXRlcmlhbCxcclxuICBQb2ludExpZ2h0LFxyXG4gIFNwaGVyZUdlb21ldHJ5LFxyXG4gIFNwb3RMaWdodFxyXG59IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge01hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtMaWdodFByZXNldCwgb3V0cHV0RW5jb2RpbmdNYXAsIHNoYWRvd01hcFR5cGVzTWFwfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVsL2xpZ2h0LXByZXNldCc7XHJcbmltcG9ydCB7TGlnaHRFbnVtfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbGlnaHQuZW51bSc7XHJcbmltcG9ydCB7TGlnaHRzU2VydmljZX0gZnJvbSAnLi9saWdodHMuc2VydmljZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckFwcFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLWFwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3TW9kZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS92aWV3LW1vZGUuc2VydmljZSc7XHJcbmltcG9ydCB7U2NlbmVTZXJ2aWNlfSBmcm9tICcuL3NjZW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItZGljdGlvbmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGlhbG9nL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NjcmVlblNpemVBbmFseXNpc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zY3JlZW4tc2l6ZS1hbmFseXNpcy9zY3JlZW4tc2l6ZS1hbmFseXNpcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3TW9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL3ZpZXctbW9kZS5lbnVtJztcclxuaW1wb3J0IHtOYXZpZ2F0b3JUeXBlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2NyZWVuLXNpemUtYW5hbHlzaXMvbmF2aWdhdG9yLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7RGlhbG9nQ29uZmlnfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGlhbG9nL2ludGVyZmFjZS9kaWFsb2ctY29uZmlnLmludGVyZmFjZSc7XHJcbmltcG9ydCB7RGlhbG9nVHlwZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RpYWxvZy9lbnVtL2RpYWxvZy10eXBlLmVudW0nO1xyXG5pbXBvcnQge0Vycm9yTWVzc2FnZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC9lcnJvci1tZXNzYWdlJztcclxuaW1wb3J0IHtEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TGlnaHRQcm9wZXJ0aWVzfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVsL2xpZ2h0LXByb3BlcnRpZXMnO1xyXG5pbXBvcnQge0xpZ2h0Q3JlYXRlU2VydmljZX0gZnJvbSAnLi4vLi4vdGhyZWVkc2VsZWN0b3IvdGhyZWVkc2VsZWN0b3Ivc2VydmljZS9saWdodC1jcmVhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi9pdGVtLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlnaHRQcmVzZXRzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBzZXQgYWN0aXZlTGlnaHRQcmVzZXQodmFsdWU6IExpZ2h0UHJlc2V0KSB7XHJcbiAgICB0aGlzLl9hY3RpdmVMaWdodFByZXNldCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhY3RpdmVMaWdodFByZXNldCgpOiBMaWdodFByZXNldCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTGlnaHRQcmVzZXQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZGVkTGlnaHRQcmVzZXRzOiBMaWdodFByZXNldFtdO1xyXG4gIHB1YmxpYyBwcmVzZXRMb2FkZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBwcml2YXRlIF9hY3RpdmVMaWdodFByZXNldDogTGlnaHRQcmVzZXQ7XHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHByaXZhdGUgX2xpZ2h0c01hcDogTWFwPExpZ2h0RW51bSwgdHlwZW9mIExpZ2h0PiA9IG5ldyBNYXA8TGlnaHRFbnVtLCB0eXBlb2YgTGlnaHQ+KFtcclxuICAgIFtMaWdodEVudW0uU3BvdExpZ2h0LCBTcG90TGlnaHRdLFxyXG4gICAgW0xpZ2h0RW51bS5EaXJlY3Rpb25hbExpZ2h0LCBEaXJlY3Rpb25hbExpZ2h0XSxcclxuICAgIFtMaWdodEVudW0uQW1iaWVudExpZ2h0LCBBbWJpZW50TGlnaHRdLFxyXG4gICAgW0xpZ2h0RW51bS5IZW1pc3BoZXJlTGlnaHQsIEhlbWlzcGhlcmVMaWdodF0sXHJcbiAgICBbTGlnaHRFbnVtLlBvaW50TGlnaHQsIFBvaW50TGlnaHRdXHJcbiAgXSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfbGlnaHRzU2VydmljZTogTGlnaHRzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdmlld01vZGVTZXJ2aWNlOiBWaWV3TW9kZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zY2VuZVNlcnZpY2U6IFNjZW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnlTZXJ2aWNlOiBIb21lZGVjb3JhdG9yRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NyZWVuU2l6ZUFuYWx5c2lzOiBTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBpbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdmlld01vZGVTZXJ2aWNlLnJvb20zRFVwZGF0ZWQuc3Vic2NyaWJlKCh1cGRhdGVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmICh1cGRhdGVkKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkTGlnaHRQcmVzZXQodGhpcy5hY3RpdmVMaWdodFByZXNldCk7XHJcbiAgICAgICAgdGhpcy5fbGlnaHRzU2VydmljZS51cGRhdGVBbGxPZmZzZXRzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fYXBwU2VydmljZS5saWdodFByZXNldHNMb2FkZWQuc3Vic2NyaWJlKChsaWdodFByZXNldHM6IExpZ2h0UHJlc2V0W10pID0+IHtcclxuICAgICAgaWYgKGxpZ2h0UHJlc2V0cykge1xyXG4gICAgICAgIHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzID0gbGlnaHRQcmVzZXRzO1xyXG4gICAgICAgIGlmICh0aGlzLmxvYWRlZExpZ2h0UHJlc2V0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlTmV3TGlnaHRQcmVzZXQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLl9hcHBTZXJ2aWNlLnNrdSkge1xyXG4gICAgICAgICAgICBjb25zdCBuYXZpZ2F0b3JUeXBlOiBOYXZpZ2F0b3JUeXBlID0gdGhpcy5fc2NyZWVuU2l6ZUFuYWx5c2lzLm5hdmlnYXRvclR5cGUoKTtcclxuICAgICAgICAgICAgbGV0IGxpZ2h0UHJlc2V0OiBMaWdodFByZXNldCA9IHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzLmZpbmQoKHByZXNldCkgPT4gcHJlc2V0Lm5hdmlnYXRvclR5cGUgPT09IG5hdmlnYXRvclR5cGUgJiYgIXByZXNldC5zdGFuZGFsb25lKTtcclxuICAgICAgICAgICAgaWYgKCFsaWdodFByZXNldCkge1xyXG4gICAgICAgICAgICAgIGxpZ2h0UHJlc2V0ID0gdGhpcy5sb2FkZWRMaWdodFByZXNldHMuZmluZCgocHJlc2V0KSA9PiBwcmVzZXQuZGVmYXVsdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGxpZ2h0UHJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkTGlnaHRQcmVzZXQobGlnaHRQcmVzZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9hcHBTZXJ2aWNlLnNrdSkge1xyXG4gICAgICAgICAgY29uc3QgbmF2aWdhdG9yVHlwZTogTmF2aWdhdG9yVHlwZSA9IHRoaXMuX3NjcmVlblNpemVBbmFseXNpcy5uYXZpZ2F0b3JUeXBlKCk7XHJcbiAgICAgICAgICBsZXQgbGlnaHRQcmVzZXQ6IExpZ2h0UHJlc2V0ID1cclxuICAgICAgICAgICAgdGhpcy5sb2FkZWRMaWdodFByZXNldHMuZmluZCgocHJlc2V0KSA9PiBwcmVzZXQubmF2aWdhdG9yVHlwZSA9PT0gbmF2aWdhdG9yVHlwZSAmJiBwcmVzZXQuc3RhbmRhbG9uZSk7XHJcbiAgICAgICAgICBpZiAoIWxpZ2h0UHJlc2V0KSB7XHJcbiAgICAgICAgICAgIGxpZ2h0UHJlc2V0ID0gdGhpcy5sb2FkZWRMaWdodFByZXNldHMuZmluZCgocHJlc2V0KSA9PiBwcmVzZXQuc3RhbmRhbG9uZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWxpZ2h0UHJlc2V0LnN0YW5kYWxvbmUpIHtcclxuICAgICAgICAgICAgbGlnaHRQcmVzZXQgPSB0aGlzLmxvYWRlZExpZ2h0UHJlc2V0cy5maW5kKChwcmVzZXQpID0+IHByZXNldC5kZWZhdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChsaWdodFByZXNldCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRMaWdodFByZXNldChsaWdodFByZXNldCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXBwU2VydmljZS5saWdodFByZXNldHNMb2FkZWQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX2FwcFNlcnZpY2Uuc2t1U2V0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl92aWV3TW9kZVNlcnZpY2Uucm9vbTNEVXBkYXRlZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUN1cnJlbnRQcmVzZXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLnNhdmVPckRlbGV0ZVByZXNldCh0aGlzLmFjdGl2ZUxpZ2h0UHJlc2V0LCB0cnVlKTtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5sb2FkZWRMaWdodFByZXNldHMuZmluZEluZGV4KGwgPT4gbC5uYW1lID09PSB0aGlzLmFjdGl2ZUxpZ2h0UHJlc2V0Lm5hbWUpO1xyXG4gICAgdGhpcy5sb2FkZWRMaWdodFByZXNldHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGlmICh0aGlzLmxvYWRlZExpZ2h0UHJlc2V0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jcmVhdGVOZXdMaWdodFByZXNldCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkTGlnaHRQcmVzZXQodGhpcy5sb2FkZWRMaWdodFByZXNldHNbdGhpcy5sb2FkZWRMaWdodFByZXNldHMubGVuZ3RoIC0gMV0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZU5ld0xpZ2h0UHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkZWRMaWdodFByZXNldHMucHVzaChuZXcgTGlnaHRQcmVzZXQoKSk7XHJcbiAgICB0aGlzLmxvYWRMaWdodFByZXNldCh0aGlzLmxvYWRlZExpZ2h0UHJlc2V0c1t0aGlzLmxvYWRlZExpZ2h0UHJlc2V0cy5sZW5ndGggLSAxXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgbG9hZExpZ2h0UHJlc2V0KGxpZ2h0UHJlc2V0OiBMaWdodFByZXNldCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gY29uc3QgYnVsYkdlb21ldHJ5ID0gbmV3IFNwaGVyZUdlb21ldHJ5KCAwLjIsIDE2LCA4ICk7XHJcbiAgICAvLyBjb25zdCBidWxiTGlnaHQgPSBuZXcgUG9pbnRMaWdodCggMHhmZmVlODgsIDEsIDEwMCwgMiApO1xyXG4gICAgLy9cclxuICAgIC8vIGNvbnN0IGJ1bGJNYXQgPSBuZXcgTWVzaFN0YW5kYXJkTWF0ZXJpYWwoIHtcclxuICAgIC8vICAgZW1pc3NpdmU6IDB4ZmZmZmVlLFxyXG4gICAgLy8gICBlbWlzc2l2ZUludGVuc2l0eTogMSxcclxuICAgIC8vICAgY29sb3I6IDB4MDAwMDAwXHJcbiAgICAvLyB9ICk7XHJcbiAgICAvLyBidWxiTGlnaHQuYWRkKCBuZXcgTWVzaCggYnVsYkdlb21ldHJ5LCBidWxiTWF0ICkgKTtcclxuICAgIC8vIGJ1bGJMaWdodC5wb3NpdGlvbi5zZXQoIDAsIDIsIDAgKTtcclxuICAgIC8vIGJ1bGJMaWdodC5jYXN0U2hhZG93ID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3QoIGJ1bGJMaWdodCApO1xyXG5cclxuICAgIC8vIGNvbnN0IHNwb3RMaWdodCA9IG5ldyBTcG90TGlnaHQoMHhmZmZmZmYsIDQpO1xyXG4gICAgLy8gc3BvdExpZ2h0LmNhc3RTaGFkb3cgPSB0cnVlO1xyXG4gICAgLy8gc3BvdExpZ2h0LnNoYWRvdy5iaWFzID0gLTAuMDAwMTtcclxuICAgIC8vIHNwb3RMaWdodC5zaGFkb3cubWFwU2l6ZS53aWR0aCA9IDEwMjQgKiA0O1xyXG4gICAgLy8gc3BvdExpZ2h0LnNoYWRvdy5tYXBTaXplLmhlaWdodCA9IDEwMjQgKiA0O1xyXG4gICAgLy8gc3BvdExpZ2h0LnBvd2VyID0gNDAwMDtcclxuICAgIC8vIHNwb3RMaWdodC5wb3NpdGlvbi5zZXQoMTAsIDIwLCAwKTtcclxuICAgIC8vIHNwb3RMaWdodC5uYW1lID0gJ3Nwb3QnO1xyXG4gICAgLy8gdGhpcy5fc2NlbmVTZXJ2aWNlLmFkZE9iamVjdChzcG90TGlnaHQpO1xyXG4gICAgLy8gY29uc3QgZGlyZWN0aW9uYWxMaWdodCA9IG5ldyBEaXJlY3Rpb25hbExpZ2h0KDB4ZmZmZmZmLCAxKTtcclxuICAgIC8vIGRpcmVjdGlvbmFsTGlnaHQuY2FzdFNoYWRvdyA9IHRydWU7XHJcbiAgICAvLyBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvdy5iaWFzID0gLTAuMDAwMTtcclxuICAgIC8vIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93Lm1hcFNpemUud2lkdGggPSAxMDI0ICogNDtcclxuICAgIC8vIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93Lm1hcFNpemUuaGVpZ2h0ID0gMTAyNCAqIDQ7XHJcbiAgICAvLyBkaXJlY3Rpb25hbExpZ2h0LnBvc2l0aW9uLnNldCgwLCAyLjYsIDApO1xyXG4gICAgLy8gZGlyZWN0aW9uYWxMaWdodC5uYW1lID0gJ2RpcmVjdGlvbmFsJztcclxuICAgIC8vIHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3QoZGlyZWN0aW9uYWxMaWdodCk7XHJcblxyXG4gICAgLy8gY29uc3QgaGVtaUxpZ2h0ID0gbmV3IEhlbWlzcGhlcmVMaWdodCgweGRkZWVmZiwgMHgwZjBlMGQsIDQpO1xyXG4gICAgLy8gaGVtaUxpZ2h0Lm5hbWUgPSAnaGVtaSc7XHJcbiAgICAvLyB0aGlzLl9zY2VuZVNlcnZpY2UuYWRkT2JqZWN0KGhlbWlMaWdodCk7XHJcbiAgICAvLyBjb25zdCBhbWJpZW50TGlnaHQgPSBuZXcgQW1iaWVudExpZ2h0KDB4ZmZmZmZmZiwgMSk7XHJcbiAgICAvLyBhbWJpZW50TGlnaHQubmFtZSA9ICdhbWJpZW50JztcclxuICAgIC8vIHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3QoYW1iaWVudExpZ2h0KTtcclxuXHJcblxyXG4gICAgdGhpcy5fbGlnaHRzU2VydmljZS5yZW1vdmVBbGxMaWdodHMoKTtcclxuICAgIC8vIFRPRE9cclxuICAgIC8vIHRoaXMuX3NjZW5lU2VydmljZS5yZW5kZXJlci51c2VMZWdhY3lMaWdodHMgPSB0cnVlO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLnJlbmRlcmVyLnRvbmVNYXBwaW5nRXhwb3N1cmUgPSBsaWdodFByZXNldC50b25lTWFwcGluZ0V4cG9zdXJlO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLnJlbmRlcmVyLnNoYWRvd01hcC50eXBlID0gc2hhZG93TWFwVHlwZXNNYXAuZ2V0KGxpZ2h0UHJlc2V0LnNoYWRvd01hcFR5cGUpO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLnJlbmRlcmVyLm91dHB1dENvbG9yU3BhY2UgID0gb3V0cHV0RW5jb2RpbmdNYXAuZ2V0KGxpZ2h0UHJlc2V0Lm91dHB1dEVuY29kaW5nKTtcclxuICAgIGZvciAoY29uc3QgbGlnaHRQcm9wZXJ0aWVzIG9mIGxpZ2h0UHJlc2V0LmxpZ2h0cykge1xyXG4gICAgICB0aGlzLl9jcmVhdGVMaWdodEZyb21Qcm9wZXJ0aWVzKGxpZ2h0UHJvcGVydGllcyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9saWdodHNTZXJ2aWNlLmluaXRpYXRlTGlnaHRQcmVzZXQoKTtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW5kZXJlclByb3BzQ2hhbmdlKCk7XHJcbiAgICB0aGlzLmFjdGl2ZUxpZ2h0UHJlc2V0ID0gbGlnaHRQcmVzZXQ7XHJcbiAgICB0aGlzLnByZXNldExvYWRlZC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVQcmVzZXQocHJlc2V0PzogTGlnaHRQcmVzZXQpOiB2b2lkIHtcclxuICAgIGlmICghcHJlc2V0KSB7XHJcbiAgICAgIHRoaXMuc2F2ZUFjdGl2ZVByZXNldCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZlT3JEZWxldGVQcmVzZXQodGhpcy5fcHJlcGFyZUZvclNhdmUocHJlc2V0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFjdGl2ZVByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2F2ZU9yRGVsZXRlUHJlc2V0KHRoaXMuX3ByZXBhcmVGb3JTYXZlKHRoaXMuYWN0aXZlTGlnaHRQcmVzZXQpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzYXZlT3JEZWxldGVQcmVzZXQocHJlc2V0OiBMaWdodFByZXNldCwgZGVsZXRlRnJvbUluZGV4PzogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLmFzc2V0UGF0aCArICcvZWRpdEluZGV4LnBocCc7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBmaWxlOiAnYXNzZXRzLycgKyB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubGlnaHRQcmVzZXRzSW5kZXgsXHJcbiAgICAgIGRhdGE6IFtwcmVzZXRdLFxyXG4gICAgICBlbnRyeTogJ2xpZ2h0cHJlc2V0cydcclxuICAgIH07XHJcblxyXG4gICAgYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogZGVsZXRlRnJvbUluZGV4ID8gJ0RFTEVURScgOiAnUE9TVCcsXHJcbiAgICAgIG1vZGU6IGRlbGV0ZUZyb21JbmRleCA/ICdjb3JzJyA6ICduby1jb3JzJyxcclxuICAgICAgY2FjaGU6ICduby1jYWNoZScsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpXHJcbiAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICBjb25zdCBsbFByZXNldDogTGlnaHRQcmVzZXQgPSB0aGlzLmxvYWRlZExpZ2h0UHJlc2V0cy5maW5kKHAgPT4gcC5pZCA9PT0gcHJlc2V0LmlkKTtcclxuICAgICAgaWYgKGxsUHJlc2V0KSB7XHJcbiAgICAgICAgbGxQcmVzZXQuZGlydHkgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlTGlnaHRCeUluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlTGlnaHRQcmVzZXQubGlnaHRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBzZXJ0TGlnaHQoaW5kZXg6IG51bWJlciwgbGlnaHQ6IExpZ2h0KTogdm9pZCB7XHJcbiAgICBjb25zdCBsaWdodFByb3BlcnRpZXMgPSBuZXcgTGlnaHRQcm9wZXJ0aWVzKCk7XHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGxpZ2h0UHJvcGVydGllcykge1xyXG4gICAgICBpZiAobGlnaHRQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BlcnR5KSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9iamVjdFByb3BlcnRpZXMobGlnaHRQcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgbGlnaHRbcHJvcGVydHldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGlnaHRQcm9wZXJ0aWVzLndhbGxPZmZzZXQgPSBsaWdodC51c2VyRGF0YS53YWxsT2Zmc2V0O1xyXG4gICAgbGlnaHRQcm9wZXJ0aWVzLnJvdGF0aW9uT2Zmc2V0ID0gbGlnaHQudXNlckRhdGEucm90YXRpb25PZmZzZXQ7XHJcbiAgICBsaWdodFByb3BlcnRpZXMudG9wRG93bkRpcmVjdGlvbmFsID0gbGlnaHQudXNlckRhdGEudG9wRG93bkRpcmVjdGlvbmFsO1xyXG4gICAgdGhpcy5hY3RpdmVMaWdodFByZXNldC5saWdodHNbaW5kZXhdID0gbGlnaHRQcm9wZXJ0aWVzO1xyXG4gICAgdGhpcy5hY3RpdmVMaWdodFByZXNldC5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0RpcnR5UHJlc2V0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuYWN0aXZlTGlnaHRQcmVzZXQgfHwgIXRoaXMuYWN0aXZlTGlnaHRQcmVzZXQuZGlydHkpIHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZUNvbmZpZzogRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgdHlwZTogRGlhbG9nVHlwZS5RdWVzdGlvbixcclxuICAgICAgICAgIHRpdGxlOiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoJ1NBVkUnKSxcclxuICAgICAgICAgIG1lc3NhZ2VzOiBbbmV3IEVycm9yTWVzc2FnZSh0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoJ1NBVkVfRElSVFlfUFJFU0VUX01FU1NBR0UnKSldXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dDb21wb25lbnQ+ID0gdGhpcy5fZGlhbG9nU2VydmljZS5zaG93RGlhbG9nKHtkYXRhOiBtZXNzYWdlQ29uZmlnfSk7XHJcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGFzeW5jIHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZUFjdGl2ZVByZXNldCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUxpZ2h0RnJvbVByb3BlcnRpZXMobGlnaHRQcm9wZXJ0aWVzOiBMaWdodFByb3BlcnRpZXMpIHtcclxuICAgIGNvbnN0IGxpZ2h0VHlwZTogTGlnaHRFbnVtID0gbGlnaHRQcm9wZXJ0aWVzLnR5cGU7XHJcbiAgICAvLyBjb25zdCBsaWdodDogTGlnaHQgPSBuZXcgKHRoaXMuX2xpZ2h0c01hcC5nZXQobGlnaHRUeXBlKSkoKTtcclxuICAgIGNvbnN0IGdldExpZ2h0czogTGlnaHRDcmVhdGVTZXJ2aWNlID0gbmV3IExpZ2h0Q3JlYXRlU2VydmljZSgpO1xyXG4gICAgY29uc3QgbGlnaHQ6IExpZ2h0ID0gZ2V0TGlnaHRzLmNyZWF0ZU5ld0xpZ2h0KGxpZ2h0VHlwZSk7XHJcbiAgICBsaWdodC51c2VyRGF0YS53YWxsT2Zmc2V0ID0gbGlnaHRQcm9wZXJ0aWVzLndhbGxPZmZzZXQ7XHJcbiAgICBsaWdodC51c2VyRGF0YS5yb3RhdGlvbk9mZnNldCA9IGxpZ2h0UHJvcGVydGllcy5yb3RhdGlvbk9mZnNldDtcclxuICAgIGxpZ2h0LnVzZXJEYXRhLnRvcERvd25EaXJlY3Rpb25hbCA9IGxpZ2h0UHJvcGVydGllcy50b3BEb3duRGlyZWN0aW9uYWw7XHJcblxyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBsaWdodFByb3BlcnRpZXMpIHtcclxuICAgICAgaWYgKCFsaWdodC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvcGVydHkgPT09ICdwb3NpdGlvbicpIHtcclxuICAgICAgICBsaWdodC5wb3NpdGlvbi55ID0gbGlnaHRQcm9wZXJ0aWVzLnBvc2l0aW9uLnk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09ICdjb2xvcicpIHtcclxuICAgICAgICBsaWdodC5jb2xvciA9IG5ldyBDb2xvcihsaWdodFByb3BlcnRpZXMuY29sb3IpO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09PSAnZ3JvdW5kQ29sb3InKSB7XHJcbiAgICAgICAgKGxpZ2h0IGFzIGFueSkuZ3JvdW5kQ29sb3IgPSBuZXcgQ29sb3IobGlnaHRQcm9wZXJ0aWVzLmdyb3VuZENvbG9yKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9zZXRPYmplY3RQcm9wZXJ0aWVzKGxpZ2h0LCBwcm9wZXJ0eSwgbGlnaHRQcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9saWdodHNTZXJ2aWNlLmFkZExpZ2h0KGxpZ2h0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE9iamVjdFByb3BlcnRpZXMob2JqZWN0OiBMaWdodCB8IExpZ2h0UHJvcGVydGllcywgcHJvcGVydHk6IGFueSwgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHByb3BlcnR5ID09PSAnc2hhZG93Jykge1xyXG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gdmFsdWUpIHtcclxuICAgICAgICBpZiAoIW9iamVjdFtwcm9wZXJ0eV0uaGFzT3duUHJvcGVydHkocHJvcCkpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYmplY3RbcHJvcGVydHldW3Byb3BdID0gdmFsdWVbcHJvcF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9iamVjdFtwcm9wZXJ0eV0gPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVGb3JTYXZlKHByZXNldDogTGlnaHRQcmVzZXQpOiBhbnkge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByZXNldCkpO1xyXG4gICAgcmVzdWx0LnNoYWRvd01hcFR5cGUgPSBzaGFkb3dNYXBUeXBlc01hcC5nZXQocHJlc2V0LnNoYWRvd01hcFR5cGUpO1xyXG4gICAgcmVzdWx0Lm91dHB1dEVuY29kaW5nID0gb3V0cHV0RW5jb2RpbmdNYXAuZ2V0KHByZXNldC5vdXRwdXRFbmNvZGluZyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHQtcHJlc2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9jb3JlM2Qvc2VydmljZS9saWdodC1wcmVzZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUlmLFVBQVUsRUFFVixTQUFTLEVBQ1YsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFZeEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUUvRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFPckUsTUFBTSxPQUFPLG1CQUFtQjtJQXVCOUIsWUFDVSxjQUE2QixFQUM3QixnQkFBOEMsRUFDOUMsV0FBb0MsRUFDcEMsZ0JBQWlDLEVBQ2pDLGFBQTJCLEVBQzNCLGtCQUFrRCxFQUNsRCxjQUE2QixFQUM3QixtQkFBOEM7UUFQOUMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUM5QyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQix1QkFB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QyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxNQUFNLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckUsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7aUhBdFJVLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBbWJpZW50TGlnaHQsXHJcbiAgQ29sb3IsXHJcbiAgRGlyZWN0aW9uYWxMaWdodCxcclxuICBIZW1pc3BoZXJlTGlnaHQsXHJcbiAgTGlnaHQsXHJcbiAgTWVzaCxcclxuICBNZXNoU3RhbmRhcmRNYXRlcmlhbCwgT2JqZWN0M0QsXHJcbiAgUG9pbnRMaWdodCxcclxuICBTcGhlcmVHZW9tZXRyeSxcclxuICBTcG90TGlnaHRcclxufSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7TGlnaHRQcmVzZXQsIG91dHB1dEVuY29kaW5nTWFwLCBzaGFkb3dNYXBUeXBlc01hcH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC9saWdodC1wcmVzZXQnO1xyXG5pbXBvcnQge0xpZ2h0RW51bX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL2xpZ2h0LmVudW0nO1xyXG5pbXBvcnQge0xpZ2h0c1NlcnZpY2V9IGZyb20gJy4vbGlnaHRzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7Vmlld01vZGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2Uvdmlldy1tb2RlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NjZW5lU2VydmljZX0gZnJvbSAnLi9zY2VuZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yRGljdGlvbmFyeVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLWRpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RpYWxvZy9zZXJ2aWNlL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2NyZWVuLXNpemUtYW5hbHlzaXMvc2NyZWVuLXNpemUtYW5hbHlzaXMuc2VydmljZSc7XHJcbmltcG9ydCB7Vmlld01vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvZW51bS92aWV3LW1vZGUuZW51bSc7XHJcbmltcG9ydCB7TmF2aWdhdG9yVHlwZX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NjcmVlbi1zaXplLWFuYWx5c2lzL25hdmlnYXRvci10eXBlLmVudW0nO1xyXG5pbXBvcnQge0RpYWxvZ0NvbmZpZ30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RpYWxvZy9pbnRlcmZhY2UvZGlhbG9nLWNvbmZpZy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0RpYWxvZ1R5cGV9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kaWFsb2cvZW51bS9kaWFsb2ctdHlwZS5lbnVtJztcclxuaW1wb3J0IHtFcnJvck1lc3NhZ2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWwvZXJyb3ItbWVzc2FnZSc7XHJcbmltcG9ydCB7RGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0xpZ2h0UHJvcGVydGllc30gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbC9saWdodC1wcm9wZXJ0aWVzJztcclxuaW1wb3J0IHtMaWdodENyZWF0ZVNlcnZpY2V9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3NlcnZpY2UvbGlnaHQtY3JlYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7SXRlbVNlcnZpY2V9IGZyb20gJy4vaXRlbS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExpZ2h0UHJlc2V0c1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgc2V0IGFjdGl2ZUxpZ2h0UHJlc2V0KHZhbHVlOiBMaWdodFByZXNldCkge1xyXG4gICAgdGhpcy5fYWN0aXZlTGlnaHRQcmVzZXQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZlTGlnaHRQcmVzZXQoKTogTGlnaHRQcmVzZXQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUxpZ2h0UHJlc2V0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRlZExpZ2h0UHJlc2V0czogTGlnaHRQcmVzZXRbXTtcclxuICBwdWJsaWMgcHJlc2V0TG9hZGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfYWN0aXZlTGlnaHRQcmVzZXQ6IExpZ2h0UHJlc2V0O1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBwcml2YXRlIF9saWdodHNNYXA6IE1hcDxMaWdodEVudW0sIHR5cGVvZiBPYmplY3QzRD4gPSBuZXcgTWFwPExpZ2h0RW51bSwgdHlwZW9mIE9iamVjdDNEPihbXHJcbiAgICBbTGlnaHRFbnVtLlNwb3RMaWdodCwgU3BvdExpZ2h0XSxcclxuICAgIFtMaWdodEVudW0uRGlyZWN0aW9uYWxMaWdodCwgRGlyZWN0aW9uYWxMaWdodF0sXHJcbiAgICBbTGlnaHRFbnVtLkFtYmllbnRMaWdodCwgQW1iaWVudExpZ2h0XSxcclxuICAgIFtMaWdodEVudW0uSGVtaXNwaGVyZUxpZ2h0LCBIZW1pc3BoZXJlTGlnaHRdLFxyXG4gICAgW0xpZ2h0RW51bS5Qb2ludExpZ2h0LCBQb2ludExpZ2h0XVxyXG4gIF0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2xpZ2h0c1NlcnZpY2U6IExpZ2h0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXR0aW5nc1NlcnZpY2U6IEhvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hcHBTZXJ2aWNlOiBIb21lZGVjb3JhdG9yQXBwU2VydmljZSxcclxuICAgIHByaXZhdGUgX3ZpZXdNb2RlU2VydmljZTogVmlld01vZGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBTY2VuZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5U2VydmljZTogSG9tZWRlY29yYXRvckRpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjcmVlblNpemVBbmFseXNpczogU2NyZWVuU2l6ZUFuYWx5c2lzU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZpZXdNb2RlU2VydmljZS5yb29tM0RVcGRhdGVkLnN1YnNjcmliZSgodXBkYXRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAodXBkYXRlZCkge1xyXG4gICAgICAgIHRoaXMubG9hZExpZ2h0UHJlc2V0KHRoaXMuYWN0aXZlTGlnaHRQcmVzZXQpO1xyXG4gICAgICAgIHRoaXMuX2xpZ2h0c1NlcnZpY2UudXBkYXRlQWxsT2Zmc2V0cygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX2FwcFNlcnZpY2UubGlnaHRQcmVzZXRzTG9hZGVkLnN1YnNjcmliZSgobGlnaHRQcmVzZXRzOiBMaWdodFByZXNldFtdKSA9PiB7XHJcbiAgICAgIGlmIChsaWdodFByZXNldHMpIHtcclxuICAgICAgICB0aGlzLmxvYWRlZExpZ2h0UHJlc2V0cyA9IGxpZ2h0UHJlc2V0cztcclxuICAgICAgICBpZiAodGhpcy5sb2FkZWRMaWdodFByZXNldHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZU5ld0xpZ2h0UHJlc2V0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghdGhpcy5fYXBwU2VydmljZS5za3UpIHtcclxuICAgICAgICAgICAgY29uc3QgbmF2aWdhdG9yVHlwZTogTmF2aWdhdG9yVHlwZSA9IHRoaXMuX3NjcmVlblNpemVBbmFseXNpcy5uYXZpZ2F0b3JUeXBlKCk7XHJcbiAgICAgICAgICAgIGxldCBsaWdodFByZXNldDogTGlnaHRQcmVzZXQgPSB0aGlzLmxvYWRlZExpZ2h0UHJlc2V0cy5maW5kKChwcmVzZXQpID0+IHByZXNldC5uYXZpZ2F0b3JUeXBlID09PSBuYXZpZ2F0b3JUeXBlICYmIHByZXNldC5kZWZhdWx0ICYmICFwcmVzZXQuc3RhbmRhbG9uZSk7XHJcbiAgICAgICAgICAgIGlmICghbGlnaHRQcmVzZXQpIHtcclxuICAgICAgICAgICAgICBsaWdodFByZXNldCA9IHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzLmZpbmQoKHByZXNldCkgPT4gcHJlc2V0LmRlZmF1bHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChsaWdodFByZXNldCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZExpZ2h0UHJlc2V0KGxpZ2h0UHJlc2V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fYXBwU2VydmljZS5za3UpIHtcclxuICAgICAgICAgIGNvbnN0IG5hdmlnYXRvclR5cGU6IE5hdmlnYXRvclR5cGUgPSB0aGlzLl9zY3JlZW5TaXplQW5hbHlzaXMubmF2aWdhdG9yVHlwZSgpO1xyXG4gICAgICAgICAgbGV0IGxpZ2h0UHJlc2V0OiBMaWdodFByZXNldCA9XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzLmZpbmQoKHByZXNldCkgPT4gcHJlc2V0Lm5hdmlnYXRvclR5cGUgPT09IG5hdmlnYXRvclR5cGUgJiYgcHJlc2V0LmRlZmF1bHQgJiYgcHJlc2V0LnN0YW5kYWxvbmUpO1xyXG4gICAgICAgICAgaWYgKCFsaWdodFByZXNldCkge1xyXG4gICAgICAgICAgICBsaWdodFByZXNldCA9IHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzLmZpbmQoKHByZXNldCkgPT4gcHJlc2V0LnN0YW5kYWxvbmUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFsaWdodFByZXNldC5zdGFuZGFsb25lKSB7XHJcbiAgICAgICAgICAgIGxpZ2h0UHJlc2V0ID0gdGhpcy5sb2FkZWRMaWdodFByZXNldHMuZmluZCgocHJlc2V0KSA9PiBwcmVzZXQuZGVmYXVsdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAobGlnaHRQcmVzZXQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkTGlnaHRQcmVzZXQobGlnaHRQcmVzZXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FwcFNlcnZpY2UubGlnaHRQcmVzZXRzTG9hZGVkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9hcHBTZXJ2aWNlLnNrdVNldC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5fdmlld01vZGVTZXJ2aWNlLnJvb20zRFVwZGF0ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkZWxldGVDdXJyZW50UHJlc2V0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlT3JEZWxldGVQcmVzZXQodGhpcy5hY3RpdmVMaWdodFByZXNldCwgdHJ1ZSk7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzLmZpbmRJbmRleChsID0+IGwubmFtZSA9PT0gdGhpcy5hY3RpdmVMaWdodFByZXNldC5uYW1lKTtcclxuICAgIHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpZiAodGhpcy5sb2FkZWRMaWdodFByZXNldHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlTmV3TGlnaHRQcmVzZXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZExpZ2h0UHJlc2V0KHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzW3RoaXMubG9hZGVkTGlnaHRQcmVzZXRzLmxlbmd0aCAtIDFdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVOZXdMaWdodFByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGVkTGlnaHRQcmVzZXRzLnB1c2gobmV3IExpZ2h0UHJlc2V0KCkpO1xyXG4gICAgdGhpcy5sb2FkTGlnaHRQcmVzZXQodGhpcy5sb2FkZWRMaWdodFByZXNldHNbdGhpcy5sb2FkZWRMaWdodFByZXNldHMubGVuZ3RoIC0gMV0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWRMaWdodFByZXNldChsaWdodFByZXNldDogTGlnaHRQcmVzZXQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIGNvbnN0IGJ1bGJHZW9tZXRyeSA9IG5ldyBTcGhlcmVHZW9tZXRyeSggMC4yLCAxNiwgOCApO1xyXG4gICAgLy8gY29uc3QgYnVsYkxpZ2h0ID0gbmV3IFBvaW50TGlnaHQoIDB4ZmZlZTg4LCAxLCAxMDAsIDIgKTtcclxuICAgIC8vXHJcbiAgICAvLyBjb25zdCBidWxiTWF0ID0gbmV3IE1lc2hTdGFuZGFyZE1hdGVyaWFsKCB7XHJcbiAgICAvLyAgIGVtaXNzaXZlOiAweGZmZmZlZSxcclxuICAgIC8vICAgZW1pc3NpdmVJbnRlbnNpdHk6IDEsXHJcbiAgICAvLyAgIGNvbG9yOiAweDAwMDAwMFxyXG4gICAgLy8gfSApO1xyXG4gICAgLy8gYnVsYkxpZ2h0LmFkZCggbmV3IE1lc2goIGJ1bGJHZW9tZXRyeSwgYnVsYk1hdCApICk7XHJcbiAgICAvLyBidWxiTGlnaHQucG9zaXRpb24uc2V0KCAwLCAyLCAwICk7XHJcbiAgICAvLyBidWxiTGlnaHQuY2FzdFNoYWRvdyA9IHRydWU7XHJcbiAgICAvLyB0aGlzLl9zY2VuZVNlcnZpY2UuYWRkT2JqZWN0KCBidWxiTGlnaHQgKTtcclxuXHJcbiAgICAvLyBjb25zdCBzcG90TGlnaHQgPSBuZXcgU3BvdExpZ2h0KDB4ZmZmZmZmLCA0KTtcclxuICAgIC8vIHNwb3RMaWdodC5jYXN0U2hhZG93ID0gdHJ1ZTtcclxuICAgIC8vIHNwb3RMaWdodC5zaGFkb3cuYmlhcyA9IC0wLjAwMDE7XHJcbiAgICAvLyBzcG90TGlnaHQuc2hhZG93Lm1hcFNpemUud2lkdGggPSAxMDI0ICogNDtcclxuICAgIC8vIHNwb3RMaWdodC5zaGFkb3cubWFwU2l6ZS5oZWlnaHQgPSAxMDI0ICogNDtcclxuICAgIC8vIHNwb3RMaWdodC5wb3dlciA9IDQwMDA7XHJcbiAgICAvLyBzcG90TGlnaHQucG9zaXRpb24uc2V0KDEwLCAyMCwgMCk7XHJcbiAgICAvLyBzcG90TGlnaHQubmFtZSA9ICdzcG90JztcclxuICAgIC8vIHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3Qoc3BvdExpZ2h0KTtcclxuICAgIC8vIGNvbnN0IGRpcmVjdGlvbmFsTGlnaHQgPSBuZXcgRGlyZWN0aW9uYWxMaWdodCgweGZmZmZmZiwgMSk7XHJcbiAgICAvLyBkaXJlY3Rpb25hbExpZ2h0LmNhc3RTaGFkb3cgPSB0cnVlO1xyXG4gICAgLy8gZGlyZWN0aW9uYWxMaWdodC5zaGFkb3cuYmlhcyA9IC0wLjAwMDE7XHJcbiAgICAvLyBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvdy5tYXBTaXplLndpZHRoID0gMTAyNCAqIDQ7XHJcbiAgICAvLyBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvdy5tYXBTaXplLmhlaWdodCA9IDEwMjQgKiA0O1xyXG4gICAgLy8gZGlyZWN0aW9uYWxMaWdodC5wb3NpdGlvbi5zZXQoMCwgMi42LCAwKTtcclxuICAgIC8vIGRpcmVjdGlvbmFsTGlnaHQubmFtZSA9ICdkaXJlY3Rpb25hbCc7XHJcbiAgICAvLyB0aGlzLl9zY2VuZVNlcnZpY2UuYWRkT2JqZWN0KGRpcmVjdGlvbmFsTGlnaHQpO1xyXG5cclxuICAgIC8vIGNvbnN0IGhlbWlMaWdodCA9IG5ldyBIZW1pc3BoZXJlTGlnaHQoMHhkZGVlZmYsIDB4MGYwZTBkLCA0KTtcclxuICAgIC8vIGhlbWlMaWdodC5uYW1lID0gJ2hlbWknO1xyXG4gICAgLy8gdGhpcy5fc2NlbmVTZXJ2aWNlLmFkZE9iamVjdChoZW1pTGlnaHQpO1xyXG4gICAgLy8gY29uc3QgYW1iaWVudExpZ2h0ID0gbmV3IEFtYmllbnRMaWdodCgweGZmZmZmZmYsIDEpO1xyXG4gICAgLy8gYW1iaWVudExpZ2h0Lm5hbWUgPSAnYW1iaWVudCc7XHJcbiAgICAvLyB0aGlzLl9zY2VuZVNlcnZpY2UuYWRkT2JqZWN0KGFtYmllbnRMaWdodCk7XHJcblxyXG5cclxuICAgIHRoaXMuX2xpZ2h0c1NlcnZpY2UucmVtb3ZlQWxsTGlnaHRzKCk7XHJcbiAgICAvLyBUT0RPXHJcbiAgICAvLyB0aGlzLl9zY2VuZVNlcnZpY2UucmVuZGVyZXIudXNlTGVnYWN5TGlnaHRzID0gdHJ1ZTtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW5kZXJlci50b25lTWFwcGluZ0V4cG9zdXJlID0gbGlnaHRQcmVzZXQudG9uZU1hcHBpbmdFeHBvc3VyZTtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW5kZXJlci5zaGFkb3dNYXAudHlwZSA9IHNoYWRvd01hcFR5cGVzTWFwLmdldChsaWdodFByZXNldC5zaGFkb3dNYXBUeXBlKTtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW5kZXJlci5vdXRwdXRDb2xvclNwYWNlICA9IG91dHB1dEVuY29kaW5nTWFwLmdldChsaWdodFByZXNldC5vdXRwdXRFbmNvZGluZyk7XHJcbiAgICBmb3IgKGNvbnN0IGxpZ2h0UHJvcGVydGllcyBvZiBsaWdodFByZXNldC5saWdodHMpIHtcclxuICAgICAgdGhpcy5fY3JlYXRlTGlnaHRGcm9tUHJvcGVydGllcyhsaWdodFByb3BlcnRpZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbGlnaHRzU2VydmljZS5pbml0aWF0ZUxpZ2h0UHJlc2V0KCk7XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UucmVuZGVyZXJQcm9wc0NoYW5nZSgpO1xyXG4gICAgdGhpcy5hY3RpdmVMaWdodFByZXNldCA9IGxpZ2h0UHJlc2V0O1xyXG4gICAgdGhpcy5wcmVzZXRMb2FkZWQubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlUHJlc2V0KHByZXNldD86IExpZ2h0UHJlc2V0KTogdm9pZCB7XHJcbiAgICBpZiAoIXByZXNldCkge1xyXG4gICAgICB0aGlzLnNhdmVBY3RpdmVQcmVzZXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2F2ZU9yRGVsZXRlUHJlc2V0KHRoaXMuX3ByZXBhcmVGb3JTYXZlKHByZXNldCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVBY3RpdmVQcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNhdmVPckRlbGV0ZVByZXNldCh0aGlzLl9wcmVwYXJlRm9yU2F2ZSh0aGlzLmFjdGl2ZUxpZ2h0UHJlc2V0KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2F2ZU9yRGVsZXRlUHJlc2V0KHByZXNldDogTGlnaHRQcmVzZXQsIGRlbGV0ZUZyb21JbmRleD86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5hc3NldFBhdGggKyAnL2VkaXRJbmRleC5waHAnO1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgZmlsZTogJ2Fzc2V0cy8nICsgdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLmxpZ2h0UHJlc2V0c0luZGV4LFxyXG4gICAgICBkYXRhOiBbcHJlc2V0XSxcclxuICAgICAgZW50cnk6ICdsaWdodHByZXNldHMnXHJcbiAgICB9O1xyXG5cclxuICAgIGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6IGRlbGV0ZUZyb21JbmRleCA/ICdERUxFVEUnIDogJ1BPU1QnLFxyXG4gICAgICBtb2RlOiBkZWxldGVGcm9tSW5kZXggPyAnY29ycycgOiAnbm8tY29ycycsXHJcbiAgICAgIGNhY2hlOiAnbm8tY2FjaGUnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICB9LFxyXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKVxyXG4gICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgY29uc3QgbGxQcmVzZXQ6IExpZ2h0UHJlc2V0ID0gdGhpcy5sb2FkZWRMaWdodFByZXNldHMuZmluZChwID0+IHAuaWQgPT09IHByZXNldC5pZCk7XHJcbiAgICAgIGlmIChsbFByZXNldCkge1xyXG4gICAgICAgIGxsUHJlc2V0LmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUxpZ2h0QnlJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUxpZ2h0UHJlc2V0LmxpZ2h0cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwc2VydExpZ2h0KGluZGV4OiBudW1iZXIsIGxpZ2h0OiBMaWdodCk6IHZvaWQge1xyXG4gICAgY29uc3QgbGlnaHRQcm9wZXJ0aWVzID0gbmV3IExpZ2h0UHJvcGVydGllcygpO1xyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBsaWdodFByb3BlcnRpZXMpIHtcclxuICAgICAgaWYgKGxpZ2h0UHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuICAgICAgICB0aGlzLl9zZXRPYmplY3RQcm9wZXJ0aWVzKGxpZ2h0UHJvcGVydGllcywgcHJvcGVydHksIGxpZ2h0W3Byb3BlcnR5XSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxpZ2h0UHJvcGVydGllcy53YWxsT2Zmc2V0ID0gbGlnaHQudXNlckRhdGEud2FsbE9mZnNldDtcclxuICAgIGxpZ2h0UHJvcGVydGllcy5yb3RhdGlvbk9mZnNldCA9IGxpZ2h0LnVzZXJEYXRhLnJvdGF0aW9uT2Zmc2V0O1xyXG4gICAgbGlnaHRQcm9wZXJ0aWVzLnRvcERvd25EaXJlY3Rpb25hbCA9IGxpZ2h0LnVzZXJEYXRhLnRvcERvd25EaXJlY3Rpb25hbDtcclxuICAgIHRoaXMuYWN0aXZlTGlnaHRQcmVzZXQubGlnaHRzW2luZGV4XSA9IGxpZ2h0UHJvcGVydGllcztcclxuICAgIHRoaXMuYWN0aXZlTGlnaHRQcmVzZXQuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hlY2tEaXJ0eVByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmFjdGl2ZUxpZ2h0UHJlc2V0IHx8ICF0aGlzLmFjdGl2ZUxpZ2h0UHJlc2V0LmRpcnR5KSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VDb25maWc6IERpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgIHR5cGU6IERpYWxvZ1R5cGUuUXVlc3Rpb24sXHJcbiAgICAgICAgICB0aXRsZTogdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KCdTQVZFJyksXHJcbiAgICAgICAgICBtZXNzYWdlczogW25ldyBFcnJvck1lc3NhZ2UodGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KCdTQVZFX0RJUlRZX1BSRVNFVF9NRVNTQUdFJykpXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nQ29tcG9uZW50PiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uuc2hvd0RpYWxvZyh7ZGF0YTogbWVzc2FnZUNvbmZpZ30pO1xyXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShhc3luYyByZXN1bHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVBY3RpdmVQcmVzZXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVMaWdodEZyb21Qcm9wZXJ0aWVzKGxpZ2h0UHJvcGVydGllczogTGlnaHRQcm9wZXJ0aWVzKSB7XHJcbiAgICBjb25zdCBsaWdodFR5cGU6IExpZ2h0RW51bSA9IGxpZ2h0UHJvcGVydGllcy50eXBlO1xyXG4gICAgY29uc3QgbGlnaHRDb25zdHJ1Y3RvciA9IHRoaXMuX2xpZ2h0c01hcC5nZXQobGlnaHRUeXBlKTtcclxuICAgIGNvbnN0IGxpZ2h0OiBMaWdodCA9IG5ldyBsaWdodENvbnN0cnVjdG9yKCkgYXMgTGlnaHQ7XHJcbiAgICBsaWdodC51c2VyRGF0YS53YWxsT2Zmc2V0ID0gbGlnaHRQcm9wZXJ0aWVzLndhbGxPZmZzZXQ7XHJcbiAgICBsaWdodC51c2VyRGF0YS5yb3RhdGlvbk9mZnNldCA9IGxpZ2h0UHJvcGVydGllcy5yb3RhdGlvbk9mZnNldDtcclxuICAgIGxpZ2h0LnVzZXJEYXRhLnRvcERvd25EaXJlY3Rpb25hbCA9IGxpZ2h0UHJvcGVydGllcy50b3BEb3duRGlyZWN0aW9uYWw7XHJcblxyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBsaWdodFByb3BlcnRpZXMpIHtcclxuICAgICAgaWYgKCEocHJvcGVydHkgaW4gbGlnaHQpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByb3BlcnR5ID09PSAncG9zaXRpb24nKSB7XHJcbiAgICAgICAgaWYgKGxpZ2h0LnVzZXJEYXRhLndhbGxPZmZzZXQgPT09IDApIHtcclxuICAgICAgICAgIGxpZ2h0LnBvc2l0aW9uLnggPSBsaWdodFByb3BlcnRpZXMucG9zaXRpb24ueDtcclxuICAgICAgICAgIGxpZ2h0LnBvc2l0aW9uLnogPSBsaWdodFByb3BlcnRpZXMucG9zaXRpb24uejtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGlnaHQucG9zaXRpb24ueSA9IGxpZ2h0UHJvcGVydGllcy5wb3NpdGlvbi55O1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09PSAnY29sb3InKSB7XHJcbiAgICAgICAgbGlnaHQuY29sb3IgPSBuZXcgQ29sb3IobGlnaHRQcm9wZXJ0aWVzLmNvbG9yKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eSA9PT0gJ2dyb3VuZENvbG9yJykge1xyXG4gICAgICAgIChsaWdodCBhcyBhbnkpLmdyb3VuZENvbG9yID0gbmV3IENvbG9yKGxpZ2h0UHJvcGVydGllcy5ncm91bmRDb2xvcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T2JqZWN0UHJvcGVydGllcyhsaWdodCwgcHJvcGVydHksIGxpZ2h0UHJvcGVydGllc1twcm9wZXJ0eV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fbGlnaHRzU2VydmljZS5hZGRMaWdodChsaWdodCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRPYmplY3RQcm9wZXJ0aWVzKG9iamVjdDogTGlnaHQgfCBMaWdodFByb3BlcnRpZXMsIHByb3BlcnR5OiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3NoYWRvdycpIHtcclxuICAgICAgZm9yIChjb25zdCBwcm9wIGluIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCFvYmplY3RbcHJvcGVydHldLmhhc093blByb3BlcnR5KHByb3ApKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JqZWN0W3Byb3BlcnR5XVtwcm9wXSA9IHZhbHVlW3Byb3BdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvYmplY3RbcHJvcGVydHldID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlRm9yU2F2ZShwcmVzZXQ6IExpZ2h0UHJlc2V0KTogYW55IHtcclxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcmVzZXQpKTtcclxuICAgIHJlc3VsdC5zaGFkb3dNYXBUeXBlID0gc2hhZG93TWFwVHlwZXNNYXAuZ2V0KHByZXNldC5zaGFkb3dNYXBUeXBlKTtcclxuICAgIHJlc3VsdC5vdXRwdXRFbmNvZGluZyA9IG91dHB1dEVuY29kaW5nTWFwLmdldChwcmVzZXQub3V0cHV0RW5jb2RpbmcpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -73,12 +73,19 @@ export class LightsService {
|
|
|
73
73
|
if (light instanceof AmbientLight || light instanceof HemisphereLight) {
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
|
+
const corners = this._floorplanService.getCorners();
|
|
77
|
+
if (!corners || corners.length < 1) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
76
80
|
const ro = light.userData.rotationOffset;
|
|
77
81
|
const wo = light.userData.wallOffset;
|
|
78
82
|
const fc = this._floorplanService.getCenter();
|
|
79
83
|
const size = this._floorplanService.getSize();
|
|
80
84
|
const planHalfWidth = isFinite(size.x) ? size.x / 2.0 : 0;
|
|
81
85
|
const planHalfDepth = isFinite(size.z) ? size.z / 2.0 : 0;
|
|
86
|
+
if (wo === 0) { // just use position of light
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
82
89
|
// Reset position & rotation
|
|
83
90
|
light.position.x = fc.x;
|
|
84
91
|
light.position.z = fc.z;
|
|
@@ -187,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
187
194
|
providedIn: 'root'
|
|
188
195
|
}]
|
|
189
196
|
}], ctorParameters: function () { return [{ type: i1.SceneService }, { type: i2.ConfigurationService }, { type: i3.FloorplanService }, { type: i4.ItemService }]; } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2NvcmUzZC9zZXJ2aWNlL2xpZ2h0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQVMsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUNwRyxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBSzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9FQUFvRSxDQUFDOzs7Ozs7QUFLdEcsTUFBTSxPQUFPLGFBQWE7SUFPeEIsWUFDVSxhQUEyQixFQUMzQixxQkFBMkMsRUFDM0MsaUJBQW1DLEVBQ25DLFlBQXlCO1FBSHpCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQVQ1QixXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ3JCLGlCQUFZLEdBQTJDLElBQUksT0FBTyxFQUFpQyxDQUFDO1FBRW5HLFVBQUssR0FBbUIsRUFBRSxDQUFDO0lBT2hDLENBQUM7SUFFSixXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxV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QUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRjthQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBRTtZQUNuQixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRjthQUFNLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBRTtZQUNuQixLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBRSxhQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFD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UUFDbEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFbEQsSUFBSSxLQUFLLFlBQVksU0FBUyxJQUFJLEtBQUssWUFBWSxnQkFBZ0IsRUFBRTtZQUNuRSxJQUFJLEtBQUssWUFBWSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFO2dCQUMxRSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQztnQkFDbkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDbkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQztnQkFDbEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDO2FBQ3ZDO1lBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzs7MkdBcE1VLGFBQWE7K0dBQWIsYUFBYSxjQUZaLE1BQU07NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QW1iaWVudExpZ2h0LCBEaXJlY3Rpb25hbExpZ2h0LCBIZW1pc3BoZXJlTGlnaHQsIExpZ2h0LCBQb2ludExpZ2h0LCBTcG90TGlnaHR9IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1NjZW5lU2VydmljZX0gZnJvbSAnLi9zY2VuZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JwbGFuU2VydmljZX0gZnJvbSAnLi4vLi4vcm9vbS1wbGFubmVyL2NvbXBvbmVudHMvZmxvb3JwbGFubmVyL3NlcnZpY2UvZmxvb3JwbGFuLnNlcnZpY2UnO1xyXG5pbXBvcnQge0l0ZW1TZXJ2aWNlfSBmcm9tICcuL2l0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbktleX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL2NvbmZpZ3VyYXRpb24ta2V5LmVudW0nO1xyXG5pbXBvcnQge0xpZ2h0Q3JlYXRlU2VydmljZX0gZnJvbSAnLi4vLi4vdGhyZWVkc2VsZWN0b3IvdGhyZWVkc2VsZWN0b3Ivc2VydmljZS9saWdodC1jcmVhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExpZ2h0c1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgbGlnaHRzOiBMaWdodFtdID0gW107XHJcbiAgcHVibGljIG9uTGlnaHRBZGRlZDogU3ViamVjdDx7bGlnaHQ6IExpZ2h0LCBpbmRleDogbnVtYmVyfT4gPSBuZXcgU3ViamVjdDx7bGlnaHQ6IExpZ2h0LCBpbmRleDogbnVtYmVyfT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBTY2VuZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mbG9vcnBsYW5TZXJ2aWNlOiBGbG9vcnBsYW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5fZmxvb3JwbGFuU2VydmljZS5yb29tTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUFsbE9mZnNldHMoKSksXHJcbiAgICAgIHRoaXMuX2Zsb29ycGxhblNlcnZpY2Uucm9vbXNVcGRhdGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZUFsbE9mZnNldHMoKSksXHJcbiAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlLm9uQ2hhbmdlLnN1YnNjcmliZSgoY2hhbmdlZCkgPT4ge1xyXG4gICAgICAgIGlmIChDb25maWd1cmF0aW9uS2V5LlNob3dJbnRlcmlvckxpZ2h0cyBpbiBjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLl9zaG93SGlkZUludGVyaW9yTGlnaHRzKGNoYW5nZWRbQ29uZmlndXJhdGlvbktleS5TaG93SW50ZXJpb3JMaWdodHNdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKENvbmZpZ3VyYXRpb25LZXkuSW50ZXJpb3JMaWdodEludGVuc2l0eSBpbiBjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLl91cGRhdGVJbnRlcmlvckxpZ2h0cyhjaGFuZ2VkW0NvbmZpZ3VyYXRpb25LZXkuSW50ZXJpb3JMaWdodEludGVuc2l0eV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gICAgLy8gdGhpcy5faW5pdExpZ2h0cygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZUxpZ2h0PFQgZXh0ZW5kcyBMaWdodD4obW9kZWxDbGFzczogYW55KTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgZ2V0TGlnaHRzOiBMaWdodENyZWF0ZVNlcnZpY2UgPSBuZXcgTGlnaHRDcmVhdGVTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBsaWdodDogTGlnaHQgPSBnZXRMaWdodHMuY3JlYXRlTmV3TGlnaHQobW9kZWxDbGFzcyk7XHJcblxyXG4gICAgLy8gY29uc3QgbGlnaHQ6IFQgPSBuZXcgbW9kZWxDbGFzcygpO1xyXG4gICAgbGlnaHQubmFtZSA9IGBuZXdfJHttb2RlbENsYXNzLm5hbWV9YDtcclxuICAgIHRoaXMuX2FkZExpZ2h0KGxpZ2h0KTtcclxuICAgIHRoaXMub25MaWdodEFkZGVkLm5leHQoe2xpZ2h0OiBsaWdodCwgaW5kZXg6IHRoaXMubGlnaHRzLmxlbmd0aCAtIDF9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRMaWdodChsaWdodDogTGlnaHQpOiB2b2lkIHtcclxuICAgIC8vIGlmIChsaWdodC5yb3RhdGlvbikge1xyXG4gICAgLy8gICB0aGlzLnVwZGF0ZU9mZnNldHMobGlnaHQpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5saWdodHMucHVzaChsaWdodCk7XHJcbiAgICB0aGlzLl9hZGRMaWdodChsaWdodCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlTGlnaHRCeUluZGV4KGlkeDogbnVtYmVyLCB1cGRhdGVMaWdodEFycmF5OiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVtb3ZlTGlnaHQodGhpcy5saWdodHNbaWR4XSwgdXBkYXRlTGlnaHRBcnJheSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlQWxsTGlnaHRzKCkge1xyXG4gICAgY29uc3QgY3VycmVudExpZ2h0czogTGlnaHRbXSA9IHRoaXMubGlnaHRzLnNsaWNlKCk7XHJcbiAgICAvLyB0aGlzLmxpZ2h0cy5sZW5ndGggPSAwO1xyXG4gICAgY3VycmVudExpZ2h0cy5mb3JFYWNoKGNsID0+IHtcclxuICAgICAgdGhpcy5fcmVtb3ZlTGlnaHQoY2wpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVwbGFjZUxpZ2h0KGlkeDogbnVtYmVyLCBsaWdodDogTGlnaHQpOiB2b2lkIHtcclxuICAgIHRoaXMucmVtb3ZlTGlnaHRCeUluZGV4KGlkeCwgZmFsc2UpO1xyXG4gICAgdGhpcy5fYWRkTGlnaHQobGlnaHQsIGZhbHNlKTtcclxuICAgIHRoaXMubGlnaHRzW2lkeF0gPSBsaWdodDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWF0ZUxpZ2h0UHJlc2V0KCkge1xyXG4gICAgLy8gdGhpcy5saWdodHMuZm9yRWFjaChsID0+IHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3QobCkpO1xyXG4gICAgdGhpcy5saWdodHMuZm9yRWFjaChsID0+IHRoaXMudXBkYXRlT2Zmc2V0cyhsKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlQWxsT2Zmc2V0cygpOiB2b2lkIHtcclxuICAgIHRoaXMubGlnaHRzLmZvckVhY2gobCA9PiB0aGlzLnVwZGF0ZU9mZnNldHMobCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZU9mZnNldHMobGlnaHQ6IExpZ2h0KSB7XHJcbiAgICBpZiAobGlnaHQgaW5zdGFuY2VvZiBBbWJpZW50TGlnaHQgfHwgbGlnaHQgaW5zdGFuY2VvZiBIZW1pc3BoZXJlTGlnaHQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgcm8gPSBsaWdodC51c2VyRGF0YS5yb3RhdGlvbk9mZnNldDtcclxuICAgIGNvbnN0IHdvID0gbGlnaHQudXNlckRhdGEud2FsbE9mZnNldDtcclxuICAgIGNvbnN0IGZjID0gdGhpcy5fZmxvb3JwbGFuU2VydmljZS5nZXRDZW50ZXIoKTtcclxuXHJcbiAgICBjb25zdCBzaXplID0gdGhpcy5fZmxvb3JwbGFuU2VydmljZS5nZXRTaXplKCk7XHJcbiAgICBjb25zdCBwbGFuSGFsZldpZHRoID0gaXNGaW5pdGUoc2l6ZS54KSA/IHNpemUueCAvIDIuMCA6IDA7XHJcbiAgICBjb25zdCBwbGFuSGFsZkRlcHRoID0gaXNGaW5pdGUoc2l6ZS56KSA/IHNpemUueiAvIDIuMCA6IDA7XHJcblxyXG4gICAgLy8gUmVzZXQgcG9zaXRpb24gJiByb3RhdGlvblxyXG4gICAgbGlnaHQucG9zaXRpb24ueCA9IGZjLng7XHJcbiAgICBsaWdodC5wb3NpdGlvbi56ID0gZmMuejtcclxuICAgIGxpZ2h0LnJvdGF0aW9uLnNldCgwLCAwLCAwKTtcclxuXHJcbiAgICAvLyBPZmZzZXQgdG8gdGhlIGFwcHJvcHJpYXRlIGNvcm5lciAmIHRyYW5zbGF0ZSBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIGluIGVxdWFsIHN0ZXBzIGJhc2VkIG9uIHRoZSByb29tIGRpbWVuc2lvbnMuXHJcbiAgICBpZiAocm8gPiAzMTUpIHtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWihNYXRoLmFicyhwbGFuSGFsZkRlcHRoICsgd28pKTtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWChNYXRoLmFicyhwbGFuSGFsZldpZHRoICsgd28pKTtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWCgtTWF0aC5hYnMoKCgocGxhbkhhbGZXaWR0aCAqIDIpICsgKHdvICogMikpIC8gOTApICogKHJvIC0gMzE1KSkpO1xyXG4gICAgfSBlbHNlIGlmIChybyA+IDIyNSkge1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVYKE1hdGguYWJzKHBsYW5IYWxmV2lkdGggKyB3bykpO1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVaKC1NYXRoLmFicyhwbGFuSGFsZkRlcHRoICsgd28pKTtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWihNYXRoLmFicygoKChwbGFuSGFsZkRlcHRoICogMikgKyAod28gKiAyKSkgLyA5MCkgKiAocm8gLSAyMjUpKSk7XHJcbiAgICB9IGVsc2UgaWYgKHJvID4gMTM1KSB7XHJcbiAgICAgIGxpZ2h0LnRyYW5zbGF0ZVooLU1hdGguYWJzKCBwbGFuSGFsZkRlcHRoICsgd28pKTtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWCgtTWF0aC5hYnMocGxhbkhhbGZXaWR0aCArIHdvKSk7XHJcbiAgICAgIGxpZ2h0LnRyYW5zbGF0ZVgoTWF0aC5hYnMoKCgocGxhbkhhbGZXaWR0aCAqIDIpICsgKHdvICogMikpIC8gOTApICogKHJvIC0gMTM1KSkpO1xyXG4gICAgfSBlbHNlIGlmIChybyA+IDQ1KSB7XHJcbiAgICAgIGxpZ2h0LnRyYW5zbGF0ZVgoLU1hdGguYWJzKHBsYW5IYWxmV2lkdGggKyB3bykpO1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVaKE1hdGguYWJzKHBsYW5IYWxmRGVwdGggKyB3bykpO1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVaKC1NYXRoLmFicygoKChwbGFuSGFsZkRlcHRoICogMikgKyAod28gKiAyKSkgLyA5MCkgKiAocm8gLSA0NSkpKTtcclxuICAgIH0gZWxzZSBpZiAocm8gPj0gMCkge1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVaKE1hdGguYWJzKHBsYW5IYWxmRGVwdGggKyB3bykpO1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVYKC1NYXRoLmFicygoKChwbGFuSGFsZldpZHRoICogMikgKyAod28gKiAyKSkgLyA5MCkgKiBybykpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdXBkYXRlU2hhZG93Q2FtZXJhKGxpZ2h0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dIaWRlSW50ZXJpb3JMaWdodHMoc2hvdzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXRlbVNlcnZpY2UuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpdGVtLnRyYXZlcnNlKGMgPT4ge1xyXG4gICAgICAgIGlmIChjLm5hbWUgJiYgYy5uYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdsaWdodF9idWxiJykge1xyXG4gICAgICAgICAgYy50cmF2ZXJzZShsID0+IHtcclxuICAgICAgICAgICAgaWYgKGwgaW5zdGFuY2VvZiBQb2ludExpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgbC52aXNpYmxlID0gc2hvdztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUludGVyaW9yTGlnaHRzKHBvd2VyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS50cmF2ZXJzZShjID0+IHtcclxuICAgICAgICBpZiAoYy5uYW1lICYmIGMubmFtZS50b0xvd2VyQ2FzZSgpID09PSAnbGlnaHRfYnVsYicpIHtcclxuICAgICAgICAgIGMudHJhdmVyc2UobCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsIGluc3RhbmNlb2YgUG9pbnRMaWdodCkge1xyXG4gICAgICAgICAgICAgIGwucG93ZXIgPSBwb3dlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbW92ZUxpZ2h0KGxpZ2h0OiBMaWdodCwgdXBkYXRlTGlnaHRBcnJheTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlkeDogbnVtYmVyID0gdGhpcy5saWdodHMuaW5kZXhPZihsaWdodCk7XHJcbiAgICBpZiAobGlnaHQgaW5zdGFuY2VvZiBTcG90TGlnaHQgfHwgbGlnaHQgaW5zdGFuY2VvZiBEaXJlY3Rpb25hbExpZ2h0KSB7XHJcbiAgICAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW1vdmVPYmplY3QobGlnaHQudGFyZ2V0KTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW1vdmVPYmplY3QobGlnaHQpO1xyXG5cclxuICAgIGlmICh1cGRhdGVMaWdodEFycmF5KSB7XHJcbiAgICAgIHRoaXMubGlnaHRzLnNwbGljZShpZHgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWRkTGlnaHQobGlnaHQ6IExpZ2h0LCB1cGRhdGVMaWdodEFycmF5OiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLmFkZE9iamVjdChsaWdodCk7XHJcbiAgICBpZiAobGlnaHQgaW5zdGFuY2VvZiBTcG90TGlnaHQgfHwgbGlnaHQgaW5zdGFuY2VvZiBEaXJlY3Rpb25hbExpZ2h0KSB7XHJcbiAgICAgIHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3QobGlnaHQudGFyZ2V0KTtcclxuICAgICAgdGhpcy5fdXBkYXRlU2hhZG93Q2FtZXJhKGxpZ2h0KTtcclxuICAgIH1cclxuICAgIGlmICh1cGRhdGVMaWdodEFycmF5KSB7XHJcbiAgICAgIHRoaXMubGlnaHRzLnB1c2gobGlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlU2hhZG93Q2FtZXJhKGxpZ2h0OiBMaWdodCkge1xyXG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuX2Zsb29ycGxhblNlcnZpY2UuZ2V0U2l6ZSgpO1xyXG5cclxuICAgIGlmIChzaXplLnggPT09IC1JbmZpbml0eSB8fCBzaXplLnkgPT09IC1JbmZpbml0eSB8fCBzaXplLnogPT09IC1JbmZpbml0eSB8fFxyXG4gICAgICBzaXplLnggPT09IEluZmluaXR5IHx8IHNpemUueSA9PT0gSW5maW5pdHkgfHwgc2l6ZS56ID09PSBJbmZpbml0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZFdpZHRoID0gKHNpemUueCArIDMpIC8gMi4wO1xyXG4gICAgY29uc3QgZEhlaWdodCA9IChzaXplLnogKyAzKSAvIDIuMDtcclxuICAgIGNvbnN0IGNlbnRlciA9IHRoaXMuX2Zsb29ycGxhblNlcnZpY2UuZ2V0Q2VudGVyKCk7XHJcblxyXG4gICAgaWYgKGxpZ2h0IGluc3RhbmNlb2YgU3BvdExpZ2h0IHx8IGxpZ2h0IGluc3RhbmNlb2YgRGlyZWN0aW9uYWxMaWdodCkge1xyXG4gICAgICBpZiAobGlnaHQgaW5zdGFuY2VvZiBEaXJlY3Rpb25hbExpZ2h0ICYmIGxpZ2h0LnVzZXJEYXRhLnRvcERvd25EaXJlY3Rpb25hbCkge1xyXG4gICAgICAgIGxpZ2h0LnBvc2l0aW9uLnNldChjZW50ZXIueCwgMywgY2VudGVyLnopO1xyXG4gICAgICAgIGxpZ2h0LnNoYWRvdy5jYW1lcmEubGVmdCA9IC1kV2lkdGg7XHJcbiAgICAgICAgbGlnaHQuc2hhZG93LmNhbWVyYS5yaWdodCA9IGRXaWR0aDtcclxuICAgICAgICBsaWdodC5zaGFkb3cuY2FtZXJhLnRvcCA9IGRIZWlnaHQ7XHJcbiAgICAgICAgbGlnaHQuc2hhZG93LmNhbWVyYS5ib3R0b20gPSAtZEhlaWdodDtcclxuICAgICAgfVxyXG4gICAgICBsaWdodC50YXJnZXQucG9zaXRpb24uY29weShjZW50ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2NvcmUzZC9zZXJ2aWNlL2xpZ2h0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQVMsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUNwRyxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBSzNDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9FQUFvRSxDQUFDOzs7Ozs7QUFNdEcsTUFBTSxPQUFPLGFBQWE7SUFPeEIsWUFDVSxhQUEyQixFQUMzQixxQkFBMkMsRUFDM0MsaUJBQW1DLEVBQ25DLFlBQXlCO1FBSHpCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQVQ1QixXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ3JCLGlCQUFZLEdBQTJDLElBQUksT0FBTyxFQUFpQyxDQUFDO1FBRW5HLFVBQUssR0FBbUIsRUFBRSxDQUFDO0lBT2hDLENBQUM7SUFFSixXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxV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QVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FtYmllbnRMaWdodCwgRGlyZWN0aW9uYWxMaWdodCwgSGVtaXNwaGVyZUxpZ2h0LCBMaWdodCwgUG9pbnRMaWdodCwgU3BvdExpZ2h0fSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtTY2VuZVNlcnZpY2V9IGZyb20gJy4vc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zsb29ycGxhblNlcnZpY2V9IGZyb20gJy4uLy4uL3Jvb20tcGxhbm5lci9jb21wb25lbnRzL2Zsb29ycGxhbm5lci9zZXJ2aWNlL2Zsb29ycGxhbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtJdGVtU2VydmljZX0gZnJvbSAnLi9pdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25LZXl9IGZyb20gJy4uLy4uLy4uL2NvcmUvZW51bS9jb25maWd1cmF0aW9uLWtleS5lbnVtJztcclxuaW1wb3J0IHtMaWdodENyZWF0ZVNlcnZpY2V9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3NlcnZpY2UvbGlnaHQtY3JlYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Q29ybmVyfSBmcm9tICcuLi9pdGVtcy93YWxsLW9iamVjdHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlnaHRzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBsaWdodHM6IExpZ2h0W10gPSBbXTtcclxuICBwdWJsaWMgb25MaWdodEFkZGVkOiBTdWJqZWN0PHtsaWdodDogTGlnaHQsIGluZGV4OiBudW1iZXJ9PiA9IG5ldyBTdWJqZWN0PHtsaWdodDogTGlnaHQsIGluZGV4OiBudW1iZXJ9PigpO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBwcml2YXRlIF9zY2VuZVNlcnZpY2U6IFNjZW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Zsb29ycGxhblNlcnZpY2U6IEZsb29ycGxhblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pdGVtU2VydmljZTogSXRlbVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLl9mbG9vcnBsYW5TZXJ2aWNlLnJvb21Mb2FkZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQWxsT2Zmc2V0cygpKSxcclxuICAgICAgdGhpcy5fZmxvb3JwbGFuU2VydmljZS5yb29tc1VwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlQWxsT2Zmc2V0cygpKSxcclxuICAgICAgdGhpcy5fY29uZmlndXJhdGlvblNlcnZpY2Uub25DaGFuZ2Uuc3Vic2NyaWJlKChjaGFuZ2VkKSA9PiB7XHJcbiAgICAgICAgaWYgKENvbmZpZ3VyYXRpb25LZXkuU2hvd0ludGVyaW9yTGlnaHRzIGluIGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuX3Nob3dIaWRlSW50ZXJpb3JMaWdodHMoY2hhbmdlZFtDb25maWd1cmF0aW9uS2V5LlNob3dJbnRlcmlvckxpZ2h0c10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQ29uZmlndXJhdGlvbktleS5JbnRlcmlvckxpZ2h0SW50ZW5zaXR5IGluIGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuX3VwZGF0ZUludGVyaW9yTGlnaHRzKGNoYW5nZWRbQ29uZmlndXJhdGlvbktleS5JbnRlcmlvckxpZ2h0SW50ZW5zaXR5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgICAvLyB0aGlzLl9pbml0TGlnaHRzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlTGlnaHQ8VCBleHRlbmRzIExpZ2h0Pihtb2RlbENsYXNzOiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBnZXRMaWdodHM6IExpZ2h0Q3JlYXRlU2VydmljZSA9IG5ldyBMaWdodENyZWF0ZVNlcnZpY2UoKTtcclxuICAgIGNvbnN0IGxpZ2h0OiBMaWdodCA9IGdldExpZ2h0cy5jcmVhdGVOZXdMaWdodChtb2RlbENsYXNzKTtcclxuXHJcbiAgICAvLyBjb25zdCBsaWdodDogVCA9IG5ldyBtb2RlbENsYXNzKCk7XHJcbiAgICBsaWdodC5uYW1lID0gYG5ld18ke21vZGVsQ2xhc3MubmFtZX1gO1xyXG4gICAgdGhpcy5fYWRkTGlnaHQobGlnaHQpO1xyXG4gICAgdGhpcy5vbkxpZ2h0QWRkZWQubmV4dCh7bGlnaHQ6IGxpZ2h0LCBpbmRleDogdGhpcy5saWdodHMubGVuZ3RoIC0gMX0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZExpZ2h0KGxpZ2h0OiBMaWdodCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKGxpZ2h0LnJvdGF0aW9uKSB7XHJcbiAgICAvLyAgIHRoaXMudXBkYXRlT2Zmc2V0cyhsaWdodCk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmxpZ2h0cy5wdXNoKGxpZ2h0KTtcclxuICAgIHRoaXMuX2FkZExpZ2h0KGxpZ2h0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVMaWdodEJ5SW5kZXgoaWR4OiBudW1iZXIsIHVwZGF0ZUxpZ2h0QXJyYXk6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW1vdmVMaWdodCh0aGlzLmxpZ2h0c1tpZHhdLCB1cGRhdGVMaWdodEFycmF5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVBbGxMaWdodHMoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50TGlnaHRzOiBMaWdodFtdID0gdGhpcy5saWdodHMuc2xpY2UoKTtcclxuICAgIC8vIHRoaXMubGlnaHRzLmxlbmd0aCA9IDA7XHJcbiAgICBjdXJyZW50TGlnaHRzLmZvckVhY2goY2wgPT4ge1xyXG4gICAgICB0aGlzLl9yZW1vdmVMaWdodChjbCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXBsYWNlTGlnaHQoaWR4OiBudW1iZXIsIGxpZ2h0OiBMaWdodCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVMaWdodEJ5SW5kZXgoaWR4LCBmYWxzZSk7XHJcbiAgICB0aGlzLl9hZGRMaWdodChsaWdodCwgZmFsc2UpO1xyXG4gICAgdGhpcy5saWdodHNbaWR4XSA9IGxpZ2h0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXRpYXRlTGlnaHRQcmVzZXQoKSB7XHJcbiAgICAvLyB0aGlzLmxpZ2h0cy5mb3JFYWNoKGwgPT4gdGhpcy5fc2NlbmVTZXJ2aWNlLmFkZE9iamVjdChsKSk7XHJcbiAgICB0aGlzLmxpZ2h0cy5mb3JFYWNoKGwgPT4gdGhpcy51cGRhdGVPZmZzZXRzKGwpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVBbGxPZmZzZXRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5saWdodHMuZm9yRWFjaChsID0+IHRoaXMudXBkYXRlT2Zmc2V0cyhsKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlT2Zmc2V0cyhsaWdodDogTGlnaHQpIHtcclxuICAgIGlmIChsaWdodCBpbnN0YW5jZW9mIEFtYmllbnRMaWdodCB8fCBsaWdodCBpbnN0YW5jZW9mIEhlbWlzcGhlcmVMaWdodCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb3JuZXJzOiBDb3JuZXJbXSA9IHRoaXMuX2Zsb29ycGxhblNlcnZpY2UuZ2V0Q29ybmVycygpO1xyXG4gICAgaWYgKCFjb3JuZXJzIHx8IGNvcm5lcnMubGVuZ3RoIDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBybyA9IGxpZ2h0LnVzZXJEYXRhLnJvdGF0aW9uT2Zmc2V0O1xyXG4gICAgY29uc3Qgd28gPSBsaWdodC51c2VyRGF0YS53YWxsT2Zmc2V0O1xyXG4gICAgY29uc3QgZmMgPSB0aGlzLl9mbG9vcnBsYW5TZXJ2aWNlLmdldENlbnRlcigpO1xyXG5cclxuICAgIGNvbnN0IHNpemUgPSB0aGlzLl9mbG9vcnBsYW5TZXJ2aWNlLmdldFNpemUoKTtcclxuICAgIGNvbnN0IHBsYW5IYWxmV2lkdGggPSBpc0Zpbml0ZShzaXplLngpID8gc2l6ZS54IC8gMi4wIDogMDtcclxuICAgIGNvbnN0IHBsYW5IYWxmRGVwdGggPSBpc0Zpbml0ZShzaXplLnopID8gc2l6ZS56IC8gMi4wIDogMDtcclxuXHJcbiAgICBpZiAod28gPT09IDApIHsgLy8ganVzdCB1c2UgcG9zaXRpb24gb2YgbGlnaHRcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlc2V0IHBvc2l0aW9uICYgcm90YXRpb25cclxuICAgIGxpZ2h0LnBvc2l0aW9uLnggPSBmYy54O1xyXG4gICAgbGlnaHQucG9zaXRpb24ueiA9IGZjLno7XHJcbiAgICBsaWdodC5yb3RhdGlvbi5zZXQoMCwgMCwgMCk7XHJcblxyXG4gICAgLy8gT2Zmc2V0IHRvIHRoZSBhcHByb3ByaWF0ZSBjb3JuZXIgJiB0cmFuc2xhdGUgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBpbiBlcXVhbCBzdGVwcyBiYXNlZCBvbiB0aGUgcm9vbSBkaW1lbnNpb25zLlxyXG4gICAgaWYgKHJvID4gMzE1KSB7XHJcbiAgICAgIGxpZ2h0LnRyYW5zbGF0ZVooTWF0aC5hYnMocGxhbkhhbGZEZXB0aCArIHdvKSk7XHJcbiAgICAgIGxpZ2h0LnRyYW5zbGF0ZVgoTWF0aC5hYnMocGxhbkhhbGZXaWR0aCArIHdvKSk7XHJcbiAgICAgIGxpZ2h0LnRyYW5zbGF0ZVgoLU1hdGguYWJzKCgoKHBsYW5IYWxmV2lkdGggKiAyKSArICh3byAqIDIpKSAvIDkwKSAqIChybyAtIDMxNSkpKTtcclxuICAgIH0gZWxzZSBpZiAocm8gPiAyMjUpIHtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWChNYXRoLmFicyhwbGFuSGFsZldpZHRoICsgd28pKTtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWigtTWF0aC5hYnMocGxhbkhhbGZEZXB0aCArIHdvKSk7XHJcbiAgICAgIGxpZ2h0LnRyYW5zbGF0ZVooTWF0aC5hYnMoKCgocGxhbkhhbGZEZXB0aCAqIDIpICsgKHdvICogMikpIC8gOTApICogKHJvIC0gMjI1KSkpO1xyXG4gICAgfSBlbHNlIGlmIChybyA+IDEzNSkge1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVaKC1NYXRoLmFicyggcGxhbkhhbGZEZXB0aCArIHdvKSk7XHJcbiAgICAgIGxpZ2h0LnRyYW5zbGF0ZVgoLU1hdGguYWJzKHBsYW5IYWxmV2lkdGggKyB3bykpO1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVYKE1hdGguYWJzKCgoKHBsYW5IYWxmV2lkdGggKiAyKSArICh3byAqIDIpKSAvIDkwKSAqIChybyAtIDEzNSkpKTtcclxuICAgIH0gZWxzZSBpZiAocm8gPiA0NSkge1xyXG4gICAgICBsaWdodC50cmFuc2xhdGVYKC1NYXRoLmFicyhwbGFuSGFsZldpZHRoICsgd28pKTtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWihNYXRoLmFicyhwbGFuSGFsZkRlcHRoICsgd28pKTtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWigtTWF0aC5hYnMoKCgocGxhbkhhbGZEZXB0aCAqIDIpICsgKHdvICogMikpIC8gOTApICogKHJvIC0gNDUpKSk7XHJcbiAgICB9IGVsc2UgaWYgKHJvID49IDApIHtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWihNYXRoLmFicyhwbGFuSGFsZkRlcHRoICsgd28pKTtcclxuICAgICAgbGlnaHQudHJhbnNsYXRlWCgtTWF0aC5hYnMoKCgocGxhbkhhbGZXaWR0aCAqIDIpICsgKHdvICogMikpIC8gOTApICogcm8pKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3VwZGF0ZVNoYWRvd0NhbWVyYShsaWdodCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93SGlkZUludGVyaW9yTGlnaHRzKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2l0ZW1TZXJ2aWNlLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS50cmF2ZXJzZShjID0+IHtcclxuICAgICAgICBpZiAoYy5uYW1lICYmIGMubmFtZS50b0xvd2VyQ2FzZSgpID09PSAnbGlnaHRfYnVsYicpIHtcclxuICAgICAgICAgIGMudHJhdmVyc2UobCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsIGluc3RhbmNlb2YgUG9pbnRMaWdodCkge1xyXG4gICAgICAgICAgICAgIGwudmlzaWJsZSA9IHNob3c7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVJbnRlcmlvckxpZ2h0cyhwb3dlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pdGVtU2VydmljZS5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGl0ZW0udHJhdmVyc2UoYyA9PiB7XHJcbiAgICAgICAgaWYgKGMubmFtZSAmJiBjLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2xpZ2h0X2J1bGInKSB7XHJcbiAgICAgICAgICBjLnRyYXZlcnNlKGwgPT4ge1xyXG4gICAgICAgICAgICBpZiAobCBpbnN0YW5jZW9mIFBvaW50TGlnaHQpIHtcclxuICAgICAgICAgICAgICBsLnBvd2VyID0gcG93ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZW1vdmVMaWdodChsaWdodDogTGlnaHQsIHVwZGF0ZUxpZ2h0QXJyYXk6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBjb25zdCBpZHg6IG51bWJlciA9IHRoaXMubGlnaHRzLmluZGV4T2YobGlnaHQpO1xyXG4gICAgaWYgKGxpZ2h0IGluc3RhbmNlb2YgU3BvdExpZ2h0IHx8IGxpZ2h0IGluc3RhbmNlb2YgRGlyZWN0aW9uYWxMaWdodCkge1xyXG4gICAgICB0aGlzLl9zY2VuZVNlcnZpY2UucmVtb3ZlT2JqZWN0KGxpZ2h0LnRhcmdldCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UucmVtb3ZlT2JqZWN0KGxpZ2h0KTtcclxuXHJcbiAgICBpZiAodXBkYXRlTGlnaHRBcnJheSkge1xyXG4gICAgICB0aGlzLmxpZ2h0cy5zcGxpY2UoaWR4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FkZExpZ2h0KGxpZ2h0OiBMaWdodCwgdXBkYXRlTGlnaHRBcnJheTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NjZW5lU2VydmljZS5hZGRPYmplY3QobGlnaHQpO1xyXG4gICAgaWYgKGxpZ2h0IGluc3RhbmNlb2YgU3BvdExpZ2h0IHx8IGxpZ2h0IGluc3RhbmNlb2YgRGlyZWN0aW9uYWxMaWdodCkge1xyXG4gICAgICB0aGlzLl9zY2VuZVNlcnZpY2UuYWRkT2JqZWN0KGxpZ2h0LnRhcmdldCk7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZVNoYWRvd0NhbWVyYShsaWdodCk7XHJcbiAgICB9XHJcbiAgICBpZiAodXBkYXRlTGlnaHRBcnJheSkge1xyXG4gICAgICB0aGlzLmxpZ2h0cy5wdXNoKGxpZ2h0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZVNoYWRvd0NhbWVyYShsaWdodDogTGlnaHQpIHtcclxuICAgIGNvbnN0IHNpemUgPSB0aGlzLl9mbG9vcnBsYW5TZXJ2aWNlLmdldFNpemUoKTtcclxuXHJcbiAgICBpZiAoc2l6ZS54ID09PSAtSW5maW5pdHkgfHwgc2l6ZS55ID09PSAtSW5maW5pdHkgfHwgc2l6ZS56ID09PSAtSW5maW5pdHkgfHxcclxuICAgICAgc2l6ZS54ID09PSBJbmZpbml0eSB8fCBzaXplLnkgPT09IEluZmluaXR5IHx8IHNpemUueiA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRXaWR0aCA9IChzaXplLnggKyAzKSAvIDIuMDtcclxuICAgIGNvbnN0IGRIZWlnaHQgPSAoc2l6ZS56ICsgMykgLyAyLjA7XHJcbiAgICBjb25zdCBjZW50ZXIgPSB0aGlzLl9mbG9vcnBsYW5TZXJ2aWNlLmdldENlbnRlcigpO1xyXG5cclxuICAgIGlmIChsaWdodCBpbnN0YW5jZW9mIFNwb3RMaWdodCB8fCBsaWdodCBpbnN0YW5jZW9mIERpcmVjdGlvbmFsTGlnaHQpIHtcclxuICAgICAgaWYgKGxpZ2h0IGluc3RhbmNlb2YgRGlyZWN0aW9uYWxMaWdodCAmJiBsaWdodC51c2VyRGF0YS50b3BEb3duRGlyZWN0aW9uYWwpIHtcclxuICAgICAgICBsaWdodC5wb3NpdGlvbi5zZXQoY2VudGVyLngsIDMsIGNlbnRlci56KTtcclxuICAgICAgICBsaWdodC5zaGFkb3cuY2FtZXJhLmxlZnQgPSAtZFdpZHRoO1xyXG4gICAgICAgIGxpZ2h0LnNoYWRvdy5jYW1lcmEucmlnaHQgPSBkV2lkdGg7XHJcbiAgICAgICAgbGlnaHQuc2hhZG93LmNhbWVyYS50b3AgPSBkSGVpZ2h0O1xyXG4gICAgICAgIGxpZ2h0LnNoYWRvdy5jYW1lcmEuYm90dG9tID0gLWRIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgICAgbGlnaHQudGFyZ2V0LnBvc2l0aW9uLmNvcHkoY2VudGVyKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -13,8 +13,6 @@ import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass';
|
|
|
13
13
|
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
|
|
14
14
|
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass';
|
|
15
15
|
import * as TWEEN from '@tweenjs/tween.js';
|
|
16
|
-
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass';
|
|
17
|
-
import { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader';
|
|
18
16
|
import { OutputPass } from 'three/examples/jsm/postprocessing/OutputPass';
|
|
19
17
|
import * as i0 from "@angular/core";
|
|
20
18
|
import * as i1 from "../../../core/service/homedecorator-app-event.service";
|
|
@@ -49,14 +47,14 @@ export class OutlineService {
|
|
|
49
47
|
const renderPass = new RenderPass(this._scene, this._camera);
|
|
50
48
|
this._outputPass = new OutputPass();
|
|
51
49
|
this._outlinePass = new OutlinePass(new Vector2(width, height), this._scene, this._camera);
|
|
52
|
-
this._fxaaPass = new ShaderPass(FXAAShader);
|
|
53
|
-
this._fxaaPass.material.uniforms['resolution'].value.set(1 / width, 1 / height);
|
|
50
|
+
// this._fxaaPass = new ShaderPass(FXAAShader);
|
|
51
|
+
// this._fxaaPass.material.uniforms['resolution'].value.set(1 / width, 1 / height);
|
|
54
52
|
// needed for the sRGBEncoding to work
|
|
55
53
|
// https://stackoverflow.com/questions/72936071/srgbencoding-in-not-working-in-three-effectcomposer
|
|
56
54
|
// const gammaCorrectionPass = new ShaderPass(GammaCorrectionShader);
|
|
57
55
|
this._composer.addPass(renderPass);
|
|
58
56
|
this._composer.addPass(this._outlinePass);
|
|
59
|
-
this._composer.addPass(this._fxaaPass);
|
|
57
|
+
// this._composer.addPass(this._fxaaPass);
|
|
60
58
|
// this._composer.addPass(gammaCorrectionPass);
|
|
61
59
|
this._composer.addPass(this._outputPass);
|
|
62
60
|
this._setSelectionGlowSettings();
|
|
@@ -148,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
148
146
|
providedIn: 'root'
|
|
149
147
|
}]
|
|
150
148
|
}], ctorParameters: function () { return [{ type: i1.HomedecoratorAppEventService }]; } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9jb3JlM2Qvc2VydmljZS9vdXRsaW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFxQixVQUFVLEVBQVMsY0FBYyxFQUFFLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFDckksT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEUsT0FBTyxLQUFLLEtBQUssTUFBTSxtQkFBbUIsQ0FBQztBQUczQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBTWpFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBS3hFLE1BQU0sT0FBTyxjQUFjO0lBb0J6QixZQUNZLGdCQUE4QztRQUE5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQThCO1FBZmxELGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFekIsd0JBQW1CLEdBQVcsS0FBSyxDQUFDO1FBQ3BDLHVCQUFrQixHQUFXLElBQUksQ0FBQztRQUNsQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFJL0IsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFNUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFLbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENB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WSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDdEMsQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OzRHQXRKVSxjQUFjO2dIQUFkLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05lYXJlc3RGaWx0ZXIsIFBlcnNwZWN0aXZlQ2FtZXJhLCBSR0JBRm9ybWF0LCBTY2VuZSwgU1JHQkNvbG9yU3BhY2UsIFZlY3RvcjIsIFdlYkdMUmVuZGVyZXIsIFdlYkdMUmVuZGVyVGFyZ2V0fSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7T3V0bGluZVBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9PdXRsaW5lUGFzcyc7XHJcbmltcG9ydCB7RWZmZWN0Q29tcG9zZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9FZmZlY3RDb21wb3Nlcic7XHJcbmltcG9ydCB7UmVuZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1JlbmRlclBhc3MnO1xyXG5pbXBvcnQgKiBhcyBUV0VFTiBmcm9tICdAdHdlZW5qcy90d2Vlbi5qcyc7XHJcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi4vaXRlbXMvaXRlbSc7XHJcbmltcG9ydCB7VGV4dHVyZVBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9UZXh0dXJlUGFzcyc7XHJcbmltcG9ydCB7U2hhZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1NoYWRlclBhc3MnO1xyXG5pbXBvcnQge0ZYQUFTaGFkZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9zaGFkZXJzL0ZYQUFTaGFkZXInO1xyXG5pbXBvcnQge0dhbW1hQ29ycmVjdGlvblNoYWRlcn0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3NoYWRlcnMvR2FtbWFDb3JyZWN0aW9uU2hhZGVyJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yQXBwRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1hcHAtZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtGdXJuaXR1cmV9IGZyb20gJy4uL2l0ZW1zL2Z1cm5pdHVyZSc7XHJcbmltcG9ydCB7Q3VzdG9tT2JqZWN0M0R9IGZyb20gJy4uL2l0ZW1zL2N1c3RvbS1vYmplY3RzJztcclxuaW1wb3J0IHtPdXRwdXRQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvT3V0cHV0UGFzcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPdXRsaW5lU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHByaXZhdGUgX291dGxpbmVQYXNzOiBPdXRsaW5lUGFzcztcclxuICBwcml2YXRlIF9meGFhUGFzczogU2hhZGVyUGFzcztcclxuICBwcml2YXRlIF9vdXRwdXRQYXNzOiBPdXRwdXRQYXNzO1xyXG4gIHByaXZhdGUgX2NvbXBvc2VyOiBFZmZlY3RDb21wb3NlcjtcclxuICBwcml2YXRlIF9lbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICBwcml2YXRlIF9oaWRlT3V0bGluZVRpbWVyOiBhbnk7XHJcbiAgcHJpdmF0ZSBfaGlkZU91dGxpbmVUaW1lb3V0OiBudW1iZXIgPSAxMDAwMDtcclxuICBwcml2YXRlIF9hbmltYXRpb25EdXJhdGlvbjogbnVtYmVyID0gNTAwMDtcclxuICBwcml2YXRlIF9vdXRsaW5lUGFzc0FzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9yZW5kZXJUYXJnZXQ6IFdlYkdMUmVuZGVyVGFyZ2V0O1xyXG4gIHByaXZhdGUgX2luaXRpYWxpemluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3NjZW5lOiBTY2VuZTtcclxuICBwcml2YXRlIF9yZW5kZXJlcjogV2ViR0xSZW5kZXJlcjtcclxuICBwcml2YXRlIF9jYW1lcmE6IFBlcnNwZWN0aXZlQ2FtZXJhO1xyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHB1YmxpYyBuZWVkc1JlbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSBfYXBwRXZlbnRTZXJ2aWNlOiBIb21lZGVjb3JhdG9yQXBwRXZlbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLnNob3dPdXRsaW5lLnN1YnNjcmliZSgob2JqZWN0OiBJdGVtKSA9PiB0aGlzLnNob3dPdXRsaW5lKG9iamVjdCkpLFxyXG4gICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5oaWRlT3V0bGluZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlT3V0bGluZSgpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0KHJlbmRlcmVyOiBXZWJHTFJlbmRlcmVyLCBzY2VuZTogU2NlbmUsIGNhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmEsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW5kZXJlciA9IHJlbmRlcmVyO1xyXG4gICAgdGhpcy5fc2NlbmUgPSBzY2VuZTtcclxuICAgIHRoaXMuX2NhbWVyYSA9IGNhbWVyYTtcclxuXHJcbiAgICB0aGlzLl9yZW5kZXJUYXJnZXQgPSBuZXcgV2ViR0xSZW5kZXJUYXJnZXQod2lkdGgsIGhlaWdodCwge1xyXG4gICAgICBtaW5GaWx0ZXI6IE5lYXJlc3RGaWx0ZXIsXHJcbiAgICAgIG1hZ0ZpbHRlcjogTmVhcmVzdEZpbHRlcixcclxuICAgICAgZm9ybWF0OiBSR0JBRm9ybWF0LFxyXG4gICAgICBjb2xvclNwYWNlOiBTUkdCQ29sb3JTcGFjZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9yZW5kZXJUYXJnZXQuc2FtcGxlcyA9IDQ7XHJcblxyXG4gICAgdGhpcy5fY29tcG9zZXIgPSBuZXcgRWZmZWN0Q29tcG9zZXIodGhpcy5fcmVuZGVyZXIsIHRoaXMuX3JlbmRlclRhcmdldCk7XHJcbiAgICB0aGlzLl9jb21wb3Nlci5zZXRQaXhlbFJhdGlvKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtcclxuXHJcbiAgICBjb25zdCByZW5kZXJQYXNzID0gbmV3IFJlbmRlclBhc3ModGhpcy5fc2NlbmUsIHRoaXMuX2NhbWVyYSk7XHJcbiAgICB0aGlzLl9vdXRwdXRQYXNzID0gbmV3IE91dHB1dFBhc3MoKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzID0gbmV3IE91dGxpbmVQYXNzKG5ldyBWZWN0b3IyKHdpZHRoLCBoZWlnaHQpLCB0aGlzLl9zY2VuZSwgdGhpcy5fY2FtZXJhKTtcclxuICAgIHRoaXMuX2Z4YWFQYXNzID0gbmV3IFNoYWRlclBhc3MoRlhBQVNoYWRlcik7XHJcbiAgICB0aGlzLl9meGFhUGFzcy5tYXRlcmlhbC51bmlmb3Jtc1sncmVzb2x1dGlvbiddLnZhbHVlLnNldCgxIC8gd2lkdGgsIDEgLyBoZWlnaHQpO1xyXG5cclxuICAgIC8vIG5lZWRlZCBmb3IgdGhlIHNSR0JFbmNvZGluZyB0byB3b3JrXHJcbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83MjkzNjA3MS9zcmdiZW5jb2RpbmctaW4tbm90LXdvcmtpbmctaW4tdGhyZWUtZWZmZWN0Y29tcG9zZXJcclxuICAgIC8vIGNvbnN0IGdhbW1hQ29ycmVjdGlvblBhc3MgPSBuZXcgU2hhZGVyUGFzcyhHYW1tYUNvcnJlY3Rpb25TaGFkZXIpO1xyXG5cclxuXHJcbiAgICB0aGlzLl9jb21wb3Nlci5hZGRQYXNzKHJlbmRlclBhc3MpO1xyXG4gICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9vdXRsaW5lUGFzcyk7XHJcbiAgICB0aGlzLl9jb21wb3Nlci5hZGRQYXNzKHRoaXMuX2Z4YWFQYXNzKTtcclxuICAgIC8vIHRoaXMuX2NvbXBvc2VyLmFkZFBhc3MoZ2FtbWFDb3JyZWN0aW9uUGFzcyk7XHJcbiAgICB0aGlzLl9jb21wb3Nlci5hZGRQYXNzKHRoaXMuX291dHB1dFBhc3MpO1xyXG5cclxuICAgIHRoaXMuX3NldFNlbGVjdGlvbkdsb3dTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5fY29tcG9zZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW5kZXJUYXJnZXQuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgIHRoaXMuX2NvbXBvc2VyLnNldFNpemUod2lkdGgsIGhlaWdodCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVuZGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29tcG9zZXIucmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9yY2VSZW5kZXJDYW52YXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dFcnJvck91dGxpbmUoaXRlbTogRnVybml0dXJlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX291dGxpbmVQYXNzQXNFcnJvcikge1xyXG4gICAgICB0aGlzLl9zZXRFcnJvckdsb3dTZXR0aW5ncygpO1xyXG4gICAgICB0aGlzLl9vdXRsaW5lUGFzc0FzRXJyb3IgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fb3V0bGluZVBhc3Muc2VsZWN0ZWRPYmplY3RzID0gW2l0ZW1dO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNob3dPdXRsaW5lKGl0ZW06IEZ1cm5pdHVyZSB8IEN1c3RvbU9iamVjdDNEKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBpZiAoaXRlbSAmJiAoaXRlbSBpbnN0YW5jZW9mIEZsb29yUGluIHx8IGl0ZW0gaW5zdGFuY2VvZiBXYWxsUGluKSkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZU91dGxpbmVUaW1lcik7XHJcbiAgICBpZiAodGhpcy5fb3V0bGluZVBhc3NBc0Vycm9yKSB7XHJcbiAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkdsb3dTZXR0aW5ncygpO1xyXG4gICAgICB0aGlzLl9vdXRsaW5lUGFzc0FzRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnNlbGVjdGVkT2JqZWN0cyA9IFtpdGVtXTtcclxuICAgIC8vIGF3YWl0IHRoaXMuX2FuaW1hdGVkT3V0bGluZVN0cmVuZ3RoKDAsIDMwMCk7XHJcbiAgICAvLyByZW1vdmUgYWZ0ZXIgeCBhbW91bnQgb2YgbXNcclxuICAgIHRoaXMuX2hpZGVPdXRsaW5lVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5oaWRlT3V0bGluZSgpO1xyXG4gICAgfSwgdGhpcy5faGlkZU91dGxpbmVUaW1lb3V0KTtcclxuICAgIHRoaXMubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhpZGVPdXRsaW5lKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuX291dGxpbmVQYXNzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vIGF3YWl0IHRoaXMuX2FuaW1hdGVkT3V0bGluZVN0cmVuZ3RoKDMwMCwgMCk7XHJcbiAgICAgIHRoaXMuX291dGxpbmVQYXNzLnNlbGVjdGVkT2JqZWN0cyA9IFtdO1xyXG4gICAgICB0aGlzLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FuaW1hdGVkT3V0bGluZVN0cmVuZ3RoKGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCBzdHJlbmd0aDogbnVtYmVyID0gZnJvbTtcclxuICAgICAgbmV3IFRXRUVOLlR3ZWVuKHN0cmVuZ3RoKVxyXG4gICAgICAgIC50byh0bywgdGhpcy5fYW5pbWF0aW9uRHVyYXRpb24pXHJcbiAgICAgICAgLmVhc2luZyhUV0VFTi5FYXNpbmcuQ2lyY3VsYXIuSW4pXHJcbiAgICAgICAgLm9uVXBkYXRlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VTdHJlbmd0aCA9IHN0cmVuZ3RoO1xyXG4gICAgICAgICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAub25Db21wbGV0ZSgoKSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0RXJyb3JHbG93U2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy52aXNpYmxlRWRnZUNvbG9yLnNldCgnI2U2MDAwMicpO1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MuaGlkZGVuRWRnZUNvbG9yLnNldCgnI2U2MDAwMicpO1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MuZWRnZVN0cmVuZ3RoID0gNDtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VHbG93ID0gMTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VUaGlja25lc3MgPSAxO1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MucHVsc2VQZXJpb2QgPSAxLjU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRTZWxlY3Rpb25HbG93U2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy52aXNpYmxlRWRnZUNvbG9yLnNldCgnI2ZmZmZmZicpO1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MuaGlkZGVuRWRnZUNvbG9yLnNldCgnI2ZmZmZmZicpO1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MuZWRnZVN0cmVuZ3RoID0gMjtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VHbG93ID0gMC41O1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MuZWRnZVRoaWNrbmVzcyA9IDEuNTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnB1bHNlUGVyaW9kID0gMDtcclxuICB9XHJcbn1cclxuIl19
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9jb3JlM2Qvc2VydmljZS9vdXRsaW5lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFxQixVQUFVLEVBQVMsY0FBYyxFQUFFLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFDckksT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEUsT0FBTyxLQUFLLEtBQUssTUFBTSxtQkFBbUIsQ0FBQztBQVUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7OztBQUt4RSxNQUFNLE9BQU8sY0FBYztJQW9CekIsWUFDWSxnQkFBOEM7UUFBOUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQWZsRCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLHdCQUFtQixHQUFXLEtBQUssQ0FBQztRQUNwQyx1QkFBa0IsR0FBVyxJQUFJLENBQUM7UUFDbEMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRXJDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBSS9CLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTVCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBS2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxD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QyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs0R0F0SlUsY0FBYztnSEFBZCxjQUFjLGNBRmIsTUFBTTs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtOZWFyZXN0RmlsdGVyLCBQZXJzcGVjdGl2ZUNhbWVyYSwgUkdCQUZvcm1hdCwgU2NlbmUsIFNSR0JDb2xvclNwYWNlLCBWZWN0b3IyLCBXZWJHTFJlbmRlcmVyLCBXZWJHTFJlbmRlclRhcmdldH0gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge091dGxpbmVQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvT3V0bGluZVBhc3MnO1xyXG5pbXBvcnQge0VmZmVjdENvbXBvc2VyfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvRWZmZWN0Q29tcG9zZXInO1xyXG5pbXBvcnQge1JlbmRlclBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9SZW5kZXJQYXNzJztcclxuaW1wb3J0ICogYXMgVFdFRU4gZnJvbSAnQHR3ZWVuanMvdHdlZW4uanMnO1xyXG5pbXBvcnQge0l0ZW19IGZyb20gJy4uL2l0ZW1zL2l0ZW0nO1xyXG5pbXBvcnQge1RleHR1cmVQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvVGV4dHVyZVBhc3MnO1xyXG5pbXBvcnQge1NoYWRlclBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9TaGFkZXJQYXNzJztcclxuaW1wb3J0IHtGWEFBU2hhZGVyfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vc2hhZGVycy9GWEFBU2hhZGVyJztcclxuaW1wb3J0IHtHYW1tYUNvcnJlY3Rpb25TaGFkZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9zaGFkZXJzL0dhbW1hQ29ycmVjdGlvblNoYWRlcic7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckFwcEV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItYXBwLWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7RnVybml0dXJlfSBmcm9tICcuLi9pdGVtcy9mdXJuaXR1cmUnO1xyXG5pbXBvcnQge0N1c3RvbU9iamVjdDNEfSBmcm9tICcuLi9pdGVtcy9jdXN0b20tb2JqZWN0cyc7XHJcbmltcG9ydCB7T3V0cHV0UGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL091dHB1dFBhc3MnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT3V0bGluZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIF9vdXRsaW5lUGFzczogT3V0bGluZVBhc3M7XHJcbiAgcHJpdmF0ZSBfZnhhYVBhc3M6IFNoYWRlclBhc3M7XHJcbiAgcHJpdmF0ZSBfb3V0cHV0UGFzczogT3V0cHV0UGFzcztcclxuICBwcml2YXRlIF9jb21wb3NlcjogRWZmZWN0Q29tcG9zZXI7XHJcbiAgcHJpdmF0ZSBfZW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHJpdmF0ZSBfaGlkZU91dGxpbmVUaW1lcjogYW55O1xyXG4gIHByaXZhdGUgX2hpZGVPdXRsaW5lVGltZW91dDogbnVtYmVyID0gMTAwMDA7XHJcbiAgcHJpdmF0ZSBfYW5pbWF0aW9uRHVyYXRpb246IG51bWJlciA9IDUwMDA7XHJcbiAgcHJpdmF0ZSBfb3V0bGluZVBhc3NBc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfcmVuZGVyVGFyZ2V0OiBXZWJHTFJlbmRlclRhcmdldDtcclxuICBwcml2YXRlIF9pbml0aWFsaXppbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9zY2VuZTogU2NlbmU7XHJcbiAgcHJpdmF0ZSBfcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXI7XHJcbiAgcHJpdmF0ZSBfY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYTtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgbmVlZHNSZW5kZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogSG9tZWRlY29yYXRvckFwcEV2ZW50U2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5zaG93T3V0bGluZS5zdWJzY3JpYmUoKG9iamVjdDogSXRlbSkgPT4gdGhpcy5zaG93T3V0bGluZShvYmplY3QpKSxcclxuICAgICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2UuaGlkZU91dGxpbmUuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGlkZU91dGxpbmUoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdChyZW5kZXJlcjogV2ViR0xSZW5kZXJlciwgc2NlbmU6IFNjZW5lLCBjYW1lcmE6IFBlcnNwZWN0aXZlQ2FtZXJhLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlcjtcclxuICAgIHRoaXMuX3NjZW5lID0gc2NlbmU7XHJcbiAgICB0aGlzLl9jYW1lcmEgPSBjYW1lcmE7XHJcblxyXG4gICAgdGhpcy5fcmVuZGVyVGFyZ2V0ID0gbmV3IFdlYkdMUmVuZGVyVGFyZ2V0KHdpZHRoLCBoZWlnaHQsIHtcclxuICAgICAgbWluRmlsdGVyOiBOZWFyZXN0RmlsdGVyLFxyXG4gICAgICBtYWdGaWx0ZXI6IE5lYXJlc3RGaWx0ZXIsXHJcbiAgICAgIGZvcm1hdDogUkdCQUZvcm1hdCxcclxuICAgICAgY29sb3JTcGFjZTogU1JHQkNvbG9yU3BhY2VcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcmVuZGVyVGFyZ2V0LnNhbXBsZXMgPSA0O1xyXG5cclxuICAgIHRoaXMuX2NvbXBvc2VyID0gbmV3IEVmZmVjdENvbXBvc2VyKHRoaXMuX3JlbmRlcmVyLCB0aGlzLl9yZW5kZXJUYXJnZXQpO1xyXG4gICAgdGhpcy5fY29tcG9zZXIuc2V0UGl4ZWxSYXRpbyh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyk7XHJcblxyXG4gICAgY29uc3QgcmVuZGVyUGFzcyA9IG5ldyBSZW5kZXJQYXNzKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xyXG4gICAgdGhpcy5fb3V0cHV0UGFzcyA9IG5ldyBPdXRwdXRQYXNzKCk7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcyA9IG5ldyBPdXRsaW5lUGFzcyhuZXcgVmVjdG9yMih3aWR0aCwgaGVpZ2h0KSwgdGhpcy5fc2NlbmUsIHRoaXMuX2NhbWVyYSk7XHJcbiAgICAvLyB0aGlzLl9meGFhUGFzcyA9IG5ldyBTaGFkZXJQYXNzKEZYQUFTaGFkZXIpO1xyXG4gICAgLy8gdGhpcy5fZnhhYVBhc3MubWF0ZXJpYWwudW5pZm9ybXNbJ3Jlc29sdXRpb24nXS52YWx1ZS5zZXQoMSAvIHdpZHRoLCAxIC8gaGVpZ2h0KTtcclxuXHJcbiAgICAvLyBuZWVkZWQgZm9yIHRoZSBzUkdCRW5jb2RpbmcgdG8gd29ya1xyXG4gICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzI5MzYwNzEvc3JnYmVuY29kaW5nLWluLW5vdC13b3JraW5nLWluLXRocmVlLWVmZmVjdGNvbXBvc2VyXHJcbiAgICAvLyBjb25zdCBnYW1tYUNvcnJlY3Rpb25QYXNzID0gbmV3IFNoYWRlclBhc3MoR2FtbWFDb3JyZWN0aW9uU2hhZGVyKTtcclxuXHJcblxyXG4gICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyhyZW5kZXJQYXNzKTtcclxuICAgIHRoaXMuX2NvbXBvc2VyLmFkZFBhc3ModGhpcy5fb3V0bGluZVBhc3MpO1xyXG4gICAgLy8gdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9meGFhUGFzcyk7XHJcbiAgICAvLyB0aGlzLl9jb21wb3Nlci5hZGRQYXNzKGdhbW1hQ29ycmVjdGlvblBhc3MpO1xyXG4gICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9vdXRwdXRQYXNzKTtcclxuXHJcbiAgICB0aGlzLl9zZXRTZWxlY3Rpb25HbG93U2V0dGluZ3MoKTtcclxuICAgIHRoaXMuX2NvbXBvc2VyLnNldFNpemUod2lkdGgsIGhlaWdodCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVuZGVyVGFyZ2V0LnNldFNpemUod2lkdGgsIGhlaWdodCk7XHJcbiAgICB0aGlzLl9jb21wb3Nlci5zZXRTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbmRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbXBvc2VyLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZvcmNlUmVuZGVyQ2FudmFzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RXJyb3JPdXRsaW5lKGl0ZW06IEZ1cm5pdHVyZSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9vdXRsaW5lUGFzc0FzRXJyb3IpIHtcclxuICAgICAgdGhpcy5fc2V0RXJyb3JHbG93U2V0dGluZ3MoKTtcclxuICAgICAgdGhpcy5fb3V0bGluZVBhc3NBc0Vycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnNlbGVjdGVkT2JqZWN0cyA9IFtpdGVtXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzaG93T3V0bGluZShpdGVtOiBGdXJuaXR1cmUgfCBDdXN0b21PYmplY3QzRCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gaWYgKGl0ZW0gJiYgKGl0ZW0gaW5zdGFuY2VvZiBGbG9vclBpbiB8fCBpdGVtIGluc3RhbmNlb2YgV2FsbFBpbikpIHtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVPdXRsaW5lVGltZXIpO1xyXG4gICAgaWYgKHRoaXMuX291dGxpbmVQYXNzQXNFcnJvcikge1xyXG4gICAgICB0aGlzLl9zZXRTZWxlY3Rpb25HbG93U2V0dGluZ3MoKTtcclxuICAgICAgdGhpcy5fb3V0bGluZVBhc3NBc0Vycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5zZWxlY3RlZE9iamVjdHMgPSBbaXRlbV07XHJcbiAgICAvLyBhd2FpdCB0aGlzLl9hbmltYXRlZE91dGxpbmVTdHJlbmd0aCgwLCAzMDApO1xyXG4gICAgLy8gcmVtb3ZlIGFmdGVyIHggYW1vdW50IG9mIG1zXHJcbiAgICB0aGlzLl9oaWRlT3V0bGluZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaGlkZU91dGxpbmUoKTtcclxuICAgIH0sIHRoaXMuX2hpZGVPdXRsaW5lVGltZW91dCk7XHJcbiAgICB0aGlzLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoaWRlT3V0bGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLl9vdXRsaW5lUGFzcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyBhd2FpdCB0aGlzLl9hbmltYXRlZE91dGxpbmVTdHJlbmd0aCgzMDAsIDApO1xyXG4gICAgICB0aGlzLl9vdXRsaW5lUGFzcy5zZWxlY3RlZE9iamVjdHMgPSBbXTtcclxuICAgICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hbmltYXRlZE91dGxpbmVTdHJlbmd0aChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgY29uc3Qgc3RyZW5ndGg6IG51bWJlciA9IGZyb207XHJcbiAgICAgIG5ldyBUV0VFTi5Ud2VlbihzdHJlbmd0aClcclxuICAgICAgICAudG8odG8sIHRoaXMuX2FuaW1hdGlvbkR1cmF0aW9uKVxyXG4gICAgICAgIC5lYXNpbmcoVFdFRU4uRWFzaW5nLkNpcmN1bGFyLkluKVxyXG4gICAgICAgIC5vblVwZGF0ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlU3RyZW5ndGggPSBzdHJlbmd0aDtcclxuICAgICAgICAgIHRoaXMubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLm9uQ29tcGxldGUoKCkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEVycm9yR2xvd1NldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MudmlzaWJsZUVkZ2VDb2xvci5zZXQoJyNlNjAwMDInKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmhpZGRlbkVkZ2VDb2xvci5zZXQoJyNlNjAwMDInKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VTdHJlbmd0aCA9IDQ7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlR2xvdyA9IDE7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlVGhpY2tuZXNzID0gMTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnB1bHNlUGVyaW9kID0gMS41O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0U2VsZWN0aW9uR2xvd1NldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MudmlzaWJsZUVkZ2VDb2xvci5zZXQoJyNmZmZmZmYnKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmhpZGRlbkVkZ2VDb2xvci5zZXQoJyNmZmZmZmYnKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VTdHJlbmd0aCA9IDI7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlR2xvdyA9IDAuNTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VUaGlja25lc3MgPSAxLjU7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5wdWxzZVBlcmlvZCA9IDA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|