angular-three-soba 2.1.0 → 2.2.1
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/abstractions/lib/catmull-rom-line.d.ts +139 -139
- package/abstractions/lib/edges.d.ts +164 -164
- package/abstractions/lib/grid.d.ts +39 -39
- package/abstractions/lib/line.d.ts +8 -7
- package/abstractions/lib/prism-geometry.d.ts +4 -4
- package/abstractions/lib/rounded-box.d.ts +3 -3
- package/abstractions/lib/text-3d.d.ts +46 -46
- package/abstractions/lib/text.d.ts +1 -2
- package/cameras/lib/cube-camera.d.ts +1 -1
- package/cameras/lib/orthographic-camera.d.ts +7 -8
- package/cameras/lib/perspective-camera.d.ts +2 -3
- package/controls/index.d.ts +9 -1
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/esm2022/abstractions/lib/billboard.mjs +3 -3
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/edges.mjs +30 -34
- package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
- package/esm2022/abstractions/lib/grid.mjs +3 -3
- package/esm2022/abstractions/lib/helper.mjs +18 -20
- package/esm2022/abstractions/lib/line.mjs +25 -28
- package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
- package/esm2022/abstractions/lib/text-3d.mjs +14 -17
- package/esm2022/abstractions/lib/text.mjs +11 -16
- package/esm2022/cameras/lib/camera-content.mjs +3 -3
- package/esm2022/cameras/lib/cube-camera.mjs +18 -27
- package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
- package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
- package/esm2022/controls/index.mjs +6 -2
- package/esm2022/controls/lib/camera-controls.mjs +3 -3
- package/esm2022/controls/lib/orbit-controls.mjs +3 -3
- package/esm2022/controls/lib/scroll-controls.mjs +124 -130
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
- package/esm2022/gizmos/index.mjs +6 -0
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +187 -0
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +304 -0
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +332 -0
- package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +265 -0
- package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +264 -0
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +337 -0
- package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +266 -0
- package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +232 -0
- package/esm2022/gizmos/lib/transform-controls.mjs +177 -0
- package/esm2022/loaders/lib/loader.mjs +3 -3
- package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
- package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
- package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
- package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
- package/esm2022/materials/lib/point-material.mjs +3 -3
- package/esm2022/misc/lib/bake-shadows.mjs +8 -10
- package/esm2022/misc/lib/computed-attribute.mjs +15 -19
- package/esm2022/misc/lib/decal.mjs +56 -53
- package/esm2022/misc/lib/fbo.mjs +10 -10
- package/esm2022/misc/lib/html/html-content.mjs +62 -67
- package/esm2022/misc/lib/html/html.mjs +3 -3
- package/esm2022/misc/lib/intersect.mjs +6 -9
- package/esm2022/misc/lib/sampler.mjs +48 -42
- package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
- package/esm2022/performances/lib/adaptive-events.mjs +12 -16
- package/esm2022/performances/lib/detailed.mjs +14 -18
- package/esm2022/performances/lib/instances/instances.mjs +16 -22
- package/esm2022/performances/lib/points/points.mjs +19 -25
- package/esm2022/performances/lib/segments/segments.mjs +11 -14
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
- package/esm2022/staging/index.mjs +3 -2
- package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
- package/esm2022/staging/lib/backdrop.mjs +19 -23
- package/esm2022/staging/lib/bb-anchor.mjs +3 -3
- package/esm2022/staging/lib/bounds.mjs +39 -43
- package/esm2022/staging/lib/camera-shake.mjs +14 -18
- package/esm2022/staging/lib/caustics.mjs +24 -28
- package/esm2022/staging/lib/center.mjs +28 -32
- package/esm2022/staging/lib/contact-shadows.mjs +3 -3
- package/esm2022/staging/lib/environment/environment.mjs +338 -0
- package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
- package/esm2022/staging/lib/float.mjs +3 -3
- package/esm2022/staging/lib/lightformer.mjs +18 -22
- package/esm2022/staging/lib/mask.mjs +8 -12
- package/esm2022/staging/lib/matcap-texture.mjs +9 -11
- package/esm2022/staging/lib/normal-texture.mjs +9 -11
- package/esm2022/staging/lib/randomized-lights.mjs +9 -13
- package/esm2022/staging/lib/render-texture.mjs +19 -20
- package/esm2022/staging/lib/sky.mjs +3 -3
- package/esm2022/staging/lib/spot-light.mjs +32 -40
- package/esm2022/staging/lib/stage.mjs +13 -17
- package/esm2022/stats/lib/stats.mjs +21 -27
- package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +57 -64
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +141 -1470
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +2318 -0
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
- package/fesm2022/angular-three-soba-loaders.mjs +3 -3
- package/fesm2022/angular-three-soba-materials.mjs +52 -62
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +194 -195
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +90 -114
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +427 -430
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +20 -26
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/gizmos/README.md +3 -0
- package/gizmos/index.d.ts +5 -0
- package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +45 -0
- package/gizmos/lib/gizmo-helper/gizmo-viewcube.d.ts +74 -0
- package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +64 -0
- package/{controls → gizmos}/lib/pivot-controls/pivot-controls.d.ts +1 -1
- package/gizmos/lib/transform-controls.d.ts +50 -0
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +2 -2
- package/misc/lib/decal.d.ts +4 -4
- package/misc/lib/html/html-content.d.ts +6 -6
- package/misc/lib/html/html.d.ts +1 -1
- package/misc/lib/sampler.d.ts +1 -3
- package/package.json +14 -8
- package/performances/lib/instances/instances.d.ts +3 -3
- package/shaders/lib/mesh-refraction-material.d.ts +2 -5
- package/staging/index.d.ts +2 -1
- package/staging/lib/camera-shake.d.ts +0 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
- package/staging/lib/environment/inject-environment.d.ts +33 -0
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/mask.d.ts +1 -1
- package/staging/lib/matcap-texture.d.ts +0 -1
- package/staging/lib/normal-texture.d.ts +0 -1
- package/staging/lib/render-texture.d.ts +1 -1
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/stage.d.ts +3 -2
- package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +0 -263
- package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +0 -264
- package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +0 -340
- package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +0 -266
- package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +0 -232
- package/esm2022/staging/lib/environment.mjs +0 -481
- /package/{controls → gizmos}/lib/pivot-controls/axis-arrow.d.ts +0 -0
- /package/{controls → gizmos}/lib/pivot-controls/axis-rotator.d.ts +0 -0
- /package/{controls → gizmos}/lib/pivot-controls/plane-slider.d.ts +0 -0
- /package/{controls → gizmos}/lib/pivot-controls/scaling-sphere.d.ts +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, effect, inject, input, untracked, viewChild, } from '@angular/core';
|
|
2
2
|
import { getLocalState, injectBeforeRender, injectStore, NgtArgs, omit, pick, } from 'angular-three';
|
|
3
3
|
import { MeshRefractionMaterial } from 'angular-three-soba/shaders';
|
|
4
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
5
4
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
6
5
|
import { MeshBVH, MeshBVHUniformStruct, SAH } from 'three-mesh-bvh';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
@@ -29,7 +28,7 @@ export class NgtsMeshRefractionMaterial {
|
|
|
29
28
|
this.size = this.store.select('size');
|
|
30
29
|
this.resolution = computed(() => [this.size().width, this.size().height]);
|
|
31
30
|
this.defines = computed(() => {
|
|
32
|
-
const
|
|
31
|
+
const _defines = {};
|
|
33
32
|
const [envMap, aberrationStrength, fastChroma] = [
|
|
34
33
|
untracked(this.envMap),
|
|
35
34
|
this.aberrationStrength(),
|
|
@@ -43,16 +42,16 @@ export class NgtsMeshRefractionMaterial {
|
|
|
43
42
|
const width = 3 * Math.max(_cubeSize, 16 * 7);
|
|
44
43
|
const height = 4 * _cubeSize;
|
|
45
44
|
if (isCubeMap)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
_defines['ENVMAP_TYPE_CUBEM'] = '';
|
|
46
|
+
_defines['CUBEUV_TEXEL_WIDTH'] = `${1.0 / width}`;
|
|
47
|
+
_defines['CUBEUV_TEXEL_HEIGHT'] = `${1.0 / height}`;
|
|
48
|
+
_defines['CUBEUV_MAX_MIP'] = `${_lodMax}.0`;
|
|
50
49
|
// Add defines from chromatic aberration
|
|
51
50
|
if (aberrationStrength > 0)
|
|
52
|
-
|
|
51
|
+
_defines['CHROMATIC_ABERRATIONS'] = '';
|
|
53
52
|
if (fastChroma)
|
|
54
|
-
|
|
55
|
-
return
|
|
53
|
+
_defines['FAST_CHROMA'] = '';
|
|
54
|
+
return _defines;
|
|
56
55
|
});
|
|
57
56
|
this.defineKeys = computed(() => {
|
|
58
57
|
return Object.keys(this.defines()).join(' ');
|
|
@@ -68,22 +67,19 @@ export class NgtsMeshRefractionMaterial {
|
|
|
68
67
|
this.defineKeys();
|
|
69
68
|
return new MeshRefractionMaterial();
|
|
70
69
|
});
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
material.bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { strategy: SAH }));
|
|
85
|
-
}
|
|
86
|
-
});
|
|
70
|
+
effect(() => {
|
|
71
|
+
const material = this.materialRef()?.nativeElement;
|
|
72
|
+
if (!material)
|
|
73
|
+
return;
|
|
74
|
+
const localState = getLocalState(material);
|
|
75
|
+
if (!localState)
|
|
76
|
+
return;
|
|
77
|
+
const parent = untracked(localState.parent);
|
|
78
|
+
const geometry = parent.geometry;
|
|
79
|
+
if (geometry) {
|
|
80
|
+
material.bvh = new MeshBVHUniformStruct();
|
|
81
|
+
material.bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { strategy: SAH }));
|
|
82
|
+
}
|
|
87
83
|
});
|
|
88
84
|
injectBeforeRender(({ camera }) => {
|
|
89
85
|
const material = this.materialRef()?.nativeElement;
|
|
@@ -101,8 +97,8 @@ export class NgtsMeshRefractionMaterial {
|
|
|
101
97
|
}
|
|
102
98
|
});
|
|
103
99
|
}
|
|
104
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
105
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
100
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshRefractionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
101
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsMeshRefractionMaterial, isStandalone: true, selector: "ngts-mesh-refraction-material", inputs: { envMap: { classPropertyName: "envMap", publicName: "envMap", isSignal: true, isRequired: true, transformFunction: null }, attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
106
102
|
<ngt-primitive
|
|
107
103
|
*args="[material()]"
|
|
108
104
|
#material
|
|
@@ -117,7 +113,7 @@ export class NgtsMeshRefractionMaterial {
|
|
|
117
113
|
</ngt-primitive>
|
|
118
114
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
119
115
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshRefractionMaterial, decorators: [{
|
|
121
117
|
type: Component,
|
|
122
118
|
args: [{
|
|
123
119
|
selector: 'ngts-mesh-refraction-material',
|
|
@@ -141,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
141
137
|
imports: [NgtArgs],
|
|
142
138
|
}]
|
|
143
139
|
}], ctorParameters: () => [] });
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21hdGVyaWFscy9zcmMvbGliL21lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFdBQVcsRUFFWCxPQUFPLEVBR1AsSUFBSSxFQUNKLElBQUksR0FDSixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFpQnBFLE1BQU0sY0FBYyxHQUFzQztJQUN6RCxPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxHQUFHO0lBQ1IsT0FBTyxFQUFFLENBQUM7SUFDVixrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLEtBQUssRUFBRSxPQUFPO0lBQ2QsVUFBVSxFQUFFLElBQUk7Q0FDaEIsQ0FBQztBQUVGLFNBQVMsYUFBYSxDQUFDLEdBQTBCO0lBQ2hELE9BQU8sR0FBRyxJQUFLLEdBQW1CLENBQUMsYUFBYSxDQUFDO0FBQ2xELENBQUM7QUF1QkQsTUFBTSxPQUFPLDBCQUEwQjtJQTZEdEM7UUE1REEsV0FBTSxHQUFHLEtBQUssQ0FBQyxR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RUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERlc3Ryb3lSZWYsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHVudHJhY2tlZCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGdldExvY2FsU3RhdGUsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0U3RvcmUsXG5cdE5ndEFueVJlY29yZCxcblx0Tmd0QXJncyxcblx0Tmd0QXR0YWNoYWJsZSxcblx0Tmd0U2hhZGVyTWF0ZXJpYWwsXG5cdG9taXQsXG5cdHBpY2ssXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTWVzaFJlZnJhY3Rpb25NYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IENvbG9yUmVwcmVzZW50YXRpb24sIEN1YmVUZXh0dXJlLCBNZXNoLCBUZXh0dXJlIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTWVzaEJWSCwgTWVzaEJWSFVuaWZvcm1TdHJ1Y3QsIFNBSCB9IGZyb20gJ3RocmVlLW1lc2gtYnZoJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzTWVzaFJlZnJhY3Rpb25NYXRlcmlhbE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndFNoYWRlck1hdGVyaWFsPiB7XG5cdC8qKiBOdW1iZXIgb2YgcmF5LWNhc3QgYm91bmNlcywgaXQgY2FuIGJlIGV4cGVuc2l2ZSB0byBoYXZlIHRvbyBtYW55LCAyICovXG5cdGJvdW5jZXM6IG51bWJlcjtcblx0LyoqIFJlZnJhY3Rpb24gaW5kZXgsIDIuNCAqL1xuXHRpb3I6IG51bWJlcjtcblx0LyoqIEZyZXNuZWwgKHN0cmlwIGxpZ2h0KSwgMCAqL1xuXHRmcmVzbmVsOiBudW1iZXI7XG5cdC8qKiBSR0Igc2hpZnQgaW50ZW5zaXR5LCBjYW4gYmUgZXhwZW5zaXZlLCAwICovXG5cdGFiZXJyYXRpb25TdHJlbmd0aDogbnVtYmVyO1xuXHQvKiogQ29sb3IsIHdoaXRlICovXG5cdGNvbG9yOiBDb2xvclJlcHJlc2VudGF0aW9uO1xuXHQvKiogSWYgdGhpcyBpcyBvbiBpdCB1c2VzIGZld2VyIHJheSBjYXN0cyBmb3IgdGhlIFJHQiBzaGlmdCBzYWNyaWZpY2luZyBwaHlzaWNhbCBhY2N1cmFjeSwgdHJ1ZSAqL1xuXHRmYXN0Q2hyb21hOiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c01lc2hSZWZyYWN0aW9uTWF0ZXJpYWxPcHRpb25zID0ge1xuXHRib3VuY2VzOiAyLFxuXHRpb3I6IDIuNCxcblx0ZnJlc25lbDogMCxcblx0YWJlcnJhdGlvblN0cmVuZ3RoOiAwLFxuXHRjb2xvcjogJ3doaXRlJyxcblx0ZmFzdENocm9tYTogdHJ1ZSxcbn07XG5cbmZ1bmN0aW9uIGlzQ3ViZVRleHR1cmUoZGVmOiBDdWJlVGV4dHVyZSB8IFRleHR1cmUpOiBkZWYgaXMgQ3ViZVRleHR1cmUge1xuXHRyZXR1cm4gZGVmICYmIChkZWYgYXMgQ3ViZVRleHR1cmUpLmlzQ3ViZVRleHR1cmU7XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZVxuXHRcdFx0KmFyZ3M9XCJbbWF0ZXJpYWwoKV1cIlxuXHRcdFx0I21hdGVyaWFsXG5cdFx0XHRbYXR0YWNoXT1cImF0dGFjaCgpXCJcblx0XHRcdFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiXG5cdFx0XHRbZW52TWFwXT1cImVudk1hcCgpXCJcblx0XHRcdFthYmVycmF0aW9uU3RyZW5ndGhdPVwiYWJlcnJhdGlvblN0cmVuZ3RoKClcIlxuXHRcdFx0W3Jlc29sdXRpb25dPVwicmVzb2x1dGlvbigpXCJcblx0XHRcdFtkZWZpbmVzXT1cImRlZmluZXMoKVwiXG5cdFx0PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wcmltaXRpdmU+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c01lc2hSZWZyYWN0aW9uTWF0ZXJpYWwge1xuXHRlbnZNYXAgPSBpbnB1dC5yZXF1aXJlZDxDdWJlVGV4dHVyZSB8IFRleHR1cmU+KCk7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydmYXN0Q2hyb21hJywgJ2FiZXJyYXRpb25TdHJlbmd0aCddKTtcblxuXHRwcml2YXRlIGZhc3RDaHJvbWEgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Zhc3RDaHJvbWEnKTtcblx0YWJlcnJhdGlvblN0cmVuZ3RoID0gcGljayh0aGlzLm9wdGlvbnMsICdhYmVycmF0aW9uU3RyZW5ndGgnKTtcblxuXHRtYXRlcmlhbFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEluc3RhbmNlVHlwZTx0eXBlb2YgTWVzaFJlZnJhY3Rpb25NYXRlcmlhbD4+PignbWF0ZXJpYWwnKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRyZXNvbHV0aW9uID0gY29tcHV0ZWQoKCkgPT4gW3RoaXMuc2l6ZSgpLndpZHRoLCB0aGlzLnNpemUoKS5oZWlnaHRdKTtcblx0ZGVmaW5lcyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCB0ZW1wID0ge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblx0XHRjb25zdCBbZW52TWFwLCBhYmVycmF0aW9uU3RyZW5ndGgsIGZhc3RDaHJvbWFdID0gW1xuXHRcdFx0dW50cmFja2VkKHRoaXMuZW52TWFwKSxcblx0XHRcdHRoaXMuYWJlcnJhdGlvblN0cmVuZ3RoKCksXG5cdFx0XHR0aGlzLmZhc3RDaHJvbWEoKSxcblx0XHRdO1xuXHRcdGNvbnN0IGlzQ3ViZU1hcCA9IGlzQ3ViZVRleHR1cmUoZW52TWFwKTtcblxuXHRcdGNvbnN0IHcgPSAoaXNDdWJlTWFwID8gZW52TWFwLmltYWdlWzBdPy53aWR0aCA6IGVudk1hcC5pbWFnZS53aWR0aCkgPz8gMTAyNDtcblx0XHRjb25zdCBjdWJlU2l6ZSA9IHcgLyA0O1xuXHRcdGNvbnN0IF9sb2RNYXggPSBNYXRoLmZsb29yKE1hdGgubG9nMihjdWJlU2l6ZSkpO1xuXHRcdGNvbnN0IF9jdWJlU2l6ZSA9IE1hdGgucG93KDIsIF9sb2RNYXgpO1xuXHRcdGNvbnN0IHdpZHRoID0gMyAqIE1hdGgubWF4KF9jdWJlU2l6ZSwgMTYgKiA3KTtcblx0XHRjb25zdCBoZWlnaHQgPSA0ICogX2N1YmVTaXplO1xuXG5cdFx0aWYgKGlzQ3ViZU1hcCkgdGVtcFsnRU5WTUFQX1RZUEVfQ1VCRU0nXSA9ICcnO1xuXHRcdHRlbXBbJ0NVQkVVVl9URVhFTF9XSURUSCddID0gYCR7MS4wIC8gd2lkdGh9YDtcblx0XHR0ZW1wWydDVUJFVVZfVEVYRUxfSEVJR0hUJ10gPSBgJHsxLjAgLyBoZWlnaHR9YDtcblx0XHR0ZW1wWydDVUJFVVZfTUFYX01JUCddID0gYCR7X2xvZE1heH0uMGA7XG5cblx0XHQvLyBBZGQgZGVmaW5lcyBmcm9tIGNocm9tYXRpYyBhYmVycmF0aW9uXG5cdFx0aWYgKGFiZXJyYXRpb25TdHJlbmd0aCA+IDApIHRlbXBbJ0NIUk9NQVRJQ19BQkVSUkFUSU9OUyddID0gJyc7XG5cdFx0aWYgKGZhc3RDaHJvbWEpIHRlbXBbJ0ZBU1RfQ0hST01BJ10gPSAnJztcblxuXHRcdHJldHVybiB0ZW1wO1xuXHR9KTtcblxuXHRwcml2YXRlIGRlZmluZUtleXMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZGVmaW5lcygpKS5qb2luKCcgJyk7XG5cdH0pO1xuXG5cdG1hdGVyaWFsID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHByZXZNYXRlcmlhbCA9IHVudHJhY2tlZCh0aGlzLm1hdGVyaWFsUmVmKT8ubmF0aXZlRWxlbWVudDtcblxuXHRcdGlmIChwcmV2TWF0ZXJpYWwpIHtcblx0XHRcdHByZXZNYXRlcmlhbC5kaXNwb3NlKCk7XG5cdFx0XHRkZWxldGUgKHByZXZNYXRlcmlhbCBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHRkZWxldGUgKHByZXZNYXRlcmlhbCBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9yZW5kZXJlcl9fJ107XG5cdFx0fVxuXG5cdFx0Ly8gdHJhY2sgYnkgdGhpcy5kZWZpbmVLZXlzXG5cdFx0dGhpcy5kZWZpbmVLZXlzKCk7XG5cdFx0cmV0dXJuIG5ldyBNZXNoUmVmcmFjdGlvbk1hdGVyaWFsKCk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoIW1hdGVyaWFsKSByZXR1cm47XG5cblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobWF0ZXJpYWwpO1xuXHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBwYXJlbnQgPSB1bnRyYWNrZWQobG9jYWxTdGF0ZS5wYXJlbnQpO1xuXHRcdFx0XHRjb25zdCBnZW9tZXRyeSA9IChwYXJlbnQgYXMgTWVzaCkuZ2VvbWV0cnk7XG5cdFx0XHRcdGlmIChnZW9tZXRyeSkge1xuXHRcdFx0XHRcdChtYXRlcmlhbCBhcyBhbnkpLmJ2aCA9IG5ldyBNZXNoQlZIVW5pZm9ybVN0cnVjdCgpO1xuXHRcdFx0XHRcdChtYXRlcmlhbCBhcyBhbnkpLmJ2aC51cGRhdGVGcm9tKG5ldyBNZXNoQlZIKGdlb21ldHJ5LmNsb25lKCkudG9Ob25JbmRleGVkKCksIHsgc3RyYXRlZ3k6IFNBSCB9KSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYSB9KSA9PiB7XG5cdFx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmIChtYXRlcmlhbCkge1xuXHRcdFx0XHQobWF0ZXJpYWwgYXMgYW55KS52aWV3TWF0cml4SW52ZXJzZSA9IGNhbWVyYS5tYXRyaXhXb3JsZDtcblx0XHRcdFx0KG1hdGVyaWFsIGFzIGFueSkucHJvamVjdGlvbk1hdHJpeEludmVyc2UgPSBjYW1lcmEucHJvamVjdGlvbk1hdHJpeEludmVyc2U7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKG1hdGVyaWFsKSB7XG5cdFx0XHRcdG1hdGVyaWFsLmRpc3Bvc2UoKTtcblx0XHRcdFx0ZGVsZXRlIChtYXRlcmlhbCBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHRcdGRlbGV0ZSAobWF0ZXJpYWwgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfcmVuZGVyZXJfXyddO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21hdGVyaWFscy9zcmMvbGliL21lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixNQUFNLEVBRU4sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFdBQVcsRUFFWCxPQUFPLEVBR1AsSUFBSSxFQUNKLElBQUksR0FDSixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFpQnBFLE1BQU0sY0FBYyxHQUFzQztJQUN6RCxPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxHQUFHO0lBQ1IsT0FBTyxFQUFFLENBQUM7SUFDVixrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLEtBQUssRUFBRSxPQUFPO0lBQ2QsVUFBVSxFQUFFLElBQUk7Q0FDaEIsQ0FBQztBQUVGLFNBQVMsYUFBYSxDQUFDLEdBQTBCO0lBQ2hELE9BQU8sR0FBRyxJQUFLLEdBQW1CLENBQUMsYUFBYSxDQUFDO0FBQ2xELENBQUM7QUF1QkQsTUFBTSxPQUFPLDBCQUEwQjtJQTZEdEM7UUE1REEsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXlCLENBQUM7UUFDakQsV0FBTSxHQUFHLEtBQUssQ0FBZ0IsVUFB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ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERlc3Ryb3lSZWYsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Z2V0TG9jYWxTdGF0ZSxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3RTdG9yZSxcblx0Tmd0QW55UmVjb3JkLFxuXHROZ3RBcmdzLFxuXHROZ3RBdHRhY2hhYmxlLFxuXHROZ3RTaGFkZXJNYXRlcmlhbCxcblx0b21pdCxcblx0cGljayxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBNZXNoUmVmcmFjdGlvbk1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ29sb3JSZXByZXNlbnRhdGlvbiwgQ3ViZVRleHR1cmUsIE1lc2gsIFRleHR1cmUgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoQlZILCBNZXNoQlZIVW5pZm9ybVN0cnVjdCwgU0FIIH0gZnJvbSAndGhyZWUtbWVzaC1idmgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNNZXNoUmVmcmFjdGlvbk1hdGVyaWFsT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0U2hhZGVyTWF0ZXJpYWw+IHtcblx0LyoqIE51bWJlciBvZiByYXktY2FzdCBib3VuY2VzLCBpdCBjYW4gYmUgZXhwZW5zaXZlIHRvIGhhdmUgdG9vIG1hbnksIDIgKi9cblx0Ym91bmNlczogbnVtYmVyO1xuXHQvKiogUmVmcmFjdGlvbiBpbmRleCwgMi40ICovXG5cdGlvcjogbnVtYmVyO1xuXHQvKiogRnJlc25lbCAoc3RyaXAgbGlnaHQpLCAwICovXG5cdGZyZXNuZWw6IG51bWJlcjtcblx0LyoqIFJHQiBzaGlmdCBpbnRlbnNpdHksIGNhbiBiZSBleHBlbnNpdmUsIDAgKi9cblx0YWJlcnJhdGlvblN0cmVuZ3RoOiBudW1iZXI7XG5cdC8qKiBDb2xvciwgd2hpdGUgKi9cblx0Y29sb3I6IENvbG9yUmVwcmVzZW50YXRpb247XG5cdC8qKiBJZiB0aGlzIGlzIG9uIGl0IHVzZXMgZmV3ZXIgcmF5IGNhc3RzIGZvciB0aGUgUkdCIHNoaWZ0IHNhY3JpZmljaW5nIHBoeXNpY2FsIGFjY3VyYWN5LCB0cnVlICovXG5cdGZhc3RDaHJvbWE6IGJvb2xlYW47XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzTWVzaFJlZnJhY3Rpb25NYXRlcmlhbE9wdGlvbnMgPSB7XG5cdGJvdW5jZXM6IDIsXG5cdGlvcjogMi40LFxuXHRmcmVzbmVsOiAwLFxuXHRhYmVycmF0aW9uU3RyZW5ndGg6IDAsXG5cdGNvbG9yOiAnd2hpdGUnLFxuXHRmYXN0Q2hyb21hOiB0cnVlLFxufTtcblxuZnVuY3Rpb24gaXNDdWJlVGV4dHVyZShkZWY6IEN1YmVUZXh0dXJlIHwgVGV4dHVyZSk6IGRlZiBpcyBDdWJlVGV4dHVyZSB7XG5cdHJldHVybiBkZWYgJiYgKGRlZiBhcyBDdWJlVGV4dHVyZSkuaXNDdWJlVGV4dHVyZTtcbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlXG5cdFx0XHQqYXJncz1cIlttYXRlcmlhbCgpXVwiXG5cdFx0XHQjbWF0ZXJpYWxcblx0XHRcdFthdHRhY2hdPVwiYXR0YWNoKClcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHRcdFtlbnZNYXBdPVwiZW52TWFwKClcIlxuXHRcdFx0W2FiZXJyYXRpb25TdHJlbmd0aF09XCJhYmVycmF0aW9uU3RyZW5ndGgoKVwiXG5cdFx0XHRbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uKClcIlxuXHRcdFx0W2RlZmluZXNdPVwiZGVmaW5lcygpXCJcblx0XHQ+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTWVzaFJlZnJhY3Rpb25NYXRlcmlhbCB7XG5cdGVudk1hcCA9IGlucHV0LnJlcXVpcmVkPEN1YmVUZXh0dXJlIHwgVGV4dHVyZT4oKTtcblx0YXR0YWNoID0gaW5wdXQ8Tmd0QXR0YWNoYWJsZT4oJ21hdGVyaWFsJyk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2Zhc3RDaHJvbWEnLCAnYWJlcnJhdGlvblN0cmVuZ3RoJ10pO1xuXG5cdHByaXZhdGUgZmFzdENocm9tYSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZmFzdENocm9tYScpO1xuXHRhYmVycmF0aW9uU3RyZW5ndGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FiZXJyYXRpb25TdHJlbmd0aCcpO1xuXG5cdG1hdGVyaWFsUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SW5zdGFuY2VUeXBlPHR5cGVvZiBNZXNoUmVmcmFjdGlvbk1hdGVyaWFsPj4+KCdtYXRlcmlhbCcpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXG5cdHJlc29sdXRpb24gPSBjb21wdXRlZCgoKSA9PiBbdGhpcy5zaXplKCkud2lkdGgsIHRoaXMuc2l6ZSgpLmhlaWdodF0pO1xuXHRkZWZpbmVzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IF9kZWZpbmVzID0ge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblx0XHRjb25zdCBbZW52TWFwLCBhYmVycmF0aW9uU3RyZW5ndGgsIGZhc3RDaHJvbWFdID0gW1xuXHRcdFx0dW50cmFja2VkKHRoaXMuZW52TWFwKSxcblx0XHRcdHRoaXMuYWJlcnJhdGlvblN0cmVuZ3RoKCksXG5cdFx0XHR0aGlzLmZhc3RDaHJvbWEoKSxcblx0XHRdO1xuXHRcdGNvbnN0IGlzQ3ViZU1hcCA9IGlzQ3ViZVRleHR1cmUoZW52TWFwKTtcblxuXHRcdGNvbnN0IHcgPSAoaXNDdWJlTWFwID8gZW52TWFwLmltYWdlWzBdPy53aWR0aCA6IGVudk1hcC5pbWFnZS53aWR0aCkgPz8gMTAyNDtcblx0XHRjb25zdCBjdWJlU2l6ZSA9IHcgLyA0O1xuXHRcdGNvbnN0IF9sb2RNYXggPSBNYXRoLmZsb29yKE1hdGgubG9nMihjdWJlU2l6ZSkpO1xuXHRcdGNvbnN0IF9jdWJlU2l6ZSA9IE1hdGgucG93KDIsIF9sb2RNYXgpO1xuXHRcdGNvbnN0IHdpZHRoID0gMyAqIE1hdGgubWF4KF9jdWJlU2l6ZSwgMTYgKiA3KTtcblx0XHRjb25zdCBoZWlnaHQgPSA0ICogX2N1YmVTaXplO1xuXG5cdFx0aWYgKGlzQ3ViZU1hcCkgX2RlZmluZXNbJ0VOVk1BUF9UWVBFX0NVQkVNJ10gPSAnJztcblx0XHRfZGVmaW5lc1snQ1VCRVVWX1RFWEVMX1dJRFRIJ10gPSBgJHsxLjAgLyB3aWR0aH1gO1xuXHRcdF9kZWZpbmVzWydDVUJFVVZfVEVYRUxfSEVJR0hUJ10gPSBgJHsxLjAgLyBoZWlnaHR9YDtcblx0XHRfZGVmaW5lc1snQ1VCRVVWX01BWF9NSVAnXSA9IGAke19sb2RNYXh9LjBgO1xuXG5cdFx0Ly8gQWRkIGRlZmluZXMgZnJvbSBjaHJvbWF0aWMgYWJlcnJhdGlvblxuXHRcdGlmIChhYmVycmF0aW9uU3RyZW5ndGggPiAwKSBfZGVmaW5lc1snQ0hST01BVElDX0FCRVJSQVRJT05TJ10gPSAnJztcblx0XHRpZiAoZmFzdENocm9tYSkgX2RlZmluZXNbJ0ZBU1RfQ0hST01BJ10gPSAnJztcblxuXHRcdHJldHVybiBfZGVmaW5lcztcblx0fSk7XG5cblx0cHJpdmF0ZSBkZWZpbmVLZXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRlZmluZXMoKSkuam9pbignICcpO1xuXHR9KTtcblxuXHRtYXRlcmlhbCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBwcmV2TWF0ZXJpYWwgPSB1bnRyYWNrZWQodGhpcy5tYXRlcmlhbFJlZik/Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRpZiAocHJldk1hdGVyaWFsKSB7XG5cdFx0XHRwcmV2TWF0ZXJpYWwuZGlzcG9zZSgpO1xuXHRcdFx0ZGVsZXRlIChwcmV2TWF0ZXJpYWwgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddO1xuXHRcdFx0ZGVsZXRlIChwcmV2TWF0ZXJpYWwgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfcmVuZGVyZXJfXyddO1xuXHRcdH1cblxuXHRcdC8vIHRyYWNrIGJ5IHRoaXMuZGVmaW5lS2V5c1xuXHRcdHRoaXMuZGVmaW5lS2V5cygpO1xuXHRcdHJldHVybiBuZXcgTWVzaFJlZnJhY3Rpb25NYXRlcmlhbCgpO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIW1hdGVyaWFsKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKG1hdGVyaWFsKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBwYXJlbnQgPSB1bnRyYWNrZWQobG9jYWxTdGF0ZS5wYXJlbnQpO1xuXHRcdFx0Y29uc3QgZ2VvbWV0cnkgPSAocGFyZW50IGFzIE1lc2gpLmdlb21ldHJ5O1xuXHRcdFx0aWYgKGdlb21ldHJ5KSB7XG5cdFx0XHRcdChtYXRlcmlhbCBhcyBhbnkpLmJ2aCA9IG5ldyBNZXNoQlZIVW5pZm9ybVN0cnVjdCgpO1xuXHRcdFx0XHQobWF0ZXJpYWwgYXMgYW55KS5idmgudXBkYXRlRnJvbShuZXcgTWVzaEJWSChnZW9tZXRyeS5jbG9uZSgpLnRvTm9uSW5kZXhlZCgpLCB7IHN0cmF0ZWd5OiBTQUggfSkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYSB9KSA9PiB7XG5cdFx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmIChtYXRlcmlhbCkge1xuXHRcdFx0XHQobWF0ZXJpYWwgYXMgYW55KS52aWV3TWF0cml4SW52ZXJzZSA9IGNhbWVyYS5tYXRyaXhXb3JsZDtcblx0XHRcdFx0KG1hdGVyaWFsIGFzIGFueSkucHJvamVjdGlvbk1hdHJpeEludmVyc2UgPSBjYW1lcmEucHJvamVjdGlvbk1hdHJpeEludmVyc2U7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKG1hdGVyaWFsKSB7XG5cdFx0XHRcdG1hdGVyaWFsLmRpc3Bvc2UoKTtcblx0XHRcdFx0ZGVsZXRlIChtYXRlcmlhbCBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHRcdGRlbGV0ZSAobWF0ZXJpYWwgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfcmVuZGVyZXJfXyddO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -141,8 +141,8 @@ export class NgtsMeshTransmissionMaterial {
|
|
|
141
141
|
}
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
145
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshTransmissionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsMeshTransmissionMaterial, isStandalone: true, selector: "ngts-mesh-transmission-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
146
146
|
<ngt-primitive
|
|
147
147
|
*args="[material()]"
|
|
148
148
|
#material
|
|
@@ -159,7 +159,7 @@ export class NgtsMeshTransmissionMaterial {
|
|
|
159
159
|
</ngt-primitive>
|
|
160
160
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
161
161
|
}
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshTransmissionMaterial, decorators: [{
|
|
163
163
|
type: Component,
|
|
164
164
|
args: [{
|
|
165
165
|
selector: 'ngts-mesh-transmission-material',
|
|
@@ -17,14 +17,14 @@ export class NgtsMeshWobbleMaterial {
|
|
|
17
17
|
material.time = clock.elapsedTime * this.options().speed;
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
22
22
|
<ngt-primitive *args="[material]" [parameters]="parameters()" [attach]="attach()">
|
|
23
23
|
<ng-content />
|
|
24
24
|
</ngt-primitive>
|
|
25
25
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26
26
|
}
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
|
|
28
28
|
type: Component,
|
|
29
29
|
args: [{
|
|
30
30
|
selector: 'ngts-mesh-wobble-material',
|
|
@@ -8,14 +8,14 @@ export class NgtsPointMaterial {
|
|
|
8
8
|
this.options = input({});
|
|
9
9
|
this.material = new PointMaterial(this.options());
|
|
10
10
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: NgtsPointMaterial, isStandalone: true, selector: "ngts-point-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
13
13
|
<ngt-primitive *args="[material]" [attach]="attach()" [parameters]="options()">
|
|
14
14
|
<ng-content />
|
|
15
15
|
</ngt-primitive>
|
|
16
16
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointMaterial, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
20
|
args: [{
|
|
21
21
|
selector: 'ngts-point-material',
|
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
1
|
+
import { Directive, effect } from '@angular/core';
|
|
2
2
|
import { injectStore } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
export class NgtsBakeShadows {
|
|
6
5
|
constructor() {
|
|
7
|
-
const autoEffect = injectAutoEffect();
|
|
8
6
|
const store = injectStore();
|
|
9
7
|
const gl = store.select('gl');
|
|
10
|
-
|
|
8
|
+
effect((onCleanup) => {
|
|
11
9
|
const _gl = gl();
|
|
12
10
|
_gl.shadowMap.autoUpdate = false;
|
|
13
11
|
_gl.shadowMap.needsUpdate = true;
|
|
14
|
-
|
|
12
|
+
onCleanup(() => {
|
|
15
13
|
_gl.shadowMap.autoUpdate = _gl.shadowMap.needsUpdate = true;
|
|
16
|
-
};
|
|
14
|
+
});
|
|
17
15
|
});
|
|
18
16
|
}
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
20
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsBakeShadows, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
18
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", ngImport: i0 }); }
|
|
21
19
|
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsBakeShadows, decorators: [{
|
|
23
21
|
type: Directive,
|
|
24
22
|
args: [{ standalone: true, selector: 'ngts-bake-shadows' }]
|
|
25
23
|
}], ctorParameters: () => [] });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFrZS1zaGFkb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9iYWtlLXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLGVBQWU7SUFDM0I7UUFDQyxNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUNqQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDakMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBWlcsZUFBZTtrR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnbmd0cy1iYWtlLXNoYWRvd3MnIH0pXG5leHBvcnQgY2xhc3MgTmd0c0Jha2VTaGFkb3dzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IGdsID0gc3RvcmUuc2VsZWN0KCdnbCcpO1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBfZ2wgPSBnbCgpO1xuXHRcdFx0X2dsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gZmFsc2U7XG5cdFx0XHRfZ2wuc2hhZG93TWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdF9nbC5zaGFkb3dNYXAuYXV0b1VwZGF0ZSA9IF9nbC5zaGFkb3dNYXAubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component,
|
|
1
|
+
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, effect, input, viewChild, } from '@angular/core';
|
|
2
2
|
import { NgtArgs, getLocalState } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import { BufferAttribute } from 'three';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
/**
|
|
@@ -15,29 +14,26 @@ export class NgtsComputedAttribute {
|
|
|
15
14
|
this.options = input({});
|
|
16
15
|
this.bufferAttribute = new BufferAttribute(new Float32Array(0), 1);
|
|
17
16
|
this.attributeRef = viewChild('attribute');
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const attribute = this.compute()(geometry);
|
|
29
|
-
bufferAttribute.copy(attribute);
|
|
30
|
-
});
|
|
17
|
+
effect(() => {
|
|
18
|
+
const bufferAttribute = this.attributeRef()?.nativeElement;
|
|
19
|
+
if (!bufferAttribute)
|
|
20
|
+
return;
|
|
21
|
+
const localState = getLocalState(bufferAttribute);
|
|
22
|
+
if (!localState)
|
|
23
|
+
return;
|
|
24
|
+
const geometry = bufferAttribute.parent ?? localState.parent();
|
|
25
|
+
const attribute = this.compute()(geometry);
|
|
26
|
+
bufferAttribute.copy(attribute);
|
|
31
27
|
});
|
|
32
28
|
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsComputedAttribute, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsComputedAttribute, isStandalone: true, selector: "ngts-computed-attribute", inputs: { compute: { classPropertyName: "compute", publicName: "compute", isSignal: true, isRequired: true, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "attributeRef", first: true, predicate: ["attribute"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
35
31
|
<ngt-primitive #attribute *args="[bufferAttribute]" [attach]="['attributes', name()]" [parameters]="options()">
|
|
36
32
|
<ng-content />
|
|
37
33
|
</ngt-primitive>
|
|
38
34
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39
35
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsComputedAttribute, decorators: [{
|
|
41
37
|
type: Component,
|
|
42
38
|
args: [{
|
|
43
39
|
selector: 'ngts-computed-attribute',
|
|
@@ -52,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
52
48
|
imports: [NgtArgs],
|
|
53
49
|
}]
|
|
54
50
|
}], ctorParameters: () => [] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQtYXR0cmlidXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9jb21wdXRlZC1hdHRyaWJ1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQXNCLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLE9BQU8sQ0FBQzs7QUFjeEQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFRakM7UUFQQSxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBaUQsQ0FBQztRQUMxRSxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBaUMsQ0FBQyxDQUFDO1FBRW5ELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsaUJBQVksR0FBRyxTQUFTLENBQThCLFdBQVcsQ0FBQyxDQUFDO1FBR2xFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxDQUFDO1lBQzNELElBQUksQ0FBQyxlQUFlO2dCQUFFLE9BQU87WUFFN0IsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFFeEIsTUFBTSxRQUFRLEdBQUssZUFBdUIsQ0FBQyxNQUF5QixJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUU1RixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0MsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBckJXLHFCQUFxQjtrR0FBckIscUJBQXFCLHlrQkFkdkI7Ozs7RUFJVCw0REFHUyxPQUFPOzsyRkFPTCxxQkFBcUI7a0JBakJqQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRFbGVtZW50UmVmLFxuXHRlZmZlY3QsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QXJncywgTmd0QnVmZmVyQXR0cmlidXRlLCBnZXRMb2NhbFN0YXRlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5IH0gZnJvbSAndGhyZWUnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWNvbXB1dGVkLWF0dHJpYnV0ZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgI2F0dHJpYnV0ZSAqYXJncz1cIltidWZmZXJBdHRyaWJ1dGVdXCIgW2F0dGFjaF09XCJbJ2F0dHJpYnV0ZXMnLCBuYW1lKCldXCIgW3BhcmFtZXRlcnNdPVwib3B0aW9ucygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbi8qKlxuICogVXNlZCBleGNsdXNpdmVseSBhcyBhIGNoaWxkIG9mIGEgQnVmZmVyR2VvbWV0cnkuXG4gKiBDb21wdXRlcyB0aGUgQnVmZmVyQXR0cmlidXRlIGJ5IGNhbGxpbmcgdGhlIGBjb21wdXRlYCBmdW5jdGlvblxuICogYW5kIGF0dGFjaGVzIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGdlb21ldHJ5LlxuICovXG5leHBvcnQgY2xhc3MgTmd0c0NvbXB1dGVkQXR0cmlidXRlIHtcblx0Y29tcHV0ZSA9IGlucHV0LnJlcXVpcmVkPChnZW9tZXRyeTogQnVmZmVyR2VvbWV0cnkpID0+IEJ1ZmZlckF0dHJpYnV0ZT4oKTtcblx0bmFtZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIFBhcnRpYWw8Tmd0QnVmZmVyQXR0cmlidXRlPik7XG5cblx0YnVmZmVyQXR0cmlidXRlID0gbmV3IEJ1ZmZlckF0dHJpYnV0ZShuZXcgRmxvYXQzMkFycmF5KDApLCAxKTtcblx0YXR0cmlidXRlUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8QnVmZmVyQXR0cmlidXRlPj4oJ2F0dHJpYnV0ZScpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBidWZmZXJBdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZVJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFidWZmZXJBdHRyaWJ1dGUpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoYnVmZmVyQXR0cmlidXRlKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBnZW9tZXRyeSA9ICgoYnVmZmVyQXR0cmlidXRlIGFzIGFueSkucGFyZW50IGFzIEJ1ZmZlckdlb21ldHJ5KSA/PyBsb2NhbFN0YXRlLnBhcmVudCgpO1xuXG5cdFx0XHRjb25zdCBhdHRyaWJ1dGUgPSB0aGlzLmNvbXB1dGUoKShnZW9tZXRyeSk7XG5cdFx0XHRidWZmZXJBdHRyaWJ1dGUuY29weShhdHRyaWJ1dGUpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
|
|
2
2
|
import { applyProps, extend, getLocalState, omit, pick, resolveRef } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
4
|
import { AxesHelper, BoxGeometry, Euler, Mesh, MeshNormalMaterial, Object3D, Vector3 } from 'three';
|
|
6
5
|
import { DecalGeometry } from 'three-stdlib';
|
|
@@ -33,58 +32,62 @@ export class NgtsDecal {
|
|
|
33
32
|
this.rotation = pick(this.options, 'rotation');
|
|
34
33
|
this.scale = pick(this.options, 'scale');
|
|
35
34
|
extend({ Mesh, BoxGeometry, MeshNormalMaterial, AxesHelper });
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
35
|
+
effect((onCleanup) => {
|
|
36
|
+
const thisMesh = this.meshRef().nativeElement;
|
|
37
|
+
const localState = getLocalState(thisMesh);
|
|
38
|
+
if (!localState)
|
|
39
|
+
return;
|
|
40
|
+
const parent = resolveRef(this.mesh()) || localState.parent();
|
|
41
|
+
if (parent && !parent.isMesh) {
|
|
42
|
+
throw new Error('<ngts-decal> must have a Mesh as parent or specify its "mesh" input');
|
|
43
|
+
}
|
|
44
|
+
if (!parent)
|
|
45
|
+
return;
|
|
46
|
+
const parentLocalState = getLocalState(parent);
|
|
47
|
+
if (!parentLocalState)
|
|
48
|
+
return;
|
|
49
|
+
// track parent's children
|
|
50
|
+
const parentNonObjects = parentLocalState.nonObjects();
|
|
51
|
+
if (!parentNonObjects || !parentNonObjects.length) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// if parent geometry doesn't have its attributes populated properly, we skip
|
|
55
|
+
if (!parent.geometry?.attributes?.['position']) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const [position, rotation, scale] = [this.position(), this.rotation(), this.scale()];
|
|
59
|
+
const state = { position: new Vector3(), rotation: new Euler(), scale: new Vector3(1, 1, 1) };
|
|
60
|
+
applyProps(state, { position, scale });
|
|
61
|
+
// zero out the parents matrix world for this operation
|
|
62
|
+
const matrixWorld = parent.matrixWorld.clone();
|
|
63
|
+
parent.matrixWorld.identity();
|
|
64
|
+
if (!rotation || typeof rotation === 'number') {
|
|
65
|
+
const o = new Object3D();
|
|
66
|
+
o.position.copy(state.position);
|
|
67
|
+
o.lookAt(parent.position);
|
|
68
|
+
if (typeof rotation === 'number')
|
|
69
|
+
o.rotateZ(rotation);
|
|
70
|
+
applyProps(state, { rotation: o.rotation });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
applyProps(state, { rotation });
|
|
74
|
+
}
|
|
75
|
+
thisMesh.geometry = new DecalGeometry(parent, state.position, state.rotation, state.scale);
|
|
76
|
+
const helper = this.helperRef()?.nativeElement;
|
|
77
|
+
if (helper) {
|
|
78
|
+
applyProps(helper, state);
|
|
79
|
+
// Prevent the helpers from blocking rays
|
|
80
|
+
helper.traverse((child) => (child.raycast = () => null));
|
|
81
|
+
}
|
|
82
|
+
// Reset parents matrix-world
|
|
83
|
+
parent.matrixWorld = matrixWorld;
|
|
84
|
+
onCleanup(() => {
|
|
85
|
+
thisMesh.geometry.dispose();
|
|
83
86
|
});
|
|
84
87
|
});
|
|
85
88
|
}
|
|
86
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
87
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsDecal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsDecal, isStandalone: true, selector: "ngts-decal", inputs: { mesh: { classPropertyName: "mesh", publicName: "mesh", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "meshRef", first: true, predicate: ["mesh"], descendants: true, isSignal: true }, { propertyName: "helperRef", first: true, predicate: ["helper"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
88
91
|
<ngt-mesh #mesh [parameters]="parameters()">
|
|
89
92
|
<ngt-value [rawValue]="true" attach="material.transparent" />
|
|
90
93
|
<ngt-value [rawValue]="true" attach="material.polygonOffset" />
|
|
@@ -106,7 +109,7 @@ export class NgtsDecal {
|
|
|
106
109
|
</ngt-mesh>
|
|
107
110
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
108
111
|
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsDecal, decorators: [{
|
|
110
113
|
type: Component,
|
|
111
114
|
args: [{
|
|
112
115
|
selector: 'ngts-decal',
|
|
@@ -136,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
136
139
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
137
140
|
}]
|
|
138
141
|
}], ctorParameters: () => [] });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvbGliL2RlY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxzQkFBc0IsRUFFdEIsS0FBSyxFQUNMLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQVcsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFXLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVM3QyxNQUFNLGNBQWMsR0FBcUI7SUFDeEMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEtBQUssRUFBRSxLQUFLO0lBQ1osU0FBUyxFQUFFLEtBQUs7Q0FDaEIsQ0FBQztBQTZCRixNQUFNLE9BQU8sU0FBUztJQXdCckI7UUF2QkEsU0FBSSxHQUFHLEtBQUssRUFBa0MsQ0FBQztRQUMvQyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixPQUFPO1lBQ1AsS0FBSztZQUNMLFdBQVc7WUFDWCxxQkFBcUI7WUFDckIsVUFBVTtZQUNWLE9BQU87WUFDUCxVQUFVO1NBQ1YsQ0FBQyxDQUFDO1FBRUgsWUFBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQW1CLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELGNBQVMsR0FBRyxTQUFTLENBQW1CLFFBQVEsQ0FBQyxDQUFDO1FBRWxELFFBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUMsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUNoRSxVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUIsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLGFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxQyxVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFHM0MsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFFdEMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7Z0JBQzlDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFVBQVU7b0JBQUUsT0FBTztnQkFFeEIsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUUzQyxJQUFJLE1BQU0sSUFBSSxDQUFFLE1BQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO2dCQUN4RixDQUFDO2dCQUVELElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU87Z0JBRXBCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDckYsTUFBTSxLQUFLLEdBQUc7b0JBQ2IsUUFBUSxFQUFFLElBQUksT0FBTyxFQUFFO29CQUN2QixRQUFRLEVBQUUsSUFBSSxLQUFLLEVBQUU7b0JBQ3JCLEtBQUssRUFBRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDM0IsQ0FBQztnQkFFRixVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBRXZDLHVEQUF1RDtnQkFDdkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFFOUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDL0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDekIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNoQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDMUIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRO3dCQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3RELFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzdDLENBQUM7cUJBQU0sQ0FBQztvQkFDUCxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDakMsQ0FBQztnQkFFRCxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsYUFBYSxDQUFDO2dCQUMvQyxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNaLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzFCLHlDQUF5QztvQkFDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzFELENBQUM7Z0JBRUQsNkJBQTZCO2dCQUM3QixNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztnQkFFakMsT0FBTyxHQUFHLEVBQUU7b0JBQ1gsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBbEZXLFNBQVM7a0dBQVQsU0FBUyw0aEJBeEJYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW9CVDs7MkZBSVcsU0FBUztrQkEzQnJCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcywgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBOZ3RNZXNoLCBvbWl0LCBwaWNrLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBBeGVzSGVscGVyLCBCb3hHZW9tZXRyeSwgRXVsZXIsIE1lc2gsIE1lc2hOb3JtYWxNYXRlcmlhbCwgT2JqZWN0M0QsIFRleHR1cmUsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBEZWNhbEdlb21ldHJ5IH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzRGVjYWxPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RNZXNoPiB7XG5cdHBvbHlnb25PZmZzZXRGYWN0b3I6IG51bWJlcjtcblx0ZGVwdGhUZXN0OiBib29sZWFuO1xuXHRkZWJ1ZzogYm9vbGVhbjtcblx0bWFwPzogVGV4dHVyZSB8IG51bGw7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzRGVjYWxPcHRpb25zID0ge1xuXHRwb2x5Z29uT2Zmc2V0RmFjdG9yOiAtMTAsXG5cdGRlYnVnOiBmYWxzZSxcblx0ZGVwdGhUZXN0OiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtZGVjYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaCAjbWVzaCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInRydWVcIiBhdHRhY2g9XCJtYXRlcmlhbC50cmFuc3BhcmVudFwiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJ0cnVlXCIgYXR0YWNoPVwibWF0ZXJpYWwucG9seWdvbk9mZnNldFwiIC8+XG5cdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJtYXAoKVwiIGF0dGFjaD1cIm1hdGVyaWFsLm1hcFwiIC8+XG5cblx0XHRcdDxuZy1jb250ZW50PlxuXHRcdFx0XHQ8IS0tIHdlIG9ubHkgd2FudCB0byBwYXNzIHRocm91Z2ggdGhlc2UgbWF0ZXJpYWwgcHJvcGVydGllcyBpZiB0aGV5IGRvbid0IHVzZSBhIGN1c3RvbSBtYXRlcmlhbCAtLT5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwicG9seWdvbk9mZnNldEZhY3RvcigpXCIgYXR0YWNoPVwibWF0ZXJpYWwucG9seWdvbk9mZnNldEZhY3RvclwiIC8+XG5cdFx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cImRlcHRoVGVzdCgpXCIgYXR0YWNoPVwibWF0ZXJpYWwuZGVwdGhUZXN0XCIgLz5cblx0XHRcdDwvbmctY29udGVudD5cblxuXHRcdFx0QGlmIChkZWJ1ZygpKSB7XG5cdFx0XHRcdDxuZ3QtbWVzaCAjaGVscGVyPlxuXHRcdFx0XHRcdDxuZ3QtYm94LWdlb21ldHJ5IC8+XG5cdFx0XHRcdFx0PG5ndC1tZXNoLW5vcm1hbC1tYXRlcmlhbCBbd2lyZWZyYW1lXT1cInRydWVcIiAvPlxuXHRcdFx0XHRcdDxuZ3QtYXhlcy1oZWxwZXIgLz5cblx0XHRcdFx0PC9uZ3QtbWVzaD5cblx0XHRcdH1cblx0XHQ8L25ndC1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzRGVjYWwge1xuXHRtZXNoID0gaW5wdXQ8RWxlbWVudFJlZjxNZXNoPiB8IE1lc2ggfCBudWxsPigpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdkZWJ1ZycsXG5cdFx0J21hcCcsXG5cdFx0J2RlcHRoVGVzdCcsXG5cdFx0J3BvbHlnb25PZmZzZXRGYWN0b3InLFxuXHRcdCdwb3NpdGlvbicsXG5cdFx0J3NjYWxlJyxcblx0XHQncm90YXRpb24nLFxuXHRdKTtcblxuXHRtZXNoUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8TWVzaD4+KCdtZXNoJyk7XG5cdGhlbHBlclJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPE1lc2g+PignaGVscGVyJyk7XG5cblx0bWFwID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXAnKTtcblx0ZGVwdGhUZXN0ID0gcGljayh0aGlzLm9wdGlvbnMsICdkZXB0aFRlc3QnKTtcblx0cG9seWdvbk9mZnNldEZhY3RvciA9IHBpY2sodGhpcy5vcHRpb25zLCAncG9seWdvbk9mZnNldEZhY3RvcicpO1xuXHRkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0cHJpdmF0ZSBwb3NpdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncG9zaXRpb24nKTtcblx0cHJpdmF0ZSByb3RhdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncm90YXRpb24nKTtcblx0cHJpdmF0ZSBzY2FsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoLCBCb3hHZW9tZXRyeSwgTWVzaE5vcm1hbE1hdGVyaWFsLCBBeGVzSGVscGVyIH0pO1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRoaXNNZXNoID0gdGhpcy5tZXNoUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUodGhpc01lc2gpO1xuXHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBtZXNoID0gcmVzb2x2ZVJlZih0aGlzLm1lc2goKSk7XG5cdFx0XHRcdGNvbnN0IHBhcmVudCA9IG1lc2ggfHwgbG9jYWxTdGF0ZS5wYXJlbnQoKTtcblxuXHRcdFx0XHRpZiAocGFyZW50ICYmICEocGFyZW50IGFzIE1lc2gpLmlzTWVzaCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignPG5ndHMtZGVjYWw+IG11c3QgaGF2ZSBhIE1lc2ggYXMgcGFyZW50IG9yIHNwZWNpZnkgaXRzIFwibWVzaFwiIGlucHV0Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IFtwb3NpdGlvbiwgcm90YXRpb24sIHNjYWxlXSA9IFt0aGlzLnBvc2l0aW9uKCksIHRoaXMucm90YXRpb24oKSwgdGhpcy5zY2FsZSgpXTtcblx0XHRcdFx0Y29uc3Qgc3RhdGUgPSB7XG5cdFx0XHRcdFx0cG9zaXRpb246IG5ldyBWZWN0b3IzKCksXG5cdFx0XHRcdFx0cm90YXRpb246IG5ldyBFdWxlcigpLFxuXHRcdFx0XHRcdHNjYWxlOiBuZXcgVmVjdG9yMygxLCAxLCAxKSxcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRhcHBseVByb3BzKHN0YXRlLCB7IHBvc2l0aW9uLCBzY2FsZSB9KTtcblxuXHRcdFx0XHQvLyB6ZXJvIG91dCB0aGUgcGFyZW50cyBtYXRyaXggd29ybGQgZm9yIHRoaXMgb3BlcmF0aW9uXG5cdFx0XHRcdGNvbnN0IG1hdHJpeFdvcmxkID0gcGFyZW50Lm1hdHJpeFdvcmxkLmNsb25lKCk7XG5cdFx0XHRcdHBhcmVudC5tYXRyaXhXb3JsZC5pZGVudGl0eSgpO1xuXG5cdFx0XHRcdGlmICghcm90YXRpb24gfHwgdHlwZW9mIHJvdGF0aW9uID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdGNvbnN0IG8gPSBuZXcgT2JqZWN0M0QoKTtcblx0XHRcdFx0XHRvLnBvc2l0aW9uLmNvcHkoc3RhdGUucG9zaXRpb24pO1xuXHRcdFx0XHRcdG8ubG9va0F0KHBhcmVudC5wb3NpdGlvbik7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiByb3RhdGlvbiA9PT0gJ251bWJlcicpIG8ucm90YXRlWihyb3RhdGlvbik7XG5cdFx0XHRcdFx0YXBwbHlQcm9wcyhzdGF0ZSwgeyByb3RhdGlvbjogby5yb3RhdGlvbiB9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHBseVByb3BzKHN0YXRlLCB7IHJvdGF0aW9uIH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpc01lc2guZ2VvbWV0cnkgPSBuZXcgRGVjYWxHZW9tZXRyeShwYXJlbnQsIHN0YXRlLnBvc2l0aW9uLCBzdGF0ZS5yb3RhdGlvbiwgc3RhdGUuc2NhbGUpO1xuXHRcdFx0XHRjb25zdCBoZWxwZXIgPSB0aGlzLmhlbHBlclJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoaGVscGVyKSB7XG5cdFx0XHRcdFx0YXBwbHlQcm9wcyhoZWxwZXIsIHN0YXRlKTtcblx0XHRcdFx0XHQvLyBQcmV2ZW50IHRoZSBoZWxwZXJzIGZyb20gYmxvY2tpbmcgcmF5c1xuXHRcdFx0XHRcdGhlbHBlci50cmF2ZXJzZSgoY2hpbGQpID0+IChjaGlsZC5yYXljYXN0ID0gKCkgPT4gbnVsbCkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVzZXQgcGFyZW50cyBtYXRyaXgtd29ybGRcblx0XHRcdFx0cGFyZW50Lm1hdHJpeFdvcmxkID0gbWF0cml4V29ybGQ7XG5cblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHR0aGlzTWVzaC5nZW9tZXRyeS5kaXNwb3NlKCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWlzYy9zcmMvbGliL2RlY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHNCQUFzQixFQUN0QixNQUFNLEVBRU4sS0FBSyxFQUNMLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQVcsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFXLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVM3QyxNQUFNLGNBQWMsR0FBcUI7SUFDeEMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLEtBQUssRUFBRSxLQUFLO0lBQ1osU0FBUyxFQUFFLEtBQUs7Q0FDaEIsQ0FBQztBQTZCRixNQUFNLE9BQU8sU0FBUztJQXdCckI7UUF2QkEsU0FBSSxHQUFHLEtBQUssRUFBa0MsQ0FBQztRQUMvQyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixPQUFPO1lBQ1AsS0FBSztZQUNMLFdBQVc7WUFDWCxxQkFBcUI7WUFDckIsVUFBVTtZQUNWLE9BQU87WUFDUCxVQUFVO1NBQ1YsQ0FBQyxDQUFDO1FBRUgsWUFB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QztZQUM3QixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F4RlcsU0FBUztrR0FBVCxTQUFTLDRoQkF4Qlg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JUOzsyRkFJVyxTQUFTO2tCQTNCckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhcHBseVByb3BzLCBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndE1lc2gsIG9taXQsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEF4ZXNIZWxwZXIsIEJveEdlb21ldHJ5LCBFdWxlciwgTWVzaCwgTWVzaE5vcm1hbE1hdGVyaWFsLCBPYmplY3QzRCwgVGV4dHVyZSwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IERlY2FsR2VvbWV0cnkgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNEZWNhbE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndE1lc2g+IHtcblx0cG9seWdvbk9mZnNldEZhY3RvcjogbnVtYmVyO1xuXHRkZXB0aFRlc3Q6IGJvb2xlYW47XG5cdGRlYnVnOiBib29sZWFuO1xuXHRtYXA/OiBUZXh0dXJlIHwgbnVsbDtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNEZWNhbE9wdGlvbnMgPSB7XG5cdHBvbHlnb25PZmZzZXRGYWN0b3I6IC0xMCxcblx0ZGVidWc6IGZhbHNlLFxuXHRkZXB0aFRlc3Q6IGZhbHNlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1kZWNhbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoICNtZXNoIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwidHJ1ZVwiIGF0dGFjaD1cIm1hdGVyaWFsLnRyYW5zcGFyZW50XCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cInRydWVcIiBhdHRhY2g9XCJtYXRlcmlhbC5wb2x5Z29uT2Zmc2V0XCIgLz5cblx0XHRcdDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cIm1hcCgpXCIgYXR0YWNoPVwibWF0ZXJpYWwubWFwXCIgLz5cblxuXHRcdFx0PG5nLWNvbnRlbnQ+XG5cdFx0XHRcdDwhLS0gd2Ugb25seSB3YW50IHRvIHBhc3MgdGhyb3VnaCB0aGVzZSBtYXRlcmlhbCBwcm9wZXJ0aWVzIGlmIHRoZXkgZG9uJ3QgdXNlIGEgY3VzdG9tIG1hdGVyaWFsIC0tPlxuXHRcdFx0XHQ8bmd0LXZhbHVlIFtyYXdWYWx1ZV09XCJwb2x5Z29uT2Zmc2V0RmFjdG9yKClcIiBhdHRhY2g9XCJtYXRlcmlhbC5wb2x5Z29uT2Zmc2V0RmFjdG9yXCIgLz5cblx0XHRcdFx0PG5ndC12YWx1ZSBbcmF3VmFsdWVdPVwiZGVwdGhUZXN0KClcIiBhdHRhY2g9XCJtYXRlcmlhbC5kZXB0aFRlc3RcIiAvPlxuXHRcdFx0PC9uZy1jb250ZW50PlxuXG5cdFx0XHRAaWYgKGRlYnVnKCkpIHtcblx0XHRcdFx0PG5ndC1tZXNoICNoZWxwZXI+XG5cdFx0XHRcdFx0PG5ndC1ib3gtZ2VvbWV0cnkgLz5cblx0XHRcdFx0XHQ8bmd0LW1lc2gtbm9ybWFsLW1hdGVyaWFsIFt3aXJlZnJhbWVdPVwidHJ1ZVwiIC8+XG5cdFx0XHRcdFx0PG5ndC1heGVzLWhlbHBlciAvPlxuXHRcdFx0XHQ8L25ndC1tZXNoPlxuXHRcdFx0fVxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNEZWNhbCB7XG5cdG1lc2ggPSBpbnB1dDxFbGVtZW50UmVmPE1lc2g+IHwgTWVzaCB8IG51bGw+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J2RlYnVnJyxcblx0XHQnbWFwJyxcblx0XHQnZGVwdGhUZXN0Jyxcblx0XHQncG9seWdvbk9mZnNldEZhY3RvcicsXG5cdFx0J3Bvc2l0aW9uJyxcblx0XHQnc2NhbGUnLFxuXHRcdCdyb3RhdGlvbicsXG5cdF0pO1xuXG5cdG1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxNZXNoPj4oJ21lc2gnKTtcblx0aGVscGVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8TWVzaD4+KCdoZWxwZXInKTtcblxuXHRwcm90ZWN0ZWQgbWFwID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXAnKTtcblx0cHJvdGVjdGVkIGRlcHRoVGVzdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVwdGhUZXN0Jyk7XG5cdHByb3RlY3RlZCBwb2x5Z29uT2Zmc2V0RmFjdG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdwb2x5Z29uT2Zmc2V0RmFjdG9yJyk7XG5cdHByb3RlY3RlZCBkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0cHJpdmF0ZSBwb3NpdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncG9zaXRpb24nKTtcblx0cHJpdmF0ZSByb3RhdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncm90YXRpb24nKTtcblx0cHJpdmF0ZSBzY2FsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGUnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoLCBCb3hHZW9tZXRyeSwgTWVzaE5vcm1hbE1hdGVyaWFsLCBBeGVzSGVscGVyIH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IHRoaXNNZXNoID0gdGhpcy5tZXNoUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKHRoaXNNZXNoKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBwYXJlbnQgPSByZXNvbHZlUmVmKHRoaXMubWVzaCgpKSB8fCBsb2NhbFN0YXRlLnBhcmVudCgpO1xuXG5cdFx0XHRpZiAocGFyZW50ICYmICEocGFyZW50IGFzIE1lc2gpLmlzTWVzaCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJzxuZ3RzLWRlY2FsPiBtdXN0IGhhdmUgYSBNZXNoIGFzIHBhcmVudCBvciBzcGVjaWZ5IGl0cyBcIm1lc2hcIiBpbnB1dCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBwYXJlbnRMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShwYXJlbnQpO1xuXHRcdFx0aWYgKCFwYXJlbnRMb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdC8vIHRyYWNrIHBhcmVudCdzIGNoaWxkcmVuXG5cdFx0XHRjb25zdCBwYXJlbnROb25PYmplY3RzID0gcGFyZW50TG9jYWxTdGF0ZS5ub25PYmplY3RzKCk7XG5cdFx0XHRpZiAoIXBhcmVudE5vbk9iamVjdHMgfHwgIXBhcmVudE5vbk9iamVjdHMubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gaWYgcGFyZW50IGdlb21ldHJ5IGRvZXNuJ3QgaGF2ZSBpdHMgYXR0cmlidXRlcyBwb3B1bGF0ZWQgcHJvcGVybHksIHdlIHNraXBcblx0XHRcdGlmICghcGFyZW50Lmdlb21ldHJ5Py5hdHRyaWJ1dGVzPy5bJ3Bvc2l0aW9uJ10pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBbcG9zaXRpb24sIHJvdGF0aW9uLCBzY2FsZV0gPSBbdGhpcy5wb3NpdGlvbigpLCB0aGlzLnJvdGF0aW9uKCksIHRoaXMuc2NhbGUoKV07XG5cdFx0XHRjb25zdCBzdGF0ZSA9IHsgcG9zaXRpb246IG5ldyBWZWN0b3IzKCksIHJvdGF0aW9uOiBuZXcgRXVsZXIoKSwgc2NhbGU6IG5ldyBWZWN0b3IzKDEsIDEsIDEpIH07XG5cblx0XHRcdGFwcGx5UHJvcHMoc3RhdGUsIHsgcG9zaXRpb24sIHNjYWxlIH0pO1xuXG5cdFx0XHQvLyB6ZXJvIG91dCB0aGUgcGFyZW50cyBtYXRyaXggd29ybGQgZm9yIHRoaXMgb3BlcmF0aW9uXG5cdFx0XHRjb25zdCBtYXRyaXhXb3JsZCA9IHBhcmVudC5tYXRyaXhXb3JsZC5jbG9uZSgpO1xuXHRcdFx0cGFyZW50Lm1hdHJpeFdvcmxkLmlkZW50aXR5KCk7XG5cblx0XHRcdGlmICghcm90YXRpb24gfHwgdHlwZW9mIHJvdGF0aW9uID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjb25zdCBvID0gbmV3IE9iamVjdDNEKCk7XG5cdFx0XHRcdG8ucG9zaXRpb24uY29weShzdGF0ZS5wb3NpdGlvbik7XG5cdFx0XHRcdG8ubG9va0F0KHBhcmVudC5wb3NpdGlvbik7XG5cdFx0XHRcdGlmICh0eXBlb2Ygcm90YXRpb24gPT09ICdudW1iZXInKSBvLnJvdGF0ZVoocm90YXRpb24pO1xuXHRcdFx0XHRhcHBseVByb3BzKHN0YXRlLCB7IHJvdGF0aW9uOiBvLnJvdGF0aW9uIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YXBwbHlQcm9wcyhzdGF0ZSwgeyByb3RhdGlvbiB9KTtcblx0XHRcdH1cblxuXHRcdFx0dGhpc01lc2guZ2VvbWV0cnkgPSBuZXcgRGVjYWxHZW9tZXRyeShwYXJlbnQsIHN0YXRlLnBvc2l0aW9uLCBzdGF0ZS5yb3RhdGlvbiwgc3RhdGUuc2NhbGUpO1xuXHRcdFx0Y29uc3QgaGVscGVyID0gdGhpcy5oZWxwZXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmIChoZWxwZXIpIHtcblx0XHRcdFx0YXBwbHlQcm9wcyhoZWxwZXIsIHN0YXRlKTtcblx0XHRcdFx0Ly8gUHJldmVudCB0aGUgaGVscGVycyBmcm9tIGJsb2NraW5nIHJheXNcblx0XHRcdFx0aGVscGVyLnRyYXZlcnNlKChjaGlsZCkgPT4gKGNoaWxkLnJheWNhc3QgPSAoKSA9PiBudWxsKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlc2V0IHBhcmVudHMgbWF0cml4LXdvcmxkXG5cdFx0XHRwYXJlbnQubWF0cml4V29ybGQgPSBtYXRyaXhXb3JsZDtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0dGhpc01lc2guZ2VvbWV0cnkuZGlzcG9zZSgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|