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.
Files changed (151) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +139 -139
  2. package/abstractions/lib/edges.d.ts +164 -164
  3. package/abstractions/lib/grid.d.ts +39 -39
  4. package/abstractions/lib/line.d.ts +8 -7
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +3 -3
  7. package/abstractions/lib/text-3d.d.ts +46 -46
  8. package/abstractions/lib/text.d.ts +1 -2
  9. package/cameras/lib/cube-camera.d.ts +1 -1
  10. package/cameras/lib/orthographic-camera.d.ts +7 -8
  11. package/cameras/lib/perspective-camera.d.ts +2 -3
  12. package/controls/index.d.ts +9 -1
  13. package/controls/lib/camera-controls.d.ts +1 -1
  14. package/controls/lib/orbit-controls.d.ts +1 -1
  15. package/esm2022/abstractions/lib/billboard.mjs +3 -3
  16. package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
  17. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
  18. package/esm2022/abstractions/lib/edges.mjs +30 -34
  19. package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
  20. package/esm2022/abstractions/lib/grid.mjs +3 -3
  21. package/esm2022/abstractions/lib/helper.mjs +18 -20
  22. package/esm2022/abstractions/lib/line.mjs +25 -28
  23. package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
  24. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
  25. package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
  26. package/esm2022/abstractions/lib/text-3d.mjs +14 -17
  27. package/esm2022/abstractions/lib/text.mjs +11 -16
  28. package/esm2022/cameras/lib/camera-content.mjs +3 -3
  29. package/esm2022/cameras/lib/cube-camera.mjs +18 -27
  30. package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
  31. package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
  32. package/esm2022/controls/index.mjs +6 -2
  33. package/esm2022/controls/lib/camera-controls.mjs +3 -3
  34. package/esm2022/controls/lib/orbit-controls.mjs +3 -3
  35. package/esm2022/controls/lib/scroll-controls.mjs +124 -130
  36. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  37. package/esm2022/gizmos/index.mjs +6 -0
  38. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +187 -0
  39. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +304 -0
  40. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +332 -0
  41. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +265 -0
  42. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +264 -0
  43. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +337 -0
  44. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +266 -0
  45. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +232 -0
  46. package/esm2022/gizmos/lib/transform-controls.mjs +177 -0
  47. package/esm2022/loaders/lib/loader.mjs +3 -3
  48. package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
  49. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
  50. package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
  51. package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
  52. package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
  53. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
  54. package/esm2022/materials/lib/point-material.mjs +3 -3
  55. package/esm2022/misc/lib/bake-shadows.mjs +8 -10
  56. package/esm2022/misc/lib/computed-attribute.mjs +15 -19
  57. package/esm2022/misc/lib/decal.mjs +56 -53
  58. package/esm2022/misc/lib/fbo.mjs +10 -10
  59. package/esm2022/misc/lib/html/html-content.mjs +62 -67
  60. package/esm2022/misc/lib/html/html.mjs +3 -3
  61. package/esm2022/misc/lib/intersect.mjs +6 -9
  62. package/esm2022/misc/lib/sampler.mjs +48 -42
  63. package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
  64. package/esm2022/performances/lib/adaptive-events.mjs +12 -16
  65. package/esm2022/performances/lib/detailed.mjs +14 -18
  66. package/esm2022/performances/lib/instances/instances.mjs +16 -22
  67. package/esm2022/performances/lib/points/points.mjs +19 -25
  68. package/esm2022/performances/lib/segments/segments.mjs +11 -14
  69. package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
  70. package/esm2022/staging/index.mjs +3 -2
  71. package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
  72. package/esm2022/staging/lib/backdrop.mjs +19 -23
  73. package/esm2022/staging/lib/bb-anchor.mjs +3 -3
  74. package/esm2022/staging/lib/bounds.mjs +39 -43
  75. package/esm2022/staging/lib/camera-shake.mjs +14 -18
  76. package/esm2022/staging/lib/caustics.mjs +24 -28
  77. package/esm2022/staging/lib/center.mjs +28 -32
  78. package/esm2022/staging/lib/contact-shadows.mjs +3 -3
  79. package/esm2022/staging/lib/environment/environment.mjs +338 -0
  80. package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
  81. package/esm2022/staging/lib/float.mjs +3 -3
  82. package/esm2022/staging/lib/lightformer.mjs +18 -22
  83. package/esm2022/staging/lib/mask.mjs +8 -12
  84. package/esm2022/staging/lib/matcap-texture.mjs +9 -11
  85. package/esm2022/staging/lib/normal-texture.mjs +9 -11
  86. package/esm2022/staging/lib/randomized-lights.mjs +9 -13
  87. package/esm2022/staging/lib/render-texture.mjs +19 -20
  88. package/esm2022/staging/lib/sky.mjs +3 -3
  89. package/esm2022/staging/lib/spot-light.mjs +32 -40
  90. package/esm2022/staging/lib/stage.mjs +13 -17
  91. package/esm2022/stats/lib/stats.mjs +21 -27
  92. package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
  93. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-cameras.mjs +57 -64
  95. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-controls.mjs +141 -1470
  97. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  98. package/fesm2022/angular-three-soba-gizmos.mjs +2318 -0
  99. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  100. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  101. package/fesm2022/angular-three-soba-materials.mjs +52 -62
  102. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  103. package/fesm2022/angular-three-soba-misc.mjs +194 -195
  104. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  105. package/fesm2022/angular-three-soba-performances.mjs +90 -114
  106. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  107. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  108. package/fesm2022/angular-three-soba-staging.mjs +427 -430
  109. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  110. package/fesm2022/angular-three-soba-stats.mjs +20 -26
  111. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  112. package/gizmos/README.md +3 -0
  113. package/gizmos/index.d.ts +5 -0
  114. package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +45 -0
  115. package/gizmos/lib/gizmo-helper/gizmo-viewcube.d.ts +74 -0
  116. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +64 -0
  117. package/{controls → gizmos}/lib/pivot-controls/pivot-controls.d.ts +1 -1
  118. package/gizmos/lib/transform-controls.d.ts +50 -0
  119. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  120. package/misc/lib/computed-attribute.d.ts +2 -2
  121. package/misc/lib/decal.d.ts +4 -4
  122. package/misc/lib/html/html-content.d.ts +6 -6
  123. package/misc/lib/html/html.d.ts +1 -1
  124. package/misc/lib/sampler.d.ts +1 -3
  125. package/package.json +14 -8
  126. package/performances/lib/instances/instances.d.ts +3 -3
  127. package/shaders/lib/mesh-refraction-material.d.ts +2 -5
  128. package/staging/index.d.ts +2 -1
  129. package/staging/lib/camera-shake.d.ts +0 -1
  130. package/staging/lib/caustics.d.ts +1 -1
  131. package/staging/lib/center.d.ts +2 -2
  132. package/staging/lib/contact-shadows.d.ts +1 -1
  133. package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
  134. package/staging/lib/environment/inject-environment.d.ts +33 -0
  135. package/staging/lib/lightformer.d.ts +1 -1
  136. package/staging/lib/mask.d.ts +1 -1
  137. package/staging/lib/matcap-texture.d.ts +0 -1
  138. package/staging/lib/normal-texture.d.ts +0 -1
  139. package/staging/lib/render-texture.d.ts +1 -1
  140. package/staging/lib/sky.d.ts +1 -1
  141. package/staging/lib/stage.d.ts +3 -2
  142. package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +0 -263
  143. package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +0 -264
  144. package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +0 -340
  145. package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +0 -266
  146. package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +0 -232
  147. package/esm2022/staging/lib/environment.mjs +0 -481
  148. /package/{controls → gizmos}/lib/pivot-controls/axis-arrow.d.ts +0 -0
  149. /package/{controls → gizmos}/lib/pivot-controls/axis-rotator.d.ts +0 -0
  150. /package/{controls → gizmos}/lib/pivot-controls/plane-slider.d.ts +0 -0
  151. /package/{controls → gizmos}/lib/pivot-controls/scaling-sphere.d.ts +0 -0
@@ -0,0 +1,177 @@
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output, viewChild, } from '@angular/core';
2
+ import { extend, getLocalState, injectStore, NgtArgs, omit, pick, resolveRef, } from 'angular-three';
3
+ import { Group } from 'three';
4
+ import { TransformControls } from 'three-stdlib';
5
+ import * as i0 from "@angular/core";
6
+ export class NgtsTransformControls {
7
+ constructor() {
8
+ this.object = input(null);
9
+ this.options = input({});
10
+ this.parameters = omit(this.options, [
11
+ 'enabled',
12
+ 'axis',
13
+ 'mode',
14
+ 'translationSnap',
15
+ 'rotationSnap',
16
+ 'scaleSnap',
17
+ 'space',
18
+ 'size',
19
+ 'showX',
20
+ 'showY',
21
+ 'showZ',
22
+ 'domElement',
23
+ 'makeDefault',
24
+ 'camera',
25
+ ]);
26
+ this.controlsOptions = pick(this.options, [
27
+ 'enabled',
28
+ 'axis',
29
+ 'mode',
30
+ 'translationSnap',
31
+ 'rotationSnap',
32
+ 'scaleSnap',
33
+ 'space',
34
+ 'size',
35
+ 'showX',
36
+ 'showY',
37
+ 'showZ',
38
+ ]);
39
+ this.camera = pick(this.options, 'camera');
40
+ this.domElement = pick(this.options, 'domElement');
41
+ this.makeDefault = pick(this.options, 'makeDefault');
42
+ this.change = output();
43
+ this.mouseDown = output();
44
+ this.mouseUp = output();
45
+ this.objectChange = output();
46
+ this.groupRef = viewChild.required('group');
47
+ this.store = injectStore();
48
+ this.glDomElement = this.store.select('gl', 'domElement');
49
+ this.defaultCamera = this.store.select('camera');
50
+ this.events = this.store.select('events');
51
+ this.defaultControls = this.store.select('controls');
52
+ this.invalidate = this.store.select('invalidate');
53
+ this.controls = computed(() => {
54
+ let camera = this.camera();
55
+ if (!camera) {
56
+ camera = this.defaultCamera();
57
+ }
58
+ let domElement = this.domElement();
59
+ if (!domElement) {
60
+ domElement = this.events().connected || this.glDomElement();
61
+ }
62
+ return new TransformControls(camera, domElement);
63
+ });
64
+ extend({ Group });
65
+ effect((onCleanup) => {
66
+ const cleanup = this.attachControlsEffect();
67
+ onCleanup(() => cleanup?.());
68
+ });
69
+ effect((onCleanup) => {
70
+ const cleanup = this.disableDefaultControlsEffect();
71
+ onCleanup(() => cleanup?.());
72
+ });
73
+ effect((onCleanup) => {
74
+ const cleanup = this.setupControlsEventsEffect();
75
+ onCleanup(() => cleanup?.());
76
+ });
77
+ effect((onCleanup) => {
78
+ const cleanup = this.updateDefaultControlsEffect();
79
+ onCleanup(() => cleanup?.());
80
+ });
81
+ }
82
+ attachControlsEffect() {
83
+ const group = this.groupRef().nativeElement;
84
+ if (!group)
85
+ return;
86
+ const localState = getLocalState(group);
87
+ if (!localState)
88
+ return;
89
+ const [object, controls] = [resolveRef(this.object()), this.controls(), localState.objects()];
90
+ if (object) {
91
+ controls.attach(object);
92
+ }
93
+ else {
94
+ controls.attach(group);
95
+ }
96
+ return () => controls.detach();
97
+ }
98
+ disableDefaultControlsEffect() {
99
+ const defaultControls = this.defaultControls();
100
+ if (!defaultControls)
101
+ return;
102
+ const controls = this.controls();
103
+ const callback = (event) => {
104
+ defaultControls.enabled = !event.value;
105
+ };
106
+ // @ts-expect-error - three-stdlib types are not up-to-date
107
+ controls.addEventListener('dragging-changed', callback);
108
+ return () => {
109
+ // @ts-expect-error - three-stdlib types are not up-to-date
110
+ controls.removeEventListener('dragging-changed', callback);
111
+ };
112
+ }
113
+ setupControlsEventsEffect() {
114
+ const [controls, invalidate] = [this.controls(), this.invalidate()];
115
+ const onChange = (event) => {
116
+ invalidate();
117
+ if (!this.change['destroyed']) {
118
+ this.change.emit(event);
119
+ }
120
+ };
121
+ const onMouseDown = this.mouseDown.emit.bind(this.mouseDown);
122
+ const onMouseUp = this.mouseUp.emit.bind(this.mouseUp);
123
+ const onObjectChange = this.objectChange.emit.bind(this.objectChange);
124
+ // @ts-expect-error - three-stdlib types are not up-to-date
125
+ controls.addEventListener('change', onChange);
126
+ // @ts-expect-error - three-stdlib types are not up-to-date
127
+ controls.addEventListener('mouseDown', onMouseDown);
128
+ // @ts-expect-error - three-stdlib types are not up-to-date
129
+ controls.addEventListener('mouseUp', onMouseUp);
130
+ // @ts-expect-error - three-stdlib types are not up-to-date
131
+ controls.addEventListener('objectChange', onObjectChange);
132
+ return () => {
133
+ // @ts-expect-error - three-stdlib types are not up-to-date
134
+ controls.removeEventListener('change', onChange);
135
+ // @ts-expect-error - three-stdlib types are not up-to-date
136
+ controls.removeEventListener('mouseDown', onMouseDown);
137
+ // @ts-expect-error - three-stdlib types are not up-to-date
138
+ controls.removeEventListener('mouseUp', onMouseUp);
139
+ // @ts-expect-error - three-stdlib types are not up-to-date
140
+ controls.removeEventListener('objectChange', onObjectChange);
141
+ };
142
+ }
143
+ updateDefaultControlsEffect() {
144
+ const [controls, makeDefault] = [this.controls(), this.makeDefault()];
145
+ if (!makeDefault)
146
+ return;
147
+ const oldControls = this.store.snapshot.controls;
148
+ this.store.update({ controls });
149
+ return () => this.store.update(() => ({ controls: oldControls }));
150
+ }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsTransformControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsTransformControls, isStandalone: true, selector: "ngts-transform-controls", inputs: { object: { classPropertyName: "object", publicName: "object", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change", mouseDown: "mouseDown", mouseUp: "mouseUp", objectChange: "objectChange" }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
153
+ <ngt-primitive *args="[controls()]" [parameters]="controlsOptions()" />
154
+
155
+ <ngt-group #group [parameters]="parameters()">
156
+ <ng-content />
157
+ </ngt-group>
158
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
159
+ }
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsTransformControls, decorators: [{
161
+ type: Component,
162
+ args: [{
163
+ selector: 'ngts-transform-controls',
164
+ standalone: true,
165
+ template: `
166
+ <ngt-primitive *args="[controls()]" [parameters]="controlsOptions()" />
167
+
168
+ <ngt-group #group [parameters]="parameters()">
169
+ <ng-content />
170
+ </ngt-group>
171
+ `,
172
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
173
+ changeDetection: ChangeDetectionStrategy.OnPush,
174
+ imports: [NgtArgs],
175
+ }]
176
+ }], ctorParameters: () => [] });
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLWNvbnRyb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2dpem1vcy9zcmMvbGliL3RyYW5zZm9ybS1jb250cm9scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUdQLElBQUksRUFDSixJQUFJLEVBQ0osVUFBVSxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBVSxLQUFLLEVBQWlDLE1BQU0sT0FBTyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUF3Q2pELE1BQU0sT0FBTyxxQkFBcUI7SUFrRWpDO1FBakVBLFdBQU0sR0FBRyxLQUFLLENBQXFELElBQUksQ0FBQyxDQUFDO1FBQ3pFLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBMkMsQ0FBQyxDQUFDO1FBQzdELGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixTQUFTO1lBQ1QsTUFBTTtZQUNOLE1BQU07WUFDTixpQkFBaUI7WUFDakIsY0FBYztZQUNkLFdBQVc7WUFDWCxPQUFPO1lBQ1AsTUFBTTtZQUNOLE9BQU87WUFDUCxPQUFPO1lBQ1AsT0FBTztZQUNQLFlBQVk7WUFDWixhQUFhO1lBQ2IsUUFBUTtTQUNSLENBQUMsQ0FBQztRQUVPLG9CQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDOUMsU0FBUztZQUNULE1BQU07WUFDTixNQUFNO1lBQ04saUJBQWlCO1lBQ2pCLGNBQWM7WUFDZCxXQUFXO1lBQ1gs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Q0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdG91dHB1dCxcblx0U2lnbmFsLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRnZXRMb2NhbFN0YXRlLFxuXHRpbmplY3RTdG9yZSxcblx0Tmd0QXJncyxcblx0Tmd0R3JvdXAsXG5cdE5ndE9iamVjdDNETm9kZSxcblx0b21pdCxcblx0cGljayxcblx0cmVzb2x2ZVJlZixcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBDYW1lcmEsIEdyb3VwLCBPYmplY3QzRCwgRXZlbnQgYXMgVGhyZWVFdmVudCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFRyYW5zZm9ybUNvbnRyb2xzIH0gZnJvbSAndGhyZWUtc3RkbGliJztcblxuaW50ZXJmYWNlIENvbnRyb2xzUHJvdG8ge1xuXHRlbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBOZ3RzVHJhbnNmb3JtQ29udHJvbHNPYmplY3QgPSBOZ3RPYmplY3QzRE5vZGU8VHJhbnNmb3JtQ29udHJvbHMsIHR5cGVvZiBUcmFuc2Zvcm1Db250cm9scz47XG5cbmV4cG9ydCB0eXBlIE5ndHNUcmFuc2Zvcm1Db250cm9sc09wdGlvbnMgPSBQYXJ0aWFsPE5ndHNUcmFuc2Zvcm1Db250cm9sc09iamVjdD4gJlxuXHRQYXJ0aWFsPE5ndEdyb3VwPiAmIHtcblx0XHRlbmFibGVkPzogYm9vbGVhbjtcblx0XHRheGlzPzogc3RyaW5nIHwgbnVsbDtcblx0XHRkb21FbGVtZW50PzogSFRNTEVsZW1lbnQ7XG5cdFx0bW9kZT86ICd0cmFuc2xhdGUnIHwgJ3JvdGF0ZScgfCAnc2NhbGUnO1xuXHRcdHRyYW5zbGF0aW9uU25hcD86IG51bWJlciB8IG51bGw7XG5cdFx0cm90YXRpb25TbmFwPzogbnVtYmVyIHwgbnVsbDtcblx0XHRzY2FsZVNuYXA/OiBudW1iZXIgfCBudWxsO1xuXHRcdHNwYWNlPzogJ3dvcmxkJyB8ICdsb2NhbCc7XG5cdFx0c2l6ZT86IG51bWJlcjtcblx0XHRzaG93WD86IGJvb2xlYW47XG5cdFx0c2hvd1k/OiBib29sZWFuO1xuXHRcdHNob3daPzogYm9vbGVhbjtcblx0XHRjYW1lcmE/OiBDYW1lcmE7XG5cdFx0bWFrZURlZmF1bHQ/OiBib29sZWFuO1xuXHR9O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXRyYW5zZm9ybS1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbY29udHJvbHMoKV1cIiBbcGFyYW1ldGVyc109XCJjb250cm9sc09wdGlvbnMoKVwiIC8+XG5cblx0XHQ8bmd0LWdyb3VwICNncm91cCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1RyYW5zZm9ybUNvbnRyb2xzIHtcblx0b2JqZWN0ID0gaW5wdXQ8T2JqZWN0M0QgfCBFbGVtZW50UmVmPE9iamVjdDNEPiB8IHVuZGVmaW5lZCB8IG51bGw+KG51bGwpO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgUGFydGlhbDxOZ3RzVHJhbnNmb3JtQ29udHJvbHNPcHRpb25zPik7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdlbmFibGVkJyxcblx0XHQnYXhpcycsXG5cdFx0J21vZGUnLFxuXHRcdCd0cmFuc2xhdGlvblNuYXAnLFxuXHRcdCdyb3RhdGlvblNuYXAnLFxuXHRcdCdzY2FsZVNuYXAnLFxuXHRcdCdzcGFjZScsXG5cdFx0J3NpemUnLFxuXHRcdCdzaG93WCcsXG5cdFx0J3Nob3dZJyxcblx0XHQnc2hvd1onLFxuXHRcdCdkb21FbGVtZW50Jyxcblx0XHQnbWFrZURlZmF1bHQnLFxuXHRcdCdjYW1lcmEnLFxuXHRdKTtcblxuXHRwcm90ZWN0ZWQgY29udHJvbHNPcHRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsIFtcblx0XHQnZW5hYmxlZCcsXG5cdFx0J2F4aXMnLFxuXHRcdCdtb2RlJyxcblx0XHQndHJhbnNsYXRpb25TbmFwJyxcblx0XHQncm90YXRpb25TbmFwJyxcblx0XHQnc2NhbGVTbmFwJyxcblx0XHQnc3BhY2UnLFxuXHRcdCdzaXplJyxcblx0XHQnc2hvd1gnLFxuXHRcdCdzaG93WScsXG5cdFx0J3Nob3daJyxcblx0XSk7XG5cblx0cHJpdmF0ZSBjYW1lcmEgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NhbWVyYScpO1xuXHRwcml2YXRlIGRvbUVsZW1lbnQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2RvbUVsZW1lbnQnKTtcblx0cHJpdmF0ZSBtYWtlRGVmYXVsdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWFrZURlZmF1bHQnKTtcblxuXHRjaGFuZ2UgPSBvdXRwdXQ8VGhyZWVFdmVudD4oKTtcblx0bW91c2VEb3duID0gb3V0cHV0PFRocmVlRXZlbnQ+KCk7XG5cdG1vdXNlVXAgPSBvdXRwdXQ8VGhyZWVFdmVudD4oKTtcblx0b2JqZWN0Q2hhbmdlID0gb3V0cHV0PFRocmVlRXZlbnQ+KCk7XG5cblx0cHJpdmF0ZSBncm91cFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dyb3VwJyk7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgZ2xEb21FbGVtZW50ID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJywgJ2RvbUVsZW1lbnQnKTtcblx0cHJpdmF0ZSBkZWZhdWx0Q2FtZXJhID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2NhbWVyYScpO1xuXHRwcml2YXRlIGV2ZW50cyA9IHRoaXMuc3RvcmUuc2VsZWN0KCdldmVudHMnKTtcblx0cHJpdmF0ZSBkZWZhdWx0Q29udHJvbHMgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY29udHJvbHMnKSBhcyB1bmtub3duIGFzIFNpZ25hbDxDb250cm9sc1Byb3RvPjtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblxuXHRjb250cm9scyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRsZXQgY2FtZXJhID0gdGhpcy5jYW1lcmEoKTtcblx0XHRpZiAoIWNhbWVyYSkge1xuXHRcdFx0Y2FtZXJhID0gdGhpcy5kZWZhdWx0Q2FtZXJhKCk7XG5cdFx0fVxuXG5cdFx0bGV0IGRvbUVsZW1lbnQgPSB0aGlzLmRvbUVsZW1lbnQoKTtcblx0XHRpZiAoIWRvbUVsZW1lbnQpIHtcblx0XHRcdGRvbUVsZW1lbnQgPSB0aGlzLmV2ZW50cygpLmNvbm5lY3RlZCB8fCB0aGlzLmdsRG9tRWxlbWVudCgpO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgVHJhbnNmb3JtQ29udHJvbHMoY2FtZXJhLCBkb21FbGVtZW50KTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgR3JvdXAgfSk7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLmF0dGFjaENvbnRyb2xzRWZmZWN0KCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYW51cD8uKCkpO1xuXHRcdH0pO1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBjbGVhbnVwID0gdGhpcy5kaXNhYmxlRGVmYXVsdENvbnRyb2xzRWZmZWN0KCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYW51cD8uKCkpO1xuXHRcdH0pO1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBjbGVhbnVwID0gdGhpcy5zZXR1cENvbnRyb2xzRXZlbnRzRWZmZWN0KCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYW51cD8uKCkpO1xuXHRcdH0pO1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBjbGVhbnVwID0gdGhpcy51cGRhdGVEZWZhdWx0Q29udHJvbHNFZmZlY3QoKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwPy4oKSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGF0dGFjaENvbnRyb2xzRWZmZWN0KCkge1xuXHRcdGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKCFncm91cCkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZ3JvdXApO1xuXHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgW29iamVjdCwgY29udHJvbHNdID0gW3Jlc29sdmVSZWYodGhpcy5vYmplY3QoKSksIHRoaXMuY29udHJvbHMoKSwgbG9jYWxTdGF0ZS5vYmplY3RzKCldO1xuXHRcdGlmIChvYmplY3QpIHtcblx0XHRcdGNvbnRyb2xzLmF0dGFjaChvYmplY3QpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250cm9scy5hdHRhY2goZ3JvdXApO1xuXHRcdH1cblxuXHRcdHJldHVybiAoKSA9PiBjb250cm9scy5kZXRhY2goKTtcblx0fVxuXG5cdHByaXZhdGUgZGlzYWJsZURlZmF1bHRDb250cm9sc0VmZmVjdCgpIHtcblx0XHRjb25zdCBkZWZhdWx0Q29udHJvbHMgPSB0aGlzLmRlZmF1bHRDb250cm9scygpO1xuXHRcdGlmICghZGVmYXVsdENvbnRyb2xzKSByZXR1cm47XG5cblx0XHRjb25zdCBjb250cm9scyA9IHRoaXMuY29udHJvbHMoKTtcblx0XHRjb25zdCBjYWxsYmFjayA9IChldmVudDogYW55KSA9PiB7XG5cdFx0XHRkZWZhdWx0Q29udHJvbHMuZW5hYmxlZCA9ICFldmVudC52YWx1ZTtcblx0XHR9O1xuXG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIHRocmVlLXN0ZGxpYiB0eXBlcyBhcmUgbm90IHVwLXRvLWRhdGVcblx0XHRjb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdkcmFnZ2luZy1jaGFuZ2VkJywgY2FsbGJhY2spO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gdGhyZWUtc3RkbGliIHR5cGVzIGFyZSBub3QgdXAtdG8tZGF0ZVxuXHRcdFx0Y29udHJvbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2dpbmctY2hhbmdlZCcsIGNhbGxiYWNrKTtcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBzZXR1cENvbnRyb2xzRXZlbnRzRWZmZWN0KCkge1xuXHRcdGNvbnN0IFtjb250cm9scywgaW52YWxpZGF0ZV0gPSBbdGhpcy5jb250cm9scygpLCB0aGlzLmludmFsaWRhdGUoKV07XG5cdFx0Y29uc3Qgb25DaGFuZ2UgPSAoZXZlbnQ6IFRocmVlRXZlbnQpID0+IHtcblx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdGlmICghdGhpcy5jaGFuZ2VbJ2Rlc3Ryb3llZCddKSB7XG5cdFx0XHRcdHRoaXMuY2hhbmdlLmVtaXQoZXZlbnQpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3Qgb25Nb3VzZURvd24gPSB0aGlzLm1vdXNlRG93bi5lbWl0LmJpbmQodGhpcy5tb3VzZURvd24pO1xuXHRcdGNvbnN0IG9uTW91c2VVcCA9IHRoaXMubW91c2VVcC5lbWl0LmJpbmQodGhpcy5tb3VzZVVwKTtcblx0XHRjb25zdCBvbk9iamVjdENoYW5nZSA9IHRoaXMub2JqZWN0Q2hhbmdlLmVtaXQuYmluZCh0aGlzLm9iamVjdENoYW5nZSk7XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gdGhyZWUtc3RkbGliIHR5cGVzIGFyZSBub3QgdXAtdG8tZGF0ZVxuXHRcdGNvbnRyb2xzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIG9uQ2hhbmdlKTtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gdGhyZWUtc3RkbGliIHR5cGVzIGFyZSBub3QgdXAtdG8tZGF0ZVxuXHRcdGNvbnRyb2xzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlRG93bicsIG9uTW91c2VEb3duKTtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gdGhyZWUtc3RkbGliIHR5cGVzIGFyZSBub3QgdXAtdG8tZGF0ZVxuXHRcdGNvbnRyb2xzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlVXAnLCBvbk1vdXNlVXApO1xuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSB0aHJlZS1zdGRsaWIgdHlwZXMgYXJlIG5vdCB1cC10by1kYXRlXG5cdFx0Y29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignb2JqZWN0Q2hhbmdlJywgb25PYmplY3RDaGFuZ2UpO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSB0aHJlZS1zdGRsaWIgdHlwZXMgYXJlIG5vdCB1cC10by1kYXRlXG5cdFx0XHRjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNoYW5nZSk7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gdGhyZWUtc3RkbGliIHR5cGVzIGFyZSBub3QgdXAtdG8tZGF0ZVxuXHRcdFx0Y29udHJvbHMucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VEb3duJywgb25Nb3VzZURvd24pO1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIHRocmVlLXN0ZGxpYiB0eXBlcyBhcmUgbm90IHVwLXRvLWRhdGVcblx0XHRcdGNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlVXAnLCBvbk1vdXNlVXApO1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIHRocmVlLXN0ZGxpYiB0eXBlcyBhcmUgbm90IHVwLXRvLWRhdGVcblx0XHRcdGNvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29iamVjdENoYW5nZScsIG9uT2JqZWN0Q2hhbmdlKTtcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVEZWZhdWx0Q29udHJvbHNFZmZlY3QoKSB7XG5cdFx0Y29uc3QgW2NvbnRyb2xzLCBtYWtlRGVmYXVsdF0gPSBbdGhpcy5jb250cm9scygpLCB0aGlzLm1ha2VEZWZhdWx0KCldO1xuXHRcdGlmICghbWFrZURlZmF1bHQpIHJldHVybjtcblxuXHRcdGNvbnN0IG9sZENvbnRyb2xzID0gdGhpcy5zdG9yZS5zbmFwc2hvdC5jb250cm9scztcblx0XHR0aGlzLnN0b3JlLnVwZGF0ZSh7IGNvbnRyb2xzIH0pO1xuXHRcdHJldHVybiAoKSA9PiB0aGlzLnN0b3JlLnVwZGF0ZSgoKSA9PiAoeyBjb250cm9sczogb2xkQ29udHJvbHMgfSkpO1xuXHR9XG59XG4iXX0=
@@ -61,8 +61,8 @@ export class NgtsLoader {
61
61
  onCleanup(() => cancelAnimationFrame(rafId));
62
62
  });
63
63
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
66
66
  @if (shown()) {
67
67
  <div
68
68
  class="ngts-loader-container"
@@ -83,7 +83,7 @@ export class NgtsLoader {
83
83
  }
84
84
  `, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
85
85
  }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsLoader, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsLoader, decorators: [{
87
87
  type: Component,
88
88
  args: [{ selector: 'ngts-loader', standalone: true, template: `
89
89
  @if (shown()) {
@@ -1,6 +1,5 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, } from '@angular/core';
2
2
  import { is, NgtArgs, omit, pick } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import CustomShaderMaterial from 'three-custom-shader-material/vanilla';
5
4
  import * as i0 from "@angular/core";
6
5
  export class NgtsCustomShaderMaterial {
@@ -38,22 +37,19 @@ export class NgtsCustomShaderMaterial {
38
37
  cacheKey,
39
38
  });
40
39
  });
41
- const autoEffect = injectAutoEffect();
42
- afterNextRender(() => {
43
- autoEffect(() => {
44
- const material = this.material();
45
- return () => material.dispose();
46
- });
40
+ effect((onCleanup) => {
41
+ const material = this.material();
42
+ onCleanup(() => material.dispose());
47
43
  });
48
44
  }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCustomShaderMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
50
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: NgtsCustomShaderMaterial, isStandalone: true, selector: "ngts-custom-shader-material", inputs: { baseMaterial: { classPropertyName: "baseMaterial", publicName: "baseMaterial", 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 } }, ngImport: i0, template: `
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCustomShaderMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: NgtsCustomShaderMaterial, isStandalone: true, selector: "ngts-custom-shader-material", inputs: { baseMaterial: { classPropertyName: "baseMaterial", publicName: "baseMaterial", 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 } }, ngImport: i0, template: `
51
47
  <ngt-primitive *args="[material()]" [attach]="attach()" [parameters]="parameters()">
52
48
  <ng-content />
53
49
  </ngt-primitive>
54
50
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
51
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCustomShaderMaterial, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCustomShaderMaterial, decorators: [{
57
53
  type: Component,
58
54
  args: [{
59
55
  selector: 'ngts-custom-shader-material',
@@ -68,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
68
64
  imports: [NgtArgs],
69
65
  }]
70
66
  }], ctorParameters: () => [] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNoYWRlci1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9jdXN0b20tc2hhZGVyLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBRXRCLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsRUFBRSxFQUFnQixPQUFPLEVBQWlCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxvQkFBb0IsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFjeEUsTUFBTSxPQUFPLHdCQUF3QjtJQXdDcEM7UUF2Q0EsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxRCxDQUFDO1FBQ25GLFdBQU0sR0FBRyxLQUFLLENBQWdCLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBaUYsQ0FBQyxDQUFDO1FBQ25HLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUU1RixTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFFSyxtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsaUJBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNsRCxhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUc7Z0JBQ2hFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxFQUFFO2FBQ2YsQ0FBQztZQUVGLDBDQUEwQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBUSxJQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QyxPQUFRLElBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFDO2dCQUMvQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsY0FBYztnQkFDZCxZQUFZO2dCQUNaLFFBQVE7Z0JBQ1IsUUFBUTthQUNSLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBR0YsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FoRFcsd0JBQXdCO2tHQUF4Qix3QkFBd0Isd2VBVDFCOzs7O0VBSVQsNERBR1MsT0FBTzs7MkZBRUwsd0JBQXdCO2tCQVpwQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpcywgTmd0QW55UmVjb3JkLCBOZ3RBcmdzLCBOZ3RBdHRhY2hhYmxlLCBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBNYXRlcmlhbCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCBDdXN0b21TaGFkZXJNYXRlcmlhbCBmcm9tICd0aHJlZS1jdXN0b20tc2hhZGVyLW1hdGVyaWFsL3ZhbmlsbGEnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWN1c3RvbS1zaGFkZXItbWF0ZXJpYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW21hdGVyaWFsKCldXCIgW2F0dGFjaF09XCJhdHRhY2goKVwiIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wcmltaXRpdmU+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0N1c3RvbVNoYWRlck1hdGVyaWFsIHtcblx0YmFzZU1hdGVyaWFsID0gaW5wdXQucmVxdWlyZWQ8TWF0ZXJpYWwgfCB0eXBlb2YgTWF0ZXJpYWwgfCBFbGVtZW50UmVmPE1hdGVyaWFsPj4oKTtcblx0YXR0YWNoID0gaW5wdXQ8Tmd0QXR0YWNoYWJsZT4oJ21hdGVyaWFsJyk7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBPbWl0PENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgQ3VzdG9tU2hhZGVyTWF0ZXJpYWw+WzBdLCAnYmFzZU1hdGVyaWFsJz4pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnZnJhZ21lbnRTaGFkZXInLCAndmVydGV4U2hhZGVyJywgJ3VuaWZvcm1zJywgJ2NhY2hlS2V5J10pO1xuXG5cdGJhc2UgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgYmFzZU1hdGVyaWFsID0gdGhpcy5iYXNlTWF0ZXJpYWwoKTtcblx0XHRyZXR1cm4gaXMucmVmKGJhc2VNYXRlcmlhbCkgPyBiYXNlTWF0ZXJpYWwubmF0aXZlRWxlbWVudCA6IGJhc2VNYXRlcmlhbDtcblx0fSk7XG5cblx0cHJpdmF0ZSBmcmFnbWVudFNoYWRlciA9IHBpY2sodGhpcy5vcHRpb25zLCAnZnJhZ21lbnRTaGFkZXInKTtcblx0cHJpdmF0ZSB2ZXJ0ZXhTaGFkZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ZlcnRleFNoYWRlcicpO1xuXHRwcml2YXRlIHVuaWZvcm1zID0gcGljayh0aGlzLm9wdGlvbnMsICd1bmlmb3JtcycpO1xuXHRwcml2YXRlIGNhY2hlS2V5ID0gcGljayh0aGlzLm9wdGlvbnMsICdjYWNoZUtleScpO1xuXG5cdG1hdGVyaWFsID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtiYXNlLCBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyLCB1bmlmb3JtcywgY2FjaGVLZXldID0gW1xuXHRcdFx0dGhpcy5iYXNlKCksXG5cdFx0XHR0aGlzLmZyYWdtZW50U2hhZGVyKCksXG5cdFx0XHR0aGlzLnZlcnRleFNoYWRlcigpLFxuXHRcdFx0dGhpcy51bmlmb3JtcygpLFxuXHRcdFx0dGhpcy5jYWNoZUtleSgpLFxuXHRcdF07XG5cblx0XHQvLyBOT1RFOiB0aGlzIGlzIHNwZWNpZmljIHRvIGFuZ3VsYXItdGhyZWVcblx0XHRpZiAoaXMuaW5zdGFuY2UoYmFzZSkpIHtcblx0XHRcdGRlbGV0ZSAoYmFzZSBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHRkZWxldGUgKGJhc2UgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfcmVuZGVyZXJfXyddO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgQ3VzdG9tU2hhZGVyTWF0ZXJpYWwoe1xuXHRcdFx0YmFzZU1hdGVyaWFsOiBiYXNlLFxuXHRcdFx0ZnJhZ21lbnRTaGFkZXIsXG5cdFx0XHR2ZXJ0ZXhTaGFkZXIsXG5cdFx0XHR1bmlmb3Jtcyxcblx0XHRcdGNhY2hlS2V5LFxuXHRcdH0pO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsKCk7XG5cdFx0XHRcdHJldHVybiAoKSA9PiBtYXRlcmlhbC5kaXNwb3NlKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNoYWRlci1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9jdXN0b20tc2hhZGVyLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsTUFBTSxFQUVOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsRUFBRSxFQUFnQixPQUFPLEVBQWlCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckYsT0FBTyxvQkFBb0IsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFjeEUsTUFBTSxPQUFPLHdCQUF3QjtJQXdDcEM7UUF2Q0EsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxRCxDQUFDO1FBQ25GLFdBQU0sR0FBRyxLQUFLLENBQWdCLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBaUYsQ0FBQyxDQUFDO1FBQ25HLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUU1RixTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFFSyxtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsaUJBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNsRCxhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUc7Z0JBQ2hFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxFQUFFO2FBQ2YsQ0FBQztZQUVGLDBDQUEwQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBUSxJQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QyxPQUFRLElBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFDO2dCQUMvQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsY0FBYztnQkFDZCxZQUFZO2dCQUNaLFFBQVE7Z0JBQ1IsUUFBUTthQUNSLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBR0YsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBN0NXLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHdlQVQxQjs7OztFQUlULDREQUdTLE9BQU87OzJGQUVMLHdCQUF3QjtrQkFacEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXMsIE5ndEFueVJlY29yZCwgTmd0QXJncywgTmd0QXR0YWNoYWJsZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTWF0ZXJpYWwgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgQ3VzdG9tU2hhZGVyTWF0ZXJpYWwgZnJvbSAndGhyZWUtY3VzdG9tLXNoYWRlci1tYXRlcmlhbC92YW5pbGxhJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jdXN0b20tc2hhZGVyLW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbCgpXVwiIFthdHRhY2hdPVwiYXR0YWNoKClcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDdXN0b21TaGFkZXJNYXRlcmlhbCB7XG5cdGJhc2VNYXRlcmlhbCA9IGlucHV0LnJlcXVpcmVkPE1hdGVyaWFsIHwgdHlwZW9mIE1hdGVyaWFsIHwgRWxlbWVudFJlZjxNYXRlcmlhbD4+KCk7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgT21pdDxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEN1c3RvbVNoYWRlck1hdGVyaWFsPlswXSwgJ2Jhc2VNYXRlcmlhbCc+KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2ZyYWdtZW50U2hhZGVyJywgJ3ZlcnRleFNoYWRlcicsICd1bmlmb3JtcycsICdjYWNoZUtleSddKTtcblxuXHRiYXNlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGJhc2VNYXRlcmlhbCA9IHRoaXMuYmFzZU1hdGVyaWFsKCk7XG5cdFx0cmV0dXJuIGlzLnJlZihiYXNlTWF0ZXJpYWwpID8gYmFzZU1hdGVyaWFsLm5hdGl2ZUVsZW1lbnQgOiBiYXNlTWF0ZXJpYWw7XG5cdH0pO1xuXG5cdHByaXZhdGUgZnJhZ21lbnRTaGFkZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZyYWdtZW50U2hhZGVyJyk7XG5cdHByaXZhdGUgdmVydGV4U2hhZGVyID0gcGljayh0aGlzLm9wdGlvbnMsICd2ZXJ0ZXhTaGFkZXInKTtcblx0cHJpdmF0ZSB1bmlmb3JtcyA9IHBpY2sodGhpcy5vcHRpb25zLCAndW5pZm9ybXMnKTtcblx0cHJpdmF0ZSBjYWNoZUtleSA9IHBpY2sodGhpcy5vcHRpb25zLCAnY2FjaGVLZXknKTtcblxuXHRtYXRlcmlhbCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbYmFzZSwgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlciwgdW5pZm9ybXMsIGNhY2hlS2V5XSA9IFtcblx0XHRcdHRoaXMuYmFzZSgpLFxuXHRcdFx0dGhpcy5mcmFnbWVudFNoYWRlcigpLFxuXHRcdFx0dGhpcy52ZXJ0ZXhTaGFkZXIoKSxcblx0XHRcdHRoaXMudW5pZm9ybXMoKSxcblx0XHRcdHRoaXMuY2FjaGVLZXkoKSxcblx0XHRdO1xuXG5cdFx0Ly8gTk9URTogdGhpcyBpcyBzcGVjaWZpYyB0byBhbmd1bGFyLXRocmVlXG5cdFx0aWYgKGlzLmluc3RhbmNlKGJhc2UpKSB7XG5cdFx0XHRkZWxldGUgKGJhc2UgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddO1xuXHRcdFx0ZGVsZXRlIChiYXNlIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X3JlbmRlcmVyX18nXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IEN1c3RvbVNoYWRlck1hdGVyaWFsKHtcblx0XHRcdGJhc2VNYXRlcmlhbDogYmFzZSxcblx0XHRcdGZyYWdtZW50U2hhZGVyLFxuXHRcdFx0dmVydGV4U2hhZGVyLFxuXHRcdFx0dW5pZm9ybXMsXG5cdFx0XHRjYWNoZUtleSxcblx0XHR9KTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbCgpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IG1hdGVyaWFsLmRpc3Bvc2UoKSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -17,14 +17,14 @@ export class NgtsMeshDistortMaterial {
17
17
  this.material.time = clock.getElapsedTime() * this.speed();
18
18
  });
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsMeshDistortMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: NgtsMeshDistortMaterial, isStandalone: true, selector: "ngts-mesh-distort-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: `
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshDistortMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.4", type: NgtsMeshDistortMaterial, isStandalone: true, selector: "ngts-mesh-distort-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]" [attach]="attach()" [parameters]="parameters()">
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.0", ngImport: i0, type: NgtsMeshDistortMaterial, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshDistortMaterial, decorators: [{
28
28
  type: Component,
29
29
  args: [{
30
30
  selector: 'ngts-mesh-distort-material',
@@ -1,7 +1,6 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input, untracked, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, effect, inject, input, untracked, viewChild, } from '@angular/core';
2
2
  import { applyProps, getLocalState, injectBeforeRender, injectStore, NgtArgs, omit, pick, } from 'angular-three';
3
3
  import { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/vanilla-exports';
4
- import { injectAutoEffect } from 'ngxtension/auto-effect';
5
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
5
  import { DepthFormat, DepthTexture, HalfFloatType, LinearFilter, Matrix4, PerspectiveCamera, Plane, UnsignedShortType, Vector3, Vector4, WebGLRenderTarget, } from 'three';
7
6
  import * as i0 from "@angular/core";
@@ -142,15 +141,12 @@ export class NgtsMeshReflectorMaterial {
142
141
  this.definesKey();
143
142
  return new MeshReflectorMaterial();
144
143
  });
145
- const autoEffect = injectAutoEffect();
146
- afterNextRender(() => {
147
- autoEffect(() => {
148
- const material = this.materialRef()?.nativeElement;
149
- if (!material)
150
- return;
151
- const { reflectorParameters } = this.reflectState();
152
- applyProps(material, { ...reflectorParameters, ...this.parameters() });
153
- });
144
+ effect(() => {
145
+ const material = this.materialRef()?.nativeElement;
146
+ if (!material)
147
+ return;
148
+ const { reflectorParameters } = this.reflectState();
149
+ applyProps(material, { ...reflectorParameters, ...this.parameters() });
154
150
  });
155
151
  inject(DestroyRef).onDestroy(() => {
156
152
  const material = this.materialRef()?.nativeElement;
@@ -253,14 +249,14 @@ export class NgtsMeshReflectorMaterial {
253
249
  projectionMatrix.elements[10] = this.clipPlane.z + 1.0;
254
250
  projectionMatrix.elements[14] = this.clipPlane.w;
255
251
  }
256
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
257
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-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: `
252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-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: `
258
254
  <ngt-primitive #material *args="[material()]" [attach]="attach()">
259
255
  <ng-content />
260
256
  </ngt-primitive>
261
257
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
262
258
  }
263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
264
260
  type: Component,
265
261
  args: [{
266
262
  selector: 'ngts-mesh-reflector-material',
@@ -275,4 +271,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
275
271
  imports: [NgtArgs],
276
272
  }]
277
273
  }], ctorParameters: () => [] });
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWF0ZXJpYWxzL3NyYy9saWIvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsVUFBVSxFQUVWLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sVUFBVSxFQUNWLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsV0FBVyxFQUVYLE9BQU8sRUFHUCxJQUFJLEVBQ0osSUFBSSxHQUNKLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUNOLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsT0FBTyxFQUNQLE9BQU8sRUFDUCxpQkFBaUIsR0FDakIsTUFBTSxPQUFPLENBQUM7O0FBa0JmLE1BQU0sY0FBYyxHQUFxQztJQUN4RCxPQUFPLEVBQUUsQ0FBQztJQUNWLFdBQVcsRUFBRSxDQUFDO0lBQ2QsVUFBVSxFQUFFLEdBQUc7SUFDZixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1osaUJBQWlCLEVBQUUsR0FBRztJQUN0QixpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLFVBQVUsRUFBRSxDQUFDO0lB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QztJQUNsRCxDQUFDOzhHQXRSVyx5QkFBeUI7a0dBQXpCLHlCQUF5QixzZEFUM0I7Ozs7RUFJVCw0REFHUyxPQUFPOzsyRkFFTCx5QkFBeUI7a0JBWnJDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERlc3Ryb3lSZWYsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHVudHJhY2tlZCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGFwcGx5UHJvcHMsXG5cdGdldExvY2FsU3RhdGUsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0U3RvcmUsXG5cdE5ndEFueVJlY29yZCxcblx0Tmd0QXJncyxcblx0Tmd0QXR0YWNoYWJsZSxcblx0Tmd0TWVzaFN0YW5kYXJkTWF0ZXJpYWwsXG5cdG9taXQsXG5cdHBpY2ssXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQmx1clBhc3MsIE1lc2hSZWZsZWN0b3JNYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS92YW5pbGxhLWV4cG9ydHMnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHtcblx0RGVwdGhGb3JtYXQsXG5cdERlcHRoVGV4dHVyZSxcblx0SGFsZkZsb2F0VHlwZSxcblx0TGluZWFyRmlsdGVyLFxuXHRNYXRyaXg0LFxuXHRQZXJzcGVjdGl2ZUNhbWVyYSxcblx0UGxhbmUsXG5cdFRleHR1cmUsXG5cdFVuc2lnbmVkU2hvcnRUeXBlLFxuXHRWZWN0b3IzLFxuXHRWZWN0b3I0LFxuXHRXZWJHTFJlbmRlclRhcmdldCxcbn0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNNZXNoUmVmbGVjdG9yTWF0ZXJpYWxPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RNZXNoU3RhbmRhcmRNYXRlcmlhbD4ge1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdG1peEJsdXI6IG51bWJlcjtcblx0bWl4U3RyZW5ndGg6IG51bWJlcjtcblx0Ymx1cjogW251bWJlciwgbnVtYmVyXSB8IG51bWJlcjtcblx0bWlycm9yOiBudW1iZXI7XG5cdG1pbkRlcHRoVGhyZXNob2xkOiBudW1iZXI7XG5cdG1heERlcHRoVGhyZXNob2xkOiBudW1iZXI7XG5cdGRlcHRoU2NhbGU6IG51bWJlcjtcblx0ZGVwdGhUb0JsdXJSYXRpb0JpYXM6IG51bWJlcjtcblx0ZGlzdG9ydGlvbjogbnVtYmVyO1xuXHRtaXhDb250cmFzdDogbnVtYmVyO1xuXHRyZWZsZWN0b3JPZmZzZXQ6IG51bWJlcjtcblx0ZGlzdG9ydGlvbk1hcD86IFRleHR1cmU7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzTWVzaFJlZmxlY3Rvck1hdGVyaWFsT3B0aW9ucyA9IHtcblx0bWl4Qmx1cjogMCxcblx0bWl4U3RyZW5ndGg6IDEsXG5cdHJlc29sdXRpb246IDI1Nixcblx0Ymx1cjogWzAsIDBdLFxuXHRtaW5EZXB0aFRocmVzaG9sZDogMC45LFxuXHRtYXhEZXB0aFRocmVzaG9sZDogMSxcblx0ZGVwdGhTY2FsZTogMCxcblx0ZGVwdGhUb0JsdXJSYXRpb0JpYXM6IDAuMjUsXG5cdG1pcnJvcjogMCxcblx0ZGlzdG9ydGlvbjogMSxcblx0bWl4Q29udHJhc3Q6IDEsXG5cdHJlZmxlY3Rvck9mZnNldDogMCxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICNtYXRlcmlhbCAqYXJncz1cIlttYXRlcmlhbCgpXVwiIFthdHRhY2hdPVwiYXR0YWNoKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNNZXNoUmVmbGVjdG9yTWF0ZXJpYWwge1xuXHRhdHRhY2ggPSBpbnB1dDxOZ3RBdHRhY2hhYmxlPignbWF0ZXJpYWwnKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwcml2YXRlIHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdkaXN0b3J0aW9uTWFwJyxcblx0XHQncmVzb2x1dGlvbicsXG5cdFx0J21peEJsdXInLFxuXHRcdCdtaXhTdHJlbmd0aCcsXG5cdFx0J2JsdXInLFxuXHRcdCdtaW5EZXB0aFRocmVzaG9sZCcsXG5cdFx0J21heERlcHRoVGhyZXNob2xkJyxcblx0XHQnZGVwdGhTY2FsZScsXG5cdFx0J2RlcHRoVG9CbHVyUmF0aW9CaWFzJyxcblx0XHQnbWlycm9yJyxcblx0XHQnZGlzdG9ydGlvbicsXG5cdFx0J21peENvbnRyYXN0Jyxcblx0XHQncmVmbGVjdG9yT2Zmc2V0Jyxcblx0XSk7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgZ2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblxuXHRtYXRlcmlhbFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPE1lc2hSZWZsZWN0b3JNYXRlcmlhbD4+KCdtYXRlcmlhbCcpO1xuXG5cdHByaXZhdGUgcmVmbGVjdE9wdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgW1xuXHRcdCdkaXN0b3J0aW9uTWFwJyxcblx0XHQncmVzb2x1dGlvbicsXG5cdFx0J21peEJsdXInLFxuXHRcdCdtaXhTdHJlbmd0aCcsXG5cdFx0J2JsdXInLFxuXHRcdCdtaW5EZXB0aFRocmVzaG9sZCcsXG5cdFx0J21heERlcHRoVGhyZXNob2xkJyxcblx0XHQnZGVwdGhTY2FsZScsXG5cdFx0J2RlcHRoVG9CbHVyUmF0aW9CaWFzJyxcblx0XHQnbWlycm9yJyxcblx0XHQnZGlzdG9ydGlvbicsXG5cdFx0J21peENvbnRyYXN0Jyxcblx0XHQncmVmbGVjdG9yT2Zmc2V0Jyxcblx0XSk7XG5cblx0cHJpdmF0ZSBibHVyID0gcGljayh0aGlzLnJlZmxlY3RPcHRpb25zLCAnYmx1cicpO1xuXG5cdHByaXZhdGUgbm9ybWFsaXplZEJsdXIgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgYmx1ciA9IHRoaXMuYmx1cigpO1xuXHRcdHJldHVybiBBcnJheS5pc0FycmF5KGJsdXIpID8gYmx1ciA6IFtibHVyLCBibHVyXTtcblx0fSk7XG5cdHByaXZhdGUgaGFzQmx1ciA9IGNvbXB1dGVkKCgpID0+IHRoaXMubm9ybWFsaXplZEJsdXIoKVswXSArIHRoaXMubm9ybWFsaXplZEJsdXIoKVsxXSA+IDApO1xuXG5cdHByaXZhdGUgcmVmbGVjdG9yUGxhbmUgPSBuZXcgUGxhbmUoKTtcblx0cHJpdmF0ZSBub3JtYWwgPSBuZXcgVmVjdG9yMygpO1xuXHRwcml2YXRlIHJlZmxlY3RvcldvcmxkUG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuXHRwcml2YXRlIGNhbWVyYVdvcmxkUG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuXHRwcml2YXRlIHJvdGF0aW9uTWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcblx0cHJpdmF0ZSBsb29rQXRQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKDAsIDAsIC0xKTtcblx0cHJpdmF0ZSBjbGlwUGxhbmUgPSBuZXcgVmVjdG9yNCgpO1xuXHRwcml2YXRlIHZpZXcgPSBuZXcgVmVjdG9yMygpO1xuXHRwcml2YXRlIHRhcmdldCA9IG5ldyBWZWN0b3IzKCk7XG5cdHByaXZhdGUgcSA9IG5ldyBWZWN0b3I0KCk7XG5cdHByaXZhdGUgdGV4dHVyZU1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5cdHByaXZhdGUgdmlydHVhbENhbWVyYSA9IG5ldyBQZXJzcGVjdGl2ZUNhbWVyYSgpO1xuXG5cdHByaXZhdGUgcmVmbGVjdFN0YXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtcblx0XHRcdGdsLFxuXHRcdFx0e1xuXHRcdFx0XHRyZXNvbHV0aW9uLFxuXHRcdFx0XHRtaW5EZXB0aFRocmVzaG9sZCxcblx0XHRcdFx0bWF4RGVwdGhUaHJlc2hvbGQsXG5cdFx0XHRcdGRlcHRoU2NhbGUsXG5cdFx0XHRcdGRlcHRoVG9CbHVyUmF0aW9CaWFzLFxuXHRcdFx0XHRtaXJyb3IsXG5cdFx0XHRcdG1peEJsdXIsXG5cdFx0XHRcdG1peFN0cmVuZ3RoLFxuXHRcdFx0XHRkaXN0b3J0aW9uLFxuXHRcdFx0XHRkaXN0b3J0aW9uTWFwLFxuXHRcdFx0XHRtaXhDb250cmFzdCxcblx0XHRcdH0sXG5cdFx0XHRibHVyLFxuXHRcdFx0aGFzQmx1cixcblx0XHRdID0gW3RoaXMuZ2woKSwgdGhpcy5yZWZsZWN0T3B0aW9ucygpLCB0aGlzLm5vcm1hbGl6ZWRCbHVyKCksIHRoaXMuaGFzQmx1cigpXTtcblxuXHRcdGNvbnN0IHJlbmRlclRhcmdldFBhcmFtZXRlcnMgPSB7XG5cdFx0XHRtaW5GaWx0ZXI6IExpbmVhckZpbHRlcixcblx0XHRcdG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHRcdFx0dHlwZTogSGFsZkZsb2F0VHlwZSxcblx0XHR9O1xuXG5cdFx0Y29uc3QgZmJvMSA9IG5ldyBXZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uLCByZW5kZXJUYXJnZXRQYXJhbWV0ZXJzKTtcblx0XHRmYm8xLmRlcHRoQnVmZmVyID0gdHJ1ZTtcblx0XHRmYm8xLmRlcHRoVGV4dHVyZSA9IG5ldyBEZXB0aFRleHR1cmUocmVzb2x1dGlvbiwgcmVzb2x1dGlvbik7XG5cdFx0ZmJvMS5kZXB0aFRleHR1cmUuZm9ybWF0ID0gRGVwdGhGb3JtYXQ7XG5cdFx0ZmJvMS5kZXB0aFRleHR1cmUudHlwZSA9IFVuc2lnbmVkU2hvcnRUeXBlO1xuXHRcdGNvbnN0IGZibzIgPSBuZXcgV2ViR0xSZW5kZXJUYXJnZXQocmVzb2x1dGlvbiwgcmVzb2x1dGlvbiwgcmVuZGVyVGFyZ2V0UGFyYW1ldGVycyk7XG5cblx0XHRjb25zdCBibHVyUGFzcyA9IG5ldyBCbHVyUGFzcyh7XG5cdFx0XHRnbCxcblx0XHRcdHJlc29sdXRpb24sXG5cdFx0XHR3aWR0aDogYmx1clswXSxcblx0XHRcdGhlaWdodDogYmx1clsxXSxcblx0XHRcdG1pbkRlcHRoVGhyZXNob2xkLFxuXHRcdFx0bWF4RGVwdGhUaHJlc2hvbGQsXG5cdFx0XHRkZXB0aFNjYWxlLFxuXHRcdFx0ZGVwdGhUb0JsdXJSYXRpb0JpYXMsXG5cdFx0fSk7XG5cblx0XHRjb25zdCBkZWZpbmVzOiBOZ3RBbnlSZWNvcmQgPSB7fTtcblxuXHRcdGlmIChoYXNCbHVyKSB7XG5cdFx0XHRkZWZpbmVzWydVU0VfQkxVUiddID0gJyc7XG5cdFx0fVxuXG5cdFx0aWYgKGRlcHRoU2NhbGUgPiAwKSB7XG5cdFx0XHRkZWZpbmVzWydVU0VfREVQVEgnXSA9ICcnO1xuXHRcdH1cblxuXHRcdGlmIChkaXN0b3J0aW9uTWFwKSB7XG5cdFx0XHRkZWZpbmVzWydVU0VfRElTVE9SVElPTiddID0gJyc7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVmbGVjdG9yUGFyYW1ldGVycyA9IHtcblx0XHRcdG1pcnJvcixcblx0XHRcdHRleHR1cmVNYXRyaXg6IHRoaXMudGV4dHVyZU1hdHJpeCxcblx0XHRcdG1peEJsdXIsXG5cdFx0XHR0RGlmZnVzZTogZmJvMS50ZXh0dXJlLFxuXHRcdFx0dERlcHRoOiBmYm8xLmRlcHRoVGV4dHVyZSxcblx0XHRcdHREaWZmdXNlQmx1cjogZmJvMi50ZXh0dXJlLFxuXHRcdFx0aGFzQmx1cixcblx0XHRcdG1peFN0cmVuZ3RoLFxuXHRcdFx0bWluRGVwdGhUaHJlc2hvbGQsXG5cdFx0XHRtYXhEZXB0aFRocmVzaG9sZCxcblx0XHRcdGRlcHRoU2NhbGUsXG5cdFx0XHRkZXB0aFRvQmx1clJhdGlvQmlhcyxcblx0XHRcdGRpc3RvcnRpb24sXG5cdFx0XHRkaXN0b3J0aW9uTWFwLFxuXHRcdFx0bWl4Q29udHJhc3QsXG5cdFx0XHRkZWZpbmVzLFxuXHRcdH07XG5cblx0XHRyZXR1cm4geyBmYm8xLCBmYm8yLCBibHVyUGFzcywgcmVmbGVjdG9yUGFyYW1ldGVycyB9O1xuXHR9KTtcblxuXHRwcml2YXRlIGRlZmluZXNLZXkgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgZGVmaW5lcyA9IHRoaXMucmVmbGVjdFN0YXRlKCkucmVmbGVjdG9yUGFyYW1ldGVycy5kZWZpbmVzO1xuXHRcdHJldHVybiBPYmplY3QuZW50cmllcyhkZWZpbmVzKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiAodmFsdWUgIT0gbnVsbCA/IGAke2FjY30gJHtrZXl9YCA6IGFjYyksICcnKTtcblx0fSk7XG5cblx0bWF0ZXJpYWwgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcHJldk1hdGVyaWFsID0gdW50cmFja2VkKHRoaXMubWF0ZXJpYWxSZWYpPy5uYXRpdmVFbGVtZW50O1xuXG5cdFx0aWYgKHByZXZNYXRlcmlhbCkge1xuXHRcdFx0cHJldk1hdGVyaWFsLmRpc3Bvc2UoKTtcblx0XHRcdGRlbGV0ZSAocHJldk1hdGVyaWFsIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X18nXTtcblx0XHRcdGRlbGV0ZSAocHJldk1hdGVyaWFsIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X3JlbmRlcmVyX18nXTtcblx0XHR9XG5cblx0XHQvLyB0cmFja2luZyBkZWZpbmVzIGtleSBzbyB0aGF0IHRoZSBtYXRlcmlhbCBpcyByZWNyZWF0ZWQgd2hlbiB0aGUgZGVmaW5lcyBjaGFuZ2Vcblx0XHR0aGlzLmRlZmluZXNLZXkoKTtcblx0XHRyZXR1cm4gbmV3IE1lc2hSZWZsZWN0b3JNYXRlcmlhbCgpO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0aWYgKCFtYXRlcmlhbCkgcmV0dXJuO1xuXHRcdFx0XHRjb25zdCB7IHJlZmxlY3RvclBhcmFtZXRlcnMgfSA9IHRoaXMucmVmbGVjdFN0YXRlKCk7XG5cdFx0XHRcdGFwcGx5UHJvcHMobWF0ZXJpYWwsIHsgLi4ucmVmbGVjdG9yUGFyYW1ldGVycywgLi4udGhpcy5wYXJhbWV0ZXJzKCkgfSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAobWF0ZXJpYWwpIHtcblx0XHRcdFx0bWF0ZXJpYWwuZGlzcG9zZSgpO1xuXHRcdFx0XHRkZWxldGUgKG1hdGVyaWFsIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X18nXTtcblx0XHRcdFx0ZGVsZXRlIChtYXRlcmlhbCBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9yZW5kZXJlcl9fJ107XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgZ2wsIHNjZW5lIH0pID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFtYXRlcmlhbCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShtYXRlcmlhbCk7XG5cdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgcGFyZW50ID0gUmVmbGVjdC5nZXQobWF0ZXJpYWwsICdwYXJlbnQnKSA/PyB1bnRyYWNrZWQobG9jYWxTdGF0ZS5wYXJlbnQpO1xuXHRcdFx0aWYgKCFwYXJlbnQpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgeyBmYm8xLCBmYm8yLCBibHVyUGFzcyB9ID0gdGhpcy5yZWZsZWN0U3RhdGUoKTtcblx0XHRcdGNvbnN0IGhhc0JsdXIgPSB0aGlzLmhhc0JsdXIoKTtcblxuXHRcdFx0cGFyZW50LnZpc2libGUgPSBmYWxzZTtcblx0XHRcdGNvbnN0IGN1cnJlbnRYckVuYWJsZWQgPSBnbC54ci5lbmFibGVkO1xuXHRcdFx0Y29uc3QgY3VycmVudFNoYWRvd0F1dG9VcGRhdGUgPSBnbC5zaGFkb3dNYXAuYXV0b1VwZGF0ZTtcblx0XHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdFx0XHRnbC54ci5lbmFibGVkID0gZmFsc2U7XG5cdFx0XHRnbC5zaGFkb3dNYXAuYXV0b1VwZGF0ZSA9IGZhbHNlO1xuXHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KGZibzEpO1xuXHRcdFx0Z2wuc3RhdGUuYnVmZmVycy5kZXB0aC5zZXRNYXNrKHRydWUpO1xuXHRcdFx0aWYgKCFnbC5hdXRvQ2xlYXIpIGdsLmNsZWFyKCk7XG5cdFx0XHRnbC5yZW5kZXIoc2NlbmUsIHRoaXMudmlydHVhbENhbWVyYSk7XG5cdFx0XHRpZiAoaGFzQmx1cikgYmx1clBhc3MucmVuZGVyKGdsLCBmYm8xLCBmYm8yKTtcblx0XHRcdGdsLnhyLmVuYWJsZWQgPSBjdXJyZW50WHJFbmFibGVkO1xuXHRcdFx0Z2wuc2hhZG93TWFwLmF1dG9VcGRhdGUgPSBjdXJyZW50U2hhZG93QXV0b1VwZGF0ZTtcblx0XHRcdHBhcmVudC52aXNpYmxlID0gdHJ1ZTtcblx0XHRcdGdsLnNldFJlbmRlclRhcmdldChudWxsKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgYmVmb3JlUmVuZGVyKCkge1xuXHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdGlmICghbWF0ZXJpYWwpIHJldHVybjtcblxuXHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKG1hdGVyaWFsKTtcblx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdGNvbnN0IHBhcmVudCA9IFJlZmxlY3QuZ2V0KG1hdGVyaWFsLCAncGFyZW50JykgPz8gdW50cmFja2VkKGxvY2FsU3RhdGUucGFyZW50KTtcblx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgeyBjYW1lcmEgfSA9IHRoaXMuc3RvcmUuc25hcHNob3Q7XG5cdFx0Y29uc3QgeyByZWZsZWN0b3JPZmZzZXQgfSA9IHVudHJhY2tlZCh0aGlzLnJlZmxlY3RPcHRpb25zKTtcblxuXHRcdHRoaXMucmVmbGVjdG9yV29ybGRQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24ocGFyZW50Lm1hdHJpeFdvcmxkKTtcblx0XHR0aGlzLmNhbWVyYVdvcmxkUG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGNhbWVyYS5tYXRyaXhXb3JsZCk7XG5cdFx0dGhpcy5yb3RhdGlvbk1hdHJpeC5leHRyYWN0Um90YXRpb24ocGFyZW50Lm1hdHJpeFdvcmxkKTtcblx0XHR0aGlzLm5vcm1hbC5zZXQoMCwgMCwgMSk7XG5cdFx0dGhpcy5ub3JtYWwuYXBwbHlNYXRyaXg0KHRoaXMucm90YXRpb25NYXRyaXgpO1xuXHRcdHRoaXMucmVmbGVjdG9yV29ybGRQb3NpdGlvbi5hZGRTY2FsZWRWZWN0b3IodGhpcy5ub3JtYWwsIHJlZmxlY3Rvck9mZnNldCk7XG5cdFx0dGhpcy52aWV3LnN1YlZlY3RvcnModGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uLCB0aGlzLmNhbWVyYVdvcmxkUG9zaXRpb24pO1xuXHRcdC8vIEF2b2lkIHJlbmRlcmluZyB3aGVuIHJlZmxlY3RvciBpcyBmYWNpbmcgYXdheVxuXHRcdGlmICh0aGlzLnZpZXcuZG90KHRoaXMubm9ybWFsKSA+IDApIHJldHVybjtcblx0XHR0aGlzLnZpZXcucmVmbGVjdCh0aGlzLm5vcm1hbCkubmVnYXRlKCk7XG5cdFx0dGhpcy52aWV3LmFkZCh0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24pO1xuXHRcdHRoaXMucm90YXRpb25NYXRyaXguZXh0cmFjdFJvdGF0aW9uKGNhbWVyYS5tYXRyaXhXb3JsZCk7XG5cdFx0dGhpcy5sb29rQXRQb3NpdGlvbi5zZXQoMCwgMCwgLTEpO1xuXHRcdHRoaXMubG9va0F0UG9zaXRpb24uYXBwbHlNYXRyaXg0KHRoaXMucm90YXRpb25NYXRyaXgpO1xuXHRcdHRoaXMubG9va0F0UG9zaXRpb24uYWRkKHRoaXMuY2FtZXJhV29ybGRQb3NpdGlvbik7XG5cdFx0dGhpcy50YXJnZXQuc3ViVmVjdG9ycyh0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24sIHRoaXMubG9va0F0UG9zaXRpb24pO1xuXHRcdHRoaXMudGFyZ2V0LnJlZmxlY3QodGhpcy5ub3JtYWwpLm5lZ2F0ZSgpO1xuXHRcdHRoaXMudGFyZ2V0LmFkZCh0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24pO1xuXHRcdHRoaXMudmlydHVhbENhbWVyYS5wb3NpdGlvbi5jb3B5KHRoaXMudmlldyk7XG5cdFx0dGhpcy52aXJ0dWFsQ2FtZXJhLnVwLnNldCgwLCAxLCAwKTtcblx0XHR0aGlzLnZpcnR1YWxDYW1lcmEudXAuYXBwbHlNYXRyaXg0KHRoaXMucm90YXRpb25NYXRyaXgpO1xuXHRcdHRoaXMudmlydHVhbENhbWVyYS51cC5yZWZsZWN0KHRoaXMubm9ybWFsKTtcblx0XHR0aGlzLnZpcnR1YWxDYW1lcmEubG9va0F0KHRoaXMudGFyZ2V0KTtcblx0XHR0aGlzLnZpcnR1YWxDYW1lcmEuZmFyID0gY2FtZXJhLmZhcjsgLy8gVXNlZCBpbiBXZWJHTEJhY2tncm91bmRcblx0XHR0aGlzLnZpcnR1YWxDYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHR0aGlzLnZpcnR1YWxDYW1lcmEucHJvamVjdGlvbk1hdHJpeC5jb3B5KGNhbWVyYS5wcm9qZWN0aW9uTWF0cml4KTtcblx0XHQvLyBVcGRhdGUgdGhlIHRleHR1cmUgbWF0cml4XG5cdFx0dGhpcy50ZXh0dXJlTWF0cml4LnNldCgwLjUsIDAuMCwgMC4wLCAwLjUsIDAuMCwgMC41LCAwLjAsIDAuNSwgMC4wLCAwLjAsIDAuNSwgMC41LCAwLjAsIDAuMCwgMC4wLCAxLjApO1xuXHRcdHRoaXMudGV4dHVyZU1hdHJpeC5tdWx0aXBseSh0aGlzLnZpcnR1YWxDYW1lcmEucHJvamVjdGlvbk1hdHJpeCk7XG5cdFx0dGhpcy50ZXh0dXJlTWF0cml4Lm11bHRpcGx5KHRoaXMudmlydHVhbENhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuXHRcdHRoaXMudGV4dHVyZU1hdHJpeC5tdWx0aXBseShwYXJlbnQubWF0cml4V29ybGQpO1xuXHRcdC8vIE5vdyB1cGRhdGUgcHJvamVjdGlvbiBtYXRyaXggd2l0aCBuZXcgY2xpcCBwbGFuZSwgaW1wbGVtZW50aW5nIGNvZGUgZnJvbTogaHR0cDovL3d3dy50ZXJhdGhvbi5jb20vY29kZS9vYmxpcXVlLmh0bWxcblx0XHQvLyBQYXBlciBleHBsYWluaW5nIHRoaXMgdGVjaG5pcXVlOiBodHRwOi8vd3d3LnRlcmF0aG9uLmNvbS9sZW5neWVsL0xlbmd5ZWwtT2JsaXF1ZS5wZGZcblx0XHR0aGlzLnJlZmxlY3RvclBsYW5lLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHRoaXMubm9ybWFsLCB0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24pO1xuXHRcdHRoaXMucmVmbGVjdG9yUGxhbmUuYXBwbHlNYXRyaXg0KHRoaXMudmlydHVhbENhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuXHRcdHRoaXMuY2xpcFBsYW5lLnNldChcblx0XHRcdHRoaXMucmVmbGVjdG9yUGxhbmUubm9ybWFsLngsXG5cdFx0XHR0aGlzLnJlZmxlY3RvclBsYW5lLm5vcm1hbC55LFxuXHRcdFx0dGhpcy5yZWZsZWN0b3JQbGFuZS5ub3JtYWwueixcblx0XHRcdHRoaXMucmVmbGVjdG9yUGxhbmUuY29uc3RhbnQsXG5cdFx0KTtcblx0XHRjb25zdCBwcm9qZWN0aW9uTWF0cml4ID0gdGhpcy52aXJ0dWFsQ2FtZXJhLnByb2plY3Rpb25NYXRyaXg7XG5cdFx0dGhpcy5xLnggPSAoTWF0aC5zaWduKHRoaXMuY2xpcFBsYW5lLngpICsgcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1s4XSkgLyBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzBdO1xuXHRcdHRoaXMucS55ID0gKE1hdGguc2lnbih0aGlzLmNsaXBQbGFuZS55KSArIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbOV0pIC8gcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1s1XTtcblx0XHR0aGlzLnEueiA9IC0xLjA7XG5cdFx0dGhpcy5xLncgPSAoMS4wICsgcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1sxMF0pIC8gcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1sxNF07XG5cdFx0Ly8gQ2FsY3VsYXRlIHRoZSBzY2FsZWQgcGxhbmUgdmVjdG9yXG5cdFx0dGhpcy5jbGlwUGxhbmUubXVsdGlwbHlTY2FsYXIoMi4wIC8gdGhpcy5jbGlwUGxhbmUuZG90KHRoaXMucSkpO1xuXHRcdC8vIFJlcGxhY2luZyB0aGUgdGhpcmQgcm93IG9mIHRoZSBwcm9qZWN0aW9uIG1hdHJpeFxuXHRcdHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMl0gPSB0aGlzLmNsaXBQbGFuZS54O1xuXHRcdHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbNl0gPSB0aGlzLmNsaXBQbGFuZS55O1xuXHRcdHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMTBdID0gdGhpcy5jbGlwUGxhbmUueiArIDEuMDtcblx0XHRwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzE0XSA9IHRoaXMuY2xpcFBsYW5lLnc7XG5cdH1cbn1cbiJdfQ==
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWF0ZXJpYWxzL3NyYy9saWIvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsTUFBTSxFQUVOLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sVUFBVSxFQUNWLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsV0FBVyxFQUVYLE9BQU8sRUFHUCxJQUFJLEVBQ0osSUFBSSxHQUNKLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUNOLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLFlBQVksRUFDWixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsT0FBTyxFQUNQLE9BQU8sRUFDUCxpQkFBaUIsR0FDakIsTUFBTSxPQUFPLENBQUM7O0FBa0JmLE1BQU0sY0FBYyxHQUFxQztJQUN4RCxPQUFPLEVBQUUsQ0FBQztJQUNWLFdBQVcsRUFBRSxDQUFDO0lBQ2QsVUFBVSxFQUFFLEdBQUc7SUFDZixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1osaUJBQWlCLEVBQUUsR0FBRztJQUN0QixpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLFVBQVUsRUFBRSxDQUFDO0lBQ2Isb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixNQUFNLEVBQUUsQ0FBQztJQUNU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LEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERlc3Ryb3lSZWYsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0YXBwbHlQcm9wcyxcblx0Z2V0TG9jYWxTdGF0ZSxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3RTdG9yZSxcblx0Tmd0QW55UmVjb3JkLFxuXHROZ3RBcmdzLFxuXHROZ3RBdHRhY2hhYmxlLFxuXHROZ3RNZXNoU3RhbmRhcmRNYXRlcmlhbCxcblx0b21pdCxcblx0cGljayxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBCbHVyUGFzcywgTWVzaFJlZmxlY3Rvck1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3ZhbmlsbGEtZXhwb3J0cyc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQge1xuXHREZXB0aEZvcm1hdCxcblx0RGVwdGhUZXh0dXJlLFxuXHRIYWxmRmxvYXRUeXBlLFxuXHRMaW5lYXJGaWx0ZXIsXG5cdE1hdHJpeDQsXG5cdFBlcnNwZWN0aXZlQ2FtZXJhLFxuXHRQbGFuZSxcblx0VGV4dHVyZSxcblx0VW5zaWduZWRTaG9ydFR5cGUsXG5cdFZlY3RvcjMsXG5cdFZlY3RvcjQsXG5cdFdlYkdMUmVuZGVyVGFyZ2V0LFxufSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c01lc2hSZWZsZWN0b3JNYXRlcmlhbE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndE1lc2hTdGFuZGFyZE1hdGVyaWFsPiB7XG5cdHJlc29sdXRpb246IG51bWJlcjtcblx0bWl4Qmx1cjogbnVtYmVyO1xuXHRtaXhTdHJlbmd0aDogbnVtYmVyO1xuXHRibHVyOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyO1xuXHRtaXJyb3I6IG51bWJlcjtcblx0bWluRGVwdGhUaHJlc2hvbGQ6IG51bWJlcjtcblx0bWF4RGVwdGhUaHJlc2hvbGQ6IG51bWJlcjtcblx0ZGVwdGhTY2FsZTogbnVtYmVyO1xuXHRkZXB0aFRvQmx1clJhdGlvQmlhczogbnVtYmVyO1xuXHRkaXN0b3J0aW9uOiBudW1iZXI7XG5cdG1peENvbnRyYXN0OiBudW1iZXI7XG5cdHJlZmxlY3Rvck9mZnNldDogbnVtYmVyO1xuXHRkaXN0b3J0aW9uTWFwPzogVGV4dHVyZTtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNNZXNoUmVmbGVjdG9yTWF0ZXJpYWxPcHRpb25zID0ge1xuXHRtaXhCbHVyOiAwLFxuXHRtaXhTdHJlbmd0aDogMSxcblx0cmVzb2x1dGlvbjogMjU2LFxuXHRibHVyOiBbMCwgMF0sXG5cdG1pbkRlcHRoVGhyZXNob2xkOiAwLjksXG5cdG1heERlcHRoVGhyZXNob2xkOiAxLFxuXHRkZXB0aFNjYWxlOiAwLFxuXHRkZXB0aFRvQmx1clJhdGlvQmlhczogMC4yNSxcblx0bWlycm9yOiAwLFxuXHRkaXN0b3J0aW9uOiAxLFxuXHRtaXhDb250cmFzdDogMSxcblx0cmVmbGVjdG9yT2Zmc2V0OiAwLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgI21hdGVyaWFsICphcmdzPVwiW21hdGVyaWFsKCldXCIgW2F0dGFjaF09XCJhdHRhY2goKVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wcmltaXRpdmU+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c01lc2hSZWZsZWN0b3JNYXRlcmlhbCB7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHByaXZhdGUgcGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J2Rpc3RvcnRpb25NYXAnLFxuXHRcdCdyZXNvbHV0aW9uJyxcblx0XHQnbWl4Qmx1cicsXG5cdFx0J21peFN0cmVuZ3RoJyxcblx0XHQnYmx1cicsXG5cdFx0J21pbkRlcHRoVGhyZXNob2xkJyxcblx0XHQnbWF4RGVwdGhUaHJlc2hvbGQnLFxuXHRcdCdkZXB0aFNjYWxlJyxcblx0XHQnZGVwdGhUb0JsdXJSYXRpb0JpYXMnLFxuXHRcdCdtaXJyb3InLFxuXHRcdCdkaXN0b3J0aW9uJyxcblx0XHQnbWl4Q29udHJhc3QnLFxuXHRcdCdyZWZsZWN0b3JPZmZzZXQnLFxuXHRdKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBnbCA9IHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpO1xuXG5cdG1hdGVyaWFsUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8TWVzaFJlZmxlY3Rvck1hdGVyaWFsPj4oJ21hdGVyaWFsJyk7XG5cblx0cHJpdmF0ZSByZWZsZWN0T3B0aW9ucyA9IHBpY2sodGhpcy5vcHRpb25zLCBbXG5cdFx0J2Rpc3RvcnRpb25NYXAnLFxuXHRcdCdyZXNvbHV0aW9uJyxcblx0XHQnbWl4Qmx1cicsXG5cdFx0J21peFN0cmVuZ3RoJyxcblx0XHQnYmx1cicsXG5cdFx0J21pbkRlcHRoVGhyZXNob2xkJyxcblx0XHQnbWF4RGVwdGhUaHJlc2hvbGQnLFxuXHRcdCdkZXB0aFNjYWxlJyxcblx0XHQnZGVwdGhUb0JsdXJSYXRpb0JpYXMnLFxuXHRcdCdtaXJyb3InLFxuXHRcdCdkaXN0b3J0aW9uJyxcblx0XHQnbWl4Q29udHJhc3QnLFxuXHRcdCdyZWZsZWN0b3JPZmZzZXQnLFxuXHRdKTtcblxuXHRwcml2YXRlIGJsdXIgPSBwaWNrKHRoaXMucmVmbGVjdE9wdGlvbnMsICdibHVyJyk7XG5cblx0cHJpdmF0ZSBub3JtYWxpemVkQmx1ciA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBibHVyID0gdGhpcy5ibHVyKCk7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYmx1cikgPyBibHVyIDogW2JsdXIsIGJsdXJdO1xuXHR9KTtcblx0cHJpdmF0ZSBoYXNCbHVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ub3JtYWxpemVkQmx1cigpWzBdICsgdGhpcy5ub3JtYWxpemVkQmx1cigpWzFdID4gMCk7XG5cblx0cHJpdmF0ZSByZWZsZWN0b3JQbGFuZSA9IG5ldyBQbGFuZSgpO1xuXHRwcml2YXRlIG5vcm1hbCA9IG5ldyBWZWN0b3IzKCk7XG5cdHByaXZhdGUgcmVmbGVjdG9yV29ybGRQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XG5cdHByaXZhdGUgY2FtZXJhV29ybGRQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XG5cdHByaXZhdGUgcm90YXRpb25NYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuXHRwcml2YXRlIGxvb2tBdFBvc2l0aW9uID0gbmV3IFZlY3RvcjMoMCwgMCwgLTEpO1xuXHRwcml2YXRlIGNsaXBQbGFuZSA9IG5ldyBWZWN0b3I0KCk7XG5cdHByaXZhdGUgdmlldyA9IG5ldyBWZWN0b3IzKCk7XG5cdHByaXZhdGUgdGFyZ2V0ID0gbmV3IFZlY3RvcjMoKTtcblx0cHJpdmF0ZSBxID0gbmV3IFZlY3RvcjQoKTtcblx0cHJpdmF0ZSB0ZXh0dXJlTWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcblx0cHJpdmF0ZSB2aXJ0dWFsQ2FtZXJhID0gbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCk7XG5cblx0cHJpdmF0ZSByZWZsZWN0U3RhdGUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW1xuXHRcdFx0Z2wsXG5cdFx0XHR7XG5cdFx0XHRcdHJlc29sdXRpb24sXG5cdFx0XHRcdG1pbkRlcHRoVGhyZXNob2xkLFxuXHRcdFx0XHRtYXhEZXB0aFRocmVzaG9sZCxcblx0XHRcdFx0ZGVwdGhTY2FsZSxcblx0XHRcdFx0ZGVwdGhUb0JsdXJSYXRpb0JpYXMsXG5cdFx0XHRcdG1pcnJvcixcblx0XHRcdFx0bWl4Qmx1cixcblx0XHRcdFx0bWl4U3RyZW5ndGgsXG5cdFx0XHRcdGRpc3RvcnRpb24sXG5cdFx0XHRcdGRpc3RvcnRpb25NYXAsXG5cdFx0XHRcdG1peENvbnRyYXN0LFxuXHRcdFx0fSxcblx0XHRcdGJsdXIsXG5cdFx0XHRoYXNCbHVyLFxuXHRcdF0gPSBbdGhpcy5nbCgpLCB0aGlzLnJlZmxlY3RPcHRpb25zKCksIHRoaXMubm9ybWFsaXplZEJsdXIoKSwgdGhpcy5oYXNCbHVyKCldO1xuXG5cdFx0Y29uc3QgcmVuZGVyVGFyZ2V0UGFyYW1ldGVycyA9IHtcblx0XHRcdG1pbkZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHRcdFx0bWFnRmlsdGVyOiBMaW5lYXJGaWx0ZXIsXG5cdFx0XHR0eXBlOiBIYWxmRmxvYXRUeXBlLFxuXHRcdH07XG5cblx0XHRjb25zdCBmYm8xID0gbmV3IFdlYkdMUmVuZGVyVGFyZ2V0KHJlc29sdXRpb24sIHJlc29sdXRpb24sIHJlbmRlclRhcmdldFBhcmFtZXRlcnMpO1xuXHRcdGZibzEuZGVwdGhCdWZmZXIgPSB0cnVlO1xuXHRcdGZibzEuZGVwdGhUZXh0dXJlID0gbmV3IERlcHRoVGV4dHVyZShyZXNvbHV0aW9uLCByZXNvbHV0aW9uKTtcblx0XHRmYm8xLmRlcHRoVGV4dHVyZS5mb3JtYXQgPSBEZXB0aEZvcm1hdDtcblx0XHRmYm8xLmRlcHRoVGV4dHVyZS50eXBlID0gVW5zaWduZWRTaG9ydFR5cGU7XG5cdFx0Y29uc3QgZmJvMiA9IG5ldyBXZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uLCByZW5kZXJUYXJnZXRQYXJhbWV0ZXJzKTtcblxuXHRcdGNvbnN0IGJsdXJQYXNzID0gbmV3IEJsdXJQYXNzKHtcblx0XHRcdGdsLFxuXHRcdFx0cmVzb2x1dGlvbixcblx0XHRcdHdpZHRoOiBibHVyWzBdLFxuXHRcdFx0aGVpZ2h0OiBibHVyWzFdLFxuXHRcdFx0bWluRGVwdGhUaHJlc2hvbGQsXG5cdFx0XHRtYXhEZXB0aFRocmVzaG9sZCxcblx0XHRcdGRlcHRoU2NhbGUsXG5cdFx0XHRkZXB0aFRvQmx1clJhdGlvQmlhcyxcblx0XHR9KTtcblxuXHRcdGNvbnN0IGRlZmluZXM6IE5ndEFueVJlY29yZCA9IHt9O1xuXG5cdFx0aWYgKGhhc0JsdXIpIHtcblx0XHRcdGRlZmluZXNbJ1VTRV9CTFVSJ10gPSAnJztcblx0XHR9XG5cblx0XHRpZiAoZGVwdGhTY2FsZSA+IDApIHtcblx0XHRcdGRlZmluZXNbJ1VTRV9ERVBUSCddID0gJyc7XG5cdFx0fVxuXG5cdFx0aWYgKGRpc3RvcnRpb25NYXApIHtcblx0XHRcdGRlZmluZXNbJ1VTRV9ESVNUT1JUSU9OJ10gPSAnJztcblx0XHR9XG5cblx0XHRjb25zdCByZWZsZWN0b3JQYXJhbWV0ZXJzID0ge1xuXHRcdFx0bWlycm9yLFxuXHRcdFx0dGV4dHVyZU1hdHJpeDogdGhpcy50ZXh0dXJlTWF0cml4LFxuXHRcdFx0bWl4Qmx1cixcblx0XHRcdHREaWZmdXNlOiBmYm8xLnRleHR1cmUsXG5cdFx0XHR0RGVwdGg6IGZibzEuZGVwdGhUZXh0dXJlLFxuXHRcdFx0dERpZmZ1c2VCbHVyOiBmYm8yLnRleHR1cmUsXG5cdFx0XHRoYXNCbHVyLFxuXHRcdFx0bWl4U3RyZW5ndGgsXG5cdFx0XHRtaW5EZXB0aFRocmVzaG9sZCxcblx0XHRcdG1heERlcHRoVGhyZXNob2xkLFxuXHRcdFx0ZGVwdGhTY2FsZSxcblx0XHRcdGRlcHRoVG9CbHVyUmF0aW9CaWFzLFxuXHRcdFx0ZGlzdG9ydGlvbixcblx0XHRcdGRpc3RvcnRpb25NYXAsXG5cdFx0XHRtaXhDb250cmFzdCxcblx0XHRcdGRlZmluZXMsXG5cdFx0fTtcblxuXHRcdHJldHVybiB7IGZibzEsIGZibzIsIGJsdXJQYXNzLCByZWZsZWN0b3JQYXJhbWV0ZXJzIH07XG5cdH0pO1xuXG5cdHByaXZhdGUgZGVmaW5lc0tleSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBkZWZpbmVzID0gdGhpcy5yZWZsZWN0U3RhdGUoKS5yZWZsZWN0b3JQYXJhbWV0ZXJzLmRlZmluZXM7XG5cdFx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKGRlZmluZXMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh2YWx1ZSAhPSBudWxsID8gYCR7YWNjfSAke2tleX1gIDogYWNjKSwgJycpO1xuXHR9KTtcblxuXHRtYXRlcmlhbCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBwcmV2TWF0ZXJpYWwgPSB1bnRyYWNrZWQodGhpcy5tYXRlcmlhbFJlZik/Lm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRpZiAocHJldk1hdGVyaWFsKSB7XG5cdFx0XHRwcmV2TWF0ZXJpYWwuZGlzcG9zZSgpO1xuXHRcdFx0ZGVsZXRlIChwcmV2TWF0ZXJpYWwgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddO1xuXHRcdFx0ZGVsZXRlIChwcmV2TWF0ZXJpYWwgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfcmVuZGVyZXJfXyddO1xuXHRcdH1cblxuXHRcdC8vIHRyYWNraW5nIGRlZmluZXMga2V5IHNvIHRoYXQgdGhlIG1hdGVyaWFsIGlzIHJlY3JlYXRlZCB3aGVuIHRoZSBkZWZpbmVzIGNoYW5nZVxuXHRcdHRoaXMuZGVmaW5lc0tleSgpO1xuXHRcdHJldHVybiBuZXcgTWVzaFJlZmxlY3Rvck1hdGVyaWFsKCk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghbWF0ZXJpYWwpIHJldHVybjtcblx0XHRcdGNvbnN0IHsgcmVmbGVjdG9yUGFyYW1ldGVycyB9ID0gdGhpcy5yZWZsZWN0U3RhdGUoKTtcblx0XHRcdGFwcGx5UHJvcHMobWF0ZXJpYWwsIHsgLi4ucmVmbGVjdG9yUGFyYW1ldGVycywgLi4udGhpcy5wYXJhbWV0ZXJzKCkgfSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKG1hdGVyaWFsKSB7XG5cdFx0XHRcdG1hdGVyaWFsLmRpc3Bvc2UoKTtcblx0XHRcdFx0ZGVsZXRlIChtYXRlcmlhbCBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHRcdGRlbGV0ZSAobWF0ZXJpYWwgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfcmVuZGVyZXJfXyddO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGdsLCBzY2VuZSB9KSA9PiB7XG5cdFx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghbWF0ZXJpYWwpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobWF0ZXJpYWwpO1xuXHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IHBhcmVudCA9IFJlZmxlY3QuZ2V0KG1hdGVyaWFsLCAncGFyZW50JykgPz8gdW50cmFja2VkKGxvY2FsU3RhdGUucGFyZW50KTtcblx0XHRcdGlmICghcGFyZW50KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IHsgZmJvMSwgZmJvMiwgYmx1clBhc3MgfSA9IHRoaXMucmVmbGVjdFN0YXRlKCk7XG5cdFx0XHRjb25zdCBoYXNCbHVyID0gdGhpcy5oYXNCbHVyKCk7XG5cblx0XHRcdHBhcmVudC52aXNpYmxlID0gZmFsc2U7XG5cdFx0XHRjb25zdCBjdXJyZW50WHJFbmFibGVkID0gZ2wueHIuZW5hYmxlZDtcblx0XHRcdGNvbnN0IGN1cnJlbnRTaGFkb3dBdXRvVXBkYXRlID0gZ2wuc2hhZG93TWFwLmF1dG9VcGRhdGU7XG5cdFx0XHR0aGlzLmJlZm9yZVJlbmRlcigpO1xuXHRcdFx0Z2wueHIuZW5hYmxlZCA9IGZhbHNlO1xuXHRcdFx0Z2wuc2hhZG93TWFwLmF1dG9VcGRhdGUgPSBmYWxzZTtcblx0XHRcdGdsLnNldFJlbmRlclRhcmdldChmYm8xKTtcblx0XHRcdGdsLnN0YXRlLmJ1ZmZlcnMuZGVwdGguc2V0TWFzayh0cnVlKTtcblx0XHRcdGlmICghZ2wuYXV0b0NsZWFyKSBnbC5jbGVhcigpO1xuXHRcdFx0Z2wucmVuZGVyKHNjZW5lLCB0aGlzLnZpcnR1YWxDYW1lcmEpO1xuXHRcdFx0aWYgKGhhc0JsdXIpIGJsdXJQYXNzLnJlbmRlcihnbCwgZmJvMSwgZmJvMik7XG5cdFx0XHRnbC54ci5lbmFibGVkID0gY3VycmVudFhyRW5hYmxlZDtcblx0XHRcdGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gY3VycmVudFNoYWRvd0F1dG9VcGRhdGU7XG5cdFx0XHRwYXJlbnQudmlzaWJsZSA9IHRydWU7XG5cdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRpZiAoIW1hdGVyaWFsKSByZXR1cm47XG5cblx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShtYXRlcmlhbCk7XG5cdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRjb25zdCBwYXJlbnQgPSBSZWZsZWN0LmdldChtYXRlcmlhbCwgJ3BhcmVudCcpID8/IHVudHJhY2tlZChsb2NhbFN0YXRlLnBhcmVudCk7XG5cdFx0aWYgKCFwYXJlbnQpIHJldHVybjtcblxuXHRcdGNvbnN0IHsgY2FtZXJhIH0gPSB0aGlzLnN0b3JlLnNuYXBzaG90O1xuXHRcdGNvbnN0IHsgcmVmbGVjdG9yT2Zmc2V0IH0gPSB1bnRyYWNrZWQodGhpcy5yZWZsZWN0T3B0aW9ucyk7XG5cblx0XHR0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHBhcmVudC5tYXRyaXhXb3JsZCk7XG5cdFx0dGhpcy5jYW1lcmFXb3JsZFBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihjYW1lcmEubWF0cml4V29ybGQpO1xuXHRcdHRoaXMucm90YXRpb25NYXRyaXguZXh0cmFjdFJvdGF0aW9uKHBhcmVudC5tYXRyaXhXb3JsZCk7XG5cdFx0dGhpcy5ub3JtYWwuc2V0KDAsIDAsIDEpO1xuXHRcdHRoaXMubm9ybWFsLmFwcGx5TWF0cml4NCh0aGlzLnJvdGF0aW9uTWF0cml4KTtcblx0XHR0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24uYWRkU2NhbGVkVmVjdG9yKHRoaXMubm9ybWFsLCByZWZsZWN0b3JPZmZzZXQpO1xuXHRcdHRoaXMudmlldy5zdWJWZWN0b3JzKHRoaXMucmVmbGVjdG9yV29ybGRQb3NpdGlvbiwgdGhpcy5jYW1lcmFXb3JsZFBvc2l0aW9uKTtcblx0XHQvLyBBdm9pZCByZW5kZXJpbmcgd2hlbiByZWZsZWN0b3IgaXMgZmFjaW5nIGF3YXlcblx0XHRpZiAodGhpcy52aWV3LmRvdCh0aGlzLm5vcm1hbCkgPiAwKSByZXR1cm47XG5cdFx0dGhpcy52aWV3LnJlZmxlY3QodGhpcy5ub3JtYWwpLm5lZ2F0ZSgpO1xuXHRcdHRoaXMudmlldy5hZGQodGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uKTtcblx0XHR0aGlzLnJvdGF0aW9uTWF0cml4LmV4dHJhY3RSb3RhdGlvbihjYW1lcmEubWF0cml4V29ybGQpO1xuXHRcdHRoaXMubG9va0F0UG9zaXRpb24uc2V0KDAsIDAsIC0xKTtcblx0XHR0aGlzLmxvb2tBdFBvc2l0aW9uLmFwcGx5TWF0cml4NCh0aGlzLnJvdGF0aW9uTWF0cml4KTtcblx0XHR0aGlzLmxvb2tBdFBvc2l0aW9uLmFkZCh0aGlzLmNhbWVyYVdvcmxkUG9zaXRpb24pO1xuXHRcdHRoaXMudGFyZ2V0LnN1YlZlY3RvcnModGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uLCB0aGlzLmxvb2tBdFBvc2l0aW9uKTtcblx0XHR0aGlzLnRhcmdldC5yZWZsZWN0KHRoaXMubm9ybWFsKS5uZWdhdGUoKTtcblx0XHR0aGlzLnRhcmdldC5hZGQodGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uKTtcblx0XHR0aGlzLnZpcnR1YWxDYW1lcmEucG9zaXRpb24uY29weSh0aGlzLnZpZXcpO1xuXHRcdHRoaXMudmlydHVhbENhbWVyYS51cC5zZXQoMCwgMSwgMCk7XG5cdFx0dGhpcy52aXJ0dWFsQ2FtZXJhLnVwLmFwcGx5TWF0cml4NCh0aGlzLnJvdGF0aW9uTWF0cml4KTtcblx0XHR0aGlzLnZpcnR1YWxDYW1lcmEudXAucmVmbGVjdCh0aGlzLm5vcm1hbCk7XG5cdFx0dGhpcy52aXJ0dWFsQ2FtZXJhLmxvb2tBdCh0aGlzLnRhcmdldCk7XG5cdFx0dGhpcy52aXJ0dWFsQ2FtZXJhLmZhciA9IGNhbWVyYS5mYXI7IC8vIFVzZWQgaW4gV2ViR0xCYWNrZ3JvdW5kXG5cdFx0dGhpcy52aXJ0dWFsQ2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdFx0dGhpcy52aXJ0dWFsQ2FtZXJhLnByb2plY3Rpb25NYXRyaXguY29weShjYW1lcmEucHJvamVjdGlvbk1hdHJpeCk7XG5cdFx0Ly8gVXBkYXRlIHRoZSB0ZXh0dXJlIG1hdHJpeFxuXHRcdHRoaXMudGV4dHVyZU1hdHJpeC5zZXQoMC41LCAwLjAsIDAuMCwgMC41LCAwLjAsIDAuNSwgMC4wLCAwLjUsIDAuMCwgMC4wLCAwLjUsIDAuNSwgMC4wLCAwLjAsIDAuMCwgMS4wKTtcblx0XHR0aGlzLnRleHR1cmVNYXRyaXgubXVsdGlwbHkodGhpcy52aXJ0dWFsQ2FtZXJhLnByb2plY3Rpb25NYXRyaXgpO1xuXHRcdHRoaXMudGV4dHVyZU1hdHJpeC5tdWx0aXBseSh0aGlzLnZpcnR1YWxDYW1lcmEubWF0cml4V29ybGRJbnZlcnNlKTtcblx0XHR0aGlzLnRleHR1cmVNYXRyaXgubXVsdGlwbHkocGFyZW50Lm1hdHJpeFdvcmxkKTtcblx0XHQvLyBOb3cgdXBkYXRlIHByb2plY3Rpb24gbWF0cml4IHdpdGggbmV3IGNsaXAgcGxhbmUsIGltcGxlbWVudGluZyBjb2RlIGZyb206IGh0dHA6Ly93d3cudGVyYXRob24uY29tL2NvZGUvb2JsaXF1ZS5odG1sXG5cdFx0Ly8gUGFwZXIgZXhwbGFpbmluZyB0aGlzIHRlY2huaXF1ZTogaHR0cDovL3d3dy50ZXJhdGhvbi5jb20vbGVuZ3llbC9MZW5neWVsLU9ibGlxdWUucGRmXG5cdFx0dGhpcy5yZWZsZWN0b3JQbGFuZS5zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludCh0aGlzLm5vcm1hbCwgdGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uKTtcblx0XHR0aGlzLnJlZmxlY3RvclBsYW5lLmFwcGx5TWF0cml4NCh0aGlzLnZpcnR1YWxDYW1lcmEubWF0cml4V29ybGRJbnZlcnNlKTtcblx0XHR0aGlzLmNsaXBQbGFuZS5zZXQoXG5cdFx0XHR0aGlzLnJlZmxlY3RvclBsYW5lLm5vcm1hbC54LFxuXHRcdFx0dGhpcy5yZWZsZWN0b3JQbGFuZS5ub3JtYWwueSxcblx0XHRcdHRoaXMucmVmbGVjdG9yUGxhbmUubm9ybWFsLnosXG5cdFx0XHR0aGlzLnJlZmxlY3RvclBsYW5lLmNvbnN0YW50LFxuXHRcdCk7XG5cdFx0Y29uc3QgcHJvamVjdGlvbk1hdHJpeCA9IHRoaXMudmlydHVhbENhbWVyYS5wcm9qZWN0aW9uTWF0cml4O1xuXHRcdHRoaXMucS54ID0gKE1hdGguc2lnbih0aGlzLmNsaXBQbGFuZS54KSArIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbOF0pIC8gcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1swXTtcblx0XHR0aGlzLnEueSA9IChNYXRoLnNpZ24odGhpcy5jbGlwUGxhbmUueSkgKyBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzldKSAvIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbNV07XG5cdFx0dGhpcy5xLnogPSAtMS4wO1xuXHRcdHRoaXMucS53ID0gKDEuMCArIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMTBdKSAvIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMTRdO1xuXHRcdC8vIENhbGN1bGF0ZSB0aGUgc2NhbGVkIHBsYW5lIHZlY3RvclxuXHRcdHRoaXMuY2xpcFBsYW5lLm11bHRpcGx5U2NhbGFyKDIuMCAvIHRoaXMuY2xpcFBsYW5lLmRvdCh0aGlzLnEpKTtcblx0XHQvLyBSZXBsYWNpbmcgdGhlIHRoaXJkIHJvdyBvZiB0aGUgcHJvamVjdGlvbiBtYXRyaXhcblx0XHRwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzJdID0gdGhpcy5jbGlwUGxhbmUueDtcblx0XHRwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzZdID0gdGhpcy5jbGlwUGxhbmUueTtcblx0XHRwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzEwXSA9IHRoaXMuY2xpcFBsYW5lLnogKyAxLjA7XG5cdFx0cHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1sxNF0gPSB0aGlzLmNsaXBQbGFuZS53O1xuXHR9XG59XG4iXX0=