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
@@ -1,6 +1,5 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, input, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, viewChild, } from '@angular/core';
2
2
  import { checkUpdate, extend, injectBeforeRender, omit, pick, resolveRef } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import { mergeInputs } from 'ngxtension/inject-inputs';
5
4
  import { BufferAttribute, BufferGeometry, DynamicDrawUsage, Matrix4, Points, Vector3 } from 'three';
6
5
  import { PositionPoint } from './position-point';
@@ -11,21 +10,19 @@ export class NgtsPoint {
11
10
  this.positionPointRef = viewChild.required('positionPoint');
12
11
  this.points = inject(NgtsPointsInstances);
13
12
  extend({ PositionPoint });
14
- const autoEffect = injectAutoEffect();
15
- afterNextRender(() => {
16
- autoEffect(() => {
17
- return this.points.subscribe(this.positionPointRef().nativeElement);
18
- });
13
+ effect((onCleanup) => {
14
+ const cleanUp = this.points.subscribe(this.positionPointRef().nativeElement);
15
+ onCleanup(() => cleanUp());
19
16
  });
20
17
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionPointRef", first: true, predicate: ["positionPoint"], descendants: true, isSignal: true }], ngImport: i0, template: `
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionPointRef", first: true, predicate: ["positionPoint"], descendants: true, isSignal: true }], ngImport: i0, template: `
23
20
  <ngt-position-point #positionPoint [parameters]="options()" [instance]="points.pointsRef()">
24
21
  <ng-content />
25
22
  </ngt-position-point>
26
23
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
24
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPoint, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPoint, decorators: [{
29
26
  type: Component,
30
27
  args: [{
31
28
  selector: 'ngts-point',
@@ -61,8 +58,8 @@ export class NgtsPointsBuffer {
61
58
  checkUpdate(attributes['size']);
62
59
  });
63
60
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsBuffer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsPointsBuffer, isStandalone: true, selector: "ngts-points-buffer", inputs: { positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: true, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null }, stride: { classPropertyName: "stride", publicName: "stride", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointsBuffer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsPointsBuffer, isStandalone: true, selector: "ngts-points-buffer", inputs: { positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: true, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null }, stride: { classPropertyName: "stride", publicName: "stride", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
66
63
  <ngt-points #points [parameters]="options()">
67
64
  <ngt-buffer-geometry>
68
65
  <ngt-buffer-attribute
@@ -95,7 +92,7 @@ export class NgtsPointsBuffer {
95
92
  </ngt-points>
96
93
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97
94
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsBuffer, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointsBuffer, decorators: [{
99
96
  type: Component,
100
97
  args: [{
101
98
  selector: 'ngts-points-buffer',
@@ -156,14 +153,11 @@ export class NgtsPointsInstances {
156
153
  this.positionPoints = [];
157
154
  this.DynamicDrawUsage = DynamicDrawUsage;
158
155
  extend({ Points, BufferAttribute, BufferGeometry });
159
- const autoEffect = injectAutoEffect();
160
- afterNextRender(() => {
161
- autoEffect(() => {
162
- const points = this.pointsRef()?.nativeElement;
163
- if (!points)
164
- return;
165
- checkUpdate(points.geometry.attributes['position']);
166
- });
156
+ effect(() => {
157
+ const points = this.pointsRef()?.nativeElement;
158
+ if (!points)
159
+ return;
160
+ checkUpdate(points.geometry.attributes['position']);
167
161
  });
168
162
  injectBeforeRender(() => {
169
163
  const points = this.pointsRef()?.nativeElement;
@@ -196,8 +190,8 @@ export class NgtsPointsInstances {
196
190
  this.positionPoints = this.positionPoints.filter((p) => p !== ref);
197
191
  };
198
192
  }
199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
194
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
201
195
  <ngt-points
202
196
  #points
203
197
  [userData]="{ instances: positionPoints }"
@@ -232,7 +226,7 @@ export class NgtsPointsInstances {
232
226
  </ngt-points>
233
227
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
234
228
  }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsInstances, decorators: [{
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointsInstances, decorators: [{
236
230
  type: Component,
237
231
  args: [{
238
232
  selector: 'ngts-points-instances',
@@ -275,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
275
269
  changeDetection: ChangeDetectionStrategy.OnPush,
276
270
  }]
277
271
  }], ctorParameters: () => [] });
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL3BvaW50cy9wb2ludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFFdEIsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQWEsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BHLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBYW5FLE1BQU0sT0FBTyxTQUFTO0lBT3JCO1FBTkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUErQixDQUFDLENBQUM7UUFFakQscUJBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBNEIsZUFBZSxDQUFDLENBQUM7UUFFbEYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBR3BDLE1BQU0sQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFMUIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUV0QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsT0FBTyxJQUFJ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QUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMzQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFFakQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbkMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQThDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQztJQUNILENBQUM7OEdBeEVXLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGdWQXJDckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVDs7MkZBSVcsbUJBQW1CO2tCQXhDL0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQ1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSwgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndFBvaW50cywgb21pdCwgcGljaywgcmVzb2x2ZVJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQnVmZmVyQXR0cmlidXRlLCBCdWZmZXJHZW9tZXRyeSwgRHluYW1pY0RyYXdVc2FnZSwgTWF0cml4NCwgUG9pbnRzLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0UG9zaXRpb25Qb2ludCwgUG9zaXRpb25Qb2ludCB9IGZyb20gJy4vcG9zaXRpb24tcG9pbnQnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXBvaW50Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvc2l0aW9uLXBvaW50ICNwb3NpdGlvblBvaW50IFtwYXJhbWV0ZXJzXT1cIm9wdGlvbnMoKVwiIFtpbnN0YW5jZV09XCJwb2ludHMucG9pbnRzUmVmKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcG9zaXRpb24tcG9pbnQ+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNQb2ludCB7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBQYXJ0aWFsPE5ndFBvc2l0aW9uUG9pbnQ+KTtcblxuXHRwb3NpdGlvblBvaW50UmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8UG9zaXRpb25Qb2ludD4+KCdwb3NpdGlvblBvaW50Jyk7XG5cblx0cG9pbnRzID0gaW5qZWN0KE5ndHNQb2ludHNJbnN0YW5jZXMpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IFBvc2l0aW9uUG9pbnQgfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5wb2ludHMuc3Vic2NyaWJlKHRoaXMucG9zaXRpb25Qb2ludFJlZigpLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1wb2ludHMtYnVmZmVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvaW50cyAjcG9pbnRzIFtwYXJhbWV0ZXJzXT1cIm9wdGlvbnMoKVwiPlxuXHRcdFx0PG5ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIlxuXHRcdFx0XHRcdFtjb3VudF09XCJwb3NpdGlvbnMoKS5sZW5ndGggLyBzdHJpZGUoKVwiXG5cdFx0XHRcdFx0W2FycmF5XT1cInBvc2l0aW9ucygpXCJcblx0XHRcdFx0XHRbaXRlbVNpemVdPVwic3RyaWRlKClcIlxuXHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0Lz5cblx0XHRcdFx0QGlmIChjb2xvcnMoKTsgYXMgY29sb3JzKSB7XG5cdFx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0XHRhdHRhY2g9XCJhdHRyaWJ1dGVzLmNvbG9yXCJcblx0XHRcdFx0XHRcdFtjb3VudF09XCJjb2xvcnMubGVuZ3RoIC8gc3RyaWRlKClcIlxuXHRcdFx0XHRcdFx0W2FycmF5XT1cImNvbG9yc1wiXG5cdFx0XHRcdFx0XHRbaXRlbVNpemVdPVwiM1wiXG5cdFx0XHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0fVxuXHRcdFx0XHRAaWYgKHNpemVzKCk7IGFzIHNpemVzKSB7XG5cdFx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0XHRhdHRhY2g9XCJhdHRyaWJ1dGVzLnNpemVcIlxuXHRcdFx0XHRcdFx0W2NvdW50XT1cInNpemVzLmxlbmd0aCAvIHN0cmlkZSgpXCJcblx0XHRcdFx0XHRcdFthcnJheV09XCJzaXplc1wiXG5cdFx0XHRcdFx0XHRbaXRlbVNpemVdPVwiMVwiXG5cdFx0XHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0fVxuXHRcdFx0PC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wb2ludHM+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNQb2ludHNCdWZmZXIge1xuXHRwb3NpdGlvbnMgPSBpbnB1dC5yZXF1aXJlZDxGbG9hdDMyQXJyYXk+KCk7XG5cdGNvbG9ycyA9IGlucHV0PEZsb2F0MzJBcnJheT4oKTtcblx0c2l6ZXMgPSBpbnB1dDxGbG9hdDMyQXJyYXk+KCk7XG5cdHN0cmlkZSA9IGlucHV0PDIgfCAzPigzKTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIFBhcnRpYWw8Tmd0UG9zaXRpb25Qb2ludD4pO1xuXG5cdHBvaW50c1JlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFBvaW50cz4+KCdwb2ludHMnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBQb2ludHMsIEJ1ZmZlckF0dHJpYnV0ZSwgQnVmZmVyR2VvbWV0cnkgfSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgcG9pbnRzID0gdGhpcy5wb2ludHNSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghcG9pbnRzKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IGF0dHJpYnV0ZXMgPSBwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlcztcblx0XHRcdGNoZWNrVXBkYXRlKGF0dHJpYnV0ZXNbJ3Bvc2l0aW9uJ10pO1xuXHRcdFx0aWYgKHRoaXMuY29sb3JzKCkpIGNoZWNrVXBkYXRlKGF0dHJpYnV0ZXNbJ2NvbG9yJ10pO1xuXHRcdFx0aWYgKHRoaXMuc2l6ZXMoKSkgY2hlY2tVcGRhdGUoYXR0cmlidXRlc1snc2l6ZSddKTtcblx0XHR9KTtcblx0fVxuXG5cdHByb3RlY3RlZCByZWFkb25seSBEeW5hbWljRHJhd1VzYWdlID0gRHluYW1pY0RyYXdVc2FnZTtcbn1cblxuY29uc3QgcGFyZW50TWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzUG9pbnRzSW5zdGFuY2VzT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0UG9pbnRzPiB7XG5cdHJhbmdlPzogbnVtYmVyO1xuXHRsaW1pdDogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0SW5zdGFuY2VzT3B0aW9uczogTmd0c1BvaW50c0luc3RhbmNlc09wdGlvbnMgPSB7IGxpbWl0OiAxMDAwIH07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtcG9pbnRzLWluc3RhbmNlcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb2ludHNcblx0XHRcdCNwb2ludHNcblx0XHRcdFt1c2VyRGF0YV09XCJ7IGluc3RhbmNlczogcG9zaXRpb25Qb2ludHMgfVwiXG5cdFx0XHRbbWF0cml4QXV0b1VwZGF0ZV09XCJmYWxzZVwiXG5cdFx0XHRbcmF5Y2FzdF09XCJudWxsXCJcblx0XHRcdFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiXG5cdFx0PlxuXHRcdFx0PG5ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIlxuXHRcdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkucG9zaXRpb25zLmxlbmd0aCAvIDNcIlxuXHRcdFx0XHRcdFthcnJheV09XCJidWZmZXJzKCkucG9zaXRpb25zXCJcblx0XHRcdFx0XHRbaXRlbVNpemVdPVwiM1wiXG5cdFx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0XHRhdHRhY2g9XCJhdHRyaWJ1dGVzLmNvbG9yXCJcblx0XHRcdFx0XHRbY291bnRdPVwiYnVmZmVycygpLmNvbG9ycy5sZW5ndGggLyAzXCJcblx0XHRcdFx0XHRbYXJyYXldPVwiYnVmZmVycygpLmNvbG9yc1wiXG5cdFx0XHRcdFx0W2l0ZW1TaXplXT1cIjNcIlxuXHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0Lz5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0YXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCJcblx0XHRcdFx0XHRbY291bnRdPVwiYnVmZmVycygpLnNpemVzLmxlbmd0aFwiXG5cdFx0XHRcdFx0W2FycmF5XT1cImJ1ZmZlcnMoKS5zaXplc1wiXG5cdFx0XHRcdFx0W2l0ZW1TaXplXT1cIjFcIlxuXHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0Lz5cblx0XHRcdDwvbmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcG9pbnRzPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUG9pbnRzSW5zdGFuY2VzIHtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRJbnN0YW5jZXNPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdEluc3RhbmNlc09wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnbGltaXQnLCAncmFuZ2UnXSk7XG5cblx0cG9pbnRzUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8UG9pbnRzPj4oJ3BvaW50cycpO1xuXG5cdHByaXZhdGUgbGltaXQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbWl0Jyk7XG5cblx0YnVmZmVycyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBsaW1pdCA9IHRoaXMubGltaXQoKTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRwb3NpdGlvbnM6IG5ldyBGbG9hdDMyQXJyYXkobGltaXQgKiAzKSxcblx0XHRcdGNvbG9yczogRmxvYXQzMkFycmF5LmZyb20oeyBsZW5ndGg6IGxpbWl0ICogMyB9LCAoKSA9PiAxKSxcblx0XHRcdHNpemVzOiBGbG9hdDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgfSwgKCkgPT4gMSksXG5cdFx0fTtcblx0fSk7XG5cblx0cG9zaXRpb25Qb2ludHM6IEFycmF5PEVsZW1lbnRSZWY8UG9zaXRpb25Qb2ludD4gfCBQb3NpdGlvblBvaW50PiA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IFBvaW50cywgQnVmZmVyQXR0cmlidXRlLCBCdWZmZXJHZW9tZXRyeSB9KTtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwb2ludHMgPSB0aGlzLnBvaW50c1JlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoIXBvaW50cykgcmV0dXJuO1xuXHRcdFx0XHRjaGVja1VwZGF0ZShwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlc1sncG9zaXRpb24nXSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBwb2ludHMgPSB0aGlzLnBvaW50c1JlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFwb2ludHMpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgeyBsaW1pdCwgcmFuZ2UgfSA9IHRoaXMub3B0aW9ucygpO1xuXHRcdFx0Y29uc3QgeyBwb3NpdGlvbnMsIHNpemVzLCBjb2xvcnMgfSA9IHRoaXMuYnVmZmVycygpO1xuXG5cdFx0XHRwb2ludHMudXBkYXRlTWF0cml4KCk7XG5cdFx0XHRwb2ludHMudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdHBhcmVudE1hdHJpeC5jb3B5KHBvaW50cy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7XG5cblx0XHRcdHBvaW50cy5nZW9tZXRyeS5kcmF3UmFuZ2UuY291bnQgPSBNYXRoLm1pbihcblx0XHRcdFx0bGltaXQsXG5cdFx0XHRcdHJhbmdlICE9PSB1bmRlZmluZWQgPyByYW5nZSA6IGxpbWl0LFxuXHRcdFx0XHR0aGlzLnBvc2l0aW9uUG9pbnRzLmxlbmd0aCxcblx0XHRcdCk7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvblBvaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCBwb3NpdGlvblBvaW50ID0gcmVzb2x2ZVJlZih0aGlzLnBvc2l0aW9uUG9pbnRzW2ldKTtcblx0XHRcdFx0aWYgKHBvc2l0aW9uUG9pbnQpIHtcblx0XHRcdFx0XHRwb3NpdGlvblBvaW50LmdldFdvcmxkUG9zaXRpb24ocG9zaXRpb24pLmFwcGx5TWF0cml4NChwYXJlbnRNYXRyaXgpO1xuXHRcdFx0XHRcdHBvc2l0aW9uLnRvQXJyYXkocG9zaXRpb25zLCBpICogMyk7XG5cdFx0XHRcdFx0Y2hlY2tVcGRhdGUocG9pbnRzLmdlb21ldHJ5LmF0dHJpYnV0ZXNbJ3Bvc2l0aW9uJ10pO1xuXG5cdFx0XHRcdFx0cG9zaXRpb25Qb2ludC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRwb3NpdGlvblBvaW50LmNvbG9yLnRvQXJyYXkoY29sb3JzLCBpICogMyk7XG5cdFx0XHRcdFx0Y2hlY2tVcGRhdGUocG9pbnRzLmdlb21ldHJ5LmF0dHJpYnV0ZXNbJ2NvbG9yJ10pO1xuXG5cdFx0XHRcdFx0c2l6ZXMuc2V0KFtwb3NpdGlvblBvaW50LnNpemVdLCBpKTtcblx0XHRcdFx0XHRjaGVja1VwZGF0ZShwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlc1snc2l6ZSddKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0c3Vic2NyaWJlKHJlZjogRWxlbWVudFJlZjxQb3NpdGlvblBvaW50PiB8IFBvc2l0aW9uUG9pbnQpIHtcblx0XHR0aGlzLnBvc2l0aW9uUG9pbnRzLnB1c2gocmVmKTtcblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0dGhpcy5wb3NpdGlvblBvaW50cyA9IHRoaXMucG9zaXRpb25Qb2ludHMuZmlsdGVyKChwKSA9PiBwICE9PSByZWYpO1xuXHRcdH07XG5cdH1cblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgRHluYW1pY0RyYXdVc2FnZSA9IER5bmFtaWNEcmF3VXNhZ2U7XG59XG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL3BvaW50cy9wb2ludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBRU4sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQWEsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BHLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBYW5FLE1BQU0sT0FBTyxTQUFTO0lBT3JCO1FBTkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUErQixDQUFDLENBQUM7UUFFakQscUJBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBNEIsZUFBZSxDQUFDLENBQUM7UUFFbEYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBR3BDLE1BQU0sQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFMUIsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLEdBQUcs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LENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUE4QztRQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUM7SUFDSCxDQUFDOzhHQXJFVyxtQkFBbUI7a0dBQW5CLG1CQUFtQixnVkFyQ3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQ1Q7OzJGQUlXLG1CQUFtQjtrQkF4Qy9CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUNUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2hlY2tVcGRhdGUsIGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBOZ3RQb2ludHMsIG9taXQsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJ1ZmZlckF0dHJpYnV0ZSwgQnVmZmVyR2VvbWV0cnksIER5bmFtaWNEcmF3VXNhZ2UsIE1hdHJpeDQsIFBvaW50cywgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndFBvc2l0aW9uUG9pbnQsIFBvc2l0aW9uUG9pbnQgfSBmcm9tICcuL3Bvc2l0aW9uLXBvaW50JztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1wb2ludCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb3NpdGlvbi1wb2ludCAjcG9zaXRpb25Qb2ludCBbcGFyYW1ldGVyc109XCJvcHRpb25zKClcIiBbaW5zdGFuY2VdPVwicG9pbnRzLnBvaW50c1JlZigpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXBvc2l0aW9uLXBvaW50PlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUG9pbnQge1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgUGFydGlhbDxOZ3RQb3NpdGlvblBvaW50Pik7XG5cblx0cG9zaXRpb25Qb2ludFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFBvc2l0aW9uUG9pbnQ+PigncG9zaXRpb25Qb2ludCcpO1xuXG5cdHBvaW50cyA9IGluamVjdChOZ3RzUG9pbnRzSW5zdGFuY2VzKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBQb3NpdGlvblBvaW50IH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGNsZWFuVXAgPSB0aGlzLnBvaW50cy5zdWJzY3JpYmUodGhpcy5wb3NpdGlvblBvaW50UmVmKCkubmF0aXZlRWxlbWVudCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYW5VcCgpKTtcblx0XHR9KTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXBvaW50cy1idWZmZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcG9pbnRzICNwb2ludHMgW3BhcmFtZXRlcnNdPVwib3B0aW9ucygpXCI+XG5cdFx0XHQ8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0YXR0YWNoPVwiYXR0cmlidXRlcy5wb3NpdGlvblwiXG5cdFx0XHRcdFx0W2NvdW50XT1cInBvc2l0aW9ucygpLmxlbmd0aCAvIHN0cmlkZSgpXCJcblx0XHRcdFx0XHRbYXJyYXldPVwicG9zaXRpb25zKClcIlxuXHRcdFx0XHRcdFtpdGVtU2l6ZV09XCJzdHJpZGUoKVwiXG5cdFx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHRAaWYgKGNvbG9ycygpOyBhcyBjb2xvcnMpIHtcblx0XHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMuY29sb3JcIlxuXHRcdFx0XHRcdFx0W2NvdW50XT1cImNvbG9ycy5sZW5ndGggLyBzdHJpZGUoKVwiXG5cdFx0XHRcdFx0XHRbYXJyYXldPVwiY29sb3JzXCJcblx0XHRcdFx0XHRcdFtpdGVtU2l6ZV09XCIzXCJcblx0XHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAoc2l6ZXMoKTsgYXMgc2l6ZXMpIHtcblx0XHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMuc2l6ZVwiXG5cdFx0XHRcdFx0XHRbY291bnRdPVwic2l6ZXMubGVuZ3RoIC8gc3RyaWRlKClcIlxuXHRcdFx0XHRcdFx0W2FycmF5XT1cInNpemVzXCJcblx0XHRcdFx0XHRcdFtpdGVtU2l6ZV09XCIxXCJcblx0XHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L25ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXBvaW50cz5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1BvaW50c0J1ZmZlciB7XG5cdHBvc2l0aW9ucyA9IGlucHV0LnJlcXVpcmVkPEZsb2F0MzJBcnJheT4oKTtcblx0Y29sb3JzID0gaW5wdXQ8RmxvYXQzMkFycmF5PigpO1xuXHRzaXplcyA9IGlucHV0PEZsb2F0MzJBcnJheT4oKTtcblx0c3RyaWRlID0gaW5wdXQ8MiB8IDM+KDMpO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgUGFydGlhbDxOZ3RQb3NpdGlvblBvaW50Pik7XG5cblx0cG9pbnRzUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8UG9pbnRzPj4oJ3BvaW50cycpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IFBvaW50cywgQnVmZmVyQXR0cmlidXRlLCBCdWZmZXJHZW9tZXRyeSB9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBwb2ludHMgPSB0aGlzLnBvaW50c1JlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFwb2ludHMpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgYXR0cmlidXRlcyA9IHBvaW50cy5nZW9tZXRyeS5hdHRyaWJ1dGVzO1xuXHRcdFx0Y2hlY2tVcGRhdGUoYXR0cmlidXRlc1sncG9zaXRpb24nXSk7XG5cdFx0XHRpZiAodGhpcy5jb2xvcnMoKSkgY2hlY2tVcGRhdGUoYXR0cmlidXRlc1snY29sb3InXSk7XG5cdFx0XHRpZiAodGhpcy5zaXplcygpKSBjaGVja1VwZGF0ZShhdHRyaWJ1dGVzWydzaXplJ10pO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IER5bmFtaWNEcmF3VXNhZ2UgPSBEeW5hbWljRHJhd1VzYWdlO1xufVxuXG5jb25zdCBwYXJlbnRNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgcG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNQb2ludHNJbnN0YW5jZXNPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RQb2ludHM+IHtcblx0cmFuZ2U/OiBudW1iZXI7XG5cdGxpbWl0OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRJbnN0YW5jZXNPcHRpb25zOiBOZ3RzUG9pbnRzSW5zdGFuY2VzT3B0aW9ucyA9IHsgbGltaXQ6IDEwMDAgfTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1wb2ludHMtaW5zdGFuY2VzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvaW50c1xuXHRcdFx0I3BvaW50c1xuXHRcdFx0W3VzZXJEYXRhXT1cInsgaW5zdGFuY2VzOiBwb3NpdGlvblBvaW50cyB9XCJcblx0XHRcdFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCJcblx0XHRcdFtyYXljYXN0XT1cIm51bGxcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHQ+XG5cdFx0XHQ8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0YXR0YWNoPVwiYXR0cmlidXRlcy5wb3NpdGlvblwiXG5cdFx0XHRcdFx0W2NvdW50XT1cImJ1ZmZlcnMoKS5wb3NpdGlvbnMubGVuZ3RoIC8gM1wiXG5cdFx0XHRcdFx0W2FycmF5XT1cImJ1ZmZlcnMoKS5wb3NpdGlvbnNcIlxuXHRcdFx0XHRcdFtpdGVtU2l6ZV09XCIzXCJcblx0XHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdC8+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMuY29sb3JcIlxuXHRcdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkuY29sb3JzLmxlbmd0aCAvIDNcIlxuXHRcdFx0XHRcdFthcnJheV09XCJidWZmZXJzKCkuY29sb3JzXCJcblx0XHRcdFx0XHRbaXRlbVNpemVdPVwiM1wiXG5cdFx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0XHRhdHRhY2g9XCJhdHRyaWJ1dGVzLnNpemVcIlxuXHRcdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkuc2l6ZXMubGVuZ3RoXCJcblx0XHRcdFx0XHRbYXJyYXldPVwiYnVmZmVycygpLnNpemVzXCJcblx0XHRcdFx0XHRbaXRlbVNpemVdPVwiMVwiXG5cdFx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0PC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wb2ludHM+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNQb2ludHNJbnN0YW5jZXMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdEluc3RhbmNlc09wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0SW5zdGFuY2VzT3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydsaW1pdCcsICdyYW5nZSddKTtcblxuXHRwb2ludHNSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxQb2ludHM+PigncG9pbnRzJyk7XG5cblx0cHJpdmF0ZSBsaW1pdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGltaXQnKTtcblxuXHRidWZmZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gdGhpcy5saW1pdCgpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHBvc2l0aW9uczogbmV3IEZsb2F0MzJBcnJheShsaW1pdCAqIDMpLFxuXHRcdFx0Y29sb3JzOiBGbG9hdDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgKiAzIH0sICgpID0+IDEpLFxuXHRcdFx0c2l6ZXM6IEZsb2F0MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBsaW1pdCB9LCAoKSA9PiAxKSxcblx0XHR9O1xuXHR9KTtcblxuXHRwb3NpdGlvblBvaW50czogQXJyYXk8RWxlbWVudFJlZjxQb3NpdGlvblBvaW50PiB8IFBvc2l0aW9uUG9pbnQ+ID0gW107XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgUG9pbnRzLCBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5IH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHBvaW50cyA9IHRoaXMucG9pbnRzUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIXBvaW50cykgcmV0dXJuO1xuXHRcdFx0Y2hlY2tVcGRhdGUocG9pbnRzLmdlb21ldHJ5LmF0dHJpYnV0ZXNbJ3Bvc2l0aW9uJ10pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IHBvaW50cyA9IHRoaXMucG9pbnRzUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIXBvaW50cykgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCB7IGxpbWl0LCByYW5nZSB9ID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0XHRjb25zdCB7IHBvc2l0aW9ucywgc2l6ZXMsIGNvbG9ycyB9ID0gdGhpcy5idWZmZXJzKCk7XG5cblx0XHRcdHBvaW50cy51cGRhdGVNYXRyaXgoKTtcblx0XHRcdHBvaW50cy51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXHRcdFx0cGFyZW50TWF0cml4LmNvcHkocG9pbnRzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtcblxuXHRcdFx0cG9pbnRzLmdlb21ldHJ5LmRyYXdSYW5nZS5jb3VudCA9IE1hdGgubWluKFxuXHRcdFx0XHRsaW1pdCxcblx0XHRcdFx0cmFuZ2UgIT09IHVuZGVmaW5lZCA/IHJhbmdlIDogbGltaXQsXG5cdFx0XHRcdHRoaXMucG9zaXRpb25Qb2ludHMubGVuZ3RoLFxuXHRcdFx0KTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9uUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHBvc2l0aW9uUG9pbnQgPSByZXNvbHZlUmVmKHRoaXMucG9zaXRpb25Qb2ludHNbaV0pO1xuXHRcdFx0XHRpZiAocG9zaXRpb25Qb2ludCkge1xuXHRcdFx0XHRcdHBvc2l0aW9uUG9pbnQuZ2V0V29ybGRQb3NpdGlvbihwb3NpdGlvbikuYXBwbHlNYXRyaXg0KHBhcmVudE1hdHJpeCk7XG5cdFx0XHRcdFx0cG9zaXRpb24udG9BcnJheShwb3NpdGlvbnMsIGkgKiAzKTtcblx0XHRcdFx0XHRjaGVja1VwZGF0ZShwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlc1sncG9zaXRpb24nXSk7XG5cblx0XHRcdFx0XHRwb3NpdGlvblBvaW50Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdHBvc2l0aW9uUG9pbnQuY29sb3IudG9BcnJheShjb2xvcnMsIGkgKiAzKTtcblx0XHRcdFx0XHRjaGVja1VwZGF0ZShwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlc1snY29sb3InXSk7XG5cblx0XHRcdFx0XHRzaXplcy5zZXQoW3Bvc2l0aW9uUG9pbnQuc2l6ZV0sIGkpO1xuXHRcdFx0XHRcdGNoZWNrVXBkYXRlKHBvaW50cy5nZW9tZXRyeS5hdHRyaWJ1dGVzWydzaXplJ10pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRzdWJzY3JpYmUocmVmOiBFbGVtZW50UmVmPFBvc2l0aW9uUG9pbnQ+IHwgUG9zaXRpb25Qb2ludCkge1xuXHRcdHRoaXMucG9zaXRpb25Qb2ludHMucHVzaChyZWYpO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHR0aGlzLnBvc2l0aW9uUG9pbnRzID0gdGhpcy5wb3NpdGlvblBvaW50cy5maWx0ZXIoKHApID0+IHAgIT09IHJlZik7XG5cdFx0fTtcblx0fVxuXG5cdHByb3RlY3RlZCByZWFkb25seSBEeW5hbWljRHJhd1VzYWdlID0gRHluYW1pY0RyYXdVc2FnZTtcbn1cbiJdfQ==
@@ -1,6 +1,5 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, input, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, viewChild, } from '@angular/core';
2
2
  import { extend, injectBeforeRender, NgtArgs, omit, pick, resolveRef, vector3 } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import { mergeInputs } from 'ngxtension/inject-inputs';
5
4
  import { Vector2 } from 'three';
6
5
  import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
@@ -16,19 +15,17 @@ export class NgtsSegment {
16
15
  this.segmentRef = viewChild.required('segment');
17
16
  this.segments = inject(NgtsSegments);
18
17
  extend({ SegmentObject });
19
- const autoEffect = injectAutoEffect();
20
- afterNextRender(() => {
21
- autoEffect(() => {
22
- return this.segments.subscribe(this.segmentRef());
23
- });
18
+ effect((onCleanup) => {
19
+ const cleanUp = this.segments.subscribe(this.segmentRef());
20
+ onCleanup(() => cleanUp());
24
21
  });
25
22
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { start: { classPropertyName: "start", publicName: "start", isSignal: true, isRequired: true, transformFunction: null }, end: { classPropertyName: "end", publicName: "end", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "segmentRef", first: true, predicate: ["segment"], descendants: true, isSignal: true }], ngImport: i0, template: `
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { start: { classPropertyName: "start", publicName: "start", isSignal: true, isRequired: true, transformFunction: null }, end: { classPropertyName: "end", publicName: "end", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "segmentRef", first: true, predicate: ["segment"], descendants: true, isSignal: true }], ngImport: i0, template: `
28
25
  <ngt-segment-object #segment [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
29
26
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
27
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSegment, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSegment, decorators: [{
32
29
  type: Component,
33
30
  args: [{
34
31
  selector: 'ngts-segment',
@@ -100,8 +97,8 @@ export class NgtsSegments {
100
97
  this.segments = this.segments.filter((i) => i !== ref);
101
98
  };
102
99
  }
103
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lineRef", first: true, predicate: ["line"], descendants: true, isSignal: true }], ngImport: i0, template: `
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lineRef", first: true, predicate: ["line"], descendants: true, isSignal: true }], ngImport: i0, template: `
105
102
  <ngt-primitive #line *args="[line]">
106
103
  <ngt-primitive *args="[geometry]" attach="geometry" />
107
104
  <ngt-primitive *args="[material]" attach="material" [parameters]="materialParameters()" />
@@ -109,7 +106,7 @@ export class NgtsSegments {
109
106
  </ngt-primitive>
110
107
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
111
108
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsSegments, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsSegments, decorators: [{
113
110
  type: Component,
114
111
  args: [{
115
112
  selector: 'ngts-segments',
@@ -126,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
126
123
  imports: [NgtArgs],
127
124
  }]
128
125
  }], ctorParameters: () => [] });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9saWIvc2VnbWVudHMvc2VnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFFdEIsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQWMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQXVCLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBMEIsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQVdqRCxNQUFNLE9BQU8sV0FBVztJQVl2QjtRQVhBLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFjLENBQUM7UUFDckMsUUFBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWMsQ0FBQztRQUNuQyxVQUFLLEdBQUcsS0FBSyxFQUF1QixDQUFDO1FBRXJDLG9CQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEMsZUFBVSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQTRCLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLGFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFHL0IsTUFBTSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXRDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXJCVyxXQUFXO2tHQUFYLFdBQVcsMmlCQU5iOztFQUVUOzsyRkFJVyxXQUFXO2tCQVR2QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOztFQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0M7O0FBOEJELE1BQU0sc0JBQXNCLEdBQXdCO0lBQ25ELEtBQUssRUFBRSxJQUFJO0lBQ1gsU0FBUyxFQUFFLEdBQUc7Q0FDZCxDQUFDO0FBZ0JGLE1BQU0sT0FBTyxZQUFZO0lBZ0N4QjtRQS9CQSxZQUFPLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RixlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUVoRCxjQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUMsVUFBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLFlBQU8sR0FBRyxTQUFTLENBQW9CLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLGFBQVEsR0FBcUQsRUFBRSxDQUFDO1FBRWhFLFNBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlCLGFBQVEsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDdEMsZUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVuQyx1QkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNwQyxZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDM0IsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBRUosY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFDSCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUdGLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFbkYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNiLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDdkMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBRXZDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDckMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBRXJDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDcEMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBRXBDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDcEMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7WUFDRixDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUE4QztRQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixPQUFPLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUM7SUFDSCxDQUFDOzhHQXBFVyxZQUFZO2tHQUFaLFlBQVksb1VBWGQ7Ozs7OztFQU1ULDREQUdTLE9BQU87OzJGQUVMLFlBQVk7a0JBZHhCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7OztFQU1UO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgTmd0QXJncywgTmd0VmVjdG9yMywgb21pdCwgcGljaywgcmVzb2x2ZVJlZiwgdmVjdG9yMyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQ29sb3JSZXByZXNlbnRhdGlvbiwgVmVjdG9yMiB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IExpbmUyLCBMaW5lTWF0ZXJpYWwsIExpbmVNYXRlcmlhbFBhcmFtZXRlcnMsIExpbmVTZWdtZW50c0dlb21ldHJ5IH0gZnJvbSAndGhyZWUtc3RkbGliJztcbmltcG9ydCB7IFNlZ21lbnRPYmplY3QgfSBmcm9tICcuL3NlZ21lbnQtb2JqZWN0JztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zZWdtZW50Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXNlZ21lbnQtb2JqZWN0ICNzZWdtZW50IFtjb2xvcl09XCJjb2xvcigpXCIgW3N0YXJ0XT1cIm5vcm1hbGl6ZWRTdGFydCgpXCIgW2VuZF09XCJub3JtYWxpemVkRW5kKClcIiAvPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU2VnbWVudCB7XG5cdHN0YXJ0ID0gaW5wdXQucmVxdWlyZWQ8Tmd0VmVjdG9yMz4oKTtcblx0ZW5kID0gaW5wdXQucmVxdWlyZWQ8Tmd0VmVjdG9yMz4oKTtcblx0Y29sb3IgPSBpbnB1dDxDb2xvclJlcHJlc2VudGF0aW9uPigpO1xuXG5cdG5vcm1hbGl6ZWRTdGFydCA9IHZlY3RvcjModGhpcy5zdGFydCk7XG5cdG5vcm1hbGl6ZWRFbmQgPSB2ZWN0b3IzKHRoaXMuZW5kKTtcblxuXHRzZWdtZW50UmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8U2VnbWVudE9iamVjdD4+KCdzZWdtZW50Jyk7XG5cblx0c2VnbWVudHMgPSBpbmplY3QoTmd0c1NlZ21lbnRzKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBTZWdtZW50T2JqZWN0IH0pO1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnNlZ21lbnRzLnN1YnNjcmliZSh0aGlzLnNlZ21lbnRSZWYoKSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNTZWdtZW50c09wdGlvbnMgZXh0ZW5kcyBMaW5lTWF0ZXJpYWxQYXJhbWV0ZXJzIHtcblx0bGltaXQ6IG51bWJlcjtcblx0bGluZVdpZHRoOiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRTZWdtZW50c09wdGlvbnM6IE5ndHNTZWdtZW50c09wdGlvbnMgPSB7XG5cdGxpbWl0OiAxMDAwLFxuXHRsaW5lV2lkdGg6IDEuMCxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtc2VnbWVudHMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICNsaW5lICphcmdzPVwiW2xpbmVdXCI+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIltnZW9tZXRyeV1cIiBhdHRhY2g9XCJnZW9tZXRyeVwiIC8+XG5cdFx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbF1cIiBhdHRhY2g9XCJtYXRlcmlhbFwiIFtwYXJhbWV0ZXJzXT1cIm1hdGVyaWFsUGFyYW1ldGVycygpXCIgLz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTZWdtZW50cyB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0U2VnbWVudHNPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdFNlZ21lbnRzT3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydsaW1pdCcsICdsaW5lV2lkdGgnXSk7XG5cblx0cHJpdmF0ZSBsaW5lV2lkdGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbmVXaWR0aCcpO1xuXHRwcml2YXRlIGxpbWl0ID0gcGljayh0aGlzLm9wdGlvbnMsICdsaW1pdCcpO1xuXG5cdGxpbmVSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxMaW5lMj4+KCdsaW5lJyk7XG5cblx0c2VnbWVudHM6IEFycmF5PEVsZW1lbnRSZWY8U2VnbWVudE9iamVjdD4gfCBTZWdtZW50T2JqZWN0PiA9IFtdO1xuXG5cdGxpbmUgPSBuZXcgTGluZTIoKTtcblx0bWF0ZXJpYWwgPSBuZXcgTGluZU1hdGVyaWFsKCk7XG5cdGdlb21ldHJ5ID0gbmV3IExpbmVTZWdtZW50c0dlb21ldHJ5KCk7XG5cdHJlc29sdXRpb24gPSBuZXcgVmVjdG9yMig1MTIsIDUxMik7XG5cblx0bWF0ZXJpYWxQYXJhbWV0ZXJzID0gY29tcHV0ZWQoKCkgPT4gKHtcblx0XHR2ZXJ0ZXhDb2xvcnM6IHRydWUsXG5cdFx0cmVzb2x1dGlvbjogdGhpcy5yZXNvbHV0aW9uLFxuXHRcdGxpbmV3aWR0aDogdGhpcy5saW5lV2lkdGgoKSxcblx0XHQuLi50aGlzLnBhcmFtZXRlcnMoKSxcblx0fSkpO1xuXG5cdHBvc2l0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBsaW1pdCA9IHRoaXMubGltaXQoKTtcblx0XHRyZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgKiA2IH0sICgpID0+IDApO1xuXHR9KTtcblx0Y29sb3JzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gdGhpcy5saW1pdCgpO1xuXHRcdHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBsaW1pdCAqIDYgfSwgKCkgPT4gMCk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBbbGltaXQsIHBvc2l0aW9ucywgY29sb3JzXSA9IFt0aGlzLmxpbWl0KCksIHRoaXMucG9zaXRpb25zKCksIHRoaXMuY29sb3JzKCldO1xuXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2VnbWVudCA9IHJlc29sdmVSZWYodGhpcy5zZWdtZW50c1tpXSk7XG5cdFx0XHRcdGlmIChzZWdtZW50KSB7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgMF0gPSBzZWdtZW50LnN0YXJ0Lng7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgMV0gPSBzZWdtZW50LnN0YXJ0Lnk7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgMl0gPSBzZWdtZW50LnN0YXJ0Lno7XG5cblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAzXSA9IHNlZ21lbnQuZW5kLng7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgNF0gPSBzZWdtZW50LmVuZC55O1xuXHRcdFx0XHRcdHBvc2l0aW9uc1tpICogNiArIDVdID0gc2VnbWVudC5lbmQuejtcblxuXHRcdFx0XHRcdGNvbG9yc1tpICogNiArIDBdID0gc2VnbWVudC5jb2xvci5yO1xuXHRcdFx0XHRcdGNvbG9yc1tpICogNiArIDFdID0gc2VnbWVudC5jb2xvci5nO1xuXHRcdFx0XHRcdGNvbG9yc1tpICogNiArIDJdID0gc2VnbWVudC5jb2xvci5iO1xuXG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgM10gPSBzZWdtZW50LmNvbG9yLnI7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgNF0gPSBzZWdtZW50LmNvbG9yLmc7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgNV0gPSBzZWdtZW50LmNvbG9yLmI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dGhpcy5nZW9tZXRyeS5zZXRDb2xvcnMoY29sb3JzKTtcblx0XHRcdHRoaXMuZ2VvbWV0cnkuc2V0UG9zaXRpb25zKHBvc2l0aW9ucyk7XG5cdFx0XHR0aGlzLmxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTtcblx0XHR9KTtcblx0fVxuXG5cdHN1YnNjcmliZShyZWY6IEVsZW1lbnRSZWY8U2VnbWVudE9iamVjdD4gfCBTZWdtZW50T2JqZWN0KSB7XG5cdFx0dGhpcy5zZWdtZW50cy5wdXNoKHJlZik7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHRoaXMuc2VnbWVudHMgPSB0aGlzLnNlZ21lbnRzLmZpbHRlcigoaSkgPT4gaSAhPT0gcmVmKTtcblx0XHR9O1xuXHR9XG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9saWIvc2VnbWVudHMvc2VnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBRU4sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQWMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQXVCLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBMEIsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQVdqRCxNQUFNLE9BQU8sV0FBVztJQVl2QjtRQVhBLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFjLENBQUM7UUFDckMsUUFBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWMsQ0FBQztRQUNuQyxVQUFLLEdBQUcsS0FBSyxFQUF1QixDQUFDO1FBRXJDLG9CQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEMsZUFBVSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQTRCLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLGFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxD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LENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBOZ3RBcmdzLCBOZ3RWZWN0b3IzLCBvbWl0LCBwaWNrLCByZXNvbHZlUmVmLCB2ZWN0b3IzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBDb2xvclJlcHJlc2VudGF0aW9uLCBWZWN0b3IyIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTGluZTIsIExpbmVNYXRlcmlhbCwgTGluZU1hdGVyaWFsUGFyYW1ldGVycywgTGluZVNlZ21lbnRzR2VvbWV0cnkgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuaW1wb3J0IHsgU2VnbWVudE9iamVjdCB9IGZyb20gJy4vc2VnbWVudC1vYmplY3QnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXNlZ21lbnQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtc2VnbWVudC1vYmplY3QgI3NlZ21lbnQgW2NvbG9yXT1cImNvbG9yKClcIiBbc3RhcnRdPVwibm9ybWFsaXplZFN0YXJ0KClcIiBbZW5kXT1cIm5vcm1hbGl6ZWRFbmQoKVwiIC8+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNTZWdtZW50IHtcblx0c3RhcnQgPSBpbnB1dC5yZXF1aXJlZDxOZ3RWZWN0b3IzPigpO1xuXHRlbmQgPSBpbnB1dC5yZXF1aXJlZDxOZ3RWZWN0b3IzPigpO1xuXHRjb2xvciA9IGlucHV0PENvbG9yUmVwcmVzZW50YXRpb24+KCk7XG5cblx0bm9ybWFsaXplZFN0YXJ0ID0gdmVjdG9yMyh0aGlzLnN0YXJ0KTtcblx0bm9ybWFsaXplZEVuZCA9IHZlY3RvcjModGhpcy5lbmQpO1xuXG5cdHNlZ21lbnRSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxTZWdtZW50T2JqZWN0Pj4oJ3NlZ21lbnQnKTtcblxuXHRzZWdtZW50cyA9IGluamVjdChOZ3RzU2VnbWVudHMpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IFNlZ21lbnRPYmplY3QgfSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY2xlYW5VcCA9IHRoaXMuc2VnbWVudHMuc3Vic2NyaWJlKHRoaXMuc2VnbWVudFJlZigpKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhblVwKCkpO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1NlZ21lbnRzT3B0aW9ucyBleHRlbmRzIExpbmVNYXRlcmlhbFBhcmFtZXRlcnMge1xuXHRsaW1pdDogbnVtYmVyO1xuXHRsaW5lV2lkdGg6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFNlZ21lbnRzT3B0aW9uczogTmd0c1NlZ21lbnRzT3B0aW9ucyA9IHtcblx0bGltaXQ6IDEwMDAsXG5cdGxpbmVXaWR0aDogMS4wLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1zZWdtZW50cycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgI2xpbmUgKmFyZ3M9XCJbbGluZV1cIj5cblx0XHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2dlb21ldHJ5XVwiIGF0dGFjaD1cImdlb21ldHJ5XCIgLz5cblx0XHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW21hdGVyaWFsXVwiIGF0dGFjaD1cIm1hdGVyaWFsXCIgW3BhcmFtZXRlcnNdPVwibWF0ZXJpYWxQYXJhbWV0ZXJzKClcIiAvPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wcmltaXRpdmU+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1NlZ21lbnRzIHtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRTZWdtZW50c09wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0U2VnbWVudHNPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2xpbWl0JywgJ2xpbmVXaWR0aCddKTtcblxuXHRwcml2YXRlIGxpbmVXaWR0aCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGluZVdpZHRoJyk7XG5cdHByaXZhdGUgbGltaXQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbWl0Jyk7XG5cblx0bGluZVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPExpbmUyPj4oJ2xpbmUnKTtcblxuXHRzZWdtZW50czogQXJyYXk8RWxlbWVudFJlZjxTZWdtZW50T2JqZWN0PiB8IFNlZ21lbnRPYmplY3Q+ID0gW107XG5cblx0bGluZSA9IG5ldyBMaW5lMigpO1xuXHRtYXRlcmlhbCA9IG5ldyBMaW5lTWF0ZXJpYWwoKTtcblx0Z2VvbWV0cnkgPSBuZXcgTGluZVNlZ21lbnRzR2VvbWV0cnkoKTtcblx0cmVzb2x1dGlvbiA9IG5ldyBWZWN0b3IyKDUxMiwgNTEyKTtcblxuXHRtYXRlcmlhbFBhcmFtZXRlcnMgPSBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdHZlcnRleENvbG9yczogdHJ1ZSxcblx0XHRyZXNvbHV0aW9uOiB0aGlzLnJlc29sdXRpb24sXG5cdFx0bGluZXdpZHRoOiB0aGlzLmxpbmVXaWR0aCgpLFxuXHRcdC4uLnRoaXMucGFyYW1ldGVycygpLFxuXHR9KSk7XG5cblx0cG9zaXRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gdGhpcy5saW1pdCgpO1xuXHRcdHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBsaW1pdCAqIDYgfSwgKCkgPT4gMCk7XG5cdH0pO1xuXHRjb2xvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgbGltaXQgPSB0aGlzLmxpbWl0KCk7XG5cdFx0cmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGxpbWl0ICogNiB9LCAoKSA9PiAwKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFtsaW1pdCwgcG9zaXRpb25zLCBjb2xvcnNdID0gW3RoaXMubGltaXQoKSwgdGhpcy5wb3NpdGlvbnMoKSwgdGhpcy5jb2xvcnMoKV07XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuXHRcdFx0XHRjb25zdCBzZWdtZW50ID0gcmVzb2x2ZVJlZih0aGlzLnNlZ21lbnRzW2ldKTtcblx0XHRcdFx0aWYgKHNlZ21lbnQpIHtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAwXSA9IHNlZ21lbnQuc3RhcnQueDtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAxXSA9IHNlZ21lbnQuc3RhcnQueTtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyAyXSA9IHNlZ21lbnQuc3RhcnQuejtcblxuXHRcdFx0XHRcdHBvc2l0aW9uc1tpICogNiArIDNdID0gc2VnbWVudC5lbmQueDtcblx0XHRcdFx0XHRwb3NpdGlvbnNbaSAqIDYgKyA0XSA9IHNlZ21lbnQuZW5kLnk7XG5cdFx0XHRcdFx0cG9zaXRpb25zW2kgKiA2ICsgNV0gPSBzZWdtZW50LmVuZC56O1xuXG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMF0gPSBzZWdtZW50LmNvbG9yLnI7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMV0gPSBzZWdtZW50LmNvbG9yLmc7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKiA2ICsgMl0gPSBzZWdtZW50LmNvbG9yLmI7XG5cblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyAzXSA9IHNlZ21lbnQuY29sb3Iucjtcblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyA0XSA9IHNlZ21lbnQuY29sb3IuZztcblx0XHRcdFx0XHRjb2xvcnNbaSAqIDYgKyA1XSA9IHNlZ21lbnQuY29sb3IuYjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmdlb21ldHJ5LnNldENvbG9ycyhjb2xvcnMpO1xuXHRcdFx0dGhpcy5nZW9tZXRyeS5zZXRQb3NpdGlvbnMocG9zaXRpb25zKTtcblx0XHRcdHRoaXMubGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpO1xuXHRcdH0pO1xuXHR9XG5cblx0c3Vic2NyaWJlKHJlZjogRWxlbWVudFJlZjxTZWdtZW50T2JqZWN0PiB8IFNlZ21lbnRPYmplY3QpIHtcblx0XHR0aGlzLnNlZ21lbnRzLnB1c2gocmVmKTtcblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0dGhpcy5zZWdtZW50cyA9IHRoaXMuc2VnbWVudHMuZmlsdGVyKChpKSA9PiBpICE9PSByZWYpO1xuXHRcdH07XG5cdH1cbn1cbiJdfQ==
@@ -160,4 +160,4 @@ export const MeshRefractionMaterial = shaderMaterial({
160
160
  #include <tonemapping_fragment>
161
161
  #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
162
162
  }`);
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL2xpYi9tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNOUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsY0FBYyxDQUNuRDtJQUNDLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLENBQUM7SUFDVixHQUFHLEVBQUUsR0FBRztJQUNSLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsT0FBTyxFQUFFLENBQUM7SUFDViw0RkFBNEY7SUFDNUYsR0FBRyxFQUFFLElBQUksb0JBQW9CLEVBQUU7SUFDL0IsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDL0IsT0FBTyxFQUFFLENBQUM7SUFDVixVQUFVLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQy9CLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtJQUN0Qyx1QkFBdUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Q0FDNUM7QUFDRCx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRCdEI7QUFDSCx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFpQnRCLGFBQWE7SUFDYix1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBOEZYLFVBQVUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtJQUM5RSxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRWZXJzaW9uIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgc2hhZGVyTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvdmFuaWxsYS1leHBvcnRzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE1lc2hCVkhVbmlmb3JtU3RydWN0LCBzaGFkZXJJbnRlcnNlY3RGdW5jdGlvbiwgc2hhZGVyU3RydWN0cyB9IGZyb20gJ3RocmVlLW1lc2gtYnZoJztcblxuZGVjbGFyZSBtb2R1bGUgJ3RocmVlLW1lc2gtYnZoJyB7XG5cdGNvbnN0IHNoYWRlckludGVyc2VjdEZ1bmN0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBNZXNoUmVmcmFjdGlvbk1hdGVyaWFsID0gc2hhZGVyTWF0ZXJpYWwoXG5cdHtcblx0XHRlbnZNYXA6IG51bGwsXG5cdFx0Ym91bmNlczogMyxcblx0XHRpb3I6IDIuNCxcblx0XHRjb3JyZWN0TWlwczogdHJ1ZSxcblx0XHRhYmVycmF0aW9uU3RyZW5ndGg6IDAuMDEsXG5cdFx0ZnJlc25lbDogMCxcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gVW5pZm9ybVZhbHVlIGZyb20gcG1uZHJzL3ZhbmlsbGEgZG9lcyBub3QgaW5jbHVkZSBNZXNoQlZIVW5pZm9ybVN0cnVjdFxuXHRcdGJ2aDogbmV3IE1lc2hCVkhVbmlmb3JtU3RydWN0KCksXG5cdFx0Y29sb3I6IG5ldyBUSFJFRS5Db2xvcignd2hpdGUnKSxcblx0XHRvcGFjaXR5OiAxLFxuXHRcdHJlc29sdXRpb246IG5ldyBUSFJFRS5WZWN0b3IyKCksXG5cdFx0dmlld01hdHJpeEludmVyc2U6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG5cdFx0cHJvamVjdGlvbk1hdHJpeEludmVyc2U6IG5ldyBUSFJFRS5NYXRyaXg0KCksXG5cdH0sXG5cdC8qIGxhbmd1YWdlPWdsc2wgZ2xzbCAqLyBgXG4gIHVuaWZvcm0gbWF0NCB2aWV3TWF0cml4SW52ZXJzZTtcblxuICB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gIHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuICB2YXJ5aW5nIG1hdDQgdk1vZGVsTWF0cml4SW52ZXJzZTtcblxuICAjaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG5cbiAgdm9pZCBtYWluKCkge1xuICAgICNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cbiAgICB2ZWM0IHRyYW5zZm9ybWVkTm9ybWFsID0gdmVjNChub3JtYWwsIDAuMCk7XG4gICAgdmVjNCB0cmFuc2Zvcm1lZFBvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgICAjaWZkZWYgVVNFX0lOU1RBTkNJTkdcbiAgICAgIHRyYW5zZm9ybWVkTm9ybWFsID0gaW5zdGFuY2VNYXRyaXggKiB0cmFuc2Zvcm1lZE5vcm1hbDtcbiAgICAgIHRyYW5zZm9ybWVkUG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIHRyYW5zZm9ybWVkUG9zaXRpb247XG4gICAgI2VuZGlmXG5cbiAgICAjaWZkZWYgVVNFX0lOU1RBTkNJTkdcbiAgICAgIHZNb2RlbE1hdHJpeEludmVyc2UgPSBpbnZlcnNlKG1vZGVsTWF0cml4ICogaW5zdGFuY2VNYXRyaXgpO1xuICAgICNlbHNlXG4gICAgICB2TW9kZWxNYXRyaXhJbnZlcnNlID0gaW52ZXJzZShtb2RlbE1hdHJpeCk7XG4gICAgI2VuZGlmXG5cbiAgICB2V29ybGRQb3NpdGlvbiA9IChtb2RlbE1hdHJpeCAqIHRyYW5zZm9ybWVkUG9zaXRpb24pLnh5ejtcbiAgICB2Tm9ybWFsID0gbm9ybWFsaXplKCh2aWV3TWF0cml4SW52ZXJzZSAqIHZlYzQobm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWwueHl6LCAwLjApKS54eXopO1xuICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZpZXdNYXRyaXggKiBtb2RlbE1hdHJpeCAqIHRyYW5zZm9ybWVkUG9zaXRpb247XG4gIH1gLFxuXHQvKiBsYW5ndWFnZT1nbHNsIGdsc2wgKi8gYFxuICAjZGVmaW5lIEVOVk1BUF9UWVBFX0NVQkVfVVZcbiAgcHJlY2lzaW9uIGhpZ2hwIGlzYW1wbGVyMkQ7XG4gIHByZWNpc2lvbiBoaWdocCB1c2FtcGxlcjJEO1xuICB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gIHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuICB2YXJ5aW5nIG1hdDQgdk1vZGVsTWF0cml4SW52ZXJzZTtcblxuICAjaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cblxuICAjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRU1cbiAgICB1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcbiAgI2Vsc2VcbiAgICB1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG4gICNlbmRpZlxuXG4gIHVuaWZvcm0gZmxvYXQgYm91bmNlcztcbiAgJHtzaGFkZXJTdHJ1Y3RzfVxuICAke3NoYWRlckludGVyc2VjdEZ1bmN0aW9ufVxuICB1bmlmb3JtIEJWSCBidmg7XG4gIHVuaWZvcm0gZmxvYXQgaW9yO1xuICB1bmlmb3JtIGJvb2wgY29ycmVjdE1pcHM7XG4gIHVuaWZvcm0gdmVjMiByZXNvbHV0aW9uO1xuICB1bmlmb3JtIGZsb2F0IGZyZXNuZWw7XG4gIHVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDtcbiAgdW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXhJbnZlcnNlO1xuICB1bmlmb3JtIG1hdDQgdmlld01hdHJpeEludmVyc2U7XG4gIHVuaWZvcm0gZmxvYXQgYWJlcnJhdGlvblN0cmVuZ3RoO1xuICB1bmlmb3JtIHZlYzMgY29sb3I7XG4gIHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxuICBmbG9hdCBmcmVzbmVsRnVuYyh2ZWMzIHZpZXdEaXJlY3Rpb24sIHZlYzMgd29ybGROb3JtYWwpIHtcbiAgICByZXR1cm4gcG93KCAxLjAgKyBkb3QoIHZpZXdEaXJlY3Rpb24sIHdvcmxkTm9ybWFsKSwgMTAuMCApO1xuICB9XG5cbiAgdmVjMyB0b3RhbEludGVybmFsUmVmbGVjdGlvbih2ZWMzIHJvLCB2ZWMzIHJkLCB2ZWMzIG5vcm1hbCwgZmxvYXQgaW9yLCBtYXQ0IG1vZGVsTWF0cml4SW52ZXJzZSkge1xuICAgIHZlYzMgcmF5T3JpZ2luID0gcm87XG4gICAgdmVjMyByYXlEaXJlY3Rpb24gPSByZDtcbiAgICByYXlEaXJlY3Rpb24gPSByZWZyYWN0KHJheURpcmVjdGlvbiwgbm9ybWFsLCAxLjAgLyBpb3IpO1xuICAgIHJheU9yaWdpbiA9IHZXb3JsZFBvc2l0aW9uICsgcmF5RGlyZWN0aW9uICogMC4wMDE7XG4gICAgcmF5T3JpZ2luID0gKG1vZGVsTWF0cml4SW52ZXJzZSAqIHZlYzQocmF5T3JpZ2luLCAxLjApKS54eXo7XG4gICAgcmF5RGlyZWN0aW9uID0gbm9ybWFsaXplKChtb2RlbE1hdHJpeEludmVyc2UgKiB2ZWM0KHJheURpcmVjdGlvbiwgMC4wKSkueHl6KTtcbiAgICBmb3IoZmxvYXQgaSA9IDAuMDsgaSA8IGJvdW5jZXM7IGkrKykge1xuICAgICAgdXZlYzQgZmFjZUluZGljZXMgPSB1dmVjNCggMHUgKTtcbiAgICAgIHZlYzMgZmFjZU5vcm1hbCA9IHZlYzMoIDAuMCwgMC4wLCAxLjAgKTtcbiAgICAgIHZlYzMgYmFyeWNvb3JkID0gdmVjMyggMC4wICk7XG4gICAgICBmbG9hdCBzaWRlID0gMS4wO1xuICAgICAgZmxvYXQgZGlzdCA9IDAuMDtcbiAgICAgIGJ2aEludGVyc2VjdEZpcnN0SGl0KCBidmgsIHJheU9yaWdpbiwgcmF5RGlyZWN0aW9uLCBmYWNlSW5kaWNlcywgZmFjZU5vcm1hbCwgYmFyeWNvb3JkLCBzaWRlLCBkaXN0ICk7XG4gICAgICB2ZWMzIGhpdFBvcyA9IHJheU9yaWdpbiArIHJheURpcmVjdGlvbiAqIG1heChkaXN0IC0gMC4wMDEsIDAuMCk7XG4gICAgICB2ZWMzIHRlbXBEaXIgPSByZWZyYWN0KHJheURpcmVjdGlvbiwgZmFjZU5vcm1hbCwgaW9yKTtcbiAgICAgIGlmIChsZW5ndGgodGVtcERpcikgIT0gMC4wKSB7XG4gICAgICAgIHJheURpcmVjdGlvbiA9IHRlbXBEaXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmF5RGlyZWN0aW9uID0gcmVmbGVjdChyYXlEaXJlY3Rpb24sIGZhY2VOb3JtYWwpO1xuICAgICAgcmF5T3JpZ2luID0gaGl0UG9zICsgcmF5RGlyZWN0aW9uICogMC4wMTtcbiAgICB9XG4gICAgcmF5RGlyZWN0aW9uID0gbm9ybWFsaXplKChtb2RlbE1hdHJpeCAqIHZlYzQocmF5RGlyZWN0aW9uLCAwLjApKS54eXopO1xuICAgIHJldHVybiByYXlEaXJlY3Rpb247XG4gIH1cblxuICAjaW5jbHVkZSA8Y29tbW9uPlxuICAjaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuXG4gICNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFTVxuICAgIHZlYzQgdGV4dHVyZUdyYWRpZW50KHNhbXBsZXJDdWJlIGVudk1hcCwgdmVjMyByYXlEaXJlY3Rpb24sIHZlYzMgZGlyZWN0aW9uQ2FtUGVyZmVjdCkge1xuICAgICAgcmV0dXJuIHRleHR1cmVHcmFkKGVudk1hcCwgcmF5RGlyZWN0aW9uLCBkRmR4KGNvcnJlY3RNaXBzID8gZGlyZWN0aW9uQ2FtUGVyZmVjdDogcmF5RGlyZWN0aW9uKSwgZEZkeShjb3JyZWN0TWlwcyA/IGRpcmVjdGlvbkNhbVBlcmZlY3Q6IHJheURpcmVjdGlvbikpO1xuICAgIH1cbiAgI2Vsc2VcbiAgICB2ZWM0IHRleHR1cmVHcmFkaWVudChzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIHJheURpcmVjdGlvbiwgdmVjMyBkaXJlY3Rpb25DYW1QZXJmZWN0KSB7XG4gICAgICB2ZWMyIHV2diA9IGVxdWlyZWN0VXYoIHJheURpcmVjdGlvbiApO1xuICAgICAgdmVjMiBzbW9vdGhVdiA9IGVxdWlyZWN0VXYoIGRpcmVjdGlvbkNhbVBlcmZlY3QgKTtcbiAgICAgIHJldHVybiB0ZXh0dXJlR3JhZChlbnZNYXAsIHV2diwgZEZkeChjb3JyZWN0TWlwcyA/IHNtb290aFV2IDogdXZ2KSwgZEZkeShjb3JyZWN0TWlwcyA/IHNtb290aFV2IDogdXZ2KSk7XG4gICAgfVxuICAjZW5kaWZcblxuICB2b2lkIG1haW4oKSB7XG4gICAgdmVjMiB1diA9IGdsX0ZyYWdDb29yZC54eSAvIHJlc29sdXRpb247XG4gICAgdmVjMyBkaXJlY3Rpb25DYW1QZXJmZWN0ID0gKHByb2plY3Rpb25NYXRyaXhJbnZlcnNlICogdmVjNCh1diAqIDIuMCAtIDEuMCwgMC4wLCAxLjApKS54eXo7XG4gICAgZGlyZWN0aW9uQ2FtUGVyZmVjdCA9ICh2aWV3TWF0cml4SW52ZXJzZSAqIHZlYzQoZGlyZWN0aW9uQ2FtUGVyZmVjdCwgMC4wKSkueHl6O1xuICAgIGRpcmVjdGlvbkNhbVBlcmZlY3QgPSBub3JtYWxpemUoZGlyZWN0aW9uQ2FtUGVyZmVjdCk7XG4gICAgdmVjMyBub3JtYWwgPSB2Tm9ybWFsO1xuICAgIHZlYzMgcmF5T3JpZ2luID0gY2FtZXJhUG9zaXRpb247XG4gICAgdmVjMyByYXlEaXJlY3Rpb24gPSBub3JtYWxpemUodldvcmxkUG9zaXRpb24gLSBjYW1lcmFQb3NpdGlvbik7XG5cbiAgICB2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoY29sb3IsIG9wYWNpdHkpO1xuICAgICNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblxuICAgICNpZmRlZiBDSFJPTUFUSUNfQUJFUlJBVElPTlNcbiAgICAgIHZlYzMgcmF5RGlyZWN0aW9uRyA9IHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHJheU9yaWdpbiwgcmF5RGlyZWN0aW9uLCBub3JtYWwsIG1heChpb3IsIDEuMCksIHZNb2RlbE1hdHJpeEludmVyc2UpO1xuICAgICAgI2lmZGVmIEZBU1RfQ0hST01BXG4gICAgICAgIHZlYzMgcmF5RGlyZWN0aW9uUiA9IG5vcm1hbGl6ZShyYXlEaXJlY3Rpb25HICsgMS4wICogdmVjMyhhYmVycmF0aW9uU3RyZW5ndGggLyAyLjApKTtcbiAgICAgICAgdmVjMyByYXlEaXJlY3Rpb25CID0gbm9ybWFsaXplKHJheURpcmVjdGlvbkcgLSAxLjAgKiB2ZWMzKGFiZXJyYXRpb25TdHJlbmd0aCAvIDIuMCkpO1xuICAgICAgI2Vsc2VcbiAgICAgICAgdmVjMyByYXlEaXJlY3Rpb25SID0gdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ocmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIG5vcm1hbCwgbWF4KGlvciAqICgxLjAgLSBhYmVycmF0aW9uU3RyZW5ndGgpLCAxLjApLCB2TW9kZWxNYXRyaXhJbnZlcnNlKTtcbiAgICAgICAgdmVjMyByYXlEaXJlY3Rpb25CID0gdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ocmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIG5vcm1hbCwgbWF4KGlvciAqICgxLjAgKyBhYmVycmF0aW9uU3RyZW5ndGgpLCAxLjApLCB2TW9kZWxNYXRyaXhJbnZlcnNlKTtcbiAgICAgICNlbmRpZlxuICAgICAgZmxvYXQgZmluYWxDb2xvclIgPSB0ZXh0dXJlR3JhZGllbnQoZW52TWFwLCByYXlEaXJlY3Rpb25SLCBkaXJlY3Rpb25DYW1QZXJmZWN0KS5yO1xuICAgICAgZmxvYXQgZmluYWxDb2xvckcgPSB0ZXh0dXJlR3JhZGllbnQoZW52TWFwLCByYXlEaXJlY3Rpb25HLCBkaXJlY3Rpb25DYW1QZXJmZWN0KS5nO1xuICAgICAgZmxvYXQgZmluYWxDb2xvckIgPSB0ZXh0dXJlR3JhZGllbnQoZW52TWFwLCByYXlEaXJlY3Rpb25CLCBkaXJlY3Rpb25DYW1QZXJmZWN0KS5iO1xuICAgICAgZGlmZnVzZUNvbG9yLnJnYiAqPSB2ZWMzKGZpbmFsQ29sb3JSLCBmaW5hbENvbG9yRywgZmluYWxDb2xvckIpO1xuICAgICNlbHNlXG4gICAgICByYXlEaXJlY3Rpb24gPSB0b3RhbEludGVybmFsUmVmbGVjdGlvbihyYXlPcmlnaW4sIHJheURpcmVjdGlvbiwgbm9ybWFsLCBtYXgoaW9yLCAxLjApLCB2TW9kZWxNYXRyaXhJbnZlcnNlKTtcbiAgICAgIGRpZmZ1c2VDb2xvci5yZ2IgKj0gdGV4dHVyZUdyYWRpZW50KGVudk1hcCwgcmF5RGlyZWN0aW9uLCBkaXJlY3Rpb25DYW1QZXJmZWN0KS5yZ2I7XG4gICAgI2VuZGlmXG5cbiAgICB2ZWMzIHZpZXdEaXJlY3Rpb24gPSBub3JtYWxpemUodldvcmxkUG9zaXRpb24gLSBjYW1lcmFQb3NpdGlvbik7XG4gICAgZmxvYXQgbkZyZXNuZWwgPSBmcmVzbmVsRnVuYyh2aWV3RGlyZWN0aW9uLCBub3JtYWwpICogZnJlc25lbDtcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KG1peChkaWZmdXNlQ29sb3IucmdiLCB2ZWMzKDEuMCksIG5GcmVzbmVsKSwgZGlmZnVzZUNvbG9yLmEpO1xuXG4gICAgI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuICAgICNpbmNsdWRlIDwke2dldFZlcnNpb24oKSA+PSAxNTQgPyAnY29sb3JzcGFjZV9mcmFnbWVudCcgOiAnZW5jb2RpbmdzX2ZyYWdtZW50J30+XG4gIH1gLFxuKTtcbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL2xpYi9tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsY0FBYyxDQUNuRDtJQUNDLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLENBQUM7SUFDVixHQUFHLEVBQUUsR0FBRztJQUNSLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsT0FBTyxFQUFFLENBQUM7SUFDViw0RkFBNEY7SUFDNUYsR0FBRyxFQUFFLElBQUksb0JBQW9CLEVBQUU7SUFDL0IsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDL0IsT0FBTyxFQUFFLENBQUM7SUFDVixVQUFVLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQy9CLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtJQUN0Qyx1QkFBdUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Q0FDNUM7QUFDRCx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRCdEI7QUFDSCx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFpQnRCLGFBQWE7SUFDYix1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBOEZYLFVBQVUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtJQUM5RSxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRWZXJzaW9uIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgc2hhZGVyTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvdmFuaWxsYS1leHBvcnRzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE1lc2hCVkhVbmlmb3JtU3RydWN0LCBzaGFkZXJJbnRlcnNlY3RGdW5jdGlvbiwgc2hhZGVyU3RydWN0cyB9IGZyb20gJ3RocmVlLW1lc2gtYnZoJztcblxuZXhwb3J0IGNvbnN0IE1lc2hSZWZyYWN0aW9uTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcblx0e1xuXHRcdGVudk1hcDogbnVsbCxcblx0XHRib3VuY2VzOiAzLFxuXHRcdGlvcjogMi40LFxuXHRcdGNvcnJlY3RNaXBzOiB0cnVlLFxuXHRcdGFiZXJyYXRpb25TdHJlbmd0aDogMC4wMSxcblx0XHRmcmVzbmVsOiAwLFxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBVbmlmb3JtVmFsdWUgZnJvbSBwbW5kcnMvdmFuaWxsYSBkb2VzIG5vdCBpbmNsdWRlIE1lc2hCVkhVbmlmb3JtU3RydWN0XG5cdFx0YnZoOiBuZXcgTWVzaEJWSFVuaWZvcm1TdHJ1Y3QoKSxcblx0XHRjb2xvcjogbmV3IFRIUkVFLkNvbG9yKCd3aGl0ZScpLFxuXHRcdG9wYWNpdHk6IDEsXG5cdFx0cmVzb2x1dGlvbjogbmV3IFRIUkVFLlZlY3RvcjIoKSxcblx0XHR2aWV3TWF0cml4SW52ZXJzZTogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0XHRwcm9qZWN0aW9uTWF0cml4SW52ZXJzZTogbmV3IFRIUkVFLk1hdHJpeDQoKSxcblx0fSxcblx0LyogbGFuZ3VhZ2U9Z2xzbCBnbHNsICovIGBcbiAgdW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXhJbnZlcnNlO1xuXG4gIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgdmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4gIHZhcnlpbmcgbWF0NCB2TW9kZWxNYXRyaXhJbnZlcnNlO1xuXG4gICNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cblxuICB2b2lkIG1haW4oKSB7XG4gICAgI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblxuICAgIHZlYzQgdHJhbnNmb3JtZWROb3JtYWwgPSB2ZWM0KG5vcm1hbCwgMC4wKTtcbiAgICB2ZWM0IHRyYW5zZm9ybWVkUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgICNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuICAgICAgdHJhbnNmb3JtZWROb3JtYWwgPSBpbnN0YW5jZU1hdHJpeCAqIHRyYW5zZm9ybWVkTm9ybWFsO1xuICAgICAgdHJhbnNmb3JtZWRQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogdHJhbnNmb3JtZWRQb3NpdGlvbjtcbiAgICAjZW5kaWZcblxuICAgICNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuICAgICAgdk1vZGVsTWF0cml4SW52ZXJzZSA9IGludmVyc2UobW9kZWxNYXRyaXggKiBpbnN0YW5jZU1hdHJpeCk7XG4gICAgI2Vsc2VcbiAgICAgIHZNb2RlbE1hdHJpeEludmVyc2UgPSBpbnZlcnNlKG1vZGVsTWF0cml4KTtcbiAgICAjZW5kaWZcblxuICAgIHZXb3JsZFBvc2l0aW9uID0gKG1vZGVsTWF0cml4ICogdHJhbnNmb3JtZWRQb3NpdGlvbikueHl6O1xuICAgIHZOb3JtYWwgPSBub3JtYWxpemUoKHZpZXdNYXRyaXhJbnZlcnNlICogdmVjNChub3JtYWxNYXRyaXggKiB0cmFuc2Zvcm1lZE5vcm1hbC54eXosIDAuMCkpLnh5eik7XG4gICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmlld01hdHJpeCAqIG1vZGVsTWF0cml4ICogdHJhbnNmb3JtZWRQb3NpdGlvbjtcbiAgfWAsXG5cdC8qIGxhbmd1YWdlPWdsc2wgZ2xzbCAqLyBgXG4gICNkZWZpbmUgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuICBwcmVjaXNpb24gaGlnaHAgaXNhbXBsZXIyRDtcbiAgcHJlY2lzaW9uIGhpZ2hwIHVzYW1wbGVyMkQ7XG4gIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgdmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4gIHZhcnlpbmcgbWF0NCB2TW9kZWxNYXRyaXhJbnZlcnNlO1xuXG4gICNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuXG4gICNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFTVxuICAgIHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuICAjZWxzZVxuICAgIHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcbiAgI2VuZGlmXG5cbiAgdW5pZm9ybSBmbG9hdCBib3VuY2VzO1xuICAke3NoYWRlclN0cnVjdHN9XG4gICR7c2hhZGVySW50ZXJzZWN0RnVuY3Rpb259XG4gIHVuaWZvcm0gQlZIIGJ2aDtcbiAgdW5pZm9ybSBmbG9hdCBpb3I7XG4gIHVuaWZvcm0gYm9vbCBjb3JyZWN0TWlwcztcbiAgdW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG4gIHVuaWZvcm0gZmxvYXQgZnJlc25lbDtcbiAgdW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4O1xuICB1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeEludmVyc2U7XG4gIHVuaWZvcm0gbWF0NCB2aWV3TWF0cml4SW52ZXJzZTtcbiAgdW5pZm9ybSBmbG9hdCBhYmVycmF0aW9uU3RyZW5ndGg7XG4gIHVuaWZvcm0gdmVjMyBjb2xvcjtcbiAgdW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuXG4gIGZsb2F0IGZyZXNuZWxGdW5jKHZlYzMgdmlld0RpcmVjdGlvbiwgdmVjMyB3b3JsZE5vcm1hbCkge1xuICAgIHJldHVybiBwb3coIDEuMCArIGRvdCggdmlld0RpcmVjdGlvbiwgd29ybGROb3JtYWwpLCAxMC4wICk7XG4gIH1cblxuICB2ZWMzIHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHZlYzMgcm8sIHZlYzMgcmQsIHZlYzMgbm9ybWFsLCBmbG9hdCBpb3IsIG1hdDQgbW9kZWxNYXRyaXhJbnZlcnNlKSB7XG4gICAgdmVjMyByYXlPcmlnaW4gPSBybztcbiAgICB2ZWMzIHJheURpcmVjdGlvbiA9IHJkO1xuICAgIHJheURpcmVjdGlvbiA9IHJlZnJhY3QocmF5RGlyZWN0aW9uLCBub3JtYWwsIDEuMCAvIGlvcik7XG4gICAgcmF5T3JpZ2luID0gdldvcmxkUG9zaXRpb24gKyByYXlEaXJlY3Rpb24gKiAwLjAwMTtcbiAgICByYXlPcmlnaW4gPSAobW9kZWxNYXRyaXhJbnZlcnNlICogdmVjNChyYXlPcmlnaW4sIDEuMCkpLnh5ejtcbiAgICByYXlEaXJlY3Rpb24gPSBub3JtYWxpemUoKG1vZGVsTWF0cml4SW52ZXJzZSAqIHZlYzQocmF5RGlyZWN0aW9uLCAwLjApKS54eXopO1xuICAgIGZvcihmbG9hdCBpID0gMC4wOyBpIDwgYm91bmNlczsgaSsrKSB7XG4gICAgICB1dmVjNCBmYWNlSW5kaWNlcyA9IHV2ZWM0KCAwdSApO1xuICAgICAgdmVjMyBmYWNlTm9ybWFsID0gdmVjMyggMC4wLCAwLjAsIDEuMCApO1xuICAgICAgdmVjMyBiYXJ5Y29vcmQgPSB2ZWMzKCAwLjAgKTtcbiAgICAgIGZsb2F0IHNpZGUgPSAxLjA7XG4gICAgICBmbG9hdCBkaXN0ID0gMC4wO1xuICAgICAgYnZoSW50ZXJzZWN0Rmlyc3RIaXQoIGJ2aCwgcmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIGZhY2VJbmRpY2VzLCBmYWNlTm9ybWFsLCBiYXJ5Y29vcmQsIHNpZGUsIGRpc3QgKTtcbiAgICAgIHZlYzMgaGl0UG9zID0gcmF5T3JpZ2luICsgcmF5RGlyZWN0aW9uICogbWF4KGRpc3QgLSAwLjAwMSwgMC4wKTtcbiAgICAgIHZlYzMgdGVtcERpciA9IHJlZnJhY3QocmF5RGlyZWN0aW9uLCBmYWNlTm9ybWFsLCBpb3IpO1xuICAgICAgaWYgKGxlbmd0aCh0ZW1wRGlyKSAhPSAwLjApIHtcbiAgICAgICAgcmF5RGlyZWN0aW9uID0gdGVtcERpcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByYXlEaXJlY3Rpb24gPSByZWZsZWN0KHJheURpcmVjdGlvbiwgZmFjZU5vcm1hbCk7XG4gICAgICByYXlPcmlnaW4gPSBoaXRQb3MgKyByYXlEaXJlY3Rpb24gKiAwLjAxO1xuICAgIH1cbiAgICByYXlEaXJlY3Rpb24gPSBub3JtYWxpemUoKG1vZGVsTWF0cml4ICogdmVjNChyYXlEaXJlY3Rpb24sIDAuMCkpLnh5eik7XG4gICAgcmV0dXJuIHJheURpcmVjdGlvbjtcbiAgfVxuXG4gICNpbmNsdWRlIDxjb21tb24+XG4gICNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG5cbiAgI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVNXG4gICAgdmVjNCB0ZXh0dXJlR3JhZGllbnQoc2FtcGxlckN1YmUgZW52TWFwLCB2ZWMzIHJheURpcmVjdGlvbiwgdmVjMyBkaXJlY3Rpb25DYW1QZXJmZWN0KSB7XG4gICAgICByZXR1cm4gdGV4dHVyZUdyYWQoZW52TWFwLCByYXlEaXJlY3Rpb24sIGRGZHgoY29ycmVjdE1pcHMgPyBkaXJlY3Rpb25DYW1QZXJmZWN0OiByYXlEaXJlY3Rpb24pLCBkRmR5KGNvcnJlY3RNaXBzID8gZGlyZWN0aW9uQ2FtUGVyZmVjdDogcmF5RGlyZWN0aW9uKSk7XG4gICAgfVxuICAjZWxzZVxuICAgIHZlYzQgdGV4dHVyZUdyYWRpZW50KHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgcmF5RGlyZWN0aW9uLCB2ZWMzIGRpcmVjdGlvbkNhbVBlcmZlY3QpIHtcbiAgICAgIHZlYzIgdXZ2ID0gZXF1aXJlY3RVdiggcmF5RGlyZWN0aW9uICk7XG4gICAgICB2ZWMyIHNtb290aFV2ID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uQ2FtUGVyZmVjdCApO1xuICAgICAgcmV0dXJuIHRleHR1cmVHcmFkKGVudk1hcCwgdXZ2LCBkRmR4KGNvcnJlY3RNaXBzID8gc21vb3RoVXYgOiB1dnYpLCBkRmR5KGNvcnJlY3RNaXBzID8gc21vb3RoVXYgOiB1dnYpKTtcbiAgICB9XG4gICNlbmRpZlxuXG4gIHZvaWQgbWFpbigpIHtcbiAgICB2ZWMyIHV2ID0gZ2xfRnJhZ0Nvb3JkLnh5IC8gcmVzb2x1dGlvbjtcbiAgICB2ZWMzIGRpcmVjdGlvbkNhbVBlcmZlY3QgPSAocHJvamVjdGlvbk1hdHJpeEludmVyc2UgKiB2ZWM0KHV2ICogMi4wIC0gMS4wLCAwLjAsIDEuMCkpLnh5ejtcbiAgICBkaXJlY3Rpb25DYW1QZXJmZWN0ID0gKHZpZXdNYXRyaXhJbnZlcnNlICogdmVjNChkaXJlY3Rpb25DYW1QZXJmZWN0LCAwLjApKS54eXo7XG4gICAgZGlyZWN0aW9uQ2FtUGVyZmVjdCA9IG5vcm1hbGl6ZShkaXJlY3Rpb25DYW1QZXJmZWN0KTtcbiAgICB2ZWMzIG5vcm1hbCA9IHZOb3JtYWw7XG4gICAgdmVjMyByYXlPcmlnaW4gPSBjYW1lcmFQb3NpdGlvbjtcbiAgICB2ZWMzIHJheURpcmVjdGlvbiA9IG5vcm1hbGl6ZSh2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uKTtcblxuICAgIHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNChjb2xvciwgb3BhY2l0eSk7XG4gICAgI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXG4gICAgI2lmZGVmIENIUk9NQVRJQ19BQkVSUkFUSU9OU1xuICAgICAgdmVjMyByYXlEaXJlY3Rpb25HID0gdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ocmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIG5vcm1hbCwgbWF4KGlvciwgMS4wKSwgdk1vZGVsTWF0cml4SW52ZXJzZSk7XG4gICAgICAjaWZkZWYgRkFTVF9DSFJPTUFcbiAgICAgICAgdmVjMyByYXlEaXJlY3Rpb25SID0gbm9ybWFsaXplKHJheURpcmVjdGlvbkcgKyAxLjAgKiB2ZWMzKGFiZXJyYXRpb25TdHJlbmd0aCAvIDIuMCkpO1xuICAgICAgICB2ZWMzIHJheURpcmVjdGlvbkIgPSBub3JtYWxpemUocmF5RGlyZWN0aW9uRyAtIDEuMCAqIHZlYzMoYWJlcnJhdGlvblN0cmVuZ3RoIC8gMi4wKSk7XG4gICAgICAjZWxzZVxuICAgICAgICB2ZWMzIHJheURpcmVjdGlvblIgPSB0b3RhbEludGVybmFsUmVmbGVjdGlvbihyYXlPcmlnaW4sIHJheURpcmVjdGlvbiwgbm9ybWFsLCBtYXgoaW9yICogKDEuMCAtIGFiZXJyYXRpb25TdHJlbmd0aCksIDEuMCksIHZNb2RlbE1hdHJpeEludmVyc2UpO1xuICAgICAgICB2ZWMzIHJheURpcmVjdGlvbkIgPSB0b3RhbEludGVybmFsUmVmbGVjdGlvbihyYXlPcmlnaW4sIHJheURpcmVjdGlvbiwgbm9ybWFsLCBtYXgoaW9yICogKDEuMCArIGFiZXJyYXRpb25TdHJlbmd0aCksIDEuMCksIHZNb2RlbE1hdHJpeEludmVyc2UpO1xuICAgICAgI2VuZGlmXG4gICAgICBmbG9hdCBmaW5hbENvbG9yUiA9IHRleHR1cmVHcmFkaWVudChlbnZNYXAsIHJheURpcmVjdGlvblIsIGRpcmVjdGlvbkNhbVBlcmZlY3QpLnI7XG4gICAgICBmbG9hdCBmaW5hbENvbG9yRyA9IHRleHR1cmVHcmFkaWVudChlbnZNYXAsIHJheURpcmVjdGlvbkcsIGRpcmVjdGlvbkNhbVBlcmZlY3QpLmc7XG4gICAgICBmbG9hdCBmaW5hbENvbG9yQiA9IHRleHR1cmVHcmFkaWVudChlbnZNYXAsIHJheURpcmVjdGlvbkIsIGRpcmVjdGlvbkNhbVBlcmZlY3QpLmI7XG4gICAgICBkaWZmdXNlQ29sb3IucmdiICo9IHZlYzMoZmluYWxDb2xvclIsIGZpbmFsQ29sb3JHLCBmaW5hbENvbG9yQik7XG4gICAgI2Vsc2VcbiAgICAgIHJheURpcmVjdGlvbiA9IHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHJheU9yaWdpbiwgcmF5RGlyZWN0aW9uLCBub3JtYWwsIG1heChpb3IsIDEuMCksIHZNb2RlbE1hdHJpeEludmVyc2UpO1xuICAgICAgZGlmZnVzZUNvbG9yLnJnYiAqPSB0ZXh0dXJlR3JhZGllbnQoZW52TWFwLCByYXlEaXJlY3Rpb24sIGRpcmVjdGlvbkNhbVBlcmZlY3QpLnJnYjtcbiAgICAjZW5kaWZcblxuICAgIHZlYzMgdmlld0RpcmVjdGlvbiA9IG5vcm1hbGl6ZSh2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uKTtcbiAgICBmbG9hdCBuRnJlc25lbCA9IGZyZXNuZWxGdW5jKHZpZXdEaXJlY3Rpb24sIG5vcm1hbCkgKiBmcmVzbmVsO1xuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobWl4KGRpZmZ1c2VDb2xvci5yZ2IsIHZlYzMoMS4wKSwgbkZyZXNuZWwpLCBkaWZmdXNlQ29sb3IuYSk7XG5cbiAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgI2luY2x1ZGUgPCR7Z2V0VmVyc2lvbigpID49IDE1NCA/ICdjb2xvcnNwYWNlX2ZyYWdtZW50JyA6ICdlbmNvZGluZ3NfZnJhZ21lbnQnfT5cbiAgfWAsXG4pO1xuIl19
@@ -6,7 +6,8 @@ export * from './lib/camera-shake';
6
6
  export * from './lib/caustics';
7
7
  export * from './lib/center';
8
8
  export * from './lib/contact-shadows';
9
- export * from './lib/environment';
9
+ export * from './lib/environment/environment';
10
+ export * from './lib/environment/inject-environment';
10
11
  export * from './lib/float';
11
12
  export * from './lib/lightformer';
12
13
  export * from './lib/mask';
@@ -17,4 +18,4 @@ export * from './lib/render-texture';
17
18
  export * from './lib/sky';
18
19
  export { NgtsSpotLight, NgtsSpotLightShadow } from './lib/spot-light';
19
20
  export * from './lib/stage';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxXQUFXLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBd0IsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FjY3VtdWxhdGl2ZS1zaGFkb3dzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhY2tkcm9wJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JiLWFuY2hvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ib3VuZHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FtZXJhLXNoYWtlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdXN0aWNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NlbnRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250YWN0LXNoYWRvd3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmxvYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGlnaHRmb3JtZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFzayc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXRjYXAtdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3JtYWwtdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYW5kb21pemVkLWxpZ2h0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZW5kZXItdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9za3knO1xuZXhwb3J0IHsgTmd0c1Nwb3RMaWdodCwgTmd0c1Nwb3RMaWdodE9wdGlvbnMsIE5ndHNTcG90TGlnaHRTaGFkb3cgfSBmcm9tICcuL2xpYi9zcG90LWxpZ2h0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YWdlJztcbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixPQUFPLEVBQUUsYUFBYSxFQUF3QixtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVGLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYWNjdW11bGF0aXZlLXNoYWRvd3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFja2Ryb3AnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmItYW5jaG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JvdW5kcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jYW1lcmEtc2hha2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F1c3RpY3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2VudGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3Qtc2hhZG93cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnZpcm9ubWVudC9pbmplY3QtZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmxvYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbGlnaHRmb3JtZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWFzayc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXRjYXAtdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3JtYWwtdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYW5kb21pemVkLWxpZ2h0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZW5kZXItdGV4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9za3knO1xuZXhwb3J0IHsgTmd0c1Nwb3RMaWdodCwgTmd0c1Nwb3RMaWdodE9wdGlvbnMsIE5ndHNTcG90TGlnaHRTaGFkb3cgfSBmcm9tICcuL2xpYi9zcG90LWxpZ2h0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YWdlJztcbiJdfQ==
@@ -1,7 +1,6 @@
1
- import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, DestroyRef, afterNextRender, computed, inject, input, untracked, viewChild, } from '@angular/core';
1
+ import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, DestroyRef, afterNextRender, computed, effect, inject, input, untracked, viewChild, } from '@angular/core';
2
2
  import { extend, getLocalState, injectBeforeRender, injectStore, omit, pick } from 'angular-three';
3
3
  import { ProgressiveLightMap, SoftShadowMaterial } from 'angular-three-soba/vanilla-exports';
4
- import { injectAutoEffect } from 'ngxtension/auto-effect';
5
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
5
  import { Group, Mesh, PlaneGeometry } from 'three';
7
6
  import * as i0 from "@angular/core";
@@ -64,23 +63,22 @@ export class NgtsAccumulativeShadows {
64
63
  this.blend = computed(() => Math.max(2, this.options().frames === Infinity ? this.options().blend : this.options().frames));
65
64
  this.count = 0;
66
65
  extend({ Group, SoftShadowMaterial, Mesh, PlaneGeometry });
67
- const autoEffect = injectAutoEffect();
68
66
  afterNextRender(() => {
69
67
  this.pLM().configure(this.planeRef().nativeElement);
70
- autoEffect(() => {
71
- const sceneLS = getLocalState(this.scene());
72
- if (!sceneLS)
73
- return;
74
- // track deps
75
- this.planeRef();
76
- this.options();
77
- sceneLS.objects();
78
- // Reset internals, buffers, ...
79
- this.reset();
80
- // Update lightmap
81
- if (!this.temporal() && this.frames() !== Infinity)
82
- this.update(this.blend());
83
- });
68
+ });
69
+ effect(() => {
70
+ const sceneLS = getLocalState(this.scene());
71
+ if (!sceneLS)
72
+ return;
73
+ // track deps
74
+ this.planeRef();
75
+ this.options();
76
+ sceneLS.objects();
77
+ // Reset internals, buffers, ...
78
+ this.reset();
79
+ // Update lightmap
80
+ if (!this.temporal() && this.frames() !== Infinity)
81
+ this.update(this.blend());
84
82
  });
85
83
  injectBeforeRender(() => {
86
84
  const [frames, temporal, invalidate, limit] = [this.frames(), !!this.temporal(), this.invalidate(), this.limit()];
@@ -130,8 +128,8 @@ export class NgtsAccumulativeShadows {
130
128
  // Restore lights and meshes
131
129
  this.pLM().finish();
132
130
  }
133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAccumulativeShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
134
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsAccumulativeShadows, isStandalone: true, selector: "ngts-accumulative-shadows", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lightsRef", first: true, predicate: ["lights"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
131
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAccumulativeShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
132
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsAccumulativeShadows, isStandalone: true, selector: "ngts-accumulative-shadows", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lightsRef", first: true, predicate: ["lights"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
135
133
  <ngt-group [parameters]="parameters()">
136
134
  <ngt-group #lights [traverse]="nullTraversal">
137
135
  <ng-content />
@@ -151,7 +149,7 @@ export class NgtsAccumulativeShadows {
151
149
  </ngt-group>
152
150
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
153
151
  }
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAccumulativeShadows, decorators: [{
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAccumulativeShadows, decorators: [{
155
153
  type: Component,
156
154
  args: [{
157
155
  selector: 'ngts-accumulative-shadows',
@@ -179,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
179
177
  changeDetection: ChangeDetectionStrategy.OnPush,
180
178
  }]
181
179
  }], ctorParameters: () => [] });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW11bGF0aXZlLXNoYWRvd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL2FjY3VtdWxhdGl2ZS1zaGFkb3dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLE1BQU0sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUEyQm5ELE1BQU0sY0FBYyxHQUFtQztJQUN0RCxRQUFRLEVBQUUsS0FBSztJQUNmLE1BQU0sRUFBRSxFQUFFO0lBQ1YsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsRUFBRTtJQUNULEtBQUssRUFBRSxFQUFFO0lBQ1QsT0FBTyxFQUFFLENBQUM7SUFDVixTQUFTLEVBQUUsSUFBSTtJQUNmLEtBQUssRUFBRSxPQUFPO0lBQ2QsVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsSUFBSTtJQUNoQixVQUFVLEVBQUUsSUFBSTtDQUNoQixDQUFDO0FBMkJGLE1BQU0sT0FBTyx1QkFBdUI7SUF1RG5DO1FBdERBLGtCQUFh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SUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELG9CQUFvQjtRQUNwQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDL0MsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQWxJVyx1QkFBdUI7a0dBQXZCLHVCQUF1Qix3YkF0QnpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFrQlQ7OzJGQUlXLHVCQUF1QjtrQkF6Qm5DLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHREZXN0cm95UmVmLFxuXHRFbGVtZW50UmVmLFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RHcm91cCwgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBQcm9ncmVzc2l2ZUxpZ2h0TWFwLCBTb2Z0U2hhZG93TWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvdmFuaWxsYS1leHBvcnRzJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoLCBQbGFuZUdlb21ldHJ5IH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0R3JvdXA+IHtcblx0LyoqIEhvdyBtYW55IGZyYW1lcyBpdCBjYW4gcmVuZGVyLCBtb3JlIHlpZWxkcyBjbGVhbmVyIHJlc3VsdHMgYnV0IHRha2VzIG1vcmUgdGltZSwgNDAgKi9cblx0ZnJhbWVzOiBudW1iZXI7XG5cdC8qKiBJZiBmcmFtZXMgPT09IEluZmluaXR5IGJsZW5kIGNvbnRyb2xzIHRoZSByZWZyZXNoIHJhdGlvLCAxMDAgKi9cblx0YmxlbmQ6IG51bWJlcjtcblx0LyoqIENhbiBsaW1pdCB0aGUgYW1vdW50IG9mIGZyYW1lcyByZW5kZXJlZCBpZiBmcmFtZXMgPT09IEluZmluaXR5LCB1c3VhbGx5IHRvIGdldCBzb21lIHBlcmZvcm1hbmNlIGJhY2sgb25jZSBhIG1vdmFibGUgc2NlbmUgaGFzIHNldHRsZWQsIEluZmluaXR5ICovXG5cdGxpbWl0OiBudW1iZXI7XG5cdC8qKiBTY2FsZSBvZiB0aGUgcGxhbmUsICAqL1xuXHRzY2FsZTogbnVtYmVyO1xuXHQvKiogVGVtcG9yYWwgYWNjdW11bGF0ZXMgc2hhZG93cyBvdmVyIHRpbWUgd2hpY2ggaXMgbW9yZSBwZXJmb3JtYW50IGJ1dCBoYXMgYSB2aXN1YWwgcmVncmVzc2lvbiBvdmVyIGluc3RhbnQgcmVzdWx0cywgZmFsc2UgICovXG5cdHRlbXBvcmFsPzogYm9vbGVhbjtcblx0LyoqIE9wYWNpdHkgb2YgdGhlIHBsYW5lLCAxICovXG5cdG9wYWNpdHk6IG51bWJlcjtcblx0LyoqIERpc2NhcmRzIGFscGhhIHBpeGVscywgMC42NSAqL1xuXHRhbHBoYVRlc3Q6IG51bWJlcjtcblx0LyoqIFNoYWRvdyBjb2xvciwgYmxhY2sgKi9cblx0Y29sb3I6IHN0cmluZztcblx0LyoqIENvbG9yYmxlbmQsIGhvdyBtdWNoIGNvbG9ycyB0dXJuIHRvIGJsYWNrLCAwIGlzIGJsYWNrLCAyICovXG5cdGNvbG9yQmxlbmQ6IG51bWJlcjtcblx0LyoqIEJ1ZmZlciByZXNvbHV0aW9uLCAxMDI0ICovXG5cdHJlc29sdXRpb246IG51bWJlcjtcblx0LyoqIFRleHR1cmUgdG9uZW1hcHBpbmcgKi9cblx0dG9uZU1hcHBlZDogYm9vbGVhbjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzT3B0aW9ucyA9IHtcblx0dGVtcG9yYWw6IGZhbHNlLFxuXHRmcmFtZXM6IDQwLFxuXHRsaW1pdDogSW5maW5pdHksXG5cdGJsZW5kOiAyMCxcblx0c2NhbGU6IDEwLFxuXHRvcGFjaXR5OiAxLFxuXHRhbHBoYVRlc3Q6IDAuNzUsXG5cdGNvbG9yOiAnYmxhY2snLFxuXHRjb2xvckJsZW5kOiAyLFxuXHRyZXNvbHV0aW9uOiAxMDI0LFxuXHR0b25lTWFwcGVkOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1hY2N1bXVsYXRpdmUtc2hhZG93cycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZ3QtZ3JvdXAgI2xpZ2h0cyBbdHJhdmVyc2VdPVwibnVsbFRyYXZlcnNhbFwiPlxuXHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0PC9uZ3QtZ3JvdXA+XG5cblx0XHRcdDxuZ3QtbWVzaCAjcGxhbmUgW3NjYWxlXT1cInNjYWxlKClcIiBbcm90YXRpb25dPVwiWy1NYXRoLlBJIC8gMiwgMCwgMF1cIiBbcmVjZWl2ZVNoYWRvd109XCJ0cnVlXCI+XG5cdFx0XHRcdDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cblx0XHRcdFx0PG5ndC1zb2Z0LXNoYWRvdy1tYXRlcmlhbFxuXHRcdFx0XHRcdFtkZXB0aFdyaXRlXT1cImZhbHNlXCJcblx0XHRcdFx0XHRbdG9uZU1hcHBlZF09XCJ0b25lTWFwcGVkKClcIlxuXHRcdFx0XHRcdFtjb2xvcl09XCJjb2xvcigpXCJcblx0XHRcdFx0XHRbYmxlbmRdPVwiY29sb3JCbGVuZCgpXCJcblx0XHRcdFx0XHRbbWFwXT1cIm1hcCgpXCJcblx0XHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdC8+XG5cdFx0XHQ8L25ndC1tZXNoPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQWNjdW11bGF0aXZlU2hhZG93cyB7XG5cdG51bGxUcmF2ZXJzYWwgPSAoKSA9PiBudWxsO1xuXHRNYXRoID0gTWF0aDtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCd0ZW1wb3JhbCcsXG5cdFx0J2ZyYW1lcycsXG5cdFx0J2xpbWl0Jyxcblx0XHQnYmxlbmQnLFxuXHRcdCdzY2FsZScsXG5cdFx0J29wYWNpdHknLFxuXHRcdCdhbHBoYVRlc3QnLFxuXHRcdCdjb2xvcicsXG5cdFx0J2NvbG9yQmxlbmQnLFxuXHRcdCdyZXNvbHV0aW9uJyxcblx0XHQndG9uZU1hcHBlZCcsXG5cdF0pO1xuXG5cdGxpZ2h0c1JlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2xpZ2h0cycpO1xuXHRwbGFuZVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE1lc2g8UGxhbmVHZW9tZXRyeSwgSW5zdGFuY2VUeXBlPHR5cGVvZiBTb2Z0U2hhZG93TWF0ZXJpYWw+Pj4+KCdwbGFuZScpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cdHByaXZhdGUgY2FtZXJhID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2NhbWVyYScpO1xuXHRwcml2YXRlIHNjZW5lID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NjZW5lJyk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cblx0cHJpdmF0ZSBvcGFjaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdvcGFjaXR5Jyk7XG5cdHByaXZhdGUgYWxwaGFUZXN0ID0gcGljayh0aGlzLm9wdGlvbnMsICdhbHBoYVRlc3QnKTtcblx0cHJpdmF0ZSBsaW1pdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGltaXQnKTtcblx0cHJpdmF0ZSByZXNvbHV0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdyZXNvbHV0aW9uJyk7XG5cblx0cHJpdmF0ZSBwcmV2aW91c1BMTTogUHJvZ3Jlc3NpdmVMaWdodE1hcCB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSBwTE0gPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0aWYgKHRoaXMucHJldmlvdXNQTE0pIHtcblx0XHRcdHRoaXMucHJldmlvdXNQTE0uY2xlYXIoKTtcblx0XHR9XG5cdFx0cmV0dXJuICh0aGlzLnByZXZpb3VzUExNID0gbmV3IFByb2dyZXNzaXZlTGlnaHRNYXAodGhpcy5nbCgpLCB0aGlzLnNjZW5lKCksIHRoaXMucmVzb2x1dGlvbigpKSk7XG5cdH0pO1xuXG5cdHNjYWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdzY2FsZScpO1xuXHR0b25lTWFwcGVkID0gcGljayh0aGlzLm9wdGlvbnMsICd0b25lTWFwcGVkJyk7XG5cdGNvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xvcicpO1xuXHRjb2xvckJsZW5kID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xvckJsZW5kJyk7XG5cdG1hcCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucExNKCkucHJvZ3Jlc3NpdmVMaWdodE1hcDIudGV4dHVyZSk7XG5cblx0bGlnaHRzTWFwID0gbmV3IE1hcDxzdHJpbmcsICgpID0+IHZvaWQ+KCk7XG5cdHRlbXBvcmFsID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLm9wdGlvbnMoKS50ZW1wb3JhbCk7XG5cdGZyYW1lcyA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWF4KDIsIHRoaXMub3B0aW9ucygpLmZyYW1lcykpO1xuXHRibGVuZCA9IGNvbXB1dGVkKCgpID0+XG5cdFx0TWF0aC5tYXgoMiwgdGhpcy5vcHRpb25zKCkuZnJhbWVzID09PSBJbmZpbml0eSA/IHRoaXMub3B0aW9ucygpLmJsZW5kIDogdGhpcy5vcHRpb25zKCkuZnJhbWVzKSxcblx0KTtcblx0Y291bnQgPSAwO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwLCBTb2Z0U2hhZG93TWF0ZXJpYWwsIE1lc2gsIFBsYW5lR2VvbWV0cnkgfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHRoaXMucExNKCkuY29uZmlndXJlKHRoaXMucGxhbmVSZWYoKS5uYXRpdmVFbGVtZW50KTtcblxuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHNjZW5lTFMgPSBnZXRMb2NhbFN0YXRlKHRoaXMuc2NlbmUoKSk7XG5cdFx0XHRcdGlmICghc2NlbmVMUykgcmV0dXJuO1xuXHRcdFx0XHQvLyB0cmFjayBkZXBzXG5cdFx0XHRcdHRoaXMucGxhbmVSZWYoKTtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCk7XG5cdFx0XHRcdHNjZW5lTFMub2JqZWN0cygpO1xuXG5cdFx0XHRcdC8vIFJlc2V0IGludGVybmFscywgYnVmZmVycywgLi4uXG5cdFx0XHRcdHRoaXMucmVzZXQoKTtcblx0XHRcdFx0Ly8gVXBkYXRlIGxpZ2h0bWFwXG5cdFx0XHRcdGlmICghdGhpcy50ZW1wb3JhbCgpICYmIHRoaXMuZnJhbWVzKCkgIT09IEluZmluaXR5KSB0aGlzLnVwZGF0ZSh0aGlzLmJsZW5kKCkpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW2ZyYW1lcywgdGVtcG9yYWwsIGludmFsaWRhdGUsIGxpbWl0XSA9IFt0aGlzLmZyYW1lcygpLCAhIXRoaXMudGVtcG9yYWwoKSwgdGhpcy5pbnZhbGlkYXRlKCksIHRoaXMubGltaXQoKV07XG5cdFx0XHRpZiAoKHRlbXBvcmFsIHx8IGZyYW1lcyA9PT0gSW5maW5pdHkpICYmIHRoaXMuY291bnQgPCBmcmFtZXMgJiYgdGhpcy5jb3VudCA8IGxpbWl0KSB7XG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0dGhpcy51cGRhdGUoKTtcblx0XHRcdFx0dGhpcy5jb3VudCsrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHR0aGlzLnByZXZpb3VzUExNPy5jbGVhcigpO1xuXHRcdH0pO1xuXHR9XG5cblx0Z2V0TWVzaCgpIHtcblx0XHRyZXR1cm4gdGhpcy5wbGFuZVJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdH1cblxuXHRyZXNldCgpIHtcblx0XHQvLyBDbGVhciBidWZmZXJzLCByZXNldCBvcGFjaXRpZXMsIHNldCBmcmFtZSBjb3VudCB0byAwXG5cdFx0dW50cmFja2VkKHRoaXMucExNKS5jbGVhcigpO1xuXHRcdGNvbnN0IG1hdGVyaWFsID0gdW50cmFja2VkKHRoaXMucGxhbmVSZWYpLm5hdGl2ZUVsZW1lbnQubWF0ZXJpYWw7XG5cdFx0bWF0ZXJpYWwub3BhY2l0eSA9IDA7XG5cdFx0bWF0ZXJpYWwuYWxwaGFUZXN0ID0gMDtcblx0XHR0aGlzLmNvdW50ID0gMDtcblx0fVxuXG5cdHVwZGF0ZShmcmFtZXMgPSAxKSB7XG5cdFx0Ly8gQWRhcHQgdGhlIG9wYWNpdHktYmxlbmQgcmF0aW8gdG8gdGhlIG51bWJlciBvZiBmcmFtZXNcblx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMucGxhbmVSZWYoKS5uYXRpdmVFbGVtZW50Lm1hdGVyaWFsO1xuXHRcdGlmICghdGhpcy50ZW1wb3JhbCgpKSB7XG5cdFx0XHRtYXRlcmlhbC5vcGFjaXR5ID0gdGhpcy5vcGFjaXR5KCk7XG5cdFx0XHRtYXRlcmlhbC5hbHBoYVRlc3QgPSB0aGlzLmFscGhhVGVzdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRlcmlhbC5vcGFjaXR5ID0gTWF0aC5taW4odGhpcy5vcGFjaXR5KCksIG1hdGVyaWFsLm9wYWNpdHkgKyB0aGlzLm9wYWNpdHkoKSAvIHRoaXMuYmxlbmQoKSk7XG5cdFx0XHRtYXRlcmlhbC5hbHBoYVRlc3QgPSBNYXRoLm1pbih0aGlzLmFscGhhVGVzdCgpLCBtYXRlcmlhbC5hbHBoYVRlc3QgKyB0aGlzLmFscGhhVGVzdCgpIC8gdGhpcy5ibGVuZCgpKTtcblx0XHR9XG5cblx0XHQvLyBTd2l0Y2ggYWNjdW11bGF0aXZlIGxpZ2h0cyBvblxuXHRcdHRoaXMubGlnaHRzUmVmKCkubmF0aXZlRWxlbWVudC52aXNpYmxlID0gdHJ1ZTtcblx0XHQvLyBDb2xsZWN0IHNjZW5lIGxpZ2h0cyBhbmQgbWVzaGVzXG5cdFx0dGhpcy5wTE0oKS5wcmVwYXJlKCk7XG5cblx0XHQvLyBVcGRhdGUgdGhlIGxpZ2h0bWFwIGFuZCB0aGUgYWNjdW11bGF0aXZlIGxpZ2h0c1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZnJhbWVzOyBpKyspIHtcblx0XHRcdHRoaXMubGlnaHRzTWFwLmZvckVhY2goKGxpZ2h0VXBkYXRlKSA9PiBsaWdodFVwZGF0ZSgpKTtcblx0XHRcdHRoaXMucExNKCkudXBkYXRlKHRoaXMuY2FtZXJhKCksIHRoaXMuYmxlbmQoKSk7XG5cdFx0fVxuXHRcdC8vIFN3aXRjaCBsaWdodHMgb2ZmXG5cdFx0dGhpcy5saWdodHNSZWYoKS5uYXRpdmVFbGVtZW50LnZpc2libGUgPSBmYWxzZTtcblx0XHQvLyBSZXN0b3JlIGxpZ2h0cyBhbmQgbWVzaGVzXG5cdFx0dGhpcy5wTE0oKS5maW5pc2goKTtcblx0fVxufVxuIl19
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW11bGF0aXZlLXNoYWRvd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL2FjY3VtdWxhdGl2ZS1zaGFkb3dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBWSxNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBMkJuRCxNQUFNLGNBQWMsR0FBbUM7SUFDdEQsUUFBUSxFQUFFLEtBQUs7SUFDZixNQUFNLEVBQUUsRUFBRTtJQUNWLEtBQUssRUFBRSxRQUFRO0lBQ2YsS0FBSyxFQUFFLEVBQUU7SUFDVCxLQUFLLEVBQUUsRUFBRTtJQUNULE9BQU8sRUFBRSxDQUFDO0lBQ1YsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsT0FBTztJQUNkLFVBQVUsRUFBRSxDQUFDO0lBQ2IsVUFBVSxFQUFFLElBQUk7SUFDaEIsVUFBVSxFQUFFLElBQUk7Q0FDaEIsQ0FBQztBQTJCRixNQUFNLE9BQU8sdUJBQXVCO0lBdURuQztRQXREQSxrQkFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUMz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QyxDQUFDO1FBQ2hELENBQUM7UUFDRCxvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQy9DLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDckIsQ0FBQzs4R0FqSVcsdUJBQXVCO2tHQUF2Qix1QkFBdUIsd2JBdEJ6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0JUOzsyRkFJVyx1QkFBdUI7a0JBekJuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0RGVzdHJveVJlZixcblx0RWxlbWVudFJlZixcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RHcm91cCwgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBQcm9ncmVzc2l2ZUxpZ2h0TWFwLCBTb2Z0U2hhZG93TWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvdmFuaWxsYS1leHBvcnRzJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoLCBQbGFuZUdlb21ldHJ5IH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0R3JvdXA+IHtcblx0LyoqIEhvdyBtYW55IGZyYW1lcyBpdCBjYW4gcmVuZGVyLCBtb3JlIHlpZWxkcyBjbGVhbmVyIHJlc3VsdHMgYnV0IHRha2VzIG1vcmUgdGltZSwgNDAgKi9cblx0ZnJhbWVzOiBudW1iZXI7XG5cdC8qKiBJZiBmcmFtZXMgPT09IEluZmluaXR5IGJsZW5kIGNvbnRyb2xzIHRoZSByZWZyZXNoIHJhdGlvLCAxMDAgKi9cblx0YmxlbmQ6IG51bWJlcjtcblx0LyoqIENhbiBsaW1pdCB0aGUgYW1vdW50IG9mIGZyYW1lcyByZW5kZXJlZCBpZiBmcmFtZXMgPT09IEluZmluaXR5LCB1c3VhbGx5IHRvIGdldCBzb21lIHBlcmZvcm1hbmNlIGJhY2sgb25jZSBhIG1vdmFibGUgc2NlbmUgaGFzIHNldHRsZWQsIEluZmluaXR5ICovXG5cdGxpbWl0OiBudW1iZXI7XG5cdC8qKiBTY2FsZSBvZiB0aGUgcGxhbmUsICAqL1xuXHRzY2FsZTogbnVtYmVyO1xuXHQvKiogVGVtcG9yYWwgYWNjdW11bGF0ZXMgc2hhZG93cyBvdmVyIHRpbWUgd2hpY2ggaXMgbW9yZSBwZXJmb3JtYW50IGJ1dCBoYXMgYSB2aXN1YWwgcmVncmVzc2lvbiBvdmVyIGluc3RhbnQgcmVzdWx0cywgZmFsc2UgICovXG5cdHRlbXBvcmFsPzogYm9vbGVhbjtcblx0LyoqIE9wYWNpdHkgb2YgdGhlIHBsYW5lLCAxICovXG5cdG9wYWNpdHk6IG51bWJlcjtcblx0LyoqIERpc2NhcmRzIGFscGhhIHBpeGVscywgMC42NSAqL1xuXHRhbHBoYVRlc3Q6IG51bWJlcjtcblx0LyoqIFNoYWRvdyBjb2xvciwgYmxhY2sgKi9cblx0Y29sb3I6IHN0cmluZztcblx0LyoqIENvbG9yYmxlbmQsIGhvdyBtdWNoIGNvbG9ycyB0dXJuIHRvIGJsYWNrLCAwIGlzIGJsYWNrLCAyICovXG5cdGNvbG9yQmxlbmQ6IG51bWJlcjtcblx0LyoqIEJ1ZmZlciByZXNvbHV0aW9uLCAxMDI0ICovXG5cdHJlc29sdXRpb246IG51bWJlcjtcblx0LyoqIFRleHR1cmUgdG9uZW1hcHBpbmcgKi9cblx0dG9uZU1hcHBlZDogYm9vbGVhbjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzT3B0aW9ucyA9IHtcblx0dGVtcG9yYWw6IGZhbHNlLFxuXHRmcmFtZXM6IDQwLFxuXHRsaW1pdDogSW5maW5pdHksXG5cdGJsZW5kOiAyMCxcblx0c2NhbGU6IDEwLFxuXHRvcGFjaXR5OiAxLFxuXHRhbHBoYVRlc3Q6IDAuNzUsXG5cdGNvbG9yOiAnYmxhY2snLFxuXHRjb2xvckJsZW5kOiAyLFxuXHRyZXNvbHV0aW9uOiAxMDI0LFxuXHR0b25lTWFwcGVkOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1hY2N1bXVsYXRpdmUtc2hhZG93cycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZ3QtZ3JvdXAgI2xpZ2h0cyBbdHJhdmVyc2VdPVwibnVsbFRyYXZlcnNhbFwiPlxuXHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0PC9uZ3QtZ3JvdXA+XG5cblx0XHRcdDxuZ3QtbWVzaCAjcGxhbmUgW3NjYWxlXT1cInNjYWxlKClcIiBbcm90YXRpb25dPVwiWy1NYXRoLlBJIC8gMiwgMCwgMF1cIiBbcmVjZWl2ZVNoYWRvd109XCJ0cnVlXCI+XG5cdFx0XHRcdDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cblx0XHRcdFx0PG5ndC1zb2Z0LXNoYWRvdy1tYXRlcmlhbFxuXHRcdFx0XHRcdFtkZXB0aFdyaXRlXT1cImZhbHNlXCJcblx0XHRcdFx0XHRbdG9uZU1hcHBlZF09XCJ0b25lTWFwcGVkKClcIlxuXHRcdFx0XHRcdFtjb2xvcl09XCJjb2xvcigpXCJcblx0XHRcdFx0XHRbYmxlbmRdPVwiY29sb3JCbGVuZCgpXCJcblx0XHRcdFx0XHRbbWFwXT1cIm1hcCgpXCJcblx0XHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdC8+XG5cdFx0XHQ8L25ndC1tZXNoPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQWNjdW11bGF0aXZlU2hhZG93cyB7XG5cdG51bGxUcmF2ZXJzYWwgPSAoKSA9PiBudWxsO1xuXHRNYXRoID0gTWF0aDtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCd0ZW1wb3JhbCcsXG5cdFx0J2ZyYW1lcycsXG5cdFx0J2xpbWl0Jyxcblx0XHQnYmxlbmQnLFxuXHRcdCdzY2FsZScsXG5cdFx0J29wYWNpdHknLFxuXHRcdCdhbHBoYVRlc3QnLFxuXHRcdCdjb2xvcicsXG5cdFx0J2NvbG9yQmxlbmQnLFxuXHRcdCdyZXNvbHV0aW9uJyxcblx0XHQndG9uZU1hcHBlZCcsXG5cdF0pO1xuXG5cdGxpZ2h0c1JlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2xpZ2h0cycpO1xuXHRwbGFuZVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE1lc2g8UGxhbmVHZW9tZXRyeSwgSW5zdGFuY2VUeXBlPHR5cGVvZiBTb2Z0U2hhZG93TWF0ZXJpYWw+Pj4+KCdwbGFuZScpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cdHByaXZhdGUgY2FtZXJhID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2NhbWVyYScpO1xuXHRwcml2YXRlIHNjZW5lID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NjZW5lJyk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cblx0cHJpdmF0ZSBvcGFjaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdvcGFjaXR5Jyk7XG5cdHByaXZhdGUgYWxwaGFUZXN0ID0gcGljayh0aGlzLm9wdGlvbnMsICdhbHBoYVRlc3QnKTtcblx0cHJpdmF0ZSBsaW1pdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGltaXQnKTtcblx0cHJpdmF0ZSByZXNvbHV0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdyZXNvbHV0aW9uJyk7XG5cblx0cHJpdmF0ZSBwcmV2aW91c1BMTTogUHJvZ3Jlc3NpdmVMaWdodE1hcCB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSBwTE0gPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0aWYgKHRoaXMucHJldmlvdXNQTE0pIHtcblx0XHRcdHRoaXMucHJldmlvdXNQTE0uY2xlYXIoKTtcblx0XHR9XG5cdFx0cmV0dXJuICh0aGlzLnByZXZpb3VzUExNID0gbmV3IFByb2dyZXNzaXZlTGlnaHRNYXAodGhpcy5nbCgpLCB0aGlzLnNjZW5lKCksIHRoaXMucmVzb2x1dGlvbigpKSk7XG5cdH0pO1xuXG5cdHNjYWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdzY2FsZScpO1xuXHR0b25lTWFwcGVkID0gcGljayh0aGlzLm9wdGlvbnMsICd0b25lTWFwcGVkJyk7XG5cdGNvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xvcicpO1xuXHRjb2xvckJsZW5kID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xvckJsZW5kJyk7XG5cdG1hcCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucExNKCkucHJvZ3Jlc3NpdmVMaWdodE1hcDIudGV4dHVyZSk7XG5cblx0bGlnaHRzTWFwID0gbmV3IE1hcDxzdHJpbmcsICgpID0+IHZvaWQ+KCk7XG5cdHRlbXBvcmFsID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLm9wdGlvbnMoKS50ZW1wb3JhbCk7XG5cdGZyYW1lcyA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWF4KDIsIHRoaXMub3B0aW9ucygpLmZyYW1lcykpO1xuXHRibGVuZCA9IGNvbXB1dGVkKCgpID0+XG5cdFx0TWF0aC5tYXgoMiwgdGhpcy5vcHRpb25zKCkuZnJhbWVzID09PSBJbmZpbml0eSA/IHRoaXMub3B0aW9ucygpLmJsZW5kIDogdGhpcy5vcHRpb25zKCkuZnJhbWVzKSxcblx0KTtcblx0Y291bnQgPSAwO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwLCBTb2Z0U2hhZG93TWF0ZXJpYWwsIE1lc2gsIFBsYW5lR2VvbWV0cnkgfSk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5wTE0oKS5jb25maWd1cmUodGhpcy5wbGFuZVJlZigpLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHNjZW5lTFMgPSBnZXRMb2NhbFN0YXRlKHRoaXMuc2NlbmUoKSk7XG5cdFx0XHRpZiAoIXNjZW5lTFMpIHJldHVybjtcblxuXHRcdFx0Ly8gdHJhY2sgZGVwc1xuXHRcdFx0dGhpcy5wbGFuZVJlZigpO1xuXHRcdFx0dGhpcy5vcHRpb25zKCk7XG5cdFx0XHRzY2VuZUxTLm9iamVjdHMoKTtcblxuXHRcdFx0Ly8gUmVzZXQgaW50ZXJuYWxzLCBidWZmZXJzLCAuLi5cblx0XHRcdHRoaXMucmVzZXQoKTtcblx0XHRcdC8vIFVwZGF0ZSBsaWdodG1hcFxuXHRcdFx0aWYgKCF0aGlzLnRlbXBvcmFsKCkgJiYgdGhpcy5mcmFtZXMoKSAhPT0gSW5maW5pdHkpIHRoaXMudXBkYXRlKHRoaXMuYmxlbmQoKSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW2ZyYW1lcywgdGVtcG9yYWwsIGludmFsaWRhdGUsIGxpbWl0XSA9IFt0aGlzLmZyYW1lcygpLCAhIXRoaXMudGVtcG9yYWwoKSwgdGhpcy5pbnZhbGlkYXRlKCksIHRoaXMubGltaXQoKV07XG5cdFx0XHRpZiAoKHRlbXBvcmFsIHx8IGZyYW1lcyA9PT0gSW5maW5pdHkpICYmIHRoaXMuY291bnQgPCBmcmFtZXMgJiYgdGhpcy5jb3VudCA8IGxpbWl0KSB7XG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdFx0dGhpcy51cGRhdGUoKTtcblx0XHRcdFx0dGhpcy5jb3VudCsrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHR0aGlzLnByZXZpb3VzUExNPy5jbGVhcigpO1xuXHRcdH0pO1xuXHR9XG5cblx0Z2V0TWVzaCgpIHtcblx0XHRyZXR1cm4gdGhpcy5wbGFuZVJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdH1cblxuXHRyZXNldCgpIHtcblx0XHQvLyBDbGVhciBidWZmZXJzLCByZXNldCBvcGFjaXRpZXMsIHNldCBmcmFtZSBjb3VudCB0byAwXG5cdFx0dW50cmFja2VkKHRoaXMucExNKS5jbGVhcigpO1xuXHRcdGNvbnN0IG1hdGVyaWFsID0gdW50cmFja2VkKHRoaXMucGxhbmVSZWYpLm5hdGl2ZUVsZW1lbnQubWF0ZXJpYWw7XG5cdFx0bWF0ZXJpYWwub3BhY2l0eSA9IDA7XG5cdFx0bWF0ZXJpYWwuYWxwaGFUZXN0ID0gMDtcblx0XHR0aGlzLmNvdW50ID0gMDtcblx0fVxuXG5cdHVwZGF0ZShmcmFtZXMgPSAxKSB7XG5cdFx0Ly8gQWRhcHQgdGhlIG9wYWNpdHktYmxlbmQgcmF0aW8gdG8gdGhlIG51bWJlciBvZiBmcmFtZXNcblx0XHRjb25zdCBtYXRlcmlhbCA9IHRoaXMucGxhbmVSZWYoKS5uYXRpdmVFbGVtZW50Lm1hdGVyaWFsO1xuXHRcdGlmICghdGhpcy50ZW1wb3JhbCgpKSB7XG5cdFx0XHRtYXRlcmlhbC5vcGFjaXR5ID0gdGhpcy5vcGFjaXR5KCk7XG5cdFx0XHRtYXRlcmlhbC5hbHBoYVRlc3QgPSB0aGlzLmFscGhhVGVzdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRlcmlhbC5vcGFjaXR5ID0gTWF0aC5taW4odGhpcy5vcGFjaXR5KCksIG1hdGVyaWFsLm9wYWNpdHkgKyB0aGlzLm9wYWNpdHkoKSAvIHRoaXMuYmxlbmQoKSk7XG5cdFx0XHRtYXRlcmlhbC5hbHBoYVRlc3QgPSBNYXRoLm1pbih0aGlzLmFscGhhVGVzdCgpLCBtYXRlcmlhbC5hbHBoYVRlc3QgKyB0aGlzLmFscGhhVGVzdCgpIC8gdGhpcy5ibGVuZCgpKTtcblx0XHR9XG5cblx0XHQvLyBTd2l0Y2ggYWNjdW11bGF0aXZlIGxpZ2h0cyBvblxuXHRcdHRoaXMubGlnaHRzUmVmKCkubmF0aXZlRWxlbWVudC52aXNpYmxlID0gdHJ1ZTtcblx0XHQvLyBDb2xsZWN0IHNjZW5lIGxpZ2h0cyBhbmQgbWVzaGVzXG5cdFx0dGhpcy5wTE0oKS5wcmVwYXJlKCk7XG5cblx0XHQvLyBVcGRhdGUgdGhlIGxpZ2h0bWFwIGFuZCB0aGUgYWNjdW11bGF0aXZlIGxpZ2h0c1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZnJhbWVzOyBpKyspIHtcblx0XHRcdHRoaXMubGlnaHRzTWFwLmZvckVhY2goKGxpZ2h0VXBkYXRlKSA9PiBsaWdodFVwZGF0ZSgpKTtcblx0XHRcdHRoaXMucExNKCkudXBkYXRlKHRoaXMuY2FtZXJhKCksIHRoaXMuYmxlbmQoKSk7XG5cdFx0fVxuXHRcdC8vIFN3aXRjaCBsaWdodHMgb2ZmXG5cdFx0dGhpcy5saWdodHNSZWYoKS5uYXRpdmVFbGVtZW50LnZpc2libGUgPSBmYWxzZTtcblx0XHQvLyBSZXN0b3JlIGxpZ2h0cyBhbmQgbWVzaGVzXG5cdFx0dGhpcy5wTE0oKS5maW5pc2goKTtcblx0fVxufVxuIl19