angular-three-soba 2.0.0-beta.7 → 2.0.0-beta.8

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 (296) hide show
  1. package/abstractions/billboard/billboard.d.ts +11 -7
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +23 -11
  4. package/abstractions/grid/grid.d.ts +41 -50
  5. package/abstractions/index.d.ts +1 -7
  6. package/abstractions/text/text.d.ts +10 -4
  7. package/abstractions/text-3d/text-3d.d.ts +47 -40
  8. package/cameras/camera/camera-content.d.ts +1 -1
  9. package/cameras/camera/camera.d.ts +16 -13
  10. package/cameras/cube-camera/cube-camera.d.ts +50 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +30 -13
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +140 -110
  19. package/esm2022/abstractions/index.mjs +2 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -122
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +119 -121
  22. package/esm2022/cameras/camera/camera-content.mjs +5 -6
  23. package/esm2022/cameras/camera/camera.mjs +48 -42
  24. package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +94 -90
  29. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
  30. package/esm2022/loaders/loader/loader.mjs +92 -87
  31. package/esm2022/loaders/progress/progress.mjs +1 -1
  32. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  33. package/esm2022/materials/index.mjs +2 -1
  34. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  35. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  36. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
  37. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  38. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  39. package/esm2022/materials/point-material/point-material.mjs +46 -0
  40. package/esm2022/misc/animations/animations.mjs +20 -16
  41. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  42. package/esm2022/misc/caustics/caustics.mjs +387 -0
  43. package/esm2022/misc/decal/decal.mjs +187 -0
  44. package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
  45. package/esm2022/misc/example/example.mjs +160 -0
  46. package/esm2022/misc/fbo/fbo.mjs +35 -35
  47. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  48. package/esm2022/misc/html/html.mjs +304 -0
  49. package/esm2022/misc/index.mjs +10 -1
  50. package/esm2022/misc/sampler/sampler.mjs +142 -0
  51. package/esm2022/misc/shadow/shadow.mjs +111 -0
  52. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  53. package/esm2022/misc/trail/trail.mjs +209 -0
  54. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  55. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  56. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  57. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  58. package/esm2022/modifiers/index.mjs +2 -0
  59. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  60. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  61. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  62. package/esm2022/performances/index.mjs +6 -0
  63. package/esm2022/performances/points/points-input.mjs +64 -0
  64. package/esm2022/performances/points/points.mjs +329 -0
  65. package/esm2022/performances/points/position-point.mjs +54 -0
  66. package/esm2022/performances/segments/segment-object.mjs +9 -0
  67. package/esm2022/performances/segments/segments.mjs +182 -0
  68. package/esm2022/shaders/blur-pass/blur-pass.mjs +1 -1
  69. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  70. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  71. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  72. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  73. package/esm2022/shaders/grid-material/grid-material.mjs +29 -14
  74. package/esm2022/shaders/index.mjs +5 -3
  75. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  76. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +1 -1
  77. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
  78. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  79. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  80. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  81. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  82. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  83. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
  84. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  85. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  86. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
  87. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  88. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  89. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  90. package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
  91. package/esm2022/staging/bounds/bounds.mjs +144 -143
  92. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  93. package/esm2022/staging/center/center.mjs +106 -91
  94. package/esm2022/staging/cloud/cloud.mjs +118 -124
  95. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
  96. package/esm2022/staging/environment/assets.mjs +12 -12
  97. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  98. package/esm2022/staging/environment/environment-ground.mjs +18 -20
  99. package/esm2022/staging/environment/environment-input.mjs +97 -84
  100. package/esm2022/staging/environment/environment-map.mjs +33 -33
  101. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  102. package/esm2022/staging/environment/environment.mjs +34 -51
  103. package/esm2022/staging/environment/utils.mjs +35 -14
  104. package/esm2022/staging/float/float.mjs +70 -58
  105. package/esm2022/staging/index.mjs +7 -3
  106. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  107. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  108. package/esm2022/staging/sky/sky.mjs +85 -80
  109. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  110. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  111. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  112. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  113. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  114. package/esm2022/staging/spot-light/volumetric-mesh.mjs +61 -78
  115. package/esm2022/staging/stage/stage.mjs +304 -290
  116. package/esm2022/staging/stars/stars.mjs +101 -102
  117. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  118. package/esm2022/staging/wireframe/wireframe.mjs +224 -0
  119. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  120. package/esm2022/utils/content/content.mjs +15 -0
  121. package/esm2022/utils/index.mjs +2 -0
  122. package/fesm2022/angular-three-soba-abstractions.mjs +505 -2087
  123. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  124. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  125. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  126. package/fesm2022/angular-three-soba-controls.mjs +93 -88
  127. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  128. package/fesm2022/angular-three-soba-loaders.mjs +94 -90
  129. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  130. package/fesm2022/angular-three-soba-materials.mjs +655 -590
  131. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  132. package/fesm2022/angular-three-soba-misc.mjs +2198 -89
  133. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  134. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  135. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  136. package/fesm2022/angular-three-soba-performances.mjs +697 -0
  137. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  138. package/fesm2022/angular-three-soba-shaders.mjs +501 -264
  139. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-staging.mjs +2870 -2555
  141. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  142. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  143. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  144. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  145. package/loaders/loader/loader.d.ts +19 -17
  146. package/loaders/progress/progress.d.ts +1 -1
  147. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  148. package/materials/index.d.ts +1 -0
  149. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  150. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  151. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  152. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  153. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  154. package/materials/point-material/point-material.d.ts +24 -0
  155. package/metadata.json +1 -0
  156. package/misc/animations/animations.d.ts +6 -4
  157. package/misc/caustics/caustics.d.ts +87 -0
  158. package/misc/decal/decal.d.ts +49 -0
  159. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  160. package/misc/example/example.d.ts +81 -0
  161. package/misc/fbo/fbo.d.ts +2 -2
  162. package/misc/html/html-wrapper.d.ts +559 -0
  163. package/misc/html/html.d.ts +214 -0
  164. package/misc/index.d.ts +9 -0
  165. package/misc/sampler/sampler.d.ts +67 -0
  166. package/misc/shadow/shadow.d.ts +37 -0
  167. package/misc/stats-gl/stats-gl.d.ts +24 -0
  168. package/misc/trail/trail.d.ts +57 -0
  169. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  170. package/misc/trail-texture/trail-texture.d.ts +50 -0
  171. package/modifiers/README.md +3 -0
  172. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  173. package/modifiers/index.d.ts +1 -0
  174. package/package.json +30 -22
  175. package/performances/README.md +3 -0
  176. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  177. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  178. package/performances/index.d.ts +5 -0
  179. package/performances/points/points-input.d.ts +32 -0
  180. package/performances/points/points.d.ts +92 -0
  181. package/{performance/instances/position-mesh.d.ts → performances/points/position-point.d.ts} +4 -3
  182. package/performances/segments/segment-object.d.ts +7 -0
  183. package/performances/segments/segments.d.ts +124 -0
  184. package/shaders/grid-material/grid-material.d.ts +33 -0
  185. package/shaders/index.d.ts +4 -2
  186. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +146 -1
  187. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  188. package/shaders/shader-material/shader-material.d.ts +2 -2
  189. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  190. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  191. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  192. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  193. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  194. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  195. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  196. package/staging/backdrop/backdrop.d.ts +30 -0
  197. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  198. package/staging/bounds/bounds.d.ts +100 -24
  199. package/staging/camera-shake/camera-shake.d.ts +30 -19
  200. package/staging/center/center.d.ts +43 -35
  201. package/staging/cloud/cloud.d.ts +26 -23
  202. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  203. package/staging/environment/assets.d.ts +9 -9
  204. package/staging/environment/environment-cube.d.ts +9 -5
  205. package/staging/environment/environment-ground.d.ts +7 -7
  206. package/staging/environment/environment-input.d.ts +36 -36
  207. package/staging/environment/environment-map.d.ts +10 -5
  208. package/staging/environment/environment-portal.d.ts +10 -5
  209. package/staging/environment/environment.d.ts +0 -4
  210. package/staging/environment/utils.d.ts +2 -2
  211. package/staging/float/float.d.ts +14 -10
  212. package/staging/index.d.ts +6 -2
  213. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  214. package/staging/normal-texture/normal-texture.d.ts +16 -0
  215. package/staging/sky/sky.d.ts +28 -21
  216. package/staging/sparkles/sparkles.d.ts +35 -21
  217. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  218. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  219. package/staging/spot-light/spot-light-input.d.ts +25 -25
  220. package/staging/spot-light/spot-light.d.ts +31 -15
  221. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  222. package/staging/stage/stage.d.ts +88 -63
  223. package/staging/stars/stars.d.ts +27 -16
  224. package/staging/wireframe/wireframe-input.d.ts +65 -0
  225. package/staging/wireframe/wireframe.d.ts +28 -0
  226. package/utils/README.md +3 -0
  227. package/utils/content/content.d.ts +8 -0
  228. package/utils/index.d.ts +1 -0
  229. package/web-types.json +1 -0
  230. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  231. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  232. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  233. package/abstractions/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  234. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  235. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  236. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  237. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  238. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  239. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  240. package/abstractions/line/line-input.d.ts +0 -42
  241. package/abstractions/line/line.d.ts +0 -35
  242. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  243. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  244. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  245. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  246. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  247. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  248. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  249. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  250. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  251. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  252. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  253. package/esm2022/abstractions/line/line-input.mjs +0 -113
  254. package/esm2022/abstractions/line/line.mjs +0 -165
  255. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  256. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  257. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  258. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  259. package/esm2022/performance/detailed/detailed.mjs +0 -61
  260. package/esm2022/performance/index.mjs +0 -7
  261. package/esm2022/performance/instances/instance.mjs +0 -48
  262. package/esm2022/performance/instances/instances.mjs +0 -189
  263. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  264. package/esm2022/performance/stats/stats.mjs +0 -79
  265. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  266. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  267. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  268. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  269. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -258
  270. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  271. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  272. package/performance/README.md +0 -3
  273. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  274. package/performance/detailed/detailed.d.ts +0 -20
  275. package/performance/index.d.ts +0 -6
  276. package/performance/instances/instance.d.ts +0 -9
  277. package/performance/instances/instances.d.ts +0 -35
  278. package/performance/stats/stats.d.ts +0 -18
  279. package/plugin/generators.json +0 -19
  280. package/plugin/libs/plugin/README.md +0 -11
  281. package/plugin/package.json +0 -9
  282. package/plugin/src/generators/init/compat.d.ts +0 -2
  283. package/plugin/src/generators/init/compat.js +0 -6
  284. package/plugin/src/generators/init/compat.js.map +0 -1
  285. package/plugin/src/generators/init/init.d.ts +0 -7
  286. package/plugin/src/generators/init/init.js +0 -28
  287. package/plugin/src/generators/init/init.js.map +0 -1
  288. package/plugin/src/generators/init/schema.json +0 -6
  289. package/plugin/src/index.d.ts +0 -1
  290. package/plugin/src/index.js +0 -6
  291. package/plugin/src/index.js.map +0 -1
  292. package/staging/caustics/caustisc.d.ts +0 -70
  293. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  294. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  295. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  296. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -11,23 +11,37 @@ export const GridMaterial = shaderMaterial({
11
11
  sectionColor: new THREE.Color(),
12
12
  infiniteGrid: false,
13
13
  followCamera: false,
14
+ worldCamProjPosition: new THREE.Vector3(),
15
+ worldPlanePosition: new THREE.Vector3(),
14
16
  },
15
17
  /* glsl */ `
16
- varying vec3 worldPosition;
18
+ varying vec3 localPosition;
19
+ varying vec4 worldPosition;
20
+
21
+ uniform vec3 worldCamProjPosition;
22
+ uniform vec3 worldPlanePosition;
17
23
  uniform float fadeDistance;
18
24
  uniform bool infiniteGrid;
19
25
  uniform bool followCamera;
20
26
 
21
27
  void main() {
22
- worldPosition = position.xzy;
23
- if (infiniteGrid) worldPosition *= 1.0 + fadeDistance;
24
- if (followCamera) worldPosition.xz +=cameraPosition.xz;
28
+ localPosition = position.xzy;
29
+ if (infiniteGrid) localPosition *= 1.0 + fadeDistance;
30
+
31
+ worldPosition = modelMatrix * vec4(localPosition, 1.0);
32
+ if (followCamera) {
33
+ worldPosition.xyz += (worldCamProjPosition - worldPlanePosition);
34
+ localPosition = (inverse(modelMatrix) * worldPosition).xyz;
35
+ }
25
36
 
26
- gl_Position = projectionMatrix * modelViewMatrix * vec4(worldPosition, 1.0);
37
+ gl_Position = projectionMatrix * viewMatrix * worldPosition;
27
38
  }
28
39
  `,
29
40
  /* glsl */ `
30
- varying vec3 worldPosition;
41
+ varying vec3 localPosition;
42
+ varying vec4 worldPosition;
43
+
44
+ uniform vec3 worldCamProjPosition;
31
45
  uniform float cellSize;
32
46
  uniform float sectionSize;
33
47
  uniform vec3 cellColor;
@@ -38,25 +52,26 @@ export const GridMaterial = shaderMaterial({
38
52
  uniform float sectionThickness;
39
53
 
40
54
  float getGrid(float size, float thickness) {
41
- vec2 r = worldPosition.xz / size;
55
+ vec2 r = localPosition.xz / size;
42
56
  vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);
43
- float line = min(grid.x, grid.y) + 1. - thickness;
44
- return 1.0 - min(line, 1.);
57
+ float line = min(grid.x, grid.y) + 1.0 - thickness;
58
+ return 1.0 - min(line, 1.0);
45
59
  }
46
60
 
47
61
  void main() {
48
62
  float g1 = getGrid(cellSize, cellThickness);
49
63
  float g2 = getGrid(sectionSize, sectionThickness);
50
64
 
51
- float d = 1.0 - min(distance(cameraPosition.xz, worldPosition.xz) / fadeDistance, 1.);
52
- vec3 color = mix(cellColor, sectionColor, min(1.,sectionThickness * g2));
65
+ float dist = distance(worldCamProjPosition, worldPosition.xyz);
66
+ float d = 1.0 - min(dist / fadeDistance, 1.0);
67
+ vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2));
53
68
 
54
- gl_FragColor = vec4(color, (g1 + g2) * pow(d,fadeStrength));
69
+ gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength));
55
70
  gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2);
56
71
  if (gl_FragColor.a <= 0.0) discard;
57
72
 
58
73
  #include <tonemapping_fragment>
59
- #include <encodings_fragment>
74
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
60
75
  }
61
76
  `);
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9ncmlkLW1hdGVyaWFsL2dyaWQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQ3RDO0lBQ0ksUUFBUSxFQUFFLEdBQUc7SUFDYixXQUFXLEVBQUUsQ0FBQztJQUNkLFlBQVksRUFBRSxHQUFHO0lBQ2pCLFlBQVksRUFBRSxDQUFDO0lBQ2YsYUFBYSxFQUFFLEdBQUc7SUFDbEIsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQixTQUFTLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQzVCLFlBQVksRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7SUFDL0IsWUFBWSxFQUFFLEtBQUs7SUFDbkIsWUFBWSxFQUFFLEtBQUs7Q0FDdEI7QUFDRCxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7R0FhWjtBQUNDLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ1osQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgc2hhZGVyTWF0ZXJpYWwgfSBmcm9tICcuLi9zaGFkZXItbWF0ZXJpYWwvc2hhZGVyLW1hdGVyaWFsJztcblxuZXhwb3J0IGNvbnN0IEdyaWRNYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuICAgIHtcbiAgICAgICAgY2VsbFNpemU6IDAuNSxcbiAgICAgICAgc2VjdGlvblNpemU6IDEsXG4gICAgICAgIGZhZGVEaXN0YW5jZTogMTAwLFxuICAgICAgICBmYWRlU3RyZW5ndGg6IDEsXG4gICAgICAgIGNlbGxUaGlja25lc3M6IDAuNSxcbiAgICAgICAgc2VjdGlvblRoaWNrbmVzczogMSxcbiAgICAgICAgY2VsbENvbG9yOiBuZXcgVEhSRUUuQ29sb3IoKSxcbiAgICAgICAgc2VjdGlvbkNvbG9yOiBuZXcgVEhSRUUuQ29sb3IoKSxcbiAgICAgICAgaW5maW5pdGVHcmlkOiBmYWxzZSxcbiAgICAgICAgZm9sbG93Q2FtZXJhOiBmYWxzZSxcbiAgICB9LFxuICAgIC8qIGdsc2wgKi8gYFxuICAgIHZhcnlpbmcgdmVjMyB3b3JsZFBvc2l0aW9uO1xuICAgIHVuaWZvcm0gZmxvYXQgZmFkZURpc3RhbmNlO1xuICAgIHVuaWZvcm0gYm9vbCBpbmZpbml0ZUdyaWQ7XG4gICAgdW5pZm9ybSBib29sIGZvbGxvd0NhbWVyYTtcblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIHdvcmxkUG9zaXRpb24gPSBwb3NpdGlvbi54enk7XG4gICAgICBpZiAoaW5maW5pdGVHcmlkKSB3b3JsZFBvc2l0aW9uICo9IDEuMCArIGZhZGVEaXN0YW5jZTtcbiAgICAgIGlmIChmb2xsb3dDYW1lcmEpIHdvcmxkUG9zaXRpb24ueHogKz1jYW1lcmFQb3NpdGlvbi54ejtcblxuICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCh3b3JsZFBvc2l0aW9uLCAxLjApO1xuICAgIH1cbiAgYCxcbiAgICAvKiBnbHNsICovIGBcbiAgICB2YXJ5aW5nIHZlYzMgd29ybGRQb3NpdGlvbjtcbiAgICB1bmlmb3JtIGZsb2F0IGNlbGxTaXplO1xuICAgIHVuaWZvcm0gZmxvYXQgc2VjdGlvblNpemU7XG4gICAgdW5pZm9ybSB2ZWMzIGNlbGxDb2xvcjtcbiAgICB1bmlmb3JtIHZlYzMgc2VjdGlvbkNvbG9yO1xuICAgIHVuaWZvcm0gZmxvYXQgZmFkZURpc3RhbmNlO1xuICAgIHVuaWZvcm0gZmxvYXQgZmFkZVN0cmVuZ3RoO1xuICAgIHVuaWZvcm0gZmxvYXQgY2VsbFRoaWNrbmVzcztcbiAgICB1bmlmb3JtIGZsb2F0IHNlY3Rpb25UaGlja25lc3M7XG5cbiAgICBmbG9hdCBnZXRHcmlkKGZsb2F0IHNpemUsIGZsb2F0IHRoaWNrbmVzcykge1xuICAgICAgdmVjMiByID0gd29ybGRQb3NpdGlvbi54eiAvIHNpemU7XG4gICAgICB2ZWMyIGdyaWQgPSBhYnMoZnJhY3QociAtIDAuNSkgLSAwLjUpIC8gZndpZHRoKHIpO1xuICAgICAgZmxvYXQgbGluZSA9IG1pbihncmlkLngsIGdyaWQueSkgKyAxLiAtIHRoaWNrbmVzcztcbiAgICAgIHJldHVybiAxLjAgLSBtaW4obGluZSwgMS4pO1xuICAgIH1cblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIGZsb2F0IGcxID0gZ2V0R3JpZChjZWxsU2l6ZSwgY2VsbFRoaWNrbmVzcyk7XG4gICAgICBmbG9hdCBnMiA9IGdldEdyaWQoc2VjdGlvblNpemUsIHNlY3Rpb25UaGlja25lc3MpO1xuXG4gICAgICBmbG9hdCBkID0gMS4wIC0gbWluKGRpc3RhbmNlKGNhbWVyYVBvc2l0aW9uLnh6LCB3b3JsZFBvc2l0aW9uLnh6KSAvIGZhZGVEaXN0YW5jZSwgMS4pO1xuICAgICAgdmVjMyBjb2xvciA9IG1peChjZWxsQ29sb3IsIHNlY3Rpb25Db2xvciwgbWluKDEuLHNlY3Rpb25UaGlja25lc3MgKiBnMikpO1xuXG4gICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCAoZzEgKyBnMikgKiBwb3coZCxmYWRlU3RyZW5ndGgpKTtcbiAgICAgIGdsX0ZyYWdDb2xvci5hID0gbWl4KDAuNzUgKiBnbF9GcmFnQ29sb3IuYSwgZ2xfRnJhZ0NvbG9yLmEsIGcyKTtcbiAgICAgIGlmIChnbF9GcmFnQ29sb3IuYSA8PSAwLjApIGRpc2NhcmQ7XG5cbiAgICAgICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cbiAgICAgICNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG4gICAgfVxuICBgXG4pO1xuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zaGFkZXJzL3NyYy9ncmlkLW1hdGVyaWFsL2dyaWQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQ3pDO0lBQ0MsUUFBUSxFQUFFLEdBQUc7SUFDYixXQUFXLEVBQUUsQ0FBQztJQUNkLFlBQVksRUFBRSxHQUFHO0lBQ2pCLFlBQVksRUFBRSxDQUFDO0lBQ2YsYUFBYSxFQUFFLEdBQUc7SUFDbEIsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQixTQUFTLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0lBQzVCLFlBQVksRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7SUFDL0IsWUFBWSxFQUFFLEtBQUs7SUFDbkIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsb0JBQW9CLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQ3pDLGtCQUFrQixFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtDQUN2QztBQUNELFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVDtBQUNGLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFrQ00sUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjs7R0FFakgsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOZ3RTaGFkZXJNYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgc2hhZGVyTWF0ZXJpYWwgfSBmcm9tICcuLi9zaGFkZXItbWF0ZXJpYWwvc2hhZGVyLW1hdGVyaWFsJztcblxuZXhwb3J0IGNvbnN0IEdyaWRNYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuXHR7XG5cdFx0Y2VsbFNpemU6IDAuNSxcblx0XHRzZWN0aW9uU2l6ZTogMSxcblx0XHRmYWRlRGlzdGFuY2U6IDEwMCxcblx0XHRmYWRlU3RyZW5ndGg6IDEsXG5cdFx0Y2VsbFRoaWNrbmVzczogMC41LFxuXHRcdHNlY3Rpb25UaGlja25lc3M6IDEsXG5cdFx0Y2VsbENvbG9yOiBuZXcgVEhSRUUuQ29sb3IoKSxcblx0XHRzZWN0aW9uQ29sb3I6IG5ldyBUSFJFRS5Db2xvcigpLFxuXHRcdGluZmluaXRlR3JpZDogZmFsc2UsXG5cdFx0Zm9sbG93Q2FtZXJhOiBmYWxzZSxcblx0XHR3b3JsZENhbVByb2pQb3NpdGlvbjogbmV3IFRIUkVFLlZlY3RvcjMoKSxcblx0XHR3b3JsZFBsYW5lUG9zaXRpb246IG5ldyBUSFJFRS5WZWN0b3IzKCksXG5cdH0sXG5cdC8qIGdsc2wgKi8gYFxuICAgIHZhcnlpbmcgdmVjMyBsb2NhbFBvc2l0aW9uO1xuICAgIHZhcnlpbmcgdmVjNCB3b3JsZFBvc2l0aW9uO1xuXG4gICAgdW5pZm9ybSB2ZWMzIHdvcmxkQ2FtUHJvalBvc2l0aW9uO1xuICAgIHVuaWZvcm0gdmVjMyB3b3JsZFBsYW5lUG9zaXRpb247XG4gICAgdW5pZm9ybSBmbG9hdCBmYWRlRGlzdGFuY2U7XG4gICAgdW5pZm9ybSBib29sIGluZmluaXRlR3JpZDtcbiAgICB1bmlmb3JtIGJvb2wgZm9sbG93Q2FtZXJhO1xuXG4gICAgdm9pZCBtYWluKCkge1xuICAgICAgbG9jYWxQb3NpdGlvbiA9IHBvc2l0aW9uLnh6eTtcbiAgICAgIGlmIChpbmZpbml0ZUdyaWQpIGxvY2FsUG9zaXRpb24gKj0gMS4wICsgZmFkZURpc3RhbmNlO1xuXG4gICAgICB3b3JsZFBvc2l0aW9uID0gbW9kZWxNYXRyaXggKiB2ZWM0KGxvY2FsUG9zaXRpb24sIDEuMCk7XG4gICAgICBpZiAoZm9sbG93Q2FtZXJhKSB7XG4gICAgICAgIHdvcmxkUG9zaXRpb24ueHl6ICs9ICh3b3JsZENhbVByb2pQb3NpdGlvbiAtIHdvcmxkUGxhbmVQb3NpdGlvbik7XG4gICAgICAgIGxvY2FsUG9zaXRpb24gPSAoaW52ZXJzZShtb2RlbE1hdHJpeCkgKiB3b3JsZFBvc2l0aW9uKS54eXo7XG4gICAgICB9XG5cbiAgICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZpZXdNYXRyaXggKiB3b3JsZFBvc2l0aW9uO1xuICAgIH1cbiAgYCxcblx0LyogZ2xzbCAqLyBgXG4gICAgdmFyeWluZyB2ZWMzIGxvY2FsUG9zaXRpb247XG4gICAgdmFyeWluZyB2ZWM0IHdvcmxkUG9zaXRpb247XG5cbiAgICB1bmlmb3JtIHZlYzMgd29ybGRDYW1Qcm9qUG9zaXRpb247XG4gICAgdW5pZm9ybSBmbG9hdCBjZWxsU2l6ZTtcbiAgICB1bmlmb3JtIGZsb2F0IHNlY3Rpb25TaXplO1xuICAgIHVuaWZvcm0gdmVjMyBjZWxsQ29sb3I7XG4gICAgdW5pZm9ybSB2ZWMzIHNlY3Rpb25Db2xvcjtcbiAgICB1bmlmb3JtIGZsb2F0IGZhZGVEaXN0YW5jZTtcbiAgICB1bmlmb3JtIGZsb2F0IGZhZGVTdHJlbmd0aDtcbiAgICB1bmlmb3JtIGZsb2F0IGNlbGxUaGlja25lc3M7XG4gICAgdW5pZm9ybSBmbG9hdCBzZWN0aW9uVGhpY2tuZXNzO1xuXG4gICAgZmxvYXQgZ2V0R3JpZChmbG9hdCBzaXplLCBmbG9hdCB0aGlja25lc3MpIHtcbiAgICAgIHZlYzIgciA9IGxvY2FsUG9zaXRpb24ueHogLyBzaXplO1xuICAgICAgdmVjMiBncmlkID0gYWJzKGZyYWN0KHIgLSAwLjUpIC0gMC41KSAvIGZ3aWR0aChyKTtcbiAgICAgIGZsb2F0IGxpbmUgPSBtaW4oZ3JpZC54LCBncmlkLnkpICsgMS4wIC0gdGhpY2tuZXNzO1xuICAgICAgcmV0dXJuIDEuMCAtIG1pbihsaW5lLCAxLjApO1xuICAgIH1cblxuICAgIHZvaWQgbWFpbigpIHtcbiAgICAgIGZsb2F0IGcxID0gZ2V0R3JpZChjZWxsU2l6ZSwgY2VsbFRoaWNrbmVzcyk7XG4gICAgICBmbG9hdCBnMiA9IGdldEdyaWQoc2VjdGlvblNpemUsIHNlY3Rpb25UaGlja25lc3MpO1xuXG4gICAgICBmbG9hdCBkaXN0ID0gZGlzdGFuY2Uod29ybGRDYW1Qcm9qUG9zaXRpb24sIHdvcmxkUG9zaXRpb24ueHl6KTtcbiAgICAgIGZsb2F0IGQgPSAxLjAgLSBtaW4oZGlzdCAvIGZhZGVEaXN0YW5jZSwgMS4wKTtcbiAgICAgIHZlYzMgY29sb3IgPSBtaXgoY2VsbENvbG9yLCBzZWN0aW9uQ29sb3IsIG1pbigxLjAsIHNlY3Rpb25UaGlja25lc3MgKiBnMikpO1xuXG4gICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCAoZzEgKyBnMikgKiBwb3coZCwgZmFkZVN0cmVuZ3RoKSk7XG4gICAgICBnbF9GcmFnQ29sb3IuYSA9IG1peCgwLjc1ICogZ2xfRnJhZ0NvbG9yLmEsIGdsX0ZyYWdDb2xvci5hLCBnMik7XG4gICAgICBpZiAoZ2xfRnJhZ0NvbG9yLmEgPD0gMC4wKSBkaXNjYXJkO1xuXG4gICAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgICAjaW5jbHVkZSA8JHtwYXJzZUludChUSFJFRS5SRVZJU0lPTi5yZXBsYWNlKC9cXEQrL2csICcnKSkgPj0gMTU0ID8gJ2NvbG9yc3BhY2VfZnJhZ21lbnQnIDogJ2VuY29kaW5nc19mcmFnbWVudCd9PlxuICAgIH1cbiAgYCxcbik7XG5cbmV4cG9ydCB0eXBlIE5ndEdyaWRNYXRlcmlhbFN0YXRlID0ge1xuXHQvKiogQ2VsbCBzaXplLCBkZWZhdWx0OiAwLjUgKi9cblx0Y2VsbFNpemU/OiBudW1iZXI7XG5cdC8qKiBDZWxsIHRoaWNrbmVzcywgZGVmYXVsdDogMC41ICovXG5cdGNlbGxUaGlja25lc3M/OiBudW1iZXI7XG5cdC8qKiBDZWxsIGNvbG9yLCBkZWZhdWx0OiBibGFjayAqL1xuXHRjZWxsQ29sb3I/OiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uO1xuXHQvKiogU2VjdGlvbiBzaXplLCBkZWZhdWx0OiAxICovXG5cdHNlY3Rpb25TaXplPzogbnVtYmVyO1xuXHQvKiogU2VjdGlvbiB0aGlja25lc3MsIGRlZmF1bHQ6IDEgKi9cblx0c2VjdGlvblRoaWNrbmVzcz86IG51bWJlcjtcblx0LyoqIFNlY3Rpb24gY29sb3IsIGRlZmF1bHQ6ICMyMDgwZmYgKi9cblx0c2VjdGlvbkNvbG9yPzogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0LyoqIEZvbGxvdyBjYW1lcmEsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGZvbGxvd0NhbWVyYT86IGJvb2xlYW47XG5cdC8qKiBEaXNwbGF5IHRoZSBncmlkIGluZmluaXRlbHksIGRlZmF1bHQ6IGZhbHNlICovXG5cdGluZmluaXRlR3JpZD86IGJvb2xlYW47XG5cdC8qKiBGYWRlIGRpc3RhbmNlLCBkZWZhdWx0OiAxMDAgKi9cblx0ZmFkZURpc3RhbmNlPzogbnVtYmVyO1xuXHQvKiogRmFkZSBzdHJlbmd0aCwgZGVmYXVsdDogMSAqL1xuXHRmYWRlU3RyZW5ndGg/OiBudW1iZXI7XG5cdC8qKiBNYXRlcmlhbCBzaWRlLCBkZWZhdWx0OiBUSFJFRS5CYWNrU2lkZSAqL1xuXHRzaWRlPzogVEhSRUUuU2lkZTtcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG5cdFx0LyoqXG5cdFx0ICogQGV4dGVuZHMgbmd0LXNoYWRlci1tYXRlcmlhbFxuXHRcdCAqL1xuXHRcdCduZ3QtZ3JpZC1tYXRlcmlhbCc6IE5ndEdyaWRNYXRlcmlhbFN0YXRlICYgTmd0U2hhZGVyTWF0ZXJpYWw7XG5cdH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  export * from './blur-pass/blur-pass';
2
- export * from './caustics-material/caustics-material';
3
- export * from './caustics-material/caustics-projection-material';
2
+ export * from './caustics/caustics-material';
3
+ export * from './caustics/caustics-projection-material';
4
4
  export * from './convolution-material/convolution-material';
5
5
  export * from './discard-material/discard-material';
6
6
  export * from './grid-material/grid-material';
@@ -9,8 +9,10 @@ export * from './mesh-reflector-material/mesh-reflector-material';
9
9
  export * from './mesh-refraction-material/mesh-refraction-material';
10
10
  export * from './mesh-transmission-material/mesh-transmission-material';
11
11
  export * from './mesh-wobble-material/mesh-wobble-material';
12
+ export * from './shader-material/shader-material';
12
13
  export * from './soft-shadow-material/soft-shadow-material';
13
14
  export * from './sparkles-material/sparkles-material';
14
15
  export * from './spot-light-material/spot-light-material';
15
16
  export * from './star-field-material/star-field-material';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JsdXItcGFzcy9ibHVyLXBhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXVzdGljcy1tYXRlcmlhbC9jYXVzdGljcy1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL2NhdXN0aWNzLW1hdGVyaWFsL2NhdXN0aWNzLXByb2plY3Rpb24tbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jb252b2x1dGlvbi1tYXRlcmlhbC9jb252b2x1dGlvbi1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL2Rpc2NhcmQtbWF0ZXJpYWwvZGlzY2FyZC1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL2dyaWQtbWF0ZXJpYWwvZ3JpZC1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL21lc2gtZGlzdG9ydC1tYXRlcmlhbC9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbC9tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL21lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbC9tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLXRyYW5zbWlzc2lvbi1tYXRlcmlhbC9tZXNoLXRyYW5zbWlzc2lvbi1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL21lc2gtd29iYmxlLW1hdGVyaWFsL21lc2gtd29iYmxlLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vc29mdC1zaGFkb3ctbWF0ZXJpYWwvc29mdC1zaGFkb3ctbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zcGFya2xlcy1tYXRlcmlhbC9zcGFya2xlcy1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL3Nwb3QtbGlnaHQtbWF0ZXJpYWwvc3BvdC1saWdodC1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXItZmllbGQtbWF0ZXJpYWwvc3Rhci1maWVsZC1tYXRlcmlhbCc7XG4iXX0=
17
+ export * from './wireframe-material/wireframe-material';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ibHVyLXBhc3MvYmx1ci1wYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY2F1c3RpY3MvY2F1c3RpY3MtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXVzdGljcy9jYXVzdGljcy1wcm9qZWN0aW9uLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vY29udm9sdXRpb24tbWF0ZXJpYWwvY29udm9sdXRpb24tbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXNjYXJkLW1hdGVyaWFsL2Rpc2NhcmQtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmlkLW1hdGVyaWFsL2dyaWQtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwvbWVzaC1kaXN0b3J0LW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwvbWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNoLXdvYmJsZS1tYXRlcmlhbC9tZXNoLXdvYmJsZS1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zb2Z0LXNoYWRvdy1tYXRlcmlhbC9zb2Z0LXNoYWRvdy1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL3NwYXJrbGVzLW1hdGVyaWFsL3NwYXJrbGVzLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vc3BvdC1saWdodC1tYXRlcmlhbC9zcG90LWxpZ2h0LW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vc3Rhci1maWVsZC1tYXRlcmlhbC9zdGFyLWZpZWxkLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vd2lyZWZyYW1lLW1hdGVyaWFsL3dpcmVmcmFtZS1tYXRlcmlhbCc7XG4iXX0=
@@ -1,55 +1,56 @@
1
- import { InjectionToken } from '@angular/core';
1
+ import { InjectionToken, inject } from '@angular/core';
2
2
  import * as THREE from 'three';
3
3
  export const NGTS_DISTORT_MATERIAL_SHADER = new InjectionToken('DistortMaterialShader');
4
- export function provideNgtsMeshDistortMaterialShader(distortShader) {
5
- return {
6
- provide: NGTS_DISTORT_MATERIAL_SHADER,
7
- useFactory: () => {
8
- return class extends THREE.MeshPhysicalMaterial {
9
- constructor(parameters = {}) {
10
- super(parameters);
11
- this.setValues(parameters);
12
- this._time = { value: 0 };
13
- this._distort = { value: 0.4 };
14
- this._radius = { value: 1 };
15
- }
16
- onBeforeCompile(shader) {
17
- shader.uniforms['time'] = this._time;
18
- shader.uniforms['radius'] = this._radius;
19
- shader.uniforms['distort'] = this._distort;
20
- shader.vertexShader = `
4
+ export function injectNgtsMeshDistortMaterial() {
5
+ return inject(NGTS_DISTORT_MATERIAL_SHADER);
6
+ }
7
+ export function createMeshDistortMaterial(distortShader) {
8
+ return class extends THREE.MeshPhysicalMaterial {
9
+ constructor(parameters = {}) {
10
+ super(parameters);
11
+ this.setValues(parameters);
12
+ this._time = { value: 0 };
13
+ this._distort = { value: 0.4 };
14
+ this._radius = { value: 1 };
15
+ }
16
+ onBeforeCompile(shader) {
17
+ shader.uniforms['time'] = this._time;
18
+ shader.uniforms['radius'] = this._radius;
19
+ shader.uniforms['distort'] = this._distort;
20
+ shader.vertexShader = `
21
21
  uniform float time;
22
22
  uniform float radius;
23
23
  uniform float distort;
24
24
  ${distortShader}
25
25
  ${shader.vertexShader}
26
26
  `;
27
- shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `
27
+ shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', `
28
28
  float updateTime = time / 50.0;
29
29
  float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));
30
30
  vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));
31
31
  `);
32
- }
33
- get time() {
34
- return this._time.value;
35
- }
36
- set time(v) {
37
- this._time.value = v;
38
- }
39
- get distort() {
40
- return this._distort.value;
41
- }
42
- set distort(v) {
43
- this._distort.value = v;
44
- }
45
- get radius() {
46
- return this._radius.value;
47
- }
48
- set radius(v) {
49
- this._radius.value = v;
50
- }
51
- };
52
- },
32
+ }
33
+ get time() {
34
+ return this._time.value;
35
+ }
36
+ set time(v) {
37
+ this._time.value = v;
38
+ }
39
+ get distort() {
40
+ return this._distort.value;
41
+ }
42
+ set distort(v) {
43
+ this._distort.value = v;
44
+ }
45
+ get radius() {
46
+ return this._radius.value;
47
+ }
48
+ set radius(v) {
49
+ this._radius.value = v;
50
+ }
53
51
  };
54
52
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1kaXN0b3J0LW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL21lc2gtZGlzdG9ydC1tYXRlcmlhbC9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQWUvQixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLENBQUMsQ0FBQztBQUU3RyxNQUFNLFVBQVUsb0NBQW9DLENBQUMsYUFBcUI7SUFDdEUsT0FBTztRQUNILE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNiLE9BQU8sS0FBTSxTQUFRLEtBQUssQ0FBQyxvQkFBb0I7Z0JBSzNDLFlBQVksYUFBbUQsRUFBRTtvQkFDN0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxDQUFDO2dCQUVRLGVBQWUsQ0FBQyxNQUFvQjtvQkFDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ3pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFFM0MsTUFBTSxDQUFDLFlBQVksR0FBRzs7OztlQUkzQixhQUFhO2VBQ2IsTUFBTSxDQUFDLFlBQVk7WUFDdEIsQ0FBQztvQkFDTyxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUM3Qyx5QkFBeUIsRUFDekI7Ozs7Z0JBSVIsQ0FDSyxDQUFDO2dCQUNOLENBQUM7Z0JBRUQsSUFBSSxJQUFJO29CQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsQ0FBQztvQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7Z0JBRUQsSUFBSSxPQUFPO29CQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQy9CLENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsQ0FBQztvQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxNQUFNO29CQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLENBQUM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsQ0FBQztvQkFDUixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7YUFDSixDQUFDO1FBQ04sQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuaW50ZXJmYWNlIFVuaWZvcm08VD4ge1xuICAgIHZhbHVlOiBUO1xufVxuXG4vKipcbiAqIG5wbSBpIC1EIHJhdy1sb2FkZXIgZ2xzbGlmeS1sb2FkZXIgZ2xzbC1ub2lzZVxuICogVXNhZ2U6IGltcG9ydCBkaXN0b3J0IGZyb20gJ3Jhdy1sb2FkZXIhZ2xzbGlmeS1sb2FkZXIhYW5ndWxhci10aHJlZS1zb2JhL2Fzc2V0cy9kaXN0b3J0LnZlcnQuZ2xzbCdcbiAqXG4gKiBwcm92aWRlTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxTaGFkZXIoZGlzdG9ydClcbiAqL1xuXG5leHBvcnQgdHlwZSBNZXNoRGlzdG9ydE1hdGVyaWFsID0gVHlwZTx7IHRpbWU6IG51bWJlcjsgZGlzdG9ydDogbnVtYmVyOyByYWRpdXM6IG51bWJlciB9ICYgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWw+O1xuXG5leHBvcnQgY29uc3QgTkdUU19ESVNUT1JUX01BVEVSSUFMX1NIQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZXNoRGlzdG9ydE1hdGVyaWFsPignRGlzdG9ydE1hdGVyaWFsU2hhZGVyJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxTaGFkZXIoZGlzdG9ydFNoYWRlcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZTogTkdUU19ESVNUT1JUX01BVEVSSUFMX1NIQURFUixcbiAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwge1xuICAgICAgICAgICAgICAgIF90aW1lOiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgICAgICAgICAgX2Rpc3RvcnQ6IFVuaWZvcm08bnVtYmVyPjtcbiAgICAgICAgICAgICAgICBfcmFkaXVzOiBVbmlmb3JtPG51bWJlcj47XG5cbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbFBhcmFtZXRlcnMgPSB7fSkge1xuICAgICAgICAgICAgICAgICAgICBzdXBlcihwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZXMocGFyYW1ldGVycyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbWUgPSB7IHZhbHVlOiAwIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3RvcnQgPSB7IHZhbHVlOiAwLjQgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmFkaXVzID0geyB2YWx1ZTogMSB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG92ZXJyaWRlIG9uQmVmb3JlQ29tcGlsZShzaGFkZXI6IFRIUkVFLlNoYWRlcikge1xuICAgICAgICAgICAgICAgICAgICBzaGFkZXIudW5pZm9ybXNbJ3RpbWUnXSA9IHRoaXMuX3RpbWU7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlci51bmlmb3Jtc1sncmFkaXVzJ10gPSB0aGlzLl9yYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlci51bmlmb3Jtc1snZGlzdG9ydCddID0gdGhpcy5fZGlzdG9ydDtcblxuICAgICAgICAgICAgICAgICAgICBzaGFkZXIudmVydGV4U2hhZGVyID0gYFxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVuaWZvcm0gZmxvYXQgdGltZTtcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IHJhZGl1cztcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IGRpc3RvcnQ7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgJHtkaXN0b3J0U2hhZGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICR7c2hhZGVyLnZlcnRleFNoYWRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdCAgYDtcbiAgICAgICAgICAgICAgICAgICAgc2hhZGVyLnZlcnRleFNoYWRlciA9IHNoYWRlci52ZXJ0ZXhTaGFkZXIucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSA8YmVnaW5fdmVydGV4PicsXG4gICAgICAgICAgICAgICAgICAgICAgICBgXG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgICBmbG9hdCB1cGRhdGVUaW1lID0gdGltZSAvIDUwLjA7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgICBmbG9hdCBub2lzZSA9IHNub2lzZSh2ZWMzKHBvc2l0aW9uIC8gMi4wICsgdXBkYXRlVGltZSAqIDUuMCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgdmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMocG9zaXRpb24gKiAobm9pc2UgKiBwb3coZGlzdG9ydCwgMi4wKSArIHJhZGl1cykpO1xuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCB0aW1lKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdGltZS52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXQgdGltZSh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbWUudmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCBkaXN0b3J0KCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzdG9ydC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXQgZGlzdG9ydCh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3RvcnQudmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdldCByYWRpdXMoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yYWRpdXMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2V0IHJhZGl1cyh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhZGl1cy52YWx1ZSA9IHY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuIl19
53
+ export function provideNgtsMeshDistortMaterialShader(distortShader) {
54
+ return { provide: NGTS_DISTORT_MATERIAL_SHADER, useFactory: () => createMeshDistortMaterial(distortShader) };
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1kaXN0b3J0LW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL21lc2gtZGlzdG9ydC1tYXRlcmlhbC9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBUSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFzQi9CLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFDO0FBRTdHLE1BQU0sVUFBVSw2QkFBNkI7SUFDNUMsT0FBTyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGFBQXFCO0lBQzlELE9BQU8sS0FBTSxTQUFRLEtBQUssQ0FBQyxvQkFBb0I7UUFLOUMsWUFBWSxhQUFtRCxFQUFFO1lBQ2hFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFFUSxlQUFlLENBQUMsTUFBb0I7WUFDNUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN6QyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFM0MsTUFBTSxDQUFDLFlBQVksR0FBRzs7OztlQUlWLGFBQWE7ZUFDYixNQUFNLENBQUMsWUFBWTtZQUN0QixDQUFDO1lBQ1YsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FDaEQseUJBQXlCLEVBQ3pCOzs7O2dCQUlZLENBQ1osQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUk7WUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLE9BQU87WUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLE1BQU07WUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxDQUFDO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7S0FDRCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxvQ0FBb0MsQ0FBQyxhQUFxQjtJQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO0FBQzlHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgVHlwZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmludGVyZmFjZSBVbmlmb3JtPFQ+IHtcblx0dmFsdWU6IFQ7XG59XG5cbi8qKlxuICogbnBtIGkgLUQgcmF3LWxvYWRlciBnbHNsaWZ5LWxvYWRlciBnbHNsLW5vaXNlXG4gKiBVc2FnZTogaW1wb3J0IGRpc3RvcnQgZnJvbSAncmF3LWxvYWRlciFnbHNsaWZ5LWxvYWRlciFhbmd1bGFyLXRocmVlLXNvYmEvYXNzZXRzL2Rpc3RvcnQudmVydC5nbHNsJ1xuICpcbiAqIHVzaW5nIHByb3ZpZGVyOlxuICogLSBwcm92aWRlTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxTaGFkZXIoZGlzdG9ydClcbiAqIC0gcmVhZG9ubHkgTWVzaERpc3RvcnRNYXRlcmlhbCA9IGluamVjdE5ndHNNZXNoRGlzdG9ydE1hdGVyaWFsKClcbiAqIC0gbWF0ZXJpYWwgPSBuZXcgdGhpcy5NZXNoRGlzdG9ydE1hdGVyaWFsKCk7IC8vIHRoZW4gdXNlIHRoaXMgd2l0aCBwcmltaXRpdmVcbiAqXG4gKiB1c2luZyBjcmVhdGVNZXNoRGlzdG9ydE1hdGVyaWFsOiBjcmVhdGVNZXNoRGlzdG9ydE1hdGVyaWFsKGRpc3RvcnQpO1xuICogLSBjb25zdCBNZXNoRGlzdG9ydE1hdGVyaWFsID0gY3JlYXRlTWVzaERpc3RvcnRNYXRlcmlhbChkaXN0b3J0KTtcbiAqIC0gZXh0ZW5kKHsgTWVzaERpc3RvcnRNYXRlcmlhbCB9KTsgLy8gdGhlbiB1c2UgYXMgbmd0LW1lc2gtZGlzdG9ydC1tYXRlcmlhbFxuICovXG5cbmV4cG9ydCB0eXBlIE1lc2hEaXN0b3J0TWF0ZXJpYWwgPSBUeXBlPHsgdGltZTogbnVtYmVyOyBkaXN0b3J0OiBudW1iZXI7IHJhZGl1czogbnVtYmVyIH0gJiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbD47XG5cbmV4cG9ydCBjb25zdCBOR1RTX0RJU1RPUlRfTUFURVJJQUxfU0hBREVSID0gbmV3IEluamVjdGlvblRva2VuPE1lc2hEaXN0b3J0TWF0ZXJpYWw+KCdEaXN0b3J0TWF0ZXJpYWxTaGFkZXInKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNNZXNoRGlzdG9ydE1hdGVyaWFsKCkge1xuXHRyZXR1cm4gaW5qZWN0KE5HVFNfRElTVE9SVF9NQVRFUklBTF9TSEFERVIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVzaERpc3RvcnRNYXRlcmlhbChkaXN0b3J0U2hhZGVyOiBzdHJpbmcpIHtcblx0cmV0dXJuIGNsYXNzIGV4dGVuZHMgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwge1xuXHRcdF90aW1lOiBVbmlmb3JtPG51bWJlcj47XG5cdFx0X2Rpc3RvcnQ6IFVuaWZvcm08bnVtYmVyPjtcblx0XHRfcmFkaXVzOiBVbmlmb3JtPG51bWJlcj47XG5cblx0XHRjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbFBhcmFtZXRlcnMgPSB7fSkge1xuXHRcdFx0c3VwZXIocGFyYW1ldGVycyk7XG5cdFx0XHR0aGlzLnNldFZhbHVlcyhwYXJhbWV0ZXJzKTtcblx0XHRcdHRoaXMuX3RpbWUgPSB7IHZhbHVlOiAwIH07XG5cdFx0XHR0aGlzLl9kaXN0b3J0ID0geyB2YWx1ZTogMC40IH07XG5cdFx0XHR0aGlzLl9yYWRpdXMgPSB7IHZhbHVlOiAxIH07XG5cdFx0fVxuXG5cdFx0b3ZlcnJpZGUgb25CZWZvcmVDb21waWxlKHNoYWRlcjogVEhSRUUuU2hhZGVyKSB7XG5cdFx0XHRzaGFkZXIudW5pZm9ybXNbJ3RpbWUnXSA9IHRoaXMuX3RpbWU7XG5cdFx0XHRzaGFkZXIudW5pZm9ybXNbJ3JhZGl1cyddID0gdGhpcy5fcmFkaXVzO1xuXHRcdFx0c2hhZGVyLnVuaWZvcm1zWydkaXN0b3J0J10gPSB0aGlzLl9kaXN0b3J0O1xuXG5cdFx0XHRzaGFkZXIudmVydGV4U2hhZGVyID0gYFxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgIHVuaWZvcm0gZmxvYXQgdGltZTtcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IHJhZGl1cztcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IGRpc3RvcnQ7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgJHtkaXN0b3J0U2hhZGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICR7c2hhZGVyLnZlcnRleFNoYWRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdCAgYDtcblx0XHRcdHNoYWRlci52ZXJ0ZXhTaGFkZXIgPSBzaGFkZXIudmVydGV4U2hhZGVyLnJlcGxhY2UoXG5cdFx0XHRcdCcjaW5jbHVkZSA8YmVnaW5fdmVydGV4PicsXG5cdFx0XHRcdGBcblx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIGZsb2F0IHVwZGF0ZVRpbWUgPSB0aW1lIC8gNTAuMDtcblx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIGZsb2F0IG5vaXNlID0gc25vaXNlKHZlYzMocG9zaXRpb24gLyAyLjAgKyB1cGRhdGVUaW1lICogNS4wKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgICB2ZWMzIHRyYW5zZm9ybWVkID0gdmVjMyhwb3NpdGlvbiAqIChub2lzZSAqIHBvdyhkaXN0b3J0LCAyLjApICsgcmFkaXVzKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgICBgLFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRnZXQgdGltZSgpIHtcblx0XHRcdHJldHVybiB0aGlzLl90aW1lLnZhbHVlO1xuXHRcdH1cblxuXHRcdHNldCB0aW1lKHYpIHtcblx0XHRcdHRoaXMuX3RpbWUudmFsdWUgPSB2O1xuXHRcdH1cblxuXHRcdGdldCBkaXN0b3J0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2Rpc3RvcnQudmFsdWU7XG5cdFx0fVxuXG5cdFx0c2V0IGRpc3RvcnQodikge1xuXHRcdFx0dGhpcy5fZGlzdG9ydC52YWx1ZSA9IHY7XG5cdFx0fVxuXG5cdFx0Z2V0IHJhZGl1cygpIHtcblx0XHRcdHJldHVybiB0aGlzLl9yYWRpdXMudmFsdWU7XG5cdFx0fVxuXG5cdFx0c2V0IHJhZGl1cyh2KSB7XG5cdFx0XHR0aGlzLl9yYWRpdXMudmFsdWUgPSB2O1xuXHRcdH1cblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOZ3RzTWVzaERpc3RvcnRNYXRlcmlhbFNoYWRlcihkaXN0b3J0U2hhZGVyOiBzdHJpbmcpIHtcblx0cmV0dXJuIHsgcHJvdmlkZTogTkdUU19ESVNUT1JUX01BVEVSSUFMX1NIQURFUiwgdXNlRmFjdG9yeTogKCkgPT4gY3JlYXRlTWVzaERpc3RvcnRNYXRlcmlhbChkaXN0b3J0U2hhZGVyKSB9O1xufVxuIl19
@@ -220,4 +220,4 @@ export class MeshReflectorMaterial extends MeshStandardMaterial {
220
220
  this._mixContrast.value = v;
221
221
  }
222
222
  }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG9CQUFvQixFQUFXLE1BQU0sT0FBTyxDQUFDO0FBSS9ELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7SUFpQjNELFlBQVksVUFBVSxHQUFHLEVBQUU7UUFDdkIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBakJkLFlBQU8sR0FBa0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekQsbUJBQWMsR0FBa0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDaEUsY0FBUyxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzRCxrQkFBYSxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMvRCxtQkFBYyxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNoRSxhQUFRLEdBQXVCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2hELFlBQU8sR0FBc0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDNUMsYUFBUSxHQUFzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUM3QyxrQkFBYSxHQUFzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNsRCx1QkFBa0IsR0FBc0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDdkQsdUJBQWtCLEdBQXNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELGdCQUFXLEdBQXNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFD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SUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxDQUFTO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRyaXg0LCBNZXNoU3RhbmRhcmRNYXRlcmlhbCwgVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcblxudHlwZSBVbmluaXRpYWxpemVkVW5pZm9ybTxWYWx1ZT4gPSB7IHZhbHVlOiBWYWx1ZSB8IG51bGwgfTtcblxuZXhwb3J0IGNsYXNzIE1lc2hSZWZsZWN0b3JNYXRlcmlhbCBleHRlbmRzIE1lc2hTdGFuZGFyZE1hdGVyaWFsIHtcbiAgICBwcml2YXRlIF90RGVwdGg6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuICAgIHByaXZhdGUgX2Rpc3RvcnRpb25NYXA6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuICAgIHByaXZhdGUgX3REaWZmdXNlOiBVbmluaXRpYWxpemVkVW5pZm9ybTxUZXh0dXJlPiA9IHsgdmFsdWU6IG51bGwgfTtcbiAgICBwcml2YXRlIF90RGlmZnVzZUJsdXI6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuICAgIHByaXZhdGUgX3RleHR1cmVNYXRyaXg6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPE1hdHJpeDQ+ID0geyB2YWx1ZTogbnVsbCB9O1xuICAgIHByaXZhdGUgX2hhc0JsdXI6IHsgdmFsdWU6IGJvb2xlYW4gfSA9IHsgdmFsdWU6IGZhbHNlIH07XG4gICAgcHJpdmF0ZSBfbWlycm9yOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuMCB9O1xuICAgIHByaXZhdGUgX21peEJsdXI6IHsgdmFsdWU6IG51bWJlciB9ID0geyB2YWx1ZTogMC4wIH07XG4gICAgcHJpdmF0ZSBfYmx1clN0cmVuZ3RoOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuNSB9O1xuICAgIHByaXZhdGUgX21pbkRlcHRoVGhyZXNob2xkOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuOSB9O1xuICAgIHByaXZhdGUgX21heERlcHRoVGhyZXNob2xkOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDEgfTtcbiAgICBwcml2YXRlIF9kZXB0aFNjYWxlOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAgfTtcbiAgICBwcml2YXRlIF9kZXB0aFRvQmx1clJhdGlvQmlhczogeyB2YWx1ZTogbnVtYmVyIH0gPSB7IHZhbHVlOiAwLjI1IH07XG4gICAgcHJpdmF0ZSBfZGlzdG9ydGlvbjogeyB2YWx1ZTogbnVtYmVyIH0gPSB7IHZhbHVlOiAxIH07XG4gICAgcHJpdmF0ZSBfbWl4Q29udHJhc3Q6IHsgdmFsdWU6IG51bWJlciB9ID0geyB2YWx1ZTogMS4wIH07XG5cbiAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzID0ge30pIHtcbiAgICAgICAgc3VwZXIocGFyYW1ldGVycyk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWVzKHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgICBvdmVycmlkZSBvbkJlZm9yZUNvbXBpbGUoc2hhZGVyOiBhbnkpIHtcbiAgICAgICAgaWYgKCFzaGFkZXIuZGVmaW5lcz8uVVNFX1VWKSB7XG4gICAgICAgICAgICBzaGFkZXIuZGVmaW5lcy5VU0VfVVYgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBzaGFkZXIudW5pZm9ybXMuaGFzQmx1ciA9IHRoaXMuX2hhc0JsdXI7XG4gICAgICAgIHNoYWRlci51bmlmb3Jtcy50RGlmZnVzZSA9IHRoaXMuX3REaWZmdXNlO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMudERlcHRoID0gdGhpcy5fdERlcHRoO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMuZGlzdG9ydGlvbk1hcCA9IHRoaXMuX2Rpc3RvcnRpb25NYXA7XG4gICAgICAgIHNoYWRlci51bmlmb3Jtcy50RGlmZnVzZUJsdXIgPSB0aGlzLl90RGlmZnVzZUJsdXI7XG4gICAgICAgIHNoYWRlci51bmlmb3Jtcy50ZXh0dXJlTWF0cml4ID0gdGhpcy5fdGV4dHVyZU1hdHJpeDtcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zLm1pcnJvciA9IHRoaXMuX21pcnJvcjtcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zLm1peEJsdXIgPSB0aGlzLl9taXhCbHVyO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMubWl4U3RyZW5ndGggPSB0aGlzLl9ibHVyU3RyZW5ndGg7XG4gICAgICAgIHNoYWRlci51bmlmb3Jtcy5taW5EZXB0aFRocmVzaG9sZCA9IHRoaXMuX21pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMubWF4RGVwdGhUaHJlc2hvbGQgPSB0aGlzLl9tYXhEZXB0aFRocmVzaG9sZDtcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zLmRlcHRoU2NhbGUgPSB0aGlzLl9kZXB0aFNjYWxlO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMuZGVwdGhUb0JsdXJSYXRpb0JpYXMgPSB0aGlzLl9kZXB0aFRvQmx1clJhdGlvQmlhcztcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zLmRpc3RvcnRpb24gPSB0aGlzLl9kaXN0b3J0aW9uO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXMubWl4Q29udHJhc3QgPSB0aGlzLl9taXhDb250cmFzdDtcbiAgICAgICAgc2hhZGVyLnZlcnRleFNoYWRlciA9IGBcbiAgICAgICAgdW5pZm9ybSBtYXQ0IHRleHR1cmVNYXRyaXg7XG4gICAgICAgIHZhcnlpbmcgdmVjNCBteV92VXY7XG4gICAgICAke3NoYWRlci52ZXJ0ZXhTaGFkZXJ9YDtcbiAgICAgICAgc2hhZGVyLnZlcnRleFNoYWRlciA9IHNoYWRlci52ZXJ0ZXhTaGFkZXIucmVwbGFjZShcbiAgICAgICAgICAgICcjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+JyxcbiAgICAgICAgICAgIGAjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG4gICAgICAgIG15X3ZVdiA9IHRleHR1cmVNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG4gICAgICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtgXG4gICAgICAgICk7XG4gICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IGBcbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdERpZmZ1c2U7XG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHREaWZmdXNlQmx1cjtcbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdERlcHRoO1xuICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBkaXN0b3J0aW9uTWFwO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRpc3RvcnRpb247XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgY2FtZXJhTmVhcjtcblx0XHRcdCAgdW5pZm9ybSBmbG9hdCBjYW1lcmFGYXI7XG4gICAgICAgIHVuaWZvcm0gYm9vbCBoYXNCbHVyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1peEJsdXI7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgbWlycm9yO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1peFN0cmVuZ3RoO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1pbkRlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1heERlcHRoVGhyZXNob2xkO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1peENvbnRyYXN0O1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRlcHRoU2NhbGU7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgZGVwdGhUb0JsdXJSYXRpb0JpYXM7XG4gICAgICAgIHZhcnlpbmcgdmVjNCBteV92VXY7XG4gICAgICAgICR7c2hhZGVyLmZyYWdtZW50U2hhZGVyfWA7XG4gICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuICAgICAgICAgICAgJyNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4nLFxuICAgICAgICAgICAgYCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblxuICAgICAgZmxvYXQgZGlzdG9ydGlvbkZhY3RvciA9IDAuMDtcbiAgICAgICNpZmRlZiBVU0VfRElTVE9SVElPTlxuICAgICAgICBkaXN0b3J0aW9uRmFjdG9yID0gdGV4dHVyZTJEKGRpc3RvcnRpb25NYXAsIHZVdikuciAqIGRpc3RvcnRpb247XG4gICAgICAjZW5kaWZcblxuICAgICAgdmVjNCBuZXdfdlV2ID0gbXlfdlV2O1xuICAgICAgbmV3X3ZVdi54ICs9IGRpc3RvcnRpb25GYWN0b3I7XG4gICAgICBuZXdfdlV2LnkgKz0gZGlzdG9ydGlvbkZhY3RvcjtcblxuICAgICAgdmVjNCBiYXNlID0gdGV4dHVyZTJEUHJvaih0RGlmZnVzZSwgbmV3X3ZVdik7XG4gICAgICB2ZWM0IGJsdXIgPSB0ZXh0dXJlMkRQcm9qKHREaWZmdXNlQmx1ciwgbmV3X3ZVdik7XG5cbiAgICAgIHZlYzQgbWVyZ2UgPSBiYXNlO1xuXG4gICAgICAjaWZkZWYgVVNFX05PUk1BTE1BUFxuICAgICAgICB2ZWMyIG5vcm1hbF91diA9IHZlYzIoMC4wKTtcbiAgICAgICAgdmVjNCBub3JtYWxDb2xvciA9IHRleHR1cmUyRChub3JtYWxNYXAsIHZVdiAqIG5vcm1hbFNjYWxlKTtcbiAgICAgICAgdmVjMyBteV9ub3JtYWwgPSBub3JtYWxpemUoIHZlYzMoIG5vcm1hbENvbG9yLnIgKiAyLjAgLSAxLjAsIG5vcm1hbENvbG9yLmIsICBub3JtYWxDb2xvci5nICogMi4wIC0gMS4wICkgKTtcbiAgICAgICAgdmVjMyBjb29yZCA9IG5ld192VXYueHl6IC8gbmV3X3ZVdi53O1xuICAgICAgICBub3JtYWxfdXYgPSBjb29yZC54eSArIGNvb3JkLnogKiBteV9ub3JtYWwueHogKiAwLjA1O1xuICAgICAgICB2ZWM0IGJhc2Vfbm9ybWFsID0gdGV4dHVyZTJEKHREaWZmdXNlLCBub3JtYWxfdXYpO1xuICAgICAgICB2ZWM0IGJsdXJfbm9ybWFsID0gdGV4dHVyZTJEKHREaWZmdXNlQmx1ciwgbm9ybWFsX3V2KTtcbiAgICAgICAgbWVyZ2UgPSBiYXNlX25vcm1hbDtcbiAgICAgICAgYmx1ciA9IGJsdXJfbm9ybWFsO1xuICAgICAgI2VuZGlmXG5cbiAgICAgIGZsb2F0IGRlcHRoRmFjdG9yID0gMC4wMDAxO1xuICAgICAgZmxvYXQgYmx1ckZhY3RvciA9IDAuMDtcblxuICAgICAgI2lmZGVmIFVTRV9ERVBUSFxuICAgICAgICB2ZWM0IGRlcHRoID0gdGV4dHVyZTJEUHJvaih0RGVwdGgsIG5ld192VXYpO1xuICAgICAgICBkZXB0aEZhY3RvciA9IHNtb290aHN0ZXAobWluRGVwdGhUaHJlc2hvbGQsIG1heERlcHRoVGhyZXNob2xkLCAxLjAtKGRlcHRoLnIgKiBkZXB0aC5hKSk7XG4gICAgICAgIGRlcHRoRmFjdG9yICo9IGRlcHRoU2NhbGU7XG4gICAgICAgIGRlcHRoRmFjdG9yID0gbWF4KDAuMDAwMSwgbWluKDEuMCwgZGVwdGhGYWN0b3IpKTtcblxuICAgICAgICAjaWZkZWYgVVNFX0JMVVJcbiAgICAgICAgICBibHVyID0gYmx1ciAqIG1pbigxLjAsIGRlcHRoRmFjdG9yICsgZGVwdGhUb0JsdXJSYXRpb0JpYXMpO1xuICAgICAgICAgIG1lcmdlID0gbWVyZ2UgKiBtaW4oMS4wLCBkZXB0aEZhY3RvciArIDAuNSk7XG4gICAgICAgICNlbHNlXG4gICAgICAgICAgbWVyZ2UgPSBtZXJnZSAqIGRlcHRoRmFjdG9yO1xuICAgICAgICAjZW5kaWZcblxuICAgICAgI2VuZGlmXG5cbiAgICAgIGZsb2F0IHJlZmxlY3RvclJvdWdobmVzc0ZhY3RvciA9IHJvdWdobmVzcztcbiAgICAgICNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG4gICAgICAgIHZlYzQgcmVmbGVjdG9yVGV4ZWxSb3VnaG5lc3MgPSB0ZXh0dXJlMkQoIHJvdWdobmVzc01hcCwgdlV2ICk7XG4gICAgICAgIHJlZmxlY3RvclJvdWdobmVzc0ZhY3RvciAqPSByZWZsZWN0b3JUZXhlbFJvdWdobmVzcy5nO1xuICAgICAgI2VuZGlmXG5cbiAgICAgICNpZmRlZiBVU0VfQkxVUlxuICAgICAgICBibHVyRmFjdG9yID0gbWluKDEuMCwgbWl4Qmx1ciAqIHJlZmxlY3RvclJvdWdobmVzc0ZhY3Rvcik7XG4gICAgICAgIG1lcmdlID0gbWl4KG1lcmdlLCBibHVyLCBibHVyRmFjdG9yKTtcbiAgICAgICNlbmRpZlxuXG4gICAgICB2ZWM0IG5ld01lcmdlID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApO1xuICAgICAgbmV3TWVyZ2UuciA9IChtZXJnZS5yIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuICAgICAgbmV3TWVyZ2UuZyA9IChtZXJnZS5nIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuICAgICAgbmV3TWVyZ2UuYiA9IChtZXJnZS5iIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuXG4gICAgICBkaWZmdXNlQ29sb3IucmdiID0gZGlmZnVzZUNvbG9yLnJnYiAqICgoMS4wIC0gbWluKDEuMCwgbWlycm9yKSkgKyBuZXdNZXJnZS5yZ2IgKiBtaXhTdHJlbmd0aCk7XG4gICAgICBgXG4gICAgICAgICk7XG4gICAgfVxuICAgIGdldCB0RGlmZnVzZSgpOiBUZXh0dXJlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90RGlmZnVzZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHREaWZmdXNlKHY6IFRleHR1cmUgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3REaWZmdXNlLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IHREZXB0aCgpOiBUZXh0dXJlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90RGVwdGgudmFsdWU7XG4gICAgfVxuICAgIHNldCB0RGVwdGgodjogVGV4dHVyZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdERlcHRoLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IGRpc3RvcnRpb25NYXAoKTogVGV4dHVyZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzdG9ydGlvbk1hcC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGRpc3RvcnRpb25NYXAodjogVGV4dHVyZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZGlzdG9ydGlvbk1hcC52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGdldCB0RGlmZnVzZUJsdXIoKTogVGV4dHVyZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdERpZmZ1c2VCbHVyLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgdERpZmZ1c2VCbHVyKHY6IFRleHR1cmUgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3REaWZmdXNlQmx1ci52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGdldCB0ZXh0dXJlTWF0cml4KCk6IE1hdHJpeDQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RleHR1cmVNYXRyaXgudmFsdWU7XG4gICAgfVxuICAgIHNldCB0ZXh0dXJlTWF0cml4KHY6IE1hdHJpeDQgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3RleHR1cmVNYXRyaXgudmFsdWUgPSB2O1xuICAgIH1cbiAgICBnZXQgaGFzQmx1cigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0JsdXIudmFsdWU7XG4gICAgfVxuICAgIHNldCBoYXNCbHVyKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faGFzQmx1ci52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGdldCBtaXJyb3IoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pcnJvci52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1pcnJvcih2OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWlycm9yLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IG1peEJsdXIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21peEJsdXIudmFsdWU7XG4gICAgfVxuICAgIHNldCBtaXhCbHVyKHY6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taXhCbHVyLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IG1peFN0cmVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ibHVyU3RyZW5ndGgudmFsdWU7XG4gICAgfVxuICAgIHNldCBtaXhTdHJlbmd0aCh2OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fYmx1clN0cmVuZ3RoLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IG1pbkRlcHRoVGhyZXNob2xkKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5EZXB0aFRocmVzaG9sZC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1pbkRlcHRoVGhyZXNob2xkKHY6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taW5EZXB0aFRocmVzaG9sZC52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGdldCBtYXhEZXB0aFRocmVzaG9sZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RGVwdGhUaHJlc2hvbGQudmFsdWU7XG4gICAgfVxuICAgIHNldCBtYXhEZXB0aFRocmVzaG9sZCh2OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWF4RGVwdGhUaHJlc2hvbGQudmFsdWUgPSB2O1xuICAgIH1cbiAgICBnZXQgZGVwdGhTY2FsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVwdGhTY2FsZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IGRlcHRoU2NhbGUodjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2RlcHRoU2NhbGUudmFsdWUgPSB2O1xuICAgIH1cbiAgICBnZXQgZGVwdGhUb0JsdXJSYXRpb0JpYXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlcHRoVG9CbHVyUmF0aW9CaWFzLnZhbHVlO1xuICAgIH1cbiAgICBzZXQgZGVwdGhUb0JsdXJSYXRpb0JpYXModjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2RlcHRoVG9CbHVyUmF0aW9CaWFzLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IGRpc3RvcnRpb24oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3RvcnRpb24udmFsdWU7XG4gICAgfVxuICAgIHNldCBkaXN0b3J0aW9uKHY6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9kaXN0b3J0aW9uLnZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IG1peENvbnRyYXN0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taXhDb250cmFzdC52YWx1ZTtcbiAgICB9XG4gICAgc2V0IG1peENvbnRyYXN0KHY6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taXhDb250cmFzdC52YWx1ZSA9IHY7XG4gICAgfVxufVxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwvbWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG9CQUFvQixFQUFXLE1BQU0sT0FBTyxDQUFDO0FBSS9ELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxvQkFBb0I7SUFpQjlELFlBQVksVUFBVSxHQUFHLEVBQUU7UUFDMUIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBakJYLFlBQU8sR0FBa0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekQsbUJBQWMsR0FBa0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDaEUsY0FBUyxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzRCxrQkFBYSxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMvRCxtQkFBYyxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNoRSxhQUFRLEdBQXVCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2hELFlBQU8sR0FBc0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDNUMsYUFBUSxHQUFzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUM3QyxrQkFBYSxHQUFzQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNsRCx1QkFBa0IsR0FBc0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDdkQsdUJBQWtCLEdBQXNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JELGdCQUFXLEdBQXNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFD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QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksV0FBVztRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLENBQVM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdHJpeDQsIE1lc2hTdGFuZGFyZE1hdGVyaWFsLCBUZXh0dXJlIH0gZnJvbSAndGhyZWUnO1xuXG50eXBlIFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFZhbHVlPiA9IHsgdmFsdWU6IFZhbHVlIHwgbnVsbCB9O1xuXG5leHBvcnQgY2xhc3MgTWVzaFJlZmxlY3Rvck1hdGVyaWFsIGV4dGVuZHMgTWVzaFN0YW5kYXJkTWF0ZXJpYWwge1xuXHRwcml2YXRlIF90RGVwdGg6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuXHRwcml2YXRlIF9kaXN0b3J0aW9uTWFwOiBVbmluaXRpYWxpemVkVW5pZm9ybTxUZXh0dXJlPiA9IHsgdmFsdWU6IG51bGwgfTtcblx0cHJpdmF0ZSBfdERpZmZ1c2U6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuXHRwcml2YXRlIF90RGlmZnVzZUJsdXI6IFVuaW5pdGlhbGl6ZWRVbmlmb3JtPFRleHR1cmU+ID0geyB2YWx1ZTogbnVsbCB9O1xuXHRwcml2YXRlIF90ZXh0dXJlTWF0cml4OiBVbmluaXRpYWxpemVkVW5pZm9ybTxNYXRyaXg0PiA9IHsgdmFsdWU6IG51bGwgfTtcblx0cHJpdmF0ZSBfaGFzQmx1cjogeyB2YWx1ZTogYm9vbGVhbiB9ID0geyB2YWx1ZTogZmFsc2UgfTtcblx0cHJpdmF0ZSBfbWlycm9yOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuMCB9O1xuXHRwcml2YXRlIF9taXhCbHVyOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuMCB9O1xuXHRwcml2YXRlIF9ibHVyU3RyZW5ndGg6IHsgdmFsdWU6IG51bWJlciB9ID0geyB2YWx1ZTogMC41IH07XG5cdHByaXZhdGUgX21pbkRlcHRoVGhyZXNob2xkOiB7IHZhbHVlOiBudW1iZXIgfSA9IHsgdmFsdWU6IDAuOSB9O1xuXHRwcml2YXRlIF9tYXhEZXB0aFRocmVzaG9sZDogeyB2YWx1ZTogbnVtYmVyIH0gPSB7IHZhbHVlOiAxIH07XG5cdHByaXZhdGUgX2RlcHRoU2NhbGU6IHsgdmFsdWU6IG51bWJlciB9ID0geyB2YWx1ZTogMCB9O1xuXHRwcml2YXRlIF9kZXB0aFRvQmx1clJhdGlvQmlhczogeyB2YWx1ZTogbnVtYmVyIH0gPSB7IHZhbHVlOiAwLjI1IH07XG5cdHByaXZhdGUgX2Rpc3RvcnRpb246IHsgdmFsdWU6IG51bWJlciB9ID0geyB2YWx1ZTogMSB9O1xuXHRwcml2YXRlIF9taXhDb250cmFzdDogeyB2YWx1ZTogbnVtYmVyIH0gPSB7IHZhbHVlOiAxLjAgfTtcblxuXHRjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzID0ge30pIHtcblx0XHRzdXBlcihwYXJhbWV0ZXJzKTtcblx0XHR0aGlzLnNldFZhbHVlcyhwYXJhbWV0ZXJzKTtcblx0fVxuXHRvdmVycmlkZSBvbkJlZm9yZUNvbXBpbGUoc2hhZGVyOiBhbnkpIHtcblx0XHRpZiAoIXNoYWRlci5kZWZpbmVzPy5VU0VfVVYpIHtcblx0XHRcdHNoYWRlci5kZWZpbmVzLlVTRV9VViA9ICcnO1xuXHRcdH1cblx0XHRzaGFkZXIudW5pZm9ybXMuaGFzQmx1ciA9IHRoaXMuX2hhc0JsdXI7XG5cdFx0c2hhZGVyLnVuaWZvcm1zLnREaWZmdXNlID0gdGhpcy5fdERpZmZ1c2U7XG5cdFx0c2hhZGVyLnVuaWZvcm1zLnREZXB0aCA9IHRoaXMuX3REZXB0aDtcblx0XHRzaGFkZXIudW5pZm9ybXMuZGlzdG9ydGlvbk1hcCA9IHRoaXMuX2Rpc3RvcnRpb25NYXA7XG5cdFx0c2hhZGVyLnVuaWZvcm1zLnREaWZmdXNlQmx1ciA9IHRoaXMuX3REaWZmdXNlQmx1cjtcblx0XHRzaGFkZXIudW5pZm9ybXMudGV4dHVyZU1hdHJpeCA9IHRoaXMuX3RleHR1cmVNYXRyaXg7XG5cdFx0c2hhZGVyLnVuaWZvcm1zLm1pcnJvciA9IHRoaXMuX21pcnJvcjtcblx0XHRzaGFkZXIudW5pZm9ybXMubWl4Qmx1ciA9IHRoaXMuX21peEJsdXI7XG5cdFx0c2hhZGVyLnVuaWZvcm1zLm1peFN0cmVuZ3RoID0gdGhpcy5fYmx1clN0cmVuZ3RoO1xuXHRcdHNoYWRlci51bmlmb3Jtcy5taW5EZXB0aFRocmVzaG9sZCA9IHRoaXMuX21pbkRlcHRoVGhyZXNob2xkO1xuXHRcdHNoYWRlci51bmlmb3Jtcy5tYXhEZXB0aFRocmVzaG9sZCA9IHRoaXMuX21heERlcHRoVGhyZXNob2xkO1xuXHRcdHNoYWRlci51bmlmb3Jtcy5kZXB0aFNjYWxlID0gdGhpcy5fZGVwdGhTY2FsZTtcblx0XHRzaGFkZXIudW5pZm9ybXMuZGVwdGhUb0JsdXJSYXRpb0JpYXMgPSB0aGlzLl9kZXB0aFRvQmx1clJhdGlvQmlhcztcblx0XHRzaGFkZXIudW5pZm9ybXMuZGlzdG9ydGlvbiA9IHRoaXMuX2Rpc3RvcnRpb247XG5cdFx0c2hhZGVyLnVuaWZvcm1zLm1peENvbnRyYXN0ID0gdGhpcy5fbWl4Q29udHJhc3Q7XG5cdFx0c2hhZGVyLnZlcnRleFNoYWRlciA9IGBcbiAgICAgICAgdW5pZm9ybSBtYXQ0IHRleHR1cmVNYXRyaXg7XG4gICAgICAgIHZhcnlpbmcgdmVjNCBteV92VXY7XG4gICAgICAke3NoYWRlci52ZXJ0ZXhTaGFkZXJ9YDtcblx0XHRzaGFkZXIudmVydGV4U2hhZGVyID0gc2hhZGVyLnZlcnRleFNoYWRlci5yZXBsYWNlKFxuXHRcdFx0JyNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4nLFxuXHRcdFx0YCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cbiAgICAgICAgbXlfdlV2ID0gdGV4dHVyZU1hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbiAgICAgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggcG9zaXRpb24sIDEuMCApO2AsXG5cdFx0KTtcblx0XHRzaGFkZXIuZnJhZ21lbnRTaGFkZXIgPSBgXG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHREaWZmdXNlO1xuICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0RGlmZnVzZUJsdXI7XG4gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHREZXB0aDtcbiAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgZGlzdG9ydGlvbk1hcDtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBkaXN0b3J0aW9uO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGNhbWVyYU5lYXI7XG5cdFx0XHQgIHVuaWZvcm0gZmxvYXQgY2FtZXJhRmFyO1xuICAgICAgICB1bmlmb3JtIGJvb2wgaGFzQmx1cjtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBtaXhCbHVyO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IG1pcnJvcjtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBtaXhTdHJlbmd0aDtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBtaW5EZXB0aFRocmVzaG9sZDtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBtYXhEZXB0aFRocmVzaG9sZDtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBtaXhDb250cmFzdDtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCBkZXB0aFNjYWxlO1xuICAgICAgICB1bmlmb3JtIGZsb2F0IGRlcHRoVG9CbHVyUmF0aW9CaWFzO1xuICAgICAgICB2YXJ5aW5nIHZlYzQgbXlfdlV2O1xuICAgICAgICAke3NoYWRlci5mcmFnbWVudFNoYWRlcn1gO1xuXHRcdHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuXHRcdFx0JyNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4nLFxuXHRcdFx0YCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblxuICAgICAgZmxvYXQgZGlzdG9ydGlvbkZhY3RvciA9IDAuMDtcbiAgICAgICNpZmRlZiBVU0VfRElTVE9SVElPTlxuICAgICAgICBkaXN0b3J0aW9uRmFjdG9yID0gdGV4dHVyZTJEKGRpc3RvcnRpb25NYXAsIHZVdikuciAqIGRpc3RvcnRpb247XG4gICAgICAjZW5kaWZcblxuICAgICAgdmVjNCBuZXdfdlV2ID0gbXlfdlV2O1xuICAgICAgbmV3X3ZVdi54ICs9IGRpc3RvcnRpb25GYWN0b3I7XG4gICAgICBuZXdfdlV2LnkgKz0gZGlzdG9ydGlvbkZhY3RvcjtcblxuICAgICAgdmVjNCBiYXNlID0gdGV4dHVyZTJEUHJvaih0RGlmZnVzZSwgbmV3X3ZVdik7XG4gICAgICB2ZWM0IGJsdXIgPSB0ZXh0dXJlMkRQcm9qKHREaWZmdXNlQmx1ciwgbmV3X3ZVdik7XG5cbiAgICAgIHZlYzQgbWVyZ2UgPSBiYXNlO1xuXG4gICAgICAjaWZkZWYgVVNFX05PUk1BTE1BUFxuICAgICAgICB2ZWMyIG5vcm1hbF91diA9IHZlYzIoMC4wKTtcbiAgICAgICAgdmVjNCBub3JtYWxDb2xvciA9IHRleHR1cmUyRChub3JtYWxNYXAsIHZVdiAqIG5vcm1hbFNjYWxlKTtcbiAgICAgICAgdmVjMyBteV9ub3JtYWwgPSBub3JtYWxpemUoIHZlYzMoIG5vcm1hbENvbG9yLnIgKiAyLjAgLSAxLjAsIG5vcm1hbENvbG9yLmIsICBub3JtYWxDb2xvci5nICogMi4wIC0gMS4wICkgKTtcbiAgICAgICAgdmVjMyBjb29yZCA9IG5ld192VXYueHl6IC8gbmV3X3ZVdi53O1xuICAgICAgICBub3JtYWxfdXYgPSBjb29yZC54eSArIGNvb3JkLnogKiBteV9ub3JtYWwueHogKiAwLjA1O1xuICAgICAgICB2ZWM0IGJhc2Vfbm9ybWFsID0gdGV4dHVyZTJEKHREaWZmdXNlLCBub3JtYWxfdXYpO1xuICAgICAgICB2ZWM0IGJsdXJfbm9ybWFsID0gdGV4dHVyZTJEKHREaWZmdXNlQmx1ciwgbm9ybWFsX3V2KTtcbiAgICAgICAgbWVyZ2UgPSBiYXNlX25vcm1hbDtcbiAgICAgICAgYmx1ciA9IGJsdXJfbm9ybWFsO1xuICAgICAgI2VuZGlmXG5cbiAgICAgIGZsb2F0IGRlcHRoRmFjdG9yID0gMC4wMDAxO1xuICAgICAgZmxvYXQgYmx1ckZhY3RvciA9IDAuMDtcblxuICAgICAgI2lmZGVmIFVTRV9ERVBUSFxuICAgICAgICB2ZWM0IGRlcHRoID0gdGV4dHVyZTJEUHJvaih0RGVwdGgsIG5ld192VXYpO1xuICAgICAgICBkZXB0aEZhY3RvciA9IHNtb290aHN0ZXAobWluRGVwdGhUaHJlc2hvbGQsIG1heERlcHRoVGhyZXNob2xkLCAxLjAtKGRlcHRoLnIgKiBkZXB0aC5hKSk7XG4gICAgICAgIGRlcHRoRmFjdG9yICo9IGRlcHRoU2NhbGU7XG4gICAgICAgIGRlcHRoRmFjdG9yID0gbWF4KDAuMDAwMSwgbWluKDEuMCwgZGVwdGhGYWN0b3IpKTtcblxuICAgICAgICAjaWZkZWYgVVNFX0JMVVJcbiAgICAgICAgICBibHVyID0gYmx1ciAqIG1pbigxLjAsIGRlcHRoRmFjdG9yICsgZGVwdGhUb0JsdXJSYXRpb0JpYXMpO1xuICAgICAgICAgIG1lcmdlID0gbWVyZ2UgKiBtaW4oMS4wLCBkZXB0aEZhY3RvciArIDAuNSk7XG4gICAgICAgICNlbHNlXG4gICAgICAgICAgbWVyZ2UgPSBtZXJnZSAqIGRlcHRoRmFjdG9yO1xuICAgICAgICAjZW5kaWZcblxuICAgICAgI2VuZGlmXG5cbiAgICAgIGZsb2F0IHJlZmxlY3RvclJvdWdobmVzc0ZhY3RvciA9IHJvdWdobmVzcztcbiAgICAgICNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG4gICAgICAgIHZlYzQgcmVmbGVjdG9yVGV4ZWxSb3VnaG5lc3MgPSB0ZXh0dXJlMkQoIHJvdWdobmVzc01hcCwgdlV2ICk7XG4gICAgICAgIHJlZmxlY3RvclJvdWdobmVzc0ZhY3RvciAqPSByZWZsZWN0b3JUZXhlbFJvdWdobmVzcy5nO1xuICAgICAgI2VuZGlmXG5cbiAgICAgICNpZmRlZiBVU0VfQkxVUlxuICAgICAgICBibHVyRmFjdG9yID0gbWluKDEuMCwgbWl4Qmx1ciAqIHJlZmxlY3RvclJvdWdobmVzc0ZhY3Rvcik7XG4gICAgICAgIG1lcmdlID0gbWl4KG1lcmdlLCBibHVyLCBibHVyRmFjdG9yKTtcbiAgICAgICNlbmRpZlxuXG4gICAgICB2ZWM0IG5ld01lcmdlID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApO1xuICAgICAgbmV3TWVyZ2UuciA9IChtZXJnZS5yIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuICAgICAgbmV3TWVyZ2UuZyA9IChtZXJnZS5nIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuICAgICAgbmV3TWVyZ2UuYiA9IChtZXJnZS5iIC0gMC41KSAqIG1peENvbnRyYXN0ICsgMC41O1xuXG4gICAgICBkaWZmdXNlQ29sb3IucmdiID0gZGlmZnVzZUNvbG9yLnJnYiAqICgoMS4wIC0gbWluKDEuMCwgbWlycm9yKSkgKyBuZXdNZXJnZS5yZ2IgKiBtaXhTdHJlbmd0aCk7XG4gICAgICBgLFxuXHRcdCk7XG5cdH1cblx0Z2V0IHREaWZmdXNlKCk6IFRleHR1cmUgfCBudWxsIHtcblx0XHRyZXR1cm4gdGhpcy5fdERpZmZ1c2UudmFsdWU7XG5cdH1cblx0c2V0IHREaWZmdXNlKHY6IFRleHR1cmUgfCBudWxsKSB7XG5cdFx0dGhpcy5fdERpZmZ1c2UudmFsdWUgPSB2O1xuXHR9XG5cdGdldCB0RGVwdGgoKTogVGV4dHVyZSB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLl90RGVwdGgudmFsdWU7XG5cdH1cblx0c2V0IHREZXB0aCh2OiBUZXh0dXJlIHwgbnVsbCkge1xuXHRcdHRoaXMuX3REZXB0aC52YWx1ZSA9IHY7XG5cdH1cblx0Z2V0IGRpc3RvcnRpb25NYXAoKTogVGV4dHVyZSB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLl9kaXN0b3J0aW9uTWFwLnZhbHVlO1xuXHR9XG5cdHNldCBkaXN0b3J0aW9uTWFwKHY6IFRleHR1cmUgfCBudWxsKSB7XG5cdFx0dGhpcy5fZGlzdG9ydGlvbk1hcC52YWx1ZSA9IHY7XG5cdH1cblx0Z2V0IHREaWZmdXNlQmx1cigpOiBUZXh0dXJlIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuX3REaWZmdXNlQmx1ci52YWx1ZTtcblx0fVxuXHRzZXQgdERpZmZ1c2VCbHVyKHY6IFRleHR1cmUgfCBudWxsKSB7XG5cdFx0dGhpcy5fdERpZmZ1c2VCbHVyLnZhbHVlID0gdjtcblx0fVxuXHRnZXQgdGV4dHVyZU1hdHJpeCgpOiBNYXRyaXg0IHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuX3RleHR1cmVNYXRyaXgudmFsdWU7XG5cdH1cblx0c2V0IHRleHR1cmVNYXRyaXgodjogTWF0cml4NCB8IG51bGwpIHtcblx0XHR0aGlzLl90ZXh0dXJlTWF0cml4LnZhbHVlID0gdjtcblx0fVxuXHRnZXQgaGFzQmx1cigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5faGFzQmx1ci52YWx1ZTtcblx0fVxuXHRzZXQgaGFzQmx1cih2OiBib29sZWFuKSB7XG5cdFx0dGhpcy5faGFzQmx1ci52YWx1ZSA9IHY7XG5cdH1cblx0Z2V0IG1pcnJvcigpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLl9taXJyb3IudmFsdWU7XG5cdH1cblx0c2V0IG1pcnJvcih2OiBudW1iZXIpIHtcblx0XHR0aGlzLl9taXJyb3IudmFsdWUgPSB2O1xuXHR9XG5cdGdldCBtaXhCbHVyKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMuX21peEJsdXIudmFsdWU7XG5cdH1cblx0c2V0IG1peEJsdXIodjogbnVtYmVyKSB7XG5cdFx0dGhpcy5fbWl4Qmx1ci52YWx1ZSA9IHY7XG5cdH1cblx0Z2V0IG1peFN0cmVuZ3RoKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMuX2JsdXJTdHJlbmd0aC52YWx1ZTtcblx0fVxuXHRzZXQgbWl4U3RyZW5ndGgodjogbnVtYmVyKSB7XG5cdFx0dGhpcy5fYmx1clN0cmVuZ3RoLnZhbHVlID0gdjtcblx0fVxuXHRnZXQgbWluRGVwdGhUaHJlc2hvbGQoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5fbWluRGVwdGhUaHJlc2hvbGQudmFsdWU7XG5cdH1cblx0c2V0IG1pbkRlcHRoVGhyZXNob2xkKHY6IG51bWJlcikge1xuXHRcdHRoaXMuX21pbkRlcHRoVGhyZXNob2xkLnZhbHVlID0gdjtcblx0fVxuXHRnZXQgbWF4RGVwdGhUaHJlc2hvbGQoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5fbWF4RGVwdGhUaHJlc2hvbGQudmFsdWU7XG5cdH1cblx0c2V0IG1heERlcHRoVGhyZXNob2xkKHY6IG51bWJlcikge1xuXHRcdHRoaXMuX21heERlcHRoVGhyZXNob2xkLnZhbHVlID0gdjtcblx0fVxuXHRnZXQgZGVwdGhTY2FsZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLl9kZXB0aFNjYWxlLnZhbHVlO1xuXHR9XG5cdHNldCBkZXB0aFNjYWxlKHY6IG51bWJlcikge1xuXHRcdHRoaXMuX2RlcHRoU2NhbGUudmFsdWUgPSB2O1xuXHR9XG5cdGdldCBkZXB0aFRvQmx1clJhdGlvQmlhcygpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLl9kZXB0aFRvQmx1clJhdGlvQmlhcy52YWx1ZTtcblx0fVxuXHRzZXQgZGVwdGhUb0JsdXJSYXRpb0JpYXModjogbnVtYmVyKSB7XG5cdFx0dGhpcy5fZGVwdGhUb0JsdXJSYXRpb0JpYXMudmFsdWUgPSB2O1xuXHR9XG5cdGdldCBkaXN0b3J0aW9uKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMuX2Rpc3RvcnRpb24udmFsdWU7XG5cdH1cblx0c2V0IGRpc3RvcnRpb24odjogbnVtYmVyKSB7XG5cdFx0dGhpcy5fZGlzdG9ydGlvbi52YWx1ZSA9IHY7XG5cdH1cblx0Z2V0IG1peENvbnRyYXN0KCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMuX21peENvbnRyYXN0LnZhbHVlO1xuXHR9XG5cdHNldCBtaXhDb250cmFzdCh2OiBudW1iZXIpIHtcblx0XHR0aGlzLl9taXhDb250cmFzdC52YWx1ZSA9IHY7XG5cdH1cbn1cbiJdfQ==
@@ -165,6 +165,6 @@ export const MeshRefractionMaterial = shaderMaterial({
165
165
  float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;
166
166
  gl_FragColor = vec4(mix(finalColor, vec3(1.0), nFresnel), 1.0);
167
167
  #include <tonemapping_fragment>
168
- #include <encodings_fragment>
168
+ #include <${parseInt(THREE.REVISION.replace(/\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
169
169
  }`);
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL21lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbC9tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCO0FBQ3JCLHVDQUF1QztBQUV2QyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixrRkFBa0Y7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxjQUFjLENBQ2hEO0lBQ0ksTUFBTSxFQUFFLElBQUk7SUFDWixPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxHQUFHO0lBQ1IsV0FBVyxFQUFFLElBQUk7SUFDakIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixPQUFPLEVBQUUsQ0FBQztJQUNWLDBDQUEwQztJQUMxQyxHQUFHLEVBQUUsSUFBSSxvQkFBb0IsRUFBRTtJQUMvQixLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUMvQixVQUFVLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQy9CLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtJQUN0Qyx1QkFBdUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Q0FDL0M7QUFDRCxRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0NUO0FBQ0EsUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBbUJULGFBQWE7SUFDYix1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBK0Z2QixDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBdXRob3I6IE44UHJvZ3JhbXNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9OOHB5dGhvbi9kaWFtb25kc1xuXG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG4vLyBAdHMtZXhwZWN0LWVycm9yOiBzaGFkZXJJbnRlcnNlY3RGdW5jdGlvbiBpcyBhdmFpbGFibGUgYnV0IHR5cGVzY3JpcHQgY29tcGxhaW5zXG5pbXBvcnQgeyBNZXNoQlZIVW5pZm9ybVN0cnVjdCwgc2hhZGVySW50ZXJzZWN0RnVuY3Rpb24sIHNoYWRlclN0cnVjdHMgfSBmcm9tICd0aHJlZS1tZXNoLWJ2aCc7XG5pbXBvcnQgeyBzaGFkZXJNYXRlcmlhbCB9IGZyb20gJy4uL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuXG5leHBvcnQgY29uc3QgTWVzaFJlZnJhY3Rpb25NYXRlcmlhbCA9IHNoYWRlck1hdGVyaWFsKFxuICAgIHtcbiAgICAgICAgZW52TWFwOiBudWxsLFxuICAgICAgICBib3VuY2VzOiAzLFxuICAgICAgICBpb3I6IDIuNCxcbiAgICAgICAgY29ycmVjdE1pcHM6IHRydWUsXG4gICAgICAgIGFiZXJyYXRpb25TdHJlbmd0aDogMC4wMSxcbiAgICAgICAgZnJlc25lbDogMCxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogdHlwaW5nIGlzIG5vdCBtYXRjaGVkXG4gICAgICAgIGJ2aDogbmV3IE1lc2hCVkhVbmlmb3JtU3RydWN0KCksXG4gICAgICAgIGNvbG9yOiBuZXcgVEhSRUUuQ29sb3IoJ3doaXRlJyksXG4gICAgICAgIHJlc29sdXRpb246IG5ldyBUSFJFRS5WZWN0b3IyKCksXG4gICAgICAgIHZpZXdNYXRyaXhJbnZlcnNlOiBuZXcgVEhSRUUuTWF0cml4NCgpLFxuICAgICAgICBwcm9qZWN0aW9uTWF0cml4SW52ZXJzZTogbmV3IFRIUkVFLk1hdHJpeDQoKSxcbiAgICB9LFxuICAgIC8qZ2xzbCovIGBcbiAgdW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXhJbnZlcnNlO1xuXG4gIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgdmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4gIHZhcnlpbmcgbWF0NCB2TW9kZWxNYXRyaXhJbnZlcnNlO1xuXG4gICNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUlxuICAgIHZhcnlpbmcgdmVjMyB2SW5zdGFuY2VDb2xvcjtcbiAgI2VuZGlmXG5cbiAgdm9pZCBtYWluKCkge1xuICAgIHZlYzQgdHJhbnNmb3JtZWROb3JtYWwgPSB2ZWM0KG5vcm1hbCwgMC4wKTtcbiAgICB2ZWM0IHRyYW5zZm9ybWVkUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAxLjApO1xuICAgICNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuICAgICAgdHJhbnNmb3JtZWROb3JtYWwgPSBpbnN0YW5jZU1hdHJpeCAqIHRyYW5zZm9ybWVkTm9ybWFsO1xuICAgICAgdHJhbnNmb3JtZWRQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogdHJhbnNmb3JtZWRQb3NpdGlvbjtcbiAgICAjZW5kaWZcblxuICAgICNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuICAgICAgdk1vZGVsTWF0cml4SW52ZXJzZSA9IGludmVyc2UobW9kZWxNYXRyaXggKiBpbnN0YW5jZU1hdHJpeCk7XG4gICAgI2Vsc2VcbiAgICAgIHZNb2RlbE1hdHJpeEludmVyc2UgPSBpbnZlcnNlKG1vZGVsTWF0cml4KTtcbiAgICAjZW5kaWZcblxuICAgICNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUlxuICAgICAgdkluc3RhbmNlQ29sb3IgPSBpbnN0YW5jZUNvbG9yLnJnYjtcbiAgICAjZW5kaWZcblxuICAgIHZXb3JsZFBvc2l0aW9uID0gKG1vZGVsTWF0cml4ICogdHJhbnNmb3JtZWRQb3NpdGlvbikueHl6O1xuICAgIHZOb3JtYWwgPSBub3JtYWxpemUoKHZpZXdNYXRyaXhJbnZlcnNlICogdmVjNChub3JtYWxNYXRyaXggKiB0cmFuc2Zvcm1lZE5vcm1hbC54eXosIDAuMCkpLnh5eik7XG4gICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogdmlld01hdHJpeCAqIG1vZGVsTWF0cml4ICogdHJhbnNmb3JtZWRQb3NpdGlvbjtcbiAgfWAsXG4gICAgLypnbHNsKi8gYFxuICAjZGVmaW5lIEVOVk1BUF9UWVBFX0NVQkVfVVZcbiAgcHJlY2lzaW9uIGhpZ2hwIGlzYW1wbGVyMkQ7XG4gIHByZWNpc2lvbiBoaWdocCB1c2FtcGxlcjJEO1xuICB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gIHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuICB2YXJ5aW5nIG1hdDQgdk1vZGVsTWF0cml4SW52ZXJzZTtcblxuICAjaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1JcbiAgICB2YXJ5aW5nIHZlYzMgdkluc3RhbmNlQ29sb3I7XG4gICNlbmRpZlxuXG4gICNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFTVxuICAgIHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuICAjZWxzZVxuICAgIHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcbiAgI2VuZGlmXG5cbiAgdW5pZm9ybSBmbG9hdCBib3VuY2VzO1xuICAke3NoYWRlclN0cnVjdHN9XG4gICR7c2hhZGVySW50ZXJzZWN0RnVuY3Rpb259XG4gIHVuaWZvcm0gQlZIIGJ2aDtcbiAgdW5pZm9ybSBmbG9hdCBpb3I7XG4gIHVuaWZvcm0gYm9vbCBjb3JyZWN0TWlwcztcbiAgdW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG4gIHVuaWZvcm0gZmxvYXQgZnJlc25lbDtcbiAgdW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4O1xuICB1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeEludmVyc2U7XG4gIHVuaWZvcm0gbWF0NCB2aWV3TWF0cml4SW52ZXJzZTtcbiAgdW5pZm9ybSBmbG9hdCBhYmVycmF0aW9uU3RyZW5ndGg7XG4gIHVuaWZvcm0gdmVjMyBjb2xvcjtcblxuICBmbG9hdCBmcmVzbmVsRnVuYyh2ZWMzIHZpZXdEaXJlY3Rpb24sIHZlYzMgd29ybGROb3JtYWwpIHtcbiAgICByZXR1cm4gcG93KCAxLjAgKyBkb3QoIHZpZXdEaXJlY3Rpb24sIHdvcmxkTm9ybWFsKSwgMTAuMCApO1xuICB9XG5cbiAgdmVjMyB0b3RhbEludGVybmFsUmVmbGVjdGlvbih2ZWMzIHJvLCB2ZWMzIHJkLCB2ZWMzIG5vcm1hbCwgZmxvYXQgaW9yLCBtYXQ0IG1vZGVsTWF0cml4SW52ZXJzZSkge1xuICAgIHZlYzMgcmF5T3JpZ2luID0gcm87XG4gICAgdmVjMyByYXlEaXJlY3Rpb24gPSByZDtcbiAgICByYXlEaXJlY3Rpb24gPSByZWZyYWN0KHJheURpcmVjdGlvbiwgbm9ybWFsLCAxLjAgLyBpb3IpO1xuICAgIHJheU9yaWdpbiA9IHZXb3JsZFBvc2l0aW9uICsgcmF5RGlyZWN0aW9uICogMC4wMDE7XG4gICAgcmF5T3JpZ2luID0gKG1vZGVsTWF0cml4SW52ZXJzZSAqIHZlYzQocmF5T3JpZ2luLCAxLjApKS54eXo7XG4gICAgcmF5RGlyZWN0aW9uID0gbm9ybWFsaXplKChtb2RlbE1hdHJpeEludmVyc2UgKiB2ZWM0KHJheURpcmVjdGlvbiwgMC4wKSkueHl6KTtcbiAgICBmb3IoZmxvYXQgaSA9IDAuMDsgaSA8IGJvdW5jZXM7IGkrKykge1xuICAgICAgdXZlYzQgZmFjZUluZGljZXMgPSB1dmVjNCggMHUgKTtcbiAgICAgIHZlYzMgZmFjZU5vcm1hbCA9IHZlYzMoIDAuMCwgMC4wLCAxLjAgKTtcbiAgICAgIHZlYzMgYmFyeWNvb3JkID0gdmVjMyggMC4wICk7XG4gICAgICBmbG9hdCBzaWRlID0gMS4wO1xuICAgICAgZmxvYXQgZGlzdCA9IDAuMDtcbiAgICAgIGJ2aEludGVyc2VjdEZpcnN0SGl0KCBidmgsIHJheU9yaWdpbiwgcmF5RGlyZWN0aW9uLCBmYWNlSW5kaWNlcywgZmFjZU5vcm1hbCwgYmFyeWNvb3JkLCBzaWRlLCBkaXN0ICk7XG4gICAgICB2ZWMzIGhpdFBvcyA9IHJheU9yaWdpbiArIHJheURpcmVjdGlvbiAqIG1heChkaXN0IC0gMC4wMDEsIDAuMCk7XG4gICAgICB2ZWMzIHRlbXBEaXIgPSByZWZyYWN0KHJheURpcmVjdGlvbiwgZmFjZU5vcm1hbCwgaW9yKTtcbiAgICAgIGlmIChsZW5ndGgodGVtcERpcikgIT0gMC4wKSB7XG4gICAgICAgIHJheURpcmVjdGlvbiA9IHRlbXBEaXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmF5RGlyZWN0aW9uID0gcmVmbGVjdChyYXlEaXJlY3Rpb24sIGZhY2VOb3JtYWwpO1xuICAgICAgcmF5T3JpZ2luID0gaGl0UG9zICsgcmF5RGlyZWN0aW9uICogMC4wMTtcbiAgICB9XG4gICAgcmF5RGlyZWN0aW9uID0gbm9ybWFsaXplKChtb2RlbE1hdHJpeCAqIHZlYzQocmF5RGlyZWN0aW9uLCAwLjApKS54eXopO1xuICAgIHJldHVybiByYXlEaXJlY3Rpb247XG4gIH1cblxuICAjaW5jbHVkZSA8Y29tbW9uPlxuICAjaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuXG4gICNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFTVxuICAgIHZlYzQgdGV4dHVyZUdyYWRpZW50KHNhbXBsZXJDdWJlIGVudk1hcCwgdmVjMyByYXlEaXJlY3Rpb24sIHZlYzMgZGlyZWN0aW9uQ2FtUGVyZmVjdCkge1xuICAgICAgcmV0dXJuIHRleHR1cmVHcmFkKGVudk1hcCwgcmF5RGlyZWN0aW9uLCBkRmR4KGNvcnJlY3RNaXBzID8gZGlyZWN0aW9uQ2FtUGVyZmVjdDogcmF5RGlyZWN0aW9uKSwgZEZkeShjb3JyZWN0TWlwcyA/IGRpcmVjdGlvbkNhbVBlcmZlY3Q6IHJheURpcmVjdGlvbikpO1xuICAgIH1cbiAgI2Vsc2VcbiAgICB2ZWM0IHRleHR1cmVHcmFkaWVudChzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIHJheURpcmVjdGlvbiwgdmVjMyBkaXJlY3Rpb25DYW1QZXJmZWN0KSB7XG4gICAgICB2ZWMyIHV2diA9IGVxdWlyZWN0VXYoIHJheURpcmVjdGlvbiApO1xuICAgICAgdmVjMiBzbW9vdGhVdiA9IGVxdWlyZWN0VXYoIGRpcmVjdGlvbkNhbVBlcmZlY3QgKTtcbiAgICAgIHJldHVybiB0ZXh0dXJlR3JhZChlbnZNYXAsIHV2diwgZEZkeChjb3JyZWN0TWlwcyA/IHNtb290aFV2IDogdXZ2KSwgZEZkeShjb3JyZWN0TWlwcyA/IHNtb290aFV2IDogdXZ2KSk7XG4gICAgfVxuICAjZW5kaWZcblxuICB2b2lkIG1haW4oKSB7XG4gICAgdmVjMiB1diA9IGdsX0ZyYWdDb29yZC54eSAvIHJlc29sdXRpb247XG4gICAgdmVjMyBkaXJlY3Rpb25DYW1QZXJmZWN0ID0gKHByb2plY3Rpb25NYXRyaXhJbnZlcnNlICogdmVjNCh1diAqIDIuMCAtIDEuMCwgMC4wLCAxLjApKS54eXo7XG4gICAgZGlyZWN0aW9uQ2FtUGVyZmVjdCA9ICh2aWV3TWF0cml4SW52ZXJzZSAqIHZlYzQoZGlyZWN0aW9uQ2FtUGVyZmVjdCwgMC4wKSkueHl6O1xuICAgIGRpcmVjdGlvbkNhbVBlcmZlY3QgPSBub3JtYWxpemUoZGlyZWN0aW9uQ2FtUGVyZmVjdCk7XG4gICAgdmVjMyBub3JtYWwgPSB2Tm9ybWFsO1xuICAgIHZlYzMgcmF5T3JpZ2luID0gY2FtZXJhUG9zaXRpb247XG4gICAgdmVjMyByYXlEaXJlY3Rpb24gPSBub3JtYWxpemUodldvcmxkUG9zaXRpb24gLSBjYW1lcmFQb3NpdGlvbik7XG4gICAgdmVjMyBmaW5hbENvbG9yO1xuICAgICNpZmRlZiBDSFJPTUFUSUNfQUJFUlJBVElPTlNcbiAgICAgIHZlYzMgcmF5RGlyZWN0aW9uRyA9IHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHJheU9yaWdpbiwgcmF5RGlyZWN0aW9uLCBub3JtYWwsIG1heChpb3IsIDEuMCksIHZNb2RlbE1hdHJpeEludmVyc2UpO1xuICAgICAgI2lmZGVmIEZBU1RfQ0hST01BXG4gICAgICAgIHZlYzMgcmF5RGlyZWN0aW9uUiA9IG5vcm1hbGl6ZShyYXlEaXJlY3Rpb25HICsgMS4wICogdmVjMyhhYmVycmF0aW9uU3RyZW5ndGggLyAyLjApKTtcbiAgICAgICAgdmVjMyByYXlEaXJlY3Rpb25CID0gbm9ybWFsaXplKHJheURpcmVjdGlvbkcgLSAxLjAgKiB2ZWMzKGFiZXJyYXRpb25TdHJlbmd0aCAvIDIuMCkpO1xuICAgICAgI2Vsc2VcbiAgICAgICAgdmVjMyByYXlEaXJlY3Rpb25SID0gdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ocmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIG5vcm1hbCwgbWF4KGlvciAqICgxLjAgLSBhYmVycmF0aW9uU3RyZW5ndGgpLCAxLjApLCB2TW9kZWxNYXRyaXhJbnZlcnNlKTtcbiAgICAgICAgdmVjMyByYXlEaXJlY3Rpb25CID0gdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ocmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIG5vcm1hbCwgbWF4KGlvciAqICgxLjAgKyBhYmVycmF0aW9uU3RyZW5ndGgpLCAxLjApLCB2TW9kZWxNYXRyaXhJbnZlcnNlKTtcbiAgICAgICNlbmRpZlxuICAgICAgZmxvYXQgZmluYWxDb2xvclIgPSB0ZXh0dXJlR3JhZGllbnQoZW52TWFwLCByYXlEaXJlY3Rpb25SLCBkaXJlY3Rpb25DYW1QZXJmZWN0KS5yO1xuICAgICAgZmxvYXQgZmluYWxDb2xvckcgPSB0ZXh0dXJlR3JhZGllbnQoZW52TWFwLCByYXlEaXJlY3Rpb25HLCBkaXJlY3Rpb25DYW1QZXJmZWN0KS5nO1xuICAgICAgZmxvYXQgZmluYWxDb2xvckIgPSB0ZXh0dXJlR3JhZGllbnQoZW52TWFwLCByYXlEaXJlY3Rpb25CLCBkaXJlY3Rpb25DYW1QZXJmZWN0KS5iO1xuICAgICAgZmluYWxDb2xvciA9IHZlYzMoZmluYWxDb2xvclIsIGZpbmFsQ29sb3JHLCBmaW5hbENvbG9yQik7XG4gICAgI2Vsc2VcbiAgICAgIHJheURpcmVjdGlvbiA9IHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHJheU9yaWdpbiwgcmF5RGlyZWN0aW9uLCBub3JtYWwsIG1heChpb3IsIDEuMCksIHZNb2RlbE1hdHJpeEludmVyc2UpO1xuICAgICAgZmluYWxDb2xvciA9IHRleHR1cmVHcmFkaWVudChlbnZNYXAsIHJheURpcmVjdGlvbiwgZGlyZWN0aW9uQ2FtUGVyZmVjdCkucmdiO1xuICAgICNlbmRpZlxuXG4gICAgZmluYWxDb2xvciAqPSBjb2xvcjtcbiAgICAjaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1JcbiAgICAgIGZpbmFsQ29sb3IgKj0gdkluc3RhbmNlQ29sb3I7XG4gICAgI2VuZGlmXG5cbiAgICB2ZWMzIHZpZXdEaXJlY3Rpb24gPSBub3JtYWxpemUodldvcmxkUG9zaXRpb24gLSBjYW1lcmFQb3NpdGlvbik7XG4gICAgZmxvYXQgbkZyZXNuZWwgPSBmcmVzbmVsRnVuYyh2aWV3RGlyZWN0aW9uLCBub3JtYWwpICogZnJlc25lbDtcbiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KG1peChmaW5hbENvbG9yLCB2ZWMzKDEuMCksIG5GcmVzbmVsKSwgMS4wKTtcbiAgICAjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG4gICAgI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbiAgfWBcbik7XG4iXX0=
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZyYWN0aW9uLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL21lc2gtcmVmcmFjdGlvbi1tYXRlcmlhbC9tZXNoLXJlZnJhY3Rpb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCO0FBQ3JCLHVDQUF1QztBQUV2QyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixrRkFBa0Y7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxjQUFjLENBQ25EO0lBQ0MsTUFBTSxFQUFFLElBQUk7SUFDWixPQUFPLEVBQUUsQ0FBQztJQUNWLEdBQUcsRUFBRSxHQUFHO0lBQ1IsV0FBVyxFQUFFLElBQUk7SUFDakIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixPQUFPLEVBQUUsQ0FBQztJQUNWLDBDQUEwQztJQUMxQyxHQUFHLEVBQUUsSUFBSSxvQkFBb0IsRUFBRTtJQUMvQixLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUMvQixVQUFVLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO0lBQy9CLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtJQUN0Qyx1QkFBdUIsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Q0FDNUM7QUFDRCxRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0NOO0FBQ0gsUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBbUJOLGFBQWE7SUFDYix1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBOEZYLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7SUFDOUcsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQXV0aG9yOiBOOFByb2dyYW1zXG4vLyBodHRwczovL2dpdGh1Yi5jb20vTjhweXRob24vZGlhbW9uZHNcblxuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuLy8gQHRzLWV4cGVjdC1lcnJvcjogc2hhZGVySW50ZXJzZWN0RnVuY3Rpb24gaXMgYXZhaWxhYmxlIGJ1dCB0eXBlc2NyaXB0IGNvbXBsYWluc1xuaW1wb3J0IHsgTWVzaEJWSFVuaWZvcm1TdHJ1Y3QsIHNoYWRlckludGVyc2VjdEZ1bmN0aW9uLCBzaGFkZXJTdHJ1Y3RzIH0gZnJvbSAndGhyZWUtbWVzaC1idmgnO1xuaW1wb3J0IHsgc2hhZGVyTWF0ZXJpYWwgfSBmcm9tICcuLi9zaGFkZXItbWF0ZXJpYWwvc2hhZGVyLW1hdGVyaWFsJztcblxuZXhwb3J0IGNvbnN0IE1lc2hSZWZyYWN0aW9uTWF0ZXJpYWwgPSBzaGFkZXJNYXRlcmlhbChcblx0e1xuXHRcdGVudk1hcDogbnVsbCxcblx0XHRib3VuY2VzOiAzLFxuXHRcdGlvcjogMi40LFxuXHRcdGNvcnJlY3RNaXBzOiB0cnVlLFxuXHRcdGFiZXJyYXRpb25TdHJlbmd0aDogMC4wMSxcblx0XHRmcmVzbmVsOiAwLFxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3I6IHR5cGluZyBpcyBub3QgbWF0Y2hlZFxuXHRcdGJ2aDogbmV3IE1lc2hCVkhVbmlmb3JtU3RydWN0KCksXG5cdFx0Y29sb3I6IG5ldyBUSFJFRS5Db2xvcignd2hpdGUnKSxcblx0XHRyZXNvbHV0aW9uOiBuZXcgVEhSRUUuVmVjdG9yMigpLFxuXHRcdHZpZXdNYXRyaXhJbnZlcnNlOiBuZXcgVEhSRUUuTWF0cml4NCgpLFxuXHRcdHByb2plY3Rpb25NYXRyaXhJbnZlcnNlOiBuZXcgVEhSRUUuTWF0cml4NCgpLFxuXHR9LFxuXHQvKmdsc2wqLyBgXG4gIHVuaWZvcm0gbWF0NCB2aWV3TWF0cml4SW52ZXJzZTtcblxuICB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gIHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuICB2YXJ5aW5nIG1hdDQgdk1vZGVsTWF0cml4SW52ZXJzZTtcblxuICAjaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1JcbiAgICB2YXJ5aW5nIHZlYzMgdkluc3RhbmNlQ29sb3I7XG4gICNlbmRpZlxuXG4gIHZvaWQgbWFpbigpIHtcbiAgICB2ZWM0IHRyYW5zZm9ybWVkTm9ybWFsID0gdmVjNChub3JtYWwsIDAuMCk7XG4gICAgdmVjNCB0cmFuc2Zvcm1lZFBvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMS4wKTtcbiAgICAjaWZkZWYgVVNFX0lOU1RBTkNJTkdcbiAgICAgIHRyYW5zZm9ybWVkTm9ybWFsID0gaW5zdGFuY2VNYXRyaXggKiB0cmFuc2Zvcm1lZE5vcm1hbDtcbiAgICAgIHRyYW5zZm9ybWVkUG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIHRyYW5zZm9ybWVkUG9zaXRpb247XG4gICAgI2VuZGlmXG5cbiAgICAjaWZkZWYgVVNFX0lOU1RBTkNJTkdcbiAgICAgIHZNb2RlbE1hdHJpeEludmVyc2UgPSBpbnZlcnNlKG1vZGVsTWF0cml4ICogaW5zdGFuY2VNYXRyaXgpO1xuICAgICNlbHNlXG4gICAgICB2TW9kZWxNYXRyaXhJbnZlcnNlID0gaW52ZXJzZShtb2RlbE1hdHJpeCk7XG4gICAgI2VuZGlmXG5cbiAgICAjaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1JcbiAgICAgIHZJbnN0YW5jZUNvbG9yID0gaW5zdGFuY2VDb2xvci5yZ2I7XG4gICAgI2VuZGlmXG5cbiAgICB2V29ybGRQb3NpdGlvbiA9IChtb2RlbE1hdHJpeCAqIHRyYW5zZm9ybWVkUG9zaXRpb24pLnh5ejtcbiAgICB2Tm9ybWFsID0gbm9ybWFsaXplKCh2aWV3TWF0cml4SW52ZXJzZSAqIHZlYzQobm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWwueHl6LCAwLjApKS54eXopO1xuICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIHZpZXdNYXRyaXggKiBtb2RlbE1hdHJpeCAqIHRyYW5zZm9ybWVkUG9zaXRpb247XG4gIH1gLFxuXHQvKmdsc2wqLyBgXG4gICNkZWZpbmUgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuICBwcmVjaXNpb24gaGlnaHAgaXNhbXBsZXIyRDtcbiAgcHJlY2lzaW9uIGhpZ2hwIHVzYW1wbGVyMkQ7XG4gIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgdmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4gIHZhcnlpbmcgbWF0NCB2TW9kZWxNYXRyaXhJbnZlcnNlO1xuXG4gICNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUlxuICAgIHZhcnlpbmcgdmVjMyB2SW5zdGFuY2VDb2xvcjtcbiAgI2VuZGlmXG5cbiAgI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVNXG4gICAgdW5pZm9ybSBzYW1wbGVyQ3ViZSBlbnZNYXA7XG4gICNlbHNlXG4gICAgdW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuICAjZW5kaWZcblxuICB1bmlmb3JtIGZsb2F0IGJvdW5jZXM7XG4gICR7c2hhZGVyU3RydWN0c31cbiAgJHtzaGFkZXJJbnRlcnNlY3RGdW5jdGlvbn1cbiAgdW5pZm9ybSBCVkggYnZoO1xuICB1bmlmb3JtIGZsb2F0IGlvcjtcbiAgdW5pZm9ybSBib29sIGNvcnJlY3RNaXBzO1xuICB1bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjtcbiAgdW5pZm9ybSBmbG9hdCBmcmVzbmVsO1xuICB1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7XG4gIHVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4SW52ZXJzZTtcbiAgdW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXhJbnZlcnNlO1xuICB1bmlmb3JtIGZsb2F0IGFiZXJyYXRpb25TdHJlbmd0aDtcbiAgdW5pZm9ybSB2ZWMzIGNvbG9yO1xuXG4gIGZsb2F0IGZyZXNuZWxGdW5jKHZlYzMgdmlld0RpcmVjdGlvbiwgdmVjMyB3b3JsZE5vcm1hbCkge1xuICAgIHJldHVybiBwb3coIDEuMCArIGRvdCggdmlld0RpcmVjdGlvbiwgd29ybGROb3JtYWwpLCAxMC4wICk7XG4gIH1cblxuICB2ZWMzIHRvdGFsSW50ZXJuYWxSZWZsZWN0aW9uKHZlYzMgcm8sIHZlYzMgcmQsIHZlYzMgbm9ybWFsLCBmbG9hdCBpb3IsIG1hdDQgbW9kZWxNYXRyaXhJbnZlcnNlKSB7XG4gICAgdmVjMyByYXlPcmlnaW4gPSBybztcbiAgICB2ZWMzIHJheURpcmVjdGlvbiA9IHJkO1xuICAgIHJheURpcmVjdGlvbiA9IHJlZnJhY3QocmF5RGlyZWN0aW9uLCBub3JtYWwsIDEuMCAvIGlvcik7XG4gICAgcmF5T3JpZ2luID0gdldvcmxkUG9zaXRpb24gKyByYXlEaXJlY3Rpb24gKiAwLjAwMTtcbiAgICByYXlPcmlnaW4gPSAobW9kZWxNYXRyaXhJbnZlcnNlICogdmVjNChyYXlPcmlnaW4sIDEuMCkpLnh5ejtcbiAgICByYXlEaXJlY3Rpb24gPSBub3JtYWxpemUoKG1vZGVsTWF0cml4SW52ZXJzZSAqIHZlYzQocmF5RGlyZWN0aW9uLCAwLjApKS54eXopO1xuICAgIGZvcihmbG9hdCBpID0gMC4wOyBpIDwgYm91bmNlczsgaSsrKSB7XG4gICAgICB1dmVjNCBmYWNlSW5kaWNlcyA9IHV2ZWM0KCAwdSApO1xuICAgICAgdmVjMyBmYWNlTm9ybWFsID0gdmVjMyggMC4wLCAwLjAsIDEuMCApO1xuICAgICAgdmVjMyBiYXJ5Y29vcmQgPSB2ZWMzKCAwLjAgKTtcbiAgICAgIGZsb2F0IHNpZGUgPSAxLjA7XG4gICAgICBmbG9hdCBkaXN0ID0gMC4wO1xuICAgICAgYnZoSW50ZXJzZWN0Rmlyc3RIaXQoIGJ2aCwgcmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIGZhY2VJbmRpY2VzLCBmYWNlTm9ybWFsLCBiYXJ5Y29vcmQsIHNpZGUsIGRpc3QgKTtcbiAgICAgIHZlYzMgaGl0UG9zID0gcmF5T3JpZ2luICsgcmF5RGlyZWN0aW9uICogbWF4KGRpc3QgLSAwLjAwMSwgMC4wKTtcbiAgICAgIHZlYzMgdGVtcERpciA9IHJlZnJhY3QocmF5RGlyZWN0aW9uLCBmYWNlTm9ybWFsLCBpb3IpO1xuICAgICAgaWYgKGxlbmd0aCh0ZW1wRGlyKSAhPSAwLjApIHtcbiAgICAgICAgcmF5RGlyZWN0aW9uID0gdGVtcERpcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByYXlEaXJlY3Rpb24gPSByZWZsZWN0KHJheURpcmVjdGlvbiwgZmFjZU5vcm1hbCk7XG4gICAgICByYXlPcmlnaW4gPSBoaXRQb3MgKyByYXlEaXJlY3Rpb24gKiAwLjAxO1xuICAgIH1cbiAgICByYXlEaXJlY3Rpb24gPSBub3JtYWxpemUoKG1vZGVsTWF0cml4ICogdmVjNChyYXlEaXJlY3Rpb24sIDAuMCkpLnh5eik7XG4gICAgcmV0dXJuIHJheURpcmVjdGlvbjtcbiAgfVxuXG4gICNpbmNsdWRlIDxjb21tb24+XG4gICNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG5cbiAgI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVNXG4gICAgdmVjNCB0ZXh0dXJlR3JhZGllbnQoc2FtcGxlckN1YmUgZW52TWFwLCB2ZWMzIHJheURpcmVjdGlvbiwgdmVjMyBkaXJlY3Rpb25DYW1QZXJmZWN0KSB7XG4gICAgICByZXR1cm4gdGV4dHVyZUdyYWQoZW52TWFwLCByYXlEaXJlY3Rpb24sIGRGZHgoY29ycmVjdE1pcHMgPyBkaXJlY3Rpb25DYW1QZXJmZWN0OiByYXlEaXJlY3Rpb24pLCBkRmR5KGNvcnJlY3RNaXBzID8gZGlyZWN0aW9uQ2FtUGVyZmVjdDogcmF5RGlyZWN0aW9uKSk7XG4gICAgfVxuICAjZWxzZVxuICAgIHZlYzQgdGV4dHVyZUdyYWRpZW50KHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgcmF5RGlyZWN0aW9uLCB2ZWMzIGRpcmVjdGlvbkNhbVBlcmZlY3QpIHtcbiAgICAgIHZlYzIgdXZ2ID0gZXF1aXJlY3RVdiggcmF5RGlyZWN0aW9uICk7XG4gICAgICB2ZWMyIHNtb290aFV2ID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uQ2FtUGVyZmVjdCApO1xuICAgICAgcmV0dXJuIHRleHR1cmVHcmFkKGVudk1hcCwgdXZ2LCBkRmR4KGNvcnJlY3RNaXBzID8gc21vb3RoVXYgOiB1dnYpLCBkRmR5KGNvcnJlY3RNaXBzID8gc21vb3RoVXYgOiB1dnYpKTtcbiAgICB9XG4gICNlbmRpZlxuXG4gIHZvaWQgbWFpbigpIHtcbiAgICB2ZWMyIHV2ID0gZ2xfRnJhZ0Nvb3JkLnh5IC8gcmVzb2x1dGlvbjtcbiAgICB2ZWMzIGRpcmVjdGlvbkNhbVBlcmZlY3QgPSAocHJvamVjdGlvbk1hdHJpeEludmVyc2UgKiB2ZWM0KHV2ICogMi4wIC0gMS4wLCAwLjAsIDEuMCkpLnh5ejtcbiAgICBkaXJlY3Rpb25DYW1QZXJmZWN0ID0gKHZpZXdNYXRyaXhJbnZlcnNlICogdmVjNChkaXJlY3Rpb25DYW1QZXJmZWN0LCAwLjApKS54eXo7XG4gICAgZGlyZWN0aW9uQ2FtUGVyZmVjdCA9IG5vcm1hbGl6ZShkaXJlY3Rpb25DYW1QZXJmZWN0KTtcbiAgICB2ZWMzIG5vcm1hbCA9IHZOb3JtYWw7XG4gICAgdmVjMyByYXlPcmlnaW4gPSBjYW1lcmFQb3NpdGlvbjtcbiAgICB2ZWMzIHJheURpcmVjdGlvbiA9IG5vcm1hbGl6ZSh2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uKTtcbiAgICB2ZWMzIGZpbmFsQ29sb3I7XG4gICAgI2lmZGVmIENIUk9NQVRJQ19BQkVSUkFUSU9OU1xuICAgICAgdmVjMyByYXlEaXJlY3Rpb25HID0gdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ocmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIG5vcm1hbCwgbWF4KGlvciwgMS4wKSwgdk1vZGVsTWF0cml4SW52ZXJzZSk7XG4gICAgICAjaWZkZWYgRkFTVF9DSFJPTUFcbiAgICAgICAgdmVjMyByYXlEaXJlY3Rpb25SID0gbm9ybWFsaXplKHJheURpcmVjdGlvbkcgKyAxLjAgKiB2ZWMzKGFiZXJyYXRpb25TdHJlbmd0aCAvIDIuMCkpO1xuICAgICAgICB2ZWMzIHJheURpcmVjdGlvbkIgPSBub3JtYWxpemUocmF5RGlyZWN0aW9uRyAtIDEuMCAqIHZlYzMoYWJlcnJhdGlvblN0cmVuZ3RoIC8gMi4wKSk7XG4gICAgICAjZWxzZVxuICAgICAgICB2ZWMzIHJheURpcmVjdGlvblIgPSB0b3RhbEludGVybmFsUmVmbGVjdGlvbihyYXlPcmlnaW4sIHJheURpcmVjdGlvbiwgbm9ybWFsLCBtYXgoaW9yICogKDEuMCAtIGFiZXJyYXRpb25TdHJlbmd0aCksIDEuMCksIHZNb2RlbE1hdHJpeEludmVyc2UpO1xuICAgICAgICB2ZWMzIHJheURpcmVjdGlvbkIgPSB0b3RhbEludGVybmFsUmVmbGVjdGlvbihyYXlPcmlnaW4sIHJheURpcmVjdGlvbiwgbm9ybWFsLCBtYXgoaW9yICogKDEuMCArIGFiZXJyYXRpb25TdHJlbmd0aCksIDEuMCksIHZNb2RlbE1hdHJpeEludmVyc2UpO1xuICAgICAgI2VuZGlmXG4gICAgICBmbG9hdCBmaW5hbENvbG9yUiA9IHRleHR1cmVHcmFkaWVudChlbnZNYXAsIHJheURpcmVjdGlvblIsIGRpcmVjdGlvbkNhbVBlcmZlY3QpLnI7XG4gICAgICBmbG9hdCBmaW5hbENvbG9yRyA9IHRleHR1cmVHcmFkaWVudChlbnZNYXAsIHJheURpcmVjdGlvbkcsIGRpcmVjdGlvbkNhbVBlcmZlY3QpLmc7XG4gICAgICBmbG9hdCBmaW5hbENvbG9yQiA9IHRleHR1cmVHcmFkaWVudChlbnZNYXAsIHJheURpcmVjdGlvbkIsIGRpcmVjdGlvbkNhbVBlcmZlY3QpLmI7XG4gICAgICBmaW5hbENvbG9yID0gdmVjMyhmaW5hbENvbG9yUiwgZmluYWxDb2xvckcsIGZpbmFsQ29sb3JCKTtcbiAgICAjZWxzZVxuICAgICAgcmF5RGlyZWN0aW9uID0gdG90YWxJbnRlcm5hbFJlZmxlY3Rpb24ocmF5T3JpZ2luLCByYXlEaXJlY3Rpb24sIG5vcm1hbCwgbWF4KGlvciwgMS4wKSwgdk1vZGVsTWF0cml4SW52ZXJzZSk7XG4gICAgICBmaW5hbENvbG9yID0gdGV4dHVyZUdyYWRpZW50KGVudk1hcCwgcmF5RGlyZWN0aW9uLCBkaXJlY3Rpb25DYW1QZXJmZWN0KS5yZ2I7XG4gICAgI2VuZGlmXG5cbiAgICBmaW5hbENvbG9yICo9IGNvbG9yO1xuICAgICNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUlxuICAgICAgZmluYWxDb2xvciAqPSB2SW5zdGFuY2VDb2xvcjtcbiAgICAjZW5kaWZcblxuICAgIHZlYzMgdmlld0RpcmVjdGlvbiA9IG5vcm1hbGl6ZSh2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uKTtcbiAgICBmbG9hdCBuRnJlc25lbCA9IGZyZXNuZWxGdW5jKHZpZXdEaXJlY3Rpb24sIG5vcm1hbCkgKiBmcmVzbmVsO1xuICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobWl4KGZpbmFsQ29sb3IsIHZlYzMoMS4wKSwgbkZyZXNuZWwpLCAxLjApO1xuICAgICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cbiAgICAjaW5jbHVkZSA8JHtwYXJzZUludChUSFJFRS5SRVZJU0lPTi5yZXBsYWNlKC9cXEQrL2csICcnKSkgPj0gMTU0ID8gJ2NvbG9yc3BhY2VfZnJhZ21lbnQnIDogJ2VuY29kaW5nc19mcmFnbWVudCd9PlxuICB9YCxcbik7XG4iXX0=
@@ -15,7 +15,7 @@ export class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
15
15
  thicknessMap: { value: null },
16
16
  attenuationDistance: { value: Infinity },
17
17
  attenuationColor: { value: new THREE.Color('white') },
18
- anisotropy: { value: 0.1 },
18
+ anisotropicBlur: { value: 0.1 },
19
19
  time: { value: 0 },
20
20
  distortion: { value: 0.0 },
21
21
  distortionScale: { value: 0.5 },
@@ -38,7 +38,7 @@ export class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
38
38
  shader.fragmentShader =
39
39
  /*glsl*/ `
40
40
  uniform float chromaticAberration;
41
- uniform float anisotropy;
41
+ uniform float anisotropicBlur;
42
42
  uniform float time;
43
43
  uniform float distortion;
44
44
  uniform float distortionScale;
@@ -229,7 +229,7 @@ export class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
229
229
  vec3 transmission = vec3(0.0);
230
230
  float transmissionR, transmissionB, transmissionG;
231
231
  float randomCoords = rand();
232
- float thickness_smear = thickness * max(pow(roughnessFactor, 0.33), anisotropy);
232
+ float thickness_smear = thickness * max(pow(roughnessFactor, 0.33), anisotropicBlur);
233
233
  vec3 distortionNormal = vec3(0.0);
234
234
  vec3 temporalOffset = vec3(time, -time, -time) * temporalDistortion;
235
235
  if (distortion > 0.0) {
@@ -265,4 +265,4 @@ export class MeshTransmissionMaterial extends THREE.MeshPhysicalMaterial {
265
265
  }));
266
266
  }
267
267
  }
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNL0IsTUFBTSxPQUFPLHdCQUF5QixTQUFRLEtBQUssQ0FBQyxvQkFBb0I7SUFtQnBFLFlBQVksT0FBTyxHQUFHLENBQUMsRUFBRSxtQkFBbUIsR0FBRyxLQUFLO1FBQ2hELEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNaLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUNwQywwRUFBMEU7WUFDMUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMxQiwwREFBMEQ7WUFDMUQsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMzQixlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLG9HQUFvRztZQUNwRyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ3ZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDdkIsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUM3QixtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDeEMsZ0JBQWdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JELFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDMUIsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNsQixVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQzFCLGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDL0Isa0JBQWtCLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7U0FDMUIsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxNQUE2RCxFQUFFLEVBQUU7WUFDckYsTUFBTSxDQUFDLFFBQVEsR0FBRztnQkFDZCxHQUFHLE1BQU0sQ0FBQyxRQUFRO2dCQUNsQixHQUFHLElBQUksQ0FBQyxRQUFRO2FBQ25CLENBQUM7WUFFRixzREFBc0Q7WUFDdEQsSUFBSSxtQkFBbUI7Z0JBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDNUQsa0ZBQWtGO1lBQ2xGLHlDQUF5Qzs7Z0JBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFN0MsT0FBTztZQUNQLE1BQU0sQ0FBQyxjQUFjO2dCQUNqQixRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUEyRmYsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBRXZCLHNCQUFzQjtZQUN0QixNQUFNLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUNqRCx1Q0FBdUM7WUFDdkMsUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQTRFUixDQUNKLENBQUM7WUFFRixpQkFBaUI7WUFDakIsTUFBTSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDakQsa0NBQWtDO1lBQ2xDLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBMEJTLE9BQU87Ozs7K0lBSXNHLE9BQU87Ozs7O3NJQUtoQixPQUFPLDBFQUEwRSxPQUFPOzs7OzsySUFLbkYsT0FBTyx5RUFBeUUsT0FBTzs7Ozs7OzswQkFPeE0sT0FBTzt1RkFDc0QsQ0FDMUUsQ0FBQztRQUNOLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3hDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtZQUM5QixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFrQyxDQUFDLENBQUMsS0FBSztZQUNsRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFrQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUM1RSxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuaW50ZXJmYWNlIFVuaWZvcm08VD4ge1xuICAgIHZhbHVlOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgTWVzaFRyYW5zbWlzc2lvbk1hdGVyaWFsIGV4dGVuZHMgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwge1xuICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIGNocm9tYXRpY0FiZXJyYXRpb246IFVuaWZvcm08bnVtYmVyPjtcbiAgICAgICAgdHJhbnNtaXNzaW9uOiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgIHRyYW5zbWlzc2lvbk1hcDogVW5pZm9ybTxUSFJFRS5UZXh0dXJlIHwgbnVsbD47XG4gICAgICAgIF90cmFuc21pc3Npb246IFVuaWZvcm08bnVtYmVyPjtcbiAgICAgICAgdGhpY2tuZXNzOiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgIHJvdWdobmVzczogVW5pZm9ybTxudW1iZXI+O1xuICAgICAgICB0aGlja25lc3NNYXA6IFVuaWZvcm08VEhSRUUuVGV4dHVyZSB8IG51bGw+O1xuICAgICAgICBhdHRlbnVhdGlvbkRpc3RhbmNlOiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgIGF0dGVudWF0aW9uQ29sb3I6IFVuaWZvcm08VEhSRUUuQ29sb3I+O1xuICAgICAgICBhbmlzb3Ryb3B5OiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgIHRpbWU6IFVuaWZvcm08bnVtYmVyPjtcbiAgICAgICAgZGlzdG9ydGlvbjogVW5pZm9ybTxudW1iZXI+O1xuICAgICAgICBkaXN0b3J0aW9uU2NhbGU6IFVuaWZvcm08bnVtYmVyPjtcbiAgICAgICAgdGVtcG9yYWxEaXN0b3J0aW9uOiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgIGJ1ZmZlcjogVW5pZm9ybTxUSFJFRS5UZXh0dXJlIHwgbnVsbD47XG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHNhbXBsZXMgPSA2LCB0cmFuc21pc3Npb25TYW1wbGVyID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLnVuaWZvcm1zID0ge1xuICAgICAgICAgICAgY2hyb21hdGljQWJlcnJhdGlvbjogeyB2YWx1ZTogMC4wNSB9LFxuICAgICAgICAgICAgLy8gVHJhbnNtaXNzaW9uIG11c3QgYWx3YXlzIGJlIDAsIHVubGVzcyB0cmFuc21pc3Npb25TYW1wbGVyIGlzIGJlaW5nIHVzZWRcbiAgICAgICAgICAgIHRyYW5zbWlzc2lvbjogeyB2YWx1ZTogMCB9LFxuICAgICAgICAgICAgLy8gSW5zdGVhZCBhIHdvcmthcm91bmQgaXMgdXNlZCwgc2VlIGJlbG93IGZvciByZWFzb25zIHdoeVxuICAgICAgICAgICAgX3RyYW5zbWlzc2lvbjogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgdHJhbnNtaXNzaW9uTWFwOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgICAgICAgICAvLyBSb3VnaG5lc3MgaXMgMSBpbiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbCBidXQgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIGluIGEgdHJhbnNtaXNzaW9uIG1hdGVyaWFsXG4gICAgICAgICAgICByb3VnaG5lc3M6IHsgdmFsdWU6IDAgfSxcbiAgICAgICAgICAgIHRoaWNrbmVzczogeyB2YWx1ZTogMCB9LFxuICAgICAgICAgICAgdGhpY2tuZXNzTWFwOiB7IHZhbHVlOiBudWxsIH0sXG4gICAgICAgICAgICBhdHRlbnVhdGlvbkRpc3RhbmNlOiB7IHZhbHVlOiBJbmZpbml0eSB9LFxuICAgICAgICAgICAgYXR0ZW51YXRpb25Db2xvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKCd3aGl0ZScpIH0sXG4gICAgICAgICAgICBhbmlzb3Ryb3B5OiB7IHZhbHVlOiAwLjEgfSxcbiAgICAgICAgICAgIHRpbWU6IHsgdmFsdWU6IDAgfSxcbiAgICAgICAgICAgIGRpc3RvcnRpb246IHsgdmFsdWU6IDAuMCB9LFxuICAgICAgICAgICAgZGlzdG9ydGlvblNjYWxlOiB7IHZhbHVlOiAwLjUgfSxcbiAgICAgICAgICAgIHRlbXBvcmFsRGlzdG9ydGlvbjogeyB2YWx1ZTogMC4wIH0sXG4gICAgICAgICAgICBidWZmZXI6IHsgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm9uQmVmb3JlQ29tcGlsZSA9IChzaGFkZXI6IFRIUkVFLlNoYWRlciAmIHsgZGVmaW5lczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgICAgICBzaGFkZXIudW5pZm9ybXMgPSB7XG4gICAgICAgICAgICAgICAgLi4uc2hhZGVyLnVuaWZvcm1zLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMudW5pZm9ybXMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgdHJhbnNtaXNzaW9uIHNhbXBsZXIgaXMgYWN0aXZlIGluamVjdCBhIGZsYWdcbiAgICAgICAgICAgIGlmICh0cmFuc21pc3Npb25TYW1wbGVyKSBzaGFkZXIuZGVmaW5lc1snVVNFX1NBTVBMRVInXSA9ICcnO1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGRvIHVzZSB1c2UgLnRyYW5zbWlzc2lvbiBhbmQgbXVzdCB0aGVyZWZvcmUgZm9yY2UgVVNFX1RSQU5TTUlTU0lPTlxuICAgICAgICAgICAgLy8gYmVjYXVzZSB0aHJlZWpzIHdvbid0IGluamVjdCBpdCBmb3IgdXNcbiAgICAgICAgICAgIGVsc2Ugc2hhZGVyLmRlZmluZXNbJ1VTRV9UUkFOU01JU1NJT04nXSA9ICcnO1xuXG4gICAgICAgICAgICAvLyBIZWFkXG4gICAgICAgICAgICBzaGFkZXIuZnJhZ21lbnRTaGFkZXIgPVxuICAgICAgICAgICAgICAgIC8qZ2xzbCovIGBcbiAgICAgIHVuaWZvcm0gZmxvYXQgY2hyb21hdGljQWJlcnJhdGlvbjtcbiAgICAgIHVuaWZvcm0gZmxvYXQgYW5pc290cm9weTtcbiAgICAgIHVuaWZvcm0gZmxvYXQgdGltZTtcbiAgICAgIHVuaWZvcm0gZmxvYXQgZGlzdG9ydGlvbjtcbiAgICAgIHVuaWZvcm0gZmxvYXQgZGlzdG9ydGlvblNjYWxlO1xuICAgICAgdW5pZm9ybSBmbG9hdCB0ZW1wb3JhbERpc3RvcnRpb247XG4gICAgICB1bmlmb3JtIHNhbXBsZXIyRCBidWZmZXI7XG5cbiAgICAgIHZlYzMgcmFuZG9tMyh2ZWMzIGMpIHtcbiAgICAgICAgZmxvYXQgaiA9IDQwOTYuMCpzaW4oZG90KGMsdmVjMygxNy4wLCA1OS40LCAxNS4wKSkpO1xuICAgICAgICB2ZWMzIHI7XG4gICAgICAgIHIueiA9IGZyYWN0KDUxMi4wKmopO1xuICAgICAgICBqICo9IC4xMjU7XG4gICAgICAgIHIueCA9IGZyYWN0KDUxMi4wKmopO1xuICAgICAgICBqICo9IC4xMjU7XG4gICAgICAgIHIueSA9IGZyYWN0KDUxMi4wKmopO1xuICAgICAgICByZXR1cm4gci0wLjU7XG4gICAgICB9XG5cbiAgICAgIGZsb2F0IHNlZWQgPSAwLjA7XG4gICAgICB1aW50IGhhc2goIHVpbnQgeCApIHtcbiAgICAgICAgeCArPSAoIHggPDwgMTB1ICk7XG4gICAgICAgIHggXj0gKCB4ID4+ICA2dSApO1xuICAgICAgICB4ICs9ICggeCA8PCAgM3UgKTtcbiAgICAgICAgeCBePSAoIHggPj4gMTF1ICk7XG4gICAgICAgIHggKz0gKCB4IDw8IDE1dSApO1xuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cblxuICAgICAgLy8gQ29tcG91bmQgdmVyc2lvbnMgb2YgdGhlIGhhc2hpbmcgYWxnb3JpdGhtIEkgd2hpcHBlZCB0b2dldGhlci5cbiAgICAgIHVpbnQgaGFzaCggdXZlYzIgdiApIHsgcmV0dXJuIGhhc2goIHYueCBeIGhhc2godi55KSAgICAgICAgICAgICAgICAgICAgICAgICApOyB9XG4gICAgICB1aW50IGhhc2goIHV2ZWMzIHYgKSB7IHJldHVybiBoYXNoKCB2LnggXiBoYXNoKHYueSkgXiBoYXNoKHYueikgICAgICAgICAgICAgKTsgfVxuICAgICAgdWludCBoYXNoKCB1dmVjNCB2ICkgeyByZXR1cm4gaGFzaCggdi54IF4gaGFzaCh2LnkpIF4gaGFzaCh2LnopIF4gaGFzaCh2LncpICk7IH1cblxuICAgICAgLy8gQ29uc3RydWN0IGEgZmxvYXQgd2l0aCBoYWxmLW9wZW4gcmFuZ2UgWzA6MV0gdXNpbmcgbG93IDIzIGJpdHMuXG4gICAgICAvLyBBbGwgemVyb2VzIHlpZWxkcyAwLjAsIGFsbCBvbmVzIHlpZWxkcyB0aGUgbmV4dCBzbWFsbGVzdCByZXByZXNlbnRhYmxlIHZhbHVlIGJlbG93IDEuMC5cbiAgICAgIGZsb2F0IGZsb2F0Q29uc3RydWN0KCB1aW50IG0gKSB7XG4gICAgICAgIGNvbnN0IHVpbnQgaWVlZU1hbnRpc3NhID0gMHgwMDdGRkZGRnU7IC8vIGJpbmFyeTMyIG1hbnRpc3NhIGJpdG1hc2tcbiAgICAgICAgY29uc3QgdWludCBpZWVlT25lICAgICAgPSAweDNGODAwMDAwdTsgLy8gMS4wIGluIElFRUUgYmluYXJ5MzJcbiAgICAgICAgbSAmPSBpZWVlTWFudGlzc2E7ICAgICAgICAgICAgICAgICAgICAgLy8gS2VlcCBvbmx5IG1hbnRpc3NhIGJpdHMgKGZyYWN0aW9uYWwgcGFydClcbiAgICAgICAgbSB8PSBpZWVlT25lOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGZyYWN0aW9uYWwgcGFydCB0byAxLjBcbiAgICAgICAgZmxvYXQgIGYgPSB1aW50Qml0c1RvRmxvYXQoIG0gKTsgICAgICAgLy8gUmFuZ2UgWzE6Ml1cbiAgICAgICAgcmV0dXJuIGYgLSAxLjA7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmFuZ2UgWzA6MV1cbiAgICAgIH1cblxuICAgICAgLy8gUHNldWRvLXJhbmRvbSB2YWx1ZSBpbiBoYWxmLW9wZW4gcmFuZ2UgWzA6MV0uXG4gICAgICBmbG9hdCByYW5kb20oIGZsb2F0IHggKSB7IHJldHVybiBmbG9hdENvbnN0cnVjdChoYXNoKGZsb2F0Qml0c1RvVWludCh4KSkpOyB9XG4gICAgICBmbG9hdCByYW5kb20oIHZlYzIgIHYgKSB7IHJldHVybiBmbG9hdENvbnN0cnVjdChoYXNoKGZsb2F0Qml0c1RvVWludCh2KSkpOyB9XG4gICAgICBmbG9hdCByYW5kb20oIHZlYzMgIHYgKSB7IHJldHVybiBmbG9hdENvbnN0cnVjdChoYXNoKGZsb2F0Qml0c1RvVWludCh2KSkpOyB9XG4gICAgICBmbG9hdCByYW5kb20oIHZlYzQgIHYgKSB7IHJldHVybiBmbG9hdENvbnN0cnVjdChoYXNoKGZsb2F0Qml0c1RvVWludCh2KSkpOyB9XG5cbiAgICAgIGZsb2F0IHJhbmQoKSB7XG4gICAgICAgIGZsb2F0IHJlc3VsdCA9IHJhbmRvbSh2ZWMzKGdsX0ZyYWdDb29yZC54eSwgc2VlZCkpO1xuICAgICAgICBzZWVkICs9IDEuMDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmxvYXQgRjMgPSAgMC4zMzMzMzMzO1xuICAgICAgY29uc3QgZmxvYXQgRzMgPSAgMC4xNjY2NjY3O1xuXG4gICAgICBmbG9hdCBzbm9pc2UodmVjMyBwKSB7XG4gICAgICAgIHZlYzMgcyA9IGZsb29yKHAgKyBkb3QocCwgdmVjMyhGMykpKTtcbiAgICAgICAgdmVjMyB4ID0gcCAtIHMgKyBkb3QocywgdmVjMyhHMykpO1xuICAgICAgICB2ZWMzIGUgPSBzdGVwKHZlYzMoMC4wKSwgeCAtIHgueXp4KTtcbiAgICAgICAgdmVjMyBpMSA9IGUqKDEuMCAtIGUuenh5KTtcbiAgICAgICAgdmVjMyBpMiA9IDEuMCAtIGUuenh5KigxLjAgLSBlKTtcbiAgICAgICAgdmVjMyB4MSA9IHggLSBpMSArIEczO1xuICAgICAgICB2ZWMzIHgyID0geCAtIGkyICsgMi4wKkczO1xuICAgICAgICB2ZWMzIHgzID0geCAtIDEuMCArIDMuMCpHMztcbiAgICAgICAgdmVjNCB3LCBkO1xuICAgICAgICB3LnggPSBkb3QoeCwgeCk7XG4gICAgICAgIHcueSA9IGRvdCh4MSwgeDEpO1xuICAgICAgICB3LnogPSBkb3QoeDIsIHgyKTtcbiAgICAgICAgdy53ID0gZG90KHgzLCB4Myk7XG4gICAgICAgIHcgPSBtYXgoMC42IC0gdywgMC4wKTtcbiAgICAgICAgZC54ID0gZG90KHJhbmRvbTMocyksIHgpO1xuICAgICAgICBkLnkgPSBkb3QocmFuZG9tMyhzICsgaTEpLCB4MSk7XG4gICAgICAgIGQueiA9IGRvdChyYW5kb20zKHMgKyBpMiksIHgyKTtcbiAgICAgICAgZC53ID0gZG90KHJhbmRvbTMocyArIDEuMCksIHgzKTtcbiAgICAgICAgdyAqPSB3O1xuICAgICAgICB3ICo9IHc7XG4gICAgICAgIGQgKj0gdztcbiAgICAgICAgcmV0dXJuIGRvdChkLCB2ZWM0KDUyLjApKTtcbiAgICAgIH1cblxuICAgICAgZmxvYXQgc25vaXNlRnJhY3RhbCh2ZWMzIG0pIHtcbiAgICAgICAgcmV0dXJuIDAuNTMzMzMzMyogc25vaXNlKG0pXG4gICAgICAgICAgICAgICswLjI2NjY2NjcqIHNub2lzZSgyLjAqbSlcbiAgICAgICAgICAgICAgKzAuMTMzMzMzMyogc25vaXNlKDQuMCptKVxuICAgICAgICAgICAgICArMC4wNjY2NjY3KiBzbm9pc2UoOC4wKm0pO1xuICAgICAgfVxcbmAgKyBzaGFkZXIuZnJhZ21lbnRTaGFkZXI7XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSB0cmFuc21pc3Npb25cbiAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICcjaW5jbHVkZSA8dHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ+JyxcbiAgICAgICAgICAgICAgICAvKmdsc2wqLyBgXG4gICAgICAgICNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG4gICAgICAgICAgLy8gVHJhbnNtaXNzaW9uIGNvZGUgaXMgYmFzZWQgb24gZ2xURi1TYW1wbGVyLVZpZXdlclxuICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvZ2xURi1TYW1wbGUtVmlld2VyXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBfdHJhbnNtaXNzaW9uO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgdGhpY2tuZXNzO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZTtcbiAgICAgICAgICB1bmlmb3JtIHZlYzMgYXR0ZW51YXRpb25Db2xvcjtcbiAgICAgICAgICAjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uTWFwO1xuICAgICAgICAgICNlbmRpZlxuICAgICAgICAgICNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG4gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0aGlja25lc3NNYXA7XG4gICAgICAgICAgI2VuZGlmXG4gICAgICAgICAgdW5pZm9ybSB2ZWMyIHRyYW5zbWlzc2lvblNhbXBsZXJTaXplO1xuICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvblNhbXBsZXJNYXA7XG4gICAgICAgICAgdW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4O1xuICAgICAgICAgIHVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4O1xuICAgICAgICAgIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgICAgICAgICB2ZWMzIGdldFZvbHVtZVRyYW5zbWlzc2lvblJheSggY29uc3QgaW4gdmVjMyBuLCBjb25zdCBpbiB2ZWMzIHYsIGNvbnN0IGluIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgaW4gZmxvYXQgaW9yLCBjb25zdCBpbiBtYXQ0IG1vZGVsTWF0cml4ICkge1xuICAgICAgICAgICAgLy8gRGlyZWN0aW9uIG9mIHJlZnJhY3RlZCBsaWdodC5cbiAgICAgICAgICAgIHZlYzMgcmVmcmFjdGlvblZlY3RvciA9IHJlZnJhY3QoIC0gdiwgbm9ybWFsaXplKCBuICksIDEuMCAvIGlvciApO1xuICAgICAgICAgICAgLy8gQ29tcHV0ZSByb3RhdGlvbi1pbmRlcGVuZGFudCBzY2FsaW5nIG9mIHRoZSBtb2RlbCBtYXRyaXguXG4gICAgICAgICAgICB2ZWMzIG1vZGVsU2NhbGU7XG4gICAgICAgICAgICBtb2RlbFNjYWxlLnggPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueHl6ICkgKTtcbiAgICAgICAgICAgIG1vZGVsU2NhbGUueSA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDEgXS54eXogKSApO1xuICAgICAgICAgICAgbW9kZWxTY2FsZS56ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMiBdLnh5eiApICk7XG4gICAgICAgICAgICAvLyBUaGUgdGhpY2tuZXNzIGlzIHNwZWNpZmllZCBpbiBsb2NhbCBzcGFjZS5cbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemUoIHJlZnJhY3Rpb25WZWN0b3IgKSAqIHRoaWNrbmVzcyAqIG1vZGVsU2NhbGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsb2F0IGFwcGx5SW9yVG9Sb3VnaG5lc3MoIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgaW9yICkge1xuICAgICAgICAgICAgLy8gU2NhbGUgcm91Z2huZXNzIHdpdGggSU9SIHNvIHRoYXQgYW4gSU9SIG9mIDEuMCByZXN1bHRzIGluIG5vIG1pY3JvZmFjZXQgcmVmcmFjdGlvbiBhbmRcbiAgICAgICAgICAgIC8vIGFuIElPUiBvZiAxLjUgcmVzdWx0cyBpbiB0aGUgZGVmYXVsdCBhbW91bnQgb2YgbWljcm9mYWNldCByZWZyYWN0aW9uLlxuICAgICAgICAgICAgcmV0dXJuIHJvdWdobmVzcyAqIGNsYW1wKCBpb3IgKiAyLjAgLSAyLjAsIDAuMCwgMS4wICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZlYzQgZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKCBjb25zdCBpbiB2ZWMyIGZyYWdDb29yZCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBmbG9hdCBpb3IgKSB7XG4gICAgICAgICAgICBmbG9hdCBmcmFtZWJ1ZmZlckxvZCA9IGxvZzIoIHRyYW5zbWlzc2lvblNhbXBsZXJTaXplLnggKSAqIGFwcGx5SW9yVG9Sb3VnaG5lc3MoIHJvdWdobmVzcywgaW9yICk7XG4gICAgICAgICAgICAjaWZkZWYgVVNFX1NBTVBMRVJcbiAgICAgICAgICAgICAgI2lmZGVmIHRleHR1cmUyRExvZEVYVFxuICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlMkRMb2RFWFQodHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCk7XG4gICAgICAgICAgICAgICNlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmUyRCh0cmFuc21pc3Npb25TYW1wbGVyTWFwLCBmcmFnQ29vcmQueHksIGZyYW1lYnVmZmVyTG9kKTtcbiAgICAgICAgICAgICAgI2VuZGlmXG4gICAgICAgICAgICAjZWxzZVxuICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTJEKGJ1ZmZlciwgZnJhZ0Nvb3JkLnh5KTtcbiAgICAgICAgICAgICNlbmRpZlxuICAgICAgICAgIH1cbiAgICAgICAgICB2ZWMzIGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24oIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIGZsb2F0IHRyYW5zbWlzc2lvbkRpc3RhbmNlLCBjb25zdCBpbiB2ZWMzIGF0dGVudWF0aW9uQ29sb3IsIGNvbnN0IGluIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2UgKSB7XG4gICAgICAgICAgICBpZiAoIGlzaW5mKCBhdHRlbnVhdGlvbkRpc3RhbmNlICkgKSB7XG4gICAgICAgICAgICAgIC8vIEF0dGVudWF0aW9uIGRpc3RhbmNlIGlzICviiJ4sIGkuZS4gdGhlIHRyYW5zbWl0dGVkIGNvbG9yIGlzIG5vdCBhdHRlbnVhdGVkIGF0IGFsbC5cbiAgICAgICAgICAgICAgcmV0dXJuIHJhZGlhbmNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBsaWdodCBhdHRlbnVhdGlvbiB1c2luZyBCZWVyJ3MgbGF3LlxuICAgICAgICAgICAgICB2ZWMzIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgPSAtbG9nKCBhdHRlbnVhdGlvbkNvbG9yICkgLyBhdHRlbnVhdGlvbkRpc3RhbmNlO1xuICAgICAgICAgICAgICB2ZWMzIHRyYW5zbWl0dGFuY2UgPSBleHAoIC0gYXR0ZW51YXRpb25Db2VmZmljaWVudCAqIHRyYW5zbWlzc2lvbkRpc3RhbmNlICk7IC8vIEJlZXIncyBsYXdcbiAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbWl0dGFuY2UgKiByYWRpYW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdmVjNCBnZXRJQkxWb2x1bWVSZWZyYWN0aW9uKCBjb25zdCBpbiB2ZWMzIG4sIGNvbnN0IGluIHZlYzMgdiwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiB2ZWMzIGRpZmZ1c2VDb2xvcixcbiAgICAgICAgICAgIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc3BlY3VsYXJGOTAsIGNvbnN0IGluIHZlYzMgcG9zaXRpb24sIGNvbnN0IGluIG1hdDQgbW9kZWxNYXRyaXgsXG4gICAgICAgICAgICBjb25zdCBpbiBtYXQ0IHZpZXdNYXRyaXgsIGNvbnN0IGluIG1hdDQgcHJvak1hdHJpeCwgY29uc3QgaW4gZmxvYXQgaW9yLCBjb25zdCBpbiBmbG9hdCB0aGlja25lc3MsXG4gICAgICAgICAgICBjb25zdCBpbiB2ZWMzIGF0dGVudWF0aW9uQ29sb3IsIGNvbnN0IGluIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2UgKSB7XG4gICAgICAgICAgICB2ZWMzIHRyYW5zbWlzc2lvblJheSA9IGdldFZvbHVtZVRyYW5zbWlzc2lvblJheSggbiwgdiwgdGhpY2tuZXNzLCBpb3IsIG1vZGVsTWF0cml4ICk7XG4gICAgICAgICAgICB2ZWMzIHJlZnJhY3RlZFJheUV4aXQgPSBwb3NpdGlvbiArIHRyYW5zbWlzc2lvblJheTtcbiAgICAgICAgICAgIC8vIFByb2plY3QgcmVmcmFjdGVkIHZlY3RvciBvbiB0aGUgZnJhbWVidWZmZXIsIHdoaWxlIG1hcHBpbmcgdG8gbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMuXG4gICAgICAgICAgICB2ZWM0IG5kY1BvcyA9IHByb2pNYXRyaXggKiB2aWV3TWF0cml4ICogdmVjNCggcmVmcmFjdGVkUmF5RXhpdCwgMS4wICk7XG4gICAgICAgICAgICB2ZWMyIHJlZnJhY3Rpb25Db29yZHMgPSBuZGNQb3MueHkgLyBuZGNQb3MudztcbiAgICAgICAgICAgIHJlZnJhY3Rpb25Db29yZHMgKz0gMS4wO1xuICAgICAgICAgICAgcmVmcmFjdGlvbkNvb3JkcyAvPSAyLjA7XG4gICAgICAgICAgICAvLyBTYW1wbGUgZnJhbWVidWZmZXIgdG8gZ2V0IHBpeGVsIHRoZSByZWZyYWN0ZWQgcmF5IGhpdHMuXG4gICAgICAgICAgICB2ZWM0IHRyYW5zbWl0dGVkTGlnaHQgPSBnZXRUcmFuc21pc3Npb25TYW1wbGUoIHJlZnJhY3Rpb25Db29yZHMsIHJvdWdobmVzcywgaW9yICk7XG4gICAgICAgICAgICB2ZWMzIGF0dGVudWF0ZWRDb2xvciA9IGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24oIHRyYW5zbWl0dGVkTGlnaHQucmdiLCBsZW5ndGgoIHRyYW5zbWlzc2lvblJheSApLCBhdHRlbnVhdGlvbkNvbG9yLCBhdHRlbnVhdGlvbkRpc3RhbmNlICk7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIHNwZWN1bGFyIGNvbXBvbmVudC5cbiAgICAgICAgICAgIHZlYzMgRiA9IEVudmlyb25tZW50QlJERiggbiwgdiwgc3BlY3VsYXJDb2xvciwgc3BlY3VsYXJGOTAsIHJvdWdobmVzcyApO1xuICAgICAgICAgICAgcmV0dXJuIHZlYzQoICggMS4wIC0gRiApICogYXR0ZW51YXRlZENvbG9yICogZGlmZnVzZUNvbG9yLCB0cmFuc21pdHRlZExpZ2h0LmEgKTtcbiAgICAgICAgICB9XG4gICAgICAgICNlbmRpZlxcbmBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEFkZCByZWZyYWN0aW9uXG4gICAgICAgICAgICBzaGFkZXIuZnJhZ21lbnRTaGFkZXIgPSBzaGFkZXIuZnJhZ21lbnRTaGFkZXIucmVwbGFjZShcbiAgICAgICAgICAgICAgICAnI2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9mcmFnbWVudD4nLFxuICAgICAgICAgICAgICAgIC8qZ2xzbCovIGBcbiAgICAgICAgLy8gSW1wcm92ZSB0aGUgcmVmcmFjdGlvbiB0byB1c2UgdGhlIHdvcmxkIHBvc1xuICAgICAgICBtYXRlcmlhbC50cmFuc21pc3Npb24gPSBfdHJhbnNtaXNzaW9uO1xuICAgICAgICBtYXRlcmlhbC50cmFuc21pc3Npb25BbHBoYSA9IDEuMDtcbiAgICAgICAgbWF0ZXJpYWwudGhpY2tuZXNzID0gdGhpY2tuZXNzO1xuICAgICAgICBtYXRlcmlhbC5hdHRlbnVhdGlvbkRpc3RhbmNlID0gYXR0ZW51YXRpb25EaXN0YW5jZTtcbiAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25Db2xvciA9IGF0dGVudWF0aW9uQ29sb3I7XG4gICAgICAgICNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQXG4gICAgICAgICAgbWF0ZXJpYWwudHJhbnNtaXNzaW9uICo9IHRleHR1cmUyRCggdHJhbnNtaXNzaW9uTWFwLCB2VXYgKS5yO1xuICAgICAgICAjZW5kaWZcbiAgICAgICAgI2lmZGVmIFVTRV9USElDS05FU1NNQVBcbiAgICAgICAgICBtYXRlcmlhbC50aGlja25lc3MgKj0gdGV4dHVyZTJEKCB0aGlja25lc3NNYXAsIHZVdiApLmc7XG4gICAgICAgICNlbmRpZlxuXG4gICAgICAgIHZlYzMgcG9zID0gdldvcmxkUG9zaXRpb247XG4gICAgICAgIHZlYzMgdiA9IG5vcm1hbGl6ZSggY2FtZXJhUG9zaXRpb24gLSBwb3MgKTtcbiAgICAgICAgdmVjMyBuID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7XG4gICAgICAgIHZlYzMgdHJhbnNtaXNzaW9uID0gdmVjMygwLjApO1xuICAgICAgICBmbG9hdCB0cmFuc21pc3Npb25SLCB0cmFuc21pc3Npb25CLCB0cmFuc21pc3Npb25HO1xuICAgICAgICBmbG9hdCByYW5kb21Db29yZHMgPSByYW5kKCk7XG4gICAgICAgIGZsb2F0IHRoaWNrbmVzc19zbWVhciA9IHRoaWNrbmVzcyAqIG1heChwb3cocm91Z2huZXNzRmFjdG9yLCAwLjMzKSwgYW5pc290cm9weSk7XG4gICAgICAgIHZlYzMgZGlzdG9ydGlvbk5vcm1hbCA9IHZlYzMoMC4wKTtcbiAgICAgICAgdmVjMyB0ZW1wb3JhbE9mZnNldCA9IHZlYzModGltZSwgLXRpbWUsIC10aW1lKSAqIHRlbXBvcmFsRGlzdG9ydGlvbjtcbiAgICAgICAgaWYgKGRpc3RvcnRpb24gPiAwLjApIHtcbiAgICAgICAgICBkaXN0b3J0aW9uTm9ybWFsID0gZGlzdG9ydGlvbiAqIHZlYzMoc25vaXNlRnJhY3RhbCh2ZWMzKChwb3MgKiBkaXN0b3J0aW9uU2NhbGUgKyB0ZW1wb3JhbE9mZnNldCkpKSwgc25vaXNlRnJhY3RhbCh2ZWMzKHBvcy56eHkgKiBkaXN0b3J0aW9uU2NhbGUgLSB0ZW1wb3JhbE9mZnNldCkpLCBzbm9pc2VGcmFjdGFsKHZlYzMocG9zLnl4eiAqIGRpc3RvcnRpb25TY2FsZSArIHRlbXBvcmFsT2Zmc2V0KSkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoZmxvYXQgaSA9IDAuMDsgaSA8ICR7c2FtcGxlc30uMDsgaSArKykge1xuICAgICAgICAgIHZlYzMgc2FtcGxlTm9ybSA9IG5vcm1hbGl6ZShuICsgcm91Z2huZXNzRmFjdG9yICogcm91Z2huZXNzRmFjdG9yICogMi4wICogbm9ybWFsaXplKHZlYzMocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSkpICogcG93KHJhbmQoKSwgMC4zMykgKyBkaXN0b3J0aW9uTm9ybWFsKTtcbiAgICAgICAgICB0cmFuc21pc3Npb25SID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciwgbWF0ZXJpYWwudGhpY2tuZXNzICArIHRoaWNrbmVzc19zbWVhciAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pLFxuICAgICAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25Db2xvciwgbWF0ZXJpYWwuYXR0ZW51YXRpb25EaXN0YW5jZVxuICAgICAgICAgICkucjtcbiAgICAgICAgICB0cmFuc21pc3Npb25HID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciAgKiAoMS4wICsgY2hyb21hdGljQWJlcnJhdGlvbiAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pKSAsIG1hdGVyaWFsLnRoaWNrbmVzcyArIHRoaWNrbmVzc19zbWVhciAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pLFxuICAgICAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25Db2xvciwgbWF0ZXJpYWwuYXR0ZW51YXRpb25EaXN0YW5jZVxuICAgICAgICAgICkuZztcbiAgICAgICAgICB0cmFuc21pc3Npb25CID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciAqICgxLjAgKyAyLjAgKiBjaHJvbWF0aWNBYmVycmF0aW9uICogKGkgKyByYW5kb21Db29yZHMpIC8gZmxvYXQoJHtzYW1wbGVzfSkpLCBtYXRlcmlhbC50aGlja25lc3MgKyB0aGlja25lc3Nfc21lYXIgKiAoaSArIHJhbmRvbUNvb3JkcykgLyBmbG9hdCgke3NhbXBsZXN9KSxcbiAgICAgICAgICAgIG1hdGVyaWFsLmF0dGVudWF0aW9uQ29sb3IsIG1hdGVyaWFsLmF0dGVudWF0aW9uRGlzdGFuY2VcbiAgICAgICAgICApLmI7XG4gICAgICAgICAgdHJhbnNtaXNzaW9uLnIgKz0gdHJhbnNtaXNzaW9uUjtcbiAgICAgICAgICB0cmFuc21pc3Npb24uZyArPSB0cmFuc21pc3Npb25HO1xuICAgICAgICAgIHRyYW5zbWlzc2lvbi5iICs9IHRyYW5zbWlzc2lvbkI7XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNtaXNzaW9uIC89ICR7c2FtcGxlc30uMDtcbiAgICAgICAgdG90YWxEaWZmdXNlID0gbWl4KCB0b3RhbERpZmZ1c2UsIHRyYW5zbWlzc2lvbi5yZ2IsIG1hdGVyaWFsLnRyYW5zbWlzc2lvbiApO1xcbmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy51bmlmb3JtcykuZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLnVuaWZvcm1zW25hbWUgYXMga2V5b2YgdHlwZW9mIHRoaXMudW5pZm9ybXNdLnZhbHVlLFxuICAgICAgICAgICAgICAgIHNldDogKHYpID0+ICh0aGlzLnVuaWZvcm1zW25hbWUgYXMga2V5b2YgdHlwZW9mIHRoaXMudW5pZm9ybXNdLnZhbHVlID0gdiksXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwvbWVzaC10cmFuc21pc3Npb24tbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNL0IsTUFBTSxPQUFPLHdCQUF5QixTQUFRLEtBQUssQ0FBQyxvQkFBb0I7SUFtQnZFLFlBQVksT0FBTyxHQUFHLENBQUMsRUFBRSxtQkFBbUIsR0FBRyxLQUFLO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNmLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUNwQywwRUFBMEU7WUFDMUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMxQiwwREFBMEQ7WUFDMUQsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMzQixlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLG9HQUFvRztZQUNwRyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ3ZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDdkIsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtZQUM3QixtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDeEMsZ0JBQWdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JELGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDL0IsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNsQixVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQzFCLGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDL0Isa0JBQWtCLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7U0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxNQUE2RCxFQUFFLEVBQUU7WUFDeEYsTUFBTSxDQUFDLFFBQVEsR0FBRztnQkFDakIsR0FBRyxNQUFNLENBQUMsUUFBUTtnQkFDbEIsR0FBRyxJQUFJLENBQUMsUUFBUTthQUNoQixDQUFDO1lBRUYsc0RBQXNEO1lBQ3RELElBQUksbUJBQW1CO2dCQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVELGtGQUFrRjtZQUNsRix5Q0FBeUM7O2dCQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTdDLE9BQU87WUFDUCxNQUFNLENBQUMsY0FBYztnQkFDcEIsUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBMkZILEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUVoQyxzQkFBc0I7WUFDdEIsTUFBTSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDcEQsdUNBQXVDO1lBQ3ZDLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkE0RUksQ0FDYixDQUFDO1lBRUYsaUJBQWlCO1lBQ2pCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQ3BELGtDQUFrQztZQUNsQyxRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQTBCcUIsT0FBTzs7OzsrSUFJc0csT0FBTzs7Ozs7c0lBS2hCLE9BQU8sMEVBQTBFLE9BQU87Ozs7OzJJQUtuRixPQUFPLHlFQUF5RSxPQUFPOzs7Ozs7OzBCQU94TSxPQUFPO3VGQUNzRCxDQUNuRixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2pDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQWtDLENBQUMsQ0FBQyxLQUFLO1lBQ2xFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQWtDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ3pFLENBQUMsQ0FDRixDQUFDO0lBQ0gsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5pbnRlcmZhY2UgVW5pZm9ybTxUPiB7XG5cdHZhbHVlOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgTWVzaFRyYW5zbWlzc2lvbk1hdGVyaWFsIGV4dGVuZHMgVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwge1xuXHR1bmlmb3Jtczoge1xuXHRcdGNocm9tYXRpY0FiZXJyYXRpb246IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0cmFuc21pc3Npb246IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0cmFuc21pc3Npb25NYXA6IFVuaWZvcm08VEhSRUUuVGV4dHVyZSB8IG51bGw+O1xuXHRcdF90cmFuc21pc3Npb246IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0aGlja25lc3M6IFVuaWZvcm08bnVtYmVyPjtcblx0XHRyb3VnaG5lc3M6IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0aGlja25lc3NNYXA6IFVuaWZvcm08VEhSRUUuVGV4dHVyZSB8IG51bGw+O1xuXHRcdGF0dGVudWF0aW9uRGlzdGFuY2U6IFVuaWZvcm08bnVtYmVyPjtcblx0XHRhdHRlbnVhdGlvbkNvbG9yOiBVbmlmb3JtPFRIUkVFLkNvbG9yPjtcblx0XHRhbmlzb3Ryb3BpY0JsdXI6IFVuaWZvcm08bnVtYmVyPjtcblx0XHR0aW1lOiBVbmlmb3JtPG51bWJlcj47XG5cdFx0ZGlzdG9ydGlvbjogVW5pZm9ybTxudW1iZXI+O1xuXHRcdGRpc3RvcnRpb25TY2FsZTogVW5pZm9ybTxudW1iZXI+O1xuXHRcdHRlbXBvcmFsRGlzdG9ydGlvbjogVW5pZm9ybTxudW1iZXI+O1xuXHRcdGJ1ZmZlcjogVW5pZm9ybTxUSFJFRS5UZXh0dXJlIHwgbnVsbD47XG5cdH07XG5cblx0Y29uc3RydWN0b3Ioc2FtcGxlcyA9IDYsIHRyYW5zbWlzc2lvblNhbXBsZXIgPSBmYWxzZSkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLnVuaWZvcm1zID0ge1xuXHRcdFx0Y2hyb21hdGljQWJlcnJhdGlvbjogeyB2YWx1ZTogMC4wNSB9LFxuXHRcdFx0Ly8gVHJhbnNtaXNzaW9uIG11c3QgYWx3YXlzIGJlIDAsIHVubGVzcyB0cmFuc21pc3Npb25TYW1wbGVyIGlzIGJlaW5nIHVzZWRcblx0XHRcdHRyYW5zbWlzc2lvbjogeyB2YWx1ZTogMCB9LFxuXHRcdFx0Ly8gSW5zdGVhZCBhIHdvcmthcm91bmQgaXMgdXNlZCwgc2VlIGJlbG93IGZvciByZWFzb25zIHdoeVxuXHRcdFx0X3RyYW5zbWlzc2lvbjogeyB2YWx1ZTogMSB9LFxuXHRcdFx0dHJhbnNtaXNzaW9uTWFwOiB7IHZhbHVlOiBudWxsIH0sXG5cdFx0XHQvLyBSb3VnaG5lc3MgaXMgMSBpbiBUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbCBidXQgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIGluIGEgdHJhbnNtaXNzaW9uIG1hdGVyaWFsXG5cdFx0XHRyb3VnaG5lc3M6IHsgdmFsdWU6IDAgfSxcblx0XHRcdHRoaWNrbmVzczogeyB2YWx1ZTogMCB9LFxuXHRcdFx0dGhpY2tuZXNzTWFwOiB7IHZhbHVlOiBudWxsIH0sXG5cdFx0XHRhdHRlbnVhdGlvbkRpc3RhbmNlOiB7IHZhbHVlOiBJbmZpbml0eSB9LFxuXHRcdFx0YXR0ZW51YXRpb25Db2xvcjogeyB2YWx1ZTogbmV3IFRIUkVFLkNvbG9yKCd3aGl0ZScpIH0sXG5cdFx0XHRhbmlzb3Ryb3BpY0JsdXI6IHsgdmFsdWU6IDAuMSB9LFxuXHRcdFx0dGltZTogeyB2YWx1ZTogMCB9LFxuXHRcdFx0ZGlzdG9ydGlvbjogeyB2YWx1ZTogMC4wIH0sXG5cdFx0XHRkaXN0b3J0aW9uU2NhbGU6IHsgdmFsdWU6IDAuNSB9LFxuXHRcdFx0dGVtcG9yYWxEaXN0b3J0aW9uOiB7IHZhbHVlOiAwLjAgfSxcblx0XHRcdGJ1ZmZlcjogeyB2YWx1ZTogbnVsbCB9LFxuXHRcdH07XG5cblx0XHR0aGlzLm9uQmVmb3JlQ29tcGlsZSA9IChzaGFkZXI6IFRIUkVFLlNoYWRlciAmIHsgZGVmaW5lczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9KSA9PiB7XG5cdFx0XHRzaGFkZXIudW5pZm9ybXMgPSB7XG5cdFx0XHRcdC4uLnNoYWRlci51bmlmb3Jtcyxcblx0XHRcdFx0Li4udGhpcy51bmlmb3Jtcyxcblx0XHRcdH07XG5cblx0XHRcdC8vIElmIHRoZSB0cmFuc21pc3Npb24gc2FtcGxlciBpcyBhY3RpdmUgaW5qZWN0IGEgZmxhZ1xuXHRcdFx0aWYgKHRyYW5zbWlzc2lvblNhbXBsZXIpIHNoYWRlci5kZWZpbmVzWydVU0VfU0FNUExFUiddID0gJyc7XG5cdFx0XHQvLyBPdGhlcndpc2Ugd2UgZG8gdXNlIHVzZSAudHJhbnNtaXNzaW9uIGFuZCBtdXN0IHRoZXJlZm9yZSBmb3JjZSBVU0VfVFJBTlNNSVNTSU9OXG5cdFx0XHQvLyBiZWNhdXNlIHRocmVlanMgd29uJ3QgaW5qZWN0IGl0IGZvciB1c1xuXHRcdFx0ZWxzZSBzaGFkZXIuZGVmaW5lc1snVVNFX1RSQU5TTUlTU0lPTiddID0gJyc7XG5cblx0XHRcdC8vIEhlYWRcblx0XHRcdHNoYWRlci5mcmFnbWVudFNoYWRlciA9XG5cdFx0XHRcdC8qZ2xzbCovIGBcbiAgICAgIHVuaWZvcm0gZmxvYXQgY2hyb21hdGljQWJlcnJhdGlvbjtcbiAgICAgIHVuaWZvcm0gZmxvYXQgYW5pc290cm9waWNCbHVyO1xuICAgICAgdW5pZm9ybSBmbG9hdCB0aW1lO1xuICAgICAgdW5pZm9ybSBmbG9hdCBkaXN0b3J0aW9uO1xuICAgICAgdW5pZm9ybSBmbG9hdCBkaXN0b3J0aW9uU2NhbGU7XG4gICAgICB1bmlmb3JtIGZsb2F0IHRlbXBvcmFsRGlzdG9ydGlvbjtcbiAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGJ1ZmZlcjtcblxuICAgICAgdmVjMyByYW5kb20zKHZlYzMgYykge1xuICAgICAgICBmbG9hdCBqID0gNDA5Ni4wKnNpbihkb3QoYyx2ZWMzKDE3LjAsIDU5LjQsIDE1LjApKSk7XG4gICAgICAgIHZlYzMgcjtcbiAgICAgICAgci56ID0gZnJhY3QoNTEyLjAqaik7XG4gICAgICAgIGogKj0gLjEyNTtcbiAgICAgICAgci54ID0gZnJhY3QoNTEyLjAqaik7XG4gICAgICAgIGogKj0gLjEyNTtcbiAgICAgICAgci55ID0gZnJhY3QoNTEyLjAqaik7XG4gICAgICAgIHJldHVybiByLTAuNTtcbiAgICAgIH1cblxuICAgICAgZmxvYXQgc2VlZCA9IDAuMDtcbiAgICAgIHVpbnQgaGFzaCggdWludCB4ICkge1xuICAgICAgICB4ICs9ICggeCA8PCAxMHUgKTtcbiAgICAgICAgeCBePSAoIHggPj4gIDZ1ICk7XG4gICAgICAgIHggKz0gKCB4IDw8ICAzdSApO1xuICAgICAgICB4IF49ICggeCA+PiAxMXUgKTtcbiAgICAgICAgeCArPSAoIHggPDwgMTV1ICk7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuXG4gICAgICAvLyBDb21wb3VuZCB2ZXJzaW9ucyBvZiB0aGUgaGFzaGluZyBhbGdvcml0aG0gSSB3aGlwcGVkIHRvZ2V0aGVyLlxuICAgICAgdWludCBoYXNoKCB1dmVjMiB2ICkgeyByZXR1cm4gaGFzaCggdi54IF4gaGFzaCh2LnkpICAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgIHVpbnQgaGFzaCggdXZlYzMgdiApIHsgcmV0dXJuIGhhc2goIHYueCBeIGhhc2godi55KSBeIGhhc2godi56KSAgICAgICAgICAgICApOyB9XG4gICAgICB1aW50IGhhc2goIHV2ZWM0IHYgKSB7IHJldHVybiBoYXNoKCB2LnggXiBoYXNoKHYueSkgXiBoYXNoKHYueikgXiBoYXNoKHYudykgKTsgfVxuXG4gICAgICAvLyBDb25zdHJ1Y3QgYSBmbG9hdCB3aXRoIGhhbGYtb3BlbiByYW5nZSBbMDoxXSB1c2luZyBsb3cgMjMgYml0cy5cbiAgICAgIC8vIEFsbCB6ZXJvZXMgeWllbGRzIDAuMCwgYWxsIG9uZXMgeWllbGRzIHRoZSBuZXh0IHNtYWxsZXN0IHJlcHJlc2VudGFibGUgdmFsdWUgYmVsb3cgMS4wLlxuICAgICAgZmxvYXQgZmxvYXRDb25zdHJ1Y3QoIHVpbnQgbSApIHtcbiAgICAgICAgY29uc3QgdWludCBpZWVlTWFudGlzc2EgPSAweDAwN0ZGRkZGdTsgLy8gYmluYXJ5MzIgbWFudGlzc2EgYml0bWFza1xuICAgICAgICBjb25zdCB1aW50IGllZWVPbmUgICAgICA9IDB4M0Y4MDAwMDB1OyAvLyAxLjAgaW4gSUVFRSBiaW5hcnkzMlxuICAgICAgICBtICY9IGllZWVNYW50aXNzYTsgICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIG9ubHkgbWFudGlzc2EgYml0cyAoZnJhY3Rpb25hbCBwYXJ0KVxuICAgICAgICBtIHw9IGllZWVPbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgZnJhY3Rpb25hbCBwYXJ0IHRvIDEuMFxuICAgICAgICBmbG9hdCAgZiA9IHVpbnRCaXRzVG9GbG9hdCggbSApOyAgICAgICAvLyBSYW5nZSBbMToyXVxuICAgICAgICByZXR1cm4gZiAtIDEuMDsgICAgICAgICAgICAgICAgICAgICAgICAvLyBSYW5nZSBbMDoxXVxuICAgICAgfVxuXG4gICAgICAvLyBQc2V1ZG8tcmFuZG9tIHZhbHVlIGluIGhhbGYtb3BlbiByYW5nZSBbMDoxXS5cbiAgICAgIGZsb2F0IHJhbmRvbSggZmxvYXQgeCApIHsgcmV0dXJuIGZsb2F0Q29uc3RydWN0KGhhc2goZmxvYXRCaXRzVG9VaW50KHgpKSk7IH1cbiAgICAgIGZsb2F0IHJhbmRvbSggdmVjMiAgdiApIHsgcmV0dXJuIGZsb2F0Q29uc3RydWN0KGhhc2goZmxvYXRCaXRzVG9VaW50KHYpKSk7IH1cbiAgICAgIGZsb2F0IHJhbmRvbSggdmVjMyAgdiApIHsgcmV0dXJuIGZsb2F0Q29uc3RydWN0KGhhc2goZmxvYXRCaXRzVG9VaW50KHYpKSk7IH1cbiAgICAgIGZsb2F0IHJhbmRvbSggdmVjNCAgdiApIHsgcmV0dXJuIGZsb2F0Q29uc3RydWN0KGhhc2goZmxvYXRCaXRzVG9VaW50KHYpKSk7IH1cblxuICAgICAgZmxvYXQgcmFuZCgpIHtcbiAgICAgICAgZmxvYXQgcmVzdWx0ID0gcmFuZG9tKHZlYzMoZ2xfRnJhZ0Nvb3JkLnh5LCBzZWVkKSk7XG4gICAgICAgIHNlZWQgKz0gMS4wO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmbG9hdCBGMyA9ICAwLjMzMzMzMzM7XG4gICAgICBjb25zdCBmbG9hdCBHMyA9ICAwLjE2NjY2Njc7XG5cbiAgICAgIGZsb2F0IHNub2lzZSh2ZWMzIHApIHtcbiAgICAgICAgdmVjMyBzID0gZmxvb3IocCArIGRvdChwLCB2ZWMzKEYzKSkpO1xuICAgICAgICB2ZWMzIHggPSBwIC0gcyArIGRvdChzLCB2ZWMzKEczKSk7XG4gICAgICAgIHZlYzMgZSA9IHN0ZXAodmVjMygwLjApLCB4IC0geC55engpO1xuICAgICAgICB2ZWMzIGkxID0gZSooMS4wIC0gZS56eHkpO1xuICAgICAgICB2ZWMzIGkyID0gMS4wIC0gZS56eHkqKDEuMCAtIGUpO1xuICAgICAgICB2ZWMzIHgxID0geCAtIGkxICsgRzM7XG4gICAgICAgIHZlYzMgeDIgPSB4IC0gaTIgKyAyLjAqRzM7XG4gICAgICAgIHZlYzMgeDMgPSB4IC0gMS4wICsgMy4wKkczO1xuICAgICAgICB2ZWM0IHcsIGQ7XG4gICAgICAgIHcueCA9IGRvdCh4LCB4KTtcbiAgICAgICAgdy55ID0gZG90KHgxLCB4MSk7XG4gICAgICAgIHcueiA9IGRvdCh4MiwgeDIpO1xuICAgICAgICB3LncgPSBkb3QoeDMsIHgzKTtcbiAgICAgICAgdyA9IG1heCgwLjYgLSB3LCAwLjApO1xuICAgICAgICBkLnggPSBkb3QocmFuZG9tMyhzKSwgeCk7XG4gICAgICAgIGQueSA9IGRvdChyYW5kb20zKHMgKyBpMSksIHgxKTtcbiAgICAgICAgZC56ID0gZG90KHJhbmRvbTMocyArIGkyKSwgeDIpO1xuICAgICAgICBkLncgPSBkb3QocmFuZG9tMyhzICsgMS4wKSwgeDMpO1xuICAgICAgICB3ICo9IHc7XG4gICAgICAgIHcgKj0gdztcbiAgICAgICAgZCAqPSB3O1xuICAgICAgICByZXR1cm4gZG90KGQsIHZlYzQoNTIuMCkpO1xuICAgICAgfVxuXG4gICAgICBmbG9hdCBzbm9pc2VGcmFjdGFsKHZlYzMgbSkge1xuICAgICAgICByZXR1cm4gMC41MzMzMzMzKiBzbm9pc2UobSlcbiAgICAgICAgICAgICAgKzAuMjY2NjY2Nyogc25vaXNlKDIuMCptKVxuICAgICAgICAgICAgICArMC4xMzMzMzMzKiBzbm9pc2UoNC4wKm0pXG4gICAgICAgICAgICAgICswLjA2NjY2NjcqIHNub2lzZSg4LjAqbSk7XG4gICAgICB9XFxuYCArIHNoYWRlci5mcmFnbWVudFNoYWRlcjtcblxuXHRcdFx0Ly8gUmVtb3ZlIHRyYW5zbWlzc2lvblxuXHRcdFx0c2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoXG5cdFx0XHRcdCcjaW5jbHVkZSA8dHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ+Jyxcblx0XHRcdFx0LypnbHNsKi8gYFxuICAgICAgICAjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuICAgICAgICAgIC8vIFRyYW5zbWlzc2lvbiBjb2RlIGlzIGJhc2VkIG9uIGdsVEYtU2FtcGxlci1WaWV3ZXJcbiAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL2dsVEYtU2FtcGxlLVZpZXdlclxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgX3RyYW5zbWlzc2lvbjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IHRoaWNrbmVzcztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2U7XG4gICAgICAgICAgdW5pZm9ybSB2ZWMzIGF0dGVudWF0aW9uQ29sb3I7XG4gICAgICAgICAgI2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVBcbiAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvbk1hcDtcbiAgICAgICAgICAjZW5kaWZcbiAgICAgICAgICAjaWZkZWYgVVNFX1RISUNLTkVTU01BUFxuICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGhpY2tuZXNzTWFwO1xuICAgICAgICAgICNlbmRpZlxuICAgICAgICAgIHVuaWZvcm0gdmVjMiB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZTtcbiAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25TYW1wbGVyTWFwO1xuICAgICAgICAgIHVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDtcbiAgICAgICAgICB1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDtcbiAgICAgICAgICB2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4gICAgICAgICAgdmVjMyBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkoIGNvbnN0IGluIHZlYzMgbiwgY29uc3QgaW4gdmVjMyB2LCBjb25zdCBpbiBmbG9hdCB0aGlja25lc3MsIGNvbnN0IGluIGZsb2F0IGlvciwgY29uc3QgaW4gbWF0NCBtb2RlbE1hdHJpeCApIHtcbiAgICAgICAgICAgIC8vIERpcmVjdGlvbiBvZiByZWZyYWN0ZWQgbGlnaHQuXG4gICAgICAgICAgICB2ZWMzIHJlZnJhY3Rpb25WZWN0b3IgPSByZWZyYWN0KCAtIHYsIG5vcm1hbGl6ZSggbiApLCAxLjAgLyBpb3IgKTtcbiAgICAgICAgICAgIC8vIENvbXB1dGUgcm90YXRpb24taW5kZXBlbmRhbnQgc2NhbGluZyBvZiB0aGUgbW9kZWwgbWF0cml4LlxuICAgICAgICAgICAgdmVjMyBtb2RlbFNjYWxlO1xuICAgICAgICAgICAgbW9kZWxTY2FsZS54ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMCBdLnh5eiApICk7XG4gICAgICAgICAgICBtb2RlbFNjYWxlLnkgPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAxIF0ueHl6ICkgKTtcbiAgICAgICAgICAgIG1vZGVsU2NhbGUueiA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDIgXS54eXogKSApO1xuICAgICAgICAgICAgLy8gVGhlIHRoaWNrbmVzcyBpcyBzcGVjaWZpZWQgaW4gbG9jYWwgc3BhY2UuXG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKCByZWZyYWN0aW9uVmVjdG9yICkgKiB0aGlja25lc3MgKiBtb2RlbFNjYWxlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbG9hdCBhcHBseUlvclRvUm91Z2huZXNzKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGlvciApIHtcbiAgICAgICAgICAgIC8vIFNjYWxlIHJvdWdobmVzcyB3aXRoIElPUiBzbyB0aGF0IGFuIElPUiBvZiAxLjAgcmVzdWx0cyBpbiBubyBtaWNyb2ZhY2V0IHJlZnJhY3Rpb24gYW5kXG4gICAgICAgICAgICAvLyBhbiBJT1Igb2YgMS41IHJlc3VsdHMgaW4gdGhlIGRlZmF1bHQgYW1vdW50IG9mIG1pY3JvZmFjZXQgcmVmcmFjdGlvbi5cbiAgICAgICAgICAgIHJldHVybiByb3VnaG5lc3MgKiBjbGFtcCggaW9yICogMi4wIC0gMi4wLCAwLjAsIDEuMCApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2ZWM0IGdldFRyYW5zbWlzc2lvblNhbXBsZSggY29uc3QgaW4gdmVjMiBmcmFnQ29vcmQsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgaW9yICkge1xuICAgICAgICAgICAgZmxvYXQgZnJhbWVidWZmZXJMb2QgPSBsb2cyKCB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZS54ICkgKiBhcHBseUlvclRvUm91Z2huZXNzKCByb3VnaG5lc3MsIGlvciApO1xuICAgICAgICAgICAgI2lmZGVmIFVTRV9TQU1QTEVSXG4gICAgICAgICAgICAgICNpZmRlZiB0ZXh0dXJlMkRMb2RFWFRcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTJETG9kRVhUKHRyYW5zbWlzc2lvblNhbXBsZXJNYXAsIGZyYWdDb29yZC54eSwgZnJhbWVidWZmZXJMb2QpO1xuICAgICAgICAgICAgICAjZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlMkQodHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCk7XG4gICAgICAgICAgICAgICNlbmRpZlxuICAgICAgICAgICAgI2Vsc2VcbiAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmUyRChidWZmZXIsIGZyYWdDb29yZC54eSk7XG4gICAgICAgICAgICAjZW5kaWZcbiAgICAgICAgICB9XG4gICAgICAgICAgdmVjMyBhcHBseVZvbHVtZUF0dGVudWF0aW9uKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiBmbG9hdCB0cmFuc21pc3Npb25EaXN0YW5jZSwgY29uc3QgaW4gdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBjb25zdCBpbiBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlICkge1xuICAgICAgICAgICAgaWYgKCBpc2luZiggYXR0ZW51YXRpb25EaXN0YW5jZSApICkge1xuICAgICAgICAgICAgICAvLyBBdHRlbnVhdGlvbiBkaXN0YW5jZSBpcyAr4oieLCBpLmUuIHRoZSB0cmFuc21pdHRlZCBjb2xvciBpcyBub3QgYXR0ZW51YXRlZCBhdCBhbGwuXG4gICAgICAgICAgICAgIHJldHVybiByYWRpYW5jZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIENvbXB1dGUgbGlnaHQgYXR0ZW51YXRpb24gdXNpbmcgQmVlcidzIGxhdy5cbiAgICAgICAgICAgICAgdmVjMyBhdHRlbnVhdGlvbkNvZWZmaWNpZW50ID0gLWxvZyggYXR0ZW51YXRpb25Db2xvciApIC8gYXR0ZW51YXRpb25EaXN0YW5jZTtcbiAgICAgICAgICAgICAgdmVjMyB0cmFuc21pdHRhbmNlID0gZXhwKCAtIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgKiB0cmFuc21pc3Npb25EaXN0YW5jZSApOyAvLyBCZWVyJ3MgbGF3XG4gICAgICAgICAgICAgIHJldHVybiB0cmFuc21pdHRhbmNlICogcmFkaWFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZlYzQgZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbiggY29uc3QgaW4gdmVjMyBuLCBjb25zdCBpbiB2ZWMzIHYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IsXG4gICAgICAgICAgICBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNwZWN1bGFyRjkwLCBjb25zdCBpbiB2ZWMzIHBvc2l0aW9uLCBjb25zdCBpbiBtYXQ0IG1vZGVsTWF0cml4LFxuICAgICAgICAgICAgY29uc3QgaW4gbWF0NCB2aWV3TWF0cml4LCBjb25zdCBpbiBtYXQ0IHByb2pNYXRyaXgsIGNvbnN0IGluIGZsb2F0IGlvciwgY29uc3QgaW4gZmxvYXQgdGhpY2tuZXNzLFxuICAgICAgICAgICAgY29uc3QgaW4gdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBjb25zdCBpbiBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlICkge1xuICAgICAgICAgICAgdmVjMyB0cmFuc21pc3Npb25SYXkgPSBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkoIG4sIHYsIHRoaWNrbmVzcywgaW9yLCBtb2RlbE1hdHJpeCApO1xuICAgICAgICAgICAgdmVjMyByZWZyYWN0ZWRSYXlFeGl0ID0gcG9zaXRpb24gKyB0cmFuc21pc3Npb25SYXk7XG4gICAgICAgICAgICAvLyBQcm9qZWN0IHJlZnJhY3RlZCB2ZWN0b3Igb24gdGhlIGZyYW1lYnVmZmVyLCB3aGlsZSBtYXBwaW5nIHRvIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzLlxuICAgICAgICAgICAgdmVjNCBuZGNQb3MgPSBwcm9qTWF0cml4ICogdmlld01hdHJpeCAqIHZlYzQoIHJlZnJhY3RlZFJheUV4aXQsIDEuMCApO1xuICAgICAgICAgICAgdmVjMiByZWZyYWN0aW9uQ29vcmRzID0gbmRjUG9zLnh5IC8gbmRjUG9zLnc7XG4gICAgICAgICAgICByZWZyYWN0aW9uQ29vcmRzICs9IDEuMDtcbiAgICAgICAgICAgIHJlZnJhY3Rpb25Db29yZHMgLz0gMi4wO1xuICAgICAgICAgICAgLy8gU2FtcGxlIGZyYW1lYnVmZmVyIHRvIGdldCBwaXhlbCB0aGUgcmVmcmFjdGVkIHJheSBoaXRzLlxuICAgICAgICAgICAgdmVjNCB0cmFuc21pdHRlZExpZ2h0ID0gZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKCByZWZyYWN0aW9uQ29vcmRzLCByb3VnaG5lc3MsIGlvciApO1xuICAgICAgICAgICAgdmVjMyBhdHRlbnVhdGVkQ29sb3IgPSBhcHBseVZvbHVtZUF0dGVudWF0aW9uKCB0cmFuc21pdHRlZExpZ2h0LnJnYiwgbGVuZ3RoKCB0cmFuc21pc3Npb25SYXkgKSwgYXR0ZW51YXRpb25Db2xvciwgYXR0ZW51YXRpb25EaXN0YW5jZSApO1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBzcGVjdWxhciBjb21wb25lbnQuXG4gICAgICAgICAgICB2ZWMzIEYgPSBFbnZpcm9ubWVudEJSREYoIG4sIHYsIHNwZWN1bGFyQ29sb3IsIHNwZWN1bGFyRjkwLCByb3VnaG5lc3MgKTtcbiAgICAgICAgICAgIHJldHVybiB2ZWM0KCAoIDEuMCAtIEYgKSAqIGF0dGVudWF0ZWRDb2xvciAqIGRpZmZ1c2VDb2xvciwgdHJhbnNtaXR0ZWRMaWdodC5hICk7XG4gICAgICAgICAgfVxuICAgICAgICAjZW5kaWZcXG5gLFxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gQWRkIHJlZnJhY3Rpb25cblx0XHRcdHNoYWRlci5mcmFnbWVudFNoYWRlciA9IHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuXHRcdFx0XHQnI2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9mcmFnbWVudD4nLFxuXHRcdFx0XHQvKmdsc2wqLyBgXG4gICAgICAgIC8vIEltcHJvdmUgdGhlIHJlZnJhY3Rpb24gdG8gdXNlIHRoZSB3b3JsZCBwb3NcbiAgICAgICAgbWF0ZXJpYWwudHJhbnNtaXNzaW9uID0gX3RyYW5zbWlzc2lvbjtcbiAgICAgICAgbWF0ZXJpYWwudHJhbnNtaXNzaW9uQWxwaGEgPSAxLjA7XG4gICAgICAgIG1hdGVyaWFsLnRoaWNrbmVzcyA9IHRoaWNrbmVzcztcbiAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25EaXN0YW5jZSA9IGF0dGVudWF0aW9uRGlzdGFuY2U7XG4gICAgICAgIG1hdGVyaWFsLmF0dGVudWF0aW9uQ29sb3IgPSBhdHRlbnVhdGlvbkNvbG9yO1xuICAgICAgICAjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuICAgICAgICAgIG1hdGVyaWFsLnRyYW5zbWlzc2lvbiAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjtcbiAgICAgICAgI2VuZGlmXG4gICAgICAgICNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG4gICAgICAgICAgbWF0ZXJpYWwudGhpY2tuZXNzICo9IHRleHR1cmUyRCggdGhpY2tuZXNzTWFwLCB2VXYgKS5nO1xuICAgICAgICAjZW5kaWZcblxuICAgICAgICB2ZWMzIHBvcyA9IHZXb3JsZFBvc2l0aW9uO1xuICAgICAgICB2ZWMzIHYgPSBub3JtYWxpemUoIGNhbWVyYVBvc2l0aW9uIC0gcG9zICk7XG4gICAgICAgIHZlYzMgbiA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuICAgICAgICB2ZWMzIHRyYW5zbWlzc2lvbiA9IHZlYzMoMC4wKTtcbiAgICAgICAgZmxvYXQgdHJhbnNtaXNzaW9uUiwgdHJhbnNtaXNzaW9uQiwgdHJhbnNtaXNzaW9uRztcbiAgICAgICAgZmxvYXQgcmFuZG9tQ29vcmRzID0gcmFuZCgpO1xuICAgICAgICBmbG9hdCB0aGlja25lc3Nfc21lYXIgPSB0aGlja25lc3MgKiBtYXgocG93KHJvdWdobmVzc0ZhY3RvciwgMC4zMyksIGFuaXNvdHJvcGljQmx1cik7XG4gICAgICAgIHZlYzMgZGlzdG9ydGlvbk5vcm1hbCA9IHZlYzMoMC4wKTtcbiAgICAgICAgdmVjMyB0ZW1wb3JhbE9mZnNldCA9IHZlYzModGltZSwgLXRpbWUsIC10aW1lKSAqIHRlbXBvcmFsRGlzdG9ydGlvbjtcbiAgICAgICAgaWYgKGRpc3RvcnRpb24gPiAwLjApIHtcbiAgICAgICAgICBkaXN0b3J0aW9uTm9ybWFsID0gZGlzdG9ydGlvbiAqIHZlYzMoc25vaXNlRnJhY3RhbCh2ZWMzKChwb3MgKiBkaXN0b3J0aW9uU2NhbGUgKyB0ZW1wb3JhbE9mZnNldCkpKSwgc25vaXNlRnJhY3RhbCh2ZWMzKHBvcy56eHkgKiBkaXN0b3J0aW9uU2NhbGUgLSB0ZW1wb3JhbE9mZnNldCkpLCBzbm9pc2VGcmFjdGFsKHZlYzMocG9zLnl4eiAqIGRpc3RvcnRpb25TY2FsZSArIHRlbXBvcmFsT2Zmc2V0KSkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoZmxvYXQgaSA9IDAuMDsgaSA8ICR7c2FtcGxlc30uMDsgaSArKykge1xuICAgICAgICAgIHZlYzMgc2FtcGxlTm9ybSA9IG5vcm1hbGl6ZShuICsgcm91Z2huZXNzRmFjdG9yICogcm91Z2huZXNzRmFjdG9yICogMi4wICogbm9ybWFsaXplKHZlYzMocmFuZCgpIC0gMC41LCByYW5kKCkgLSAwLjUsIHJhbmQoKSAtIDAuNSkpICogcG93KHJhbmQoKSwgMC4zMykgKyBkaXN0b3J0aW9uTm9ybWFsKTtcbiAgICAgICAgICB0cmFuc21pc3Npb25SID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciwgbWF0ZXJpYWwudGhpY2tuZXNzICArIHRoaWNrbmVzc19zbWVhciAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pLFxuICAgICAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25Db2xvciwgbWF0ZXJpYWwuYXR0ZW51YXRpb25EaXN0YW5jZVxuICAgICAgICAgICkucjtcbiAgICAgICAgICB0cmFuc21pc3Npb25HID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciAgKiAoMS4wICsgY2hyb21hdGljQWJlcnJhdGlvbiAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pKSAsIG1hdGVyaWFsLnRoaWNrbmVzcyArIHRoaWNrbmVzc19zbWVhciAqIChpICsgcmFuZG9tQ29vcmRzKSAvIGZsb2F0KCR7c2FtcGxlc30pLFxuICAgICAgICAgICAgbWF0ZXJpYWwuYXR0ZW51YXRpb25Db2xvciwgbWF0ZXJpYWwuYXR0ZW51YXRpb25EaXN0YW5jZVxuICAgICAgICAgICkuZztcbiAgICAgICAgICB0cmFuc21pc3Npb25CID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbihcbiAgICAgICAgICAgIHNhbXBsZU5vcm0sIHYsIG1hdGVyaWFsLnJvdWdobmVzcywgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCxcbiAgICAgICAgICAgIHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIG1hdGVyaWFsLmlvciAqICgxLjAgKyAyLjAgKiBjaHJvbWF0aWNBYmVycmF0aW9uICogKGkgKyByYW5kb21Db29yZHMpIC8gZmxvYXQoJHtzYW1wbGVzfSkpLCBtYXRlcmlhbC50aGlja25lc3MgKyB0aGlja25lc3Nfc21lYXIgKiAoaSArIHJhbmRvbUNvb3JkcykgLyBmbG9hdCgke3NhbXBsZXN9KSxcbiAgICAgICAgICAgIG1hdGVyaWFsLmF0dGVudWF0aW9uQ29sb3IsIG1hdGVyaWFsLmF0dGVudWF0aW9uRGlzdGFuY2VcbiAgICAgICAgICApLmI7XG4gICAgICAgICAgdHJhbnNtaXNzaW9uLnIgKz0gdHJhbnNtaXNzaW9uUjtcbiAgICAgICAgICB0cmFuc21pc3Npb24uZyArPSB0cmFuc21pc3Npb25HO1xuICAgICAgICAgIHRyYW5zbWlzc2lvbi5iICs9IHRyYW5zbWlzc2lvbkI7XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNtaXNzaW9uIC89ICR7c2FtcGxlc30uMDtcbiAgICAgICAgdG90YWxEaWZmdXNlID0gbWl4KCB0b3RhbERpZmZ1c2UsIHRyYW5zbWlzc2lvbi5yZ2IsIG1hdGVyaWFsLnRyYW5zbWlzc2lvbiApO1xcbmAsXG5cdFx0XHQpO1xuXHRcdH07XG5cblx0XHRPYmplY3Qua2V5cyh0aGlzLnVuaWZvcm1zKS5mb3JFYWNoKChuYW1lKSA9PlxuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIG5hbWUsIHtcblx0XHRcdFx0Z2V0OiAoKSA9PiB0aGlzLnVuaWZvcm1zW25hbWUgYXMga2V5b2YgdHlwZW9mIHRoaXMudW5pZm9ybXNdLnZhbHVlLFxuXHRcdFx0XHRzZXQ6ICh2KSA9PiAodGhpcy51bmlmb3Jtc1tuYW1lIGFzIGtleW9mIHR5cGVvZiB0aGlzLnVuaWZvcm1zXS52YWx1ZSA9IHYpLFxuXHRcdFx0fSksXG5cdFx0KTtcblx0fVxufVxuIl19
@@ -34,4 +34,4 @@ export class MeshWobbleMaterial extends THREE.MeshStandardMaterial {
34
34
  this._factor.value = v;
35
35
  }
36
36
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC13b2JibGUtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC13b2JibGUtbWF0ZXJpYWwvbWVzaC13b2JibGUtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNL0IsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUssQ0FBQyxvQkFBb0I7SUFJOUQsWUFBWSxhQUFtRCxFQUFFO1FBQzdELEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRVEsZUFBZSxDQUFDLE1BQW9CO1FBQ3pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFekMsTUFBTSxDQUFDLFlBQVksR0FBRzs7O1FBR3RCLE1BQU0sQ0FBQyxZQUFZO0tBQ3RCLENBQUM7UUFDRSxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUM3Qyx5QkFBeUIsRUFDekI7Ozs7OytCQUttQixDQUN0QixDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLENBQUM7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLENBQUM7UUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUdKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5pbnRlcmZhY2UgVW5pZm9ybTxUPiB7XG4gICAgdmFsdWU6IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBNZXNoV29iYmxlTWF0ZXJpYWwgZXh0ZW5kcyBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbCB7XG4gICAgX3RpbWU6IFVuaWZvcm08bnVtYmVyPjtcbiAgICBfZmFjdG9yOiBVbmlmb3JtPG51bWJlcj47XG5cbiAgICBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJzOiBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbFBhcmFtZXRlcnMgPSB7fSkge1xuICAgICAgICBzdXBlcihwYXJhbWV0ZXJzKTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZXMocGFyYW1ldGVycyk7XG4gICAgICAgIHRoaXMuX3RpbWUgPSB7IHZhbHVlOiAwIH07XG4gICAgICAgIHRoaXMuX2ZhY3RvciA9IHsgdmFsdWU6IDEgfTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBvbkJlZm9yZUNvbXBpbGUoc2hhZGVyOiBUSFJFRS5TaGFkZXIpIHtcbiAgICAgICAgc2hhZGVyLnVuaWZvcm1zWyd0aW1lJ10gPSB0aGlzLl90aW1lO1xuICAgICAgICBzaGFkZXIudW5pZm9ybXNbJ2ZhY3RvciddID0gdGhpcy5fZmFjdG9yO1xuXG4gICAgICAgIHNoYWRlci52ZXJ0ZXhTaGFkZXIgPSBgXG4gICAgICB1bmlmb3JtIGZsb2F0IHRpbWU7XG4gICAgICB1bmlmb3JtIGZsb2F0IGZhY3RvcjtcbiAgICAgICR7c2hhZGVyLnZlcnRleFNoYWRlcn1cbiAgICBgO1xuICAgICAgICBzaGFkZXIudmVydGV4U2hhZGVyID0gc2hhZGVyLnZlcnRleFNoYWRlci5yZXBsYWNlKFxuICAgICAgICAgICAgJyNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+JyxcbiAgICAgICAgICAgIGBmbG9hdCB0aGV0YSA9IHNpbiggdGltZSArIHBvc2l0aW9uLnkgKSAvIDIuMCAqIGZhY3RvcjtcbiAgICAgICAgZmxvYXQgYyA9IGNvcyggdGhldGEgKTtcbiAgICAgICAgZmxvYXQgcyA9IHNpbiggdGhldGEgKTtcbiAgICAgICAgbWF0MyBtID0gbWF0MyggYywgMCwgcywgMCwgMSwgMCwgLXMsIDAsIGMgKTtcbiAgICAgICAgdmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMoIHBvc2l0aW9uICkgKiBtO1xuICAgICAgICB2Tm9ybWFsID0gdk5vcm1hbCAqIG07YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCB0aW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGltZS52YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgdGltZSh2KSB7XG4gICAgICAgIHRoaXMuX3RpbWUudmFsdWUgPSB2O1xuICAgIH1cblxuICAgIGdldCBmYWN0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mYWN0b3IudmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IGZhY3Rvcih2KSB7XG4gICAgICAgIHRoaXMuX2ZhY3Rvci52YWx1ZSA9IHY7XG4gICAgfVxuXG4gICAgZGVjbGFyZSBzcGVlZDogbnVtYmVyO1xufVxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC13b2JibGUtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc2hhZGVycy9zcmMvbWVzaC13b2JibGUtbWF0ZXJpYWwvbWVzaC13b2JibGUtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNL0IsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUssQ0FBQyxvQkFBb0I7SUFJakUsWUFBWSxhQUFtRCxFQUFFO1FBQ2hFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRVEsZUFBZSxDQUFDLE1BQW9CO1FBQzVDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFekMsTUFBTSxDQUFDLFlBQVksR0FBRzs7O1FBR2hCLE1BQU0sQ0FBQyxZQUFZO0tBQ3RCLENBQUM7UUFDSixNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUNoRCx5QkFBeUIsRUFDekI7Ozs7OytCQUs0QixDQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSTtRQUNQLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLENBQUM7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztDQUdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5pbnRlcmZhY2UgVW5pZm9ybTxUPiB7XG5cdHZhbHVlOiBUO1xufVxuXG5leHBvcnQgY2xhc3MgTWVzaFdvYmJsZU1hdGVyaWFsIGV4dGVuZHMgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwge1xuXHRfdGltZTogVW5pZm9ybTxudW1iZXI+O1xuXHRfZmFjdG9yOiBVbmlmb3JtPG51bWJlcj47XG5cblx0Y29uc3RydWN0b3IocGFyYW1ldGVyczogVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWxQYXJhbWV0ZXJzID0ge30pIHtcblx0XHRzdXBlcihwYXJhbWV0ZXJzKTtcblx0XHR0aGlzLnNldFZhbHVlcyhwYXJhbWV0ZXJzKTtcblx0XHR0aGlzLl90aW1lID0geyB2YWx1ZTogMCB9O1xuXHRcdHRoaXMuX2ZhY3RvciA9IHsgdmFsdWU6IDEgfTtcblx0fVxuXG5cdG92ZXJyaWRlIG9uQmVmb3JlQ29tcGlsZShzaGFkZXI6IFRIUkVFLlNoYWRlcikge1xuXHRcdHNoYWRlci51bmlmb3Jtc1sndGltZSddID0gdGhpcy5fdGltZTtcblx0XHRzaGFkZXIudW5pZm9ybXNbJ2ZhY3RvciddID0gdGhpcy5fZmFjdG9yO1xuXG5cdFx0c2hhZGVyLnZlcnRleFNoYWRlciA9IGBcbiAgICAgIHVuaWZvcm0gZmxvYXQgdGltZTtcbiAgICAgIHVuaWZvcm0gZmxvYXQgZmFjdG9yO1xuICAgICAgJHtzaGFkZXIudmVydGV4U2hhZGVyfVxuICAgIGA7XG5cdFx0c2hhZGVyLnZlcnRleFNoYWRlciA9IHNoYWRlci52ZXJ0ZXhTaGFkZXIucmVwbGFjZShcblx0XHRcdCcjaW5jbHVkZSA8YmVnaW5fdmVydGV4PicsXG5cdFx0XHRgZmxvYXQgdGhldGEgPSBzaW4oIHRpbWUgKyBwb3NpdGlvbi55ICkgLyAyLjAgKiBmYWN0b3I7XG4gICAgICAgIGZsb2F0IGMgPSBjb3MoIHRoZXRhICk7XG4gICAgICAgIGZsb2F0IHMgPSBzaW4oIHRoZXRhICk7XG4gICAgICAgIG1hdDMgbSA9IG1hdDMoIGMsIDAsIHMsIDAsIDEsIDAsIC1zLCAwLCBjICk7XG4gICAgICAgIHZlYzMgdHJhbnNmb3JtZWQgPSB2ZWMzKCBwb3NpdGlvbiApICogbTtcbiAgICAgICAgdk5vcm1hbCA9IHZOb3JtYWwgKiBtO2AsXG5cdFx0KTtcblx0fVxuXG5cdGdldCB0aW1lKCkge1xuXHRcdHJldHVybiB0aGlzLl90aW1lLnZhbHVlO1xuXHR9XG5cblx0c2V0IHRpbWUodikge1xuXHRcdHRoaXMuX3RpbWUudmFsdWUgPSB2O1xuXHR9XG5cblx0Z2V0IGZhY3RvcigpIHtcblx0XHRyZXR1cm4gdGhpcy5fZmFjdG9yLnZhbHVlO1xuXHR9XG5cblx0c2V0IGZhY3Rvcih2KSB7XG5cdFx0dGhpcy5fZmFjdG9yLnZhbHVlID0gdjtcblx0fVxuXG5cdGRlY2xhcmUgc3BlZWQ6IG51bWJlcjtcbn1cbiJdfQ==
@@ -31,4 +31,4 @@ export function shaderMaterial(uniforms, vertexShader, fragmentShader, onInit) {
31
31
  material.key = THREE.MathUtils.generateUUID();
32
32
  return material;
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsUUFpQkMsRUFDRCxZQUFvQixFQUNwQixjQUFzQixFQUN0QixNQUFrRDtJQUVsRCxNQUFNLFFBQVEsR0FBRyxLQUFNLFNBQVEsS0FBSyxDQUFDLGNBQWM7UUFFL0MsWUFBWSxVQUFVLEdBQUcsRUFBRTtZQUN2QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLDZCQUE2QjtZQUM3QixLQUFLLENBQUM7Z0JBQ0YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtvQkFDNUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNqRSxPQUFPO3dCQUNILEdBQUcsR0FBRzt3QkFDTixHQUFHLE9BQU87cUJBQ2IsQ0FBQztnQkFDTixDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNOLFlBQVk7Z0JBQ1osY0FBYzthQUNqQixDQUFDLENBQUM7WUFkQSxRQUFHLEdBQVcsRUFBRSxDQUFDO1lBZXBCLHdCQUF3QjtZQUN4QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQ3ZCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtnQkFDOUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDcEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQzthQUM5QyxDQUFDLENBQ0wsQ0FBQztZQUVGLGlEQUFpRDtZQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNoQyxjQUFjO1lBQ2QsSUFBSSxNQUFNO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO0tBQ3dELENBQUM7SUFDOUQsUUFBUSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGFkZXJNYXRlcmlhbChcbiAgICB1bmlmb3Jtczoge1xuICAgICAgICBbbmFtZTogc3RyaW5nXTpcbiAgICAgICAgICAgIHwgVEhSRUUuQ3ViZVRleHR1cmVcbiAgICAgICAgICAgIHwgVEhSRUUuVGV4dHVyZVxuICAgICAgICAgICAgfCBJbnQzMkFycmF5XG4gICAgICAgICAgICB8IEZsb2F0MzJBcnJheVxuICAgICAgICAgICAgfCBUSFJFRS5NYXRyaXg0XG4gICAgICAgICAgICB8IFRIUkVFLk1hdHJpeDNcbiAgICAgICAgICAgIHwgVEhSRUUuUXVhdGVybmlvblxuICAgICAgICAgICAgfCBUSFJFRS5WZWN0b3I0XG4gICAgICAgICAgICB8IFRIUkVFLlZlY3RvcjNcbiAgICAgICAgICAgIHwgVEhSRUUuVmVjdG9yMlxuICAgICAgICAgICAgfCBUSFJFRS5Db2xvclxuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgIHwgYm9vbGVhblxuICAgICAgICAgICAgfCBBcnJheTxhbnk+XG4gICAgICAgICAgICB8IG51bGw7XG4gICAgfSxcbiAgICB2ZXJ0ZXhTaGFkZXI6IHN0cmluZyxcbiAgICBmcmFnbWVudFNoYWRlcjogc3RyaW5nLFxuICAgIG9uSW5pdD86IChtYXRlcmlhbD86IFRIUkVFLlNoYWRlck1hdGVyaWFsKSA9PiB2b2lkXG4pIHtcbiAgICBjb25zdCBtYXRlcmlhbCA9IGNsYXNzIGV4dGVuZHMgVEhSRUUuU2hhZGVyTWF0ZXJpYWwge1xuICAgICAgICBwdWJsaWMga2V5OiBzdHJpbmcgPSAnJztcbiAgICAgICAgY29uc3RydWN0b3IocGFyYW1ldGVycyA9IHt9KSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModW5pZm9ybXMpO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHVuZm9ybXMgYW5kIHNoYWRlcnNcbiAgICAgICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgICAgICB1bmlmb3JtczogZW50cmllcy5yZWR1Y2UoKGFjYywgW25hbWUsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlmb3JtID0gVEhSRUUuVW5pZm9ybXNVdGlscy5jbG9uZSh7IFtuYW1lXTogeyB2YWx1ZSB9IH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udW5pZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LCB7fSksXG4gICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyLFxuICAgICAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBDcmVhdGUgZ2V0dGVyL3NldHRlcnNcbiAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaCgoW25hbWVdKSA9PlxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gdGhpcy51bmlmb3Jtc1tuYW1lXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2V0OiAodikgPT4gKHRoaXMudW5pZm9ybXNbbmFtZV0udmFsdWUgPSB2KSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gQXNzaWduIHBhcmFtZXRlcnMsIHRoaXMgbWlnaHQgaW5jbHVkZSB1bmlmb3Jtc1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIC8vIENhbGwgb25Jbml0XG4gICAgICAgICAgICBpZiAob25Jbml0KSBvbkluaXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9IGFzIHVua25vd24gYXMgdHlwZW9mIFRIUkVFLlNoYWRlck1hdGVyaWFsICYgeyBrZXk6IHN0cmluZyB9O1xuICAgIG1hdGVyaWFsLmtleSA9IFRIUkVFLk1hdGhVdGlscy5nZW5lcmF0ZVVVSUQoKTtcbiAgICByZXR1cm4gbWF0ZXJpYWw7XG59XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3NoYWRlcnMvc3JjL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxVQUFVLGNBQWMsQ0FvQjdCLFFBQWtCLEVBQ2xCLFlBQW9CLEVBQ3BCLGNBQXNCLEVBQ3RCLE1BQWtEO0lBRWxELE1BQU0sUUFBUSxHQUFHLEtBQU0sU0FBUSxLQUFLLENBQUMsY0FBYztRQUVsRCxZQUFZLFVBQVUsR0FBRyxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsNkJBQTZCO1lBQzdCLEtBQUssQ0FBQztnQkFDTCxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO29CQUMvQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2pFLE9BQU87d0JBQ04sR0FBRyxHQUFHO3dCQUNOLEdBQUcsT0FBTztxQkFDVixDQUFDO2dCQUNILENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ04sWUFBWTtnQkFDWixjQUFjO2FBQ2QsQ0FBQyxDQUFDO1lBZEcsUUFBRyxHQUFXLEVBQUUsQ0FBQztZQWV2Qix3QkFBd0I7WUFDeEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUMxQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQ2pDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7Z0JBQ3BDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7YUFDM0MsQ0FBQyxDQUNGLENBQUM7WUFFRixpREFBaUQ7WUFDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEMsY0FBYztZQUNkLElBQUksTUFBTTtnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztLQUMyRCxDQUFDO0lBQzlELFFBQVEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxPQUFPLFFBQVEsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2hhZGVyTWF0ZXJpYWw8XG5cdFVuaWZvcm1zIGV4dGVuZHMge1xuXHRcdFtuYW1lOiBzdHJpbmddOlxuXHRcdFx0fCBUSFJFRS5DdWJlVGV4dHVyZVxuXHRcdFx0fCBUSFJFRS5UZXh0dXJlXG5cdFx0XHR8IEludDMyQXJyYXlcblx0XHRcdHwgRmxvYXQzMkFycmF5XG5cdFx0XHR8IFRIUkVFLk1hdHJpeDRcblx0XHRcdHwgVEhSRUUuTWF0cml4M1xuXHRcdFx0fCBUSFJFRS5RdWF0ZXJuaW9uXG5cdFx0XHR8IFRIUkVFLlZlY3RvcjRcblx0XHRcdHwgVEhSRUUuVmVjdG9yM1xuXHRcdFx0fCBUSFJFRS5WZWN0b3IyXG5cdFx0XHR8IFRIUkVFLkNvbG9yXG5cdFx0XHR8IG51bWJlclxuXHRcdFx0fCBib29sZWFuXG5cdFx0XHR8IEFycmF5PGFueT5cblx0XHRcdHwgbnVsbDtcblx0fSxcbj4oXG5cdHVuaWZvcm1zOiBVbmlmb3Jtcyxcblx0dmVydGV4U2hhZGVyOiBzdHJpbmcsXG5cdGZyYWdtZW50U2hhZGVyOiBzdHJpbmcsXG5cdG9uSW5pdD86IChtYXRlcmlhbD86IFRIUkVFLlNoYWRlck1hdGVyaWFsKSA9PiB2b2lkLFxuKSB7XG5cdGNvbnN0IG1hdGVyaWFsID0gY2xhc3MgZXh0ZW5kcyBUSFJFRS5TaGFkZXJNYXRlcmlhbCB7XG5cdFx0cHVibGljIGtleTogc3RyaW5nID0gJyc7XG5cdFx0Y29uc3RydWN0b3IocGFyYW1ldGVycyA9IHt9KSB7XG5cdFx0XHRjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModW5pZm9ybXMpO1xuXHRcdFx0Ly8gQ3JlYXRlIHVuZm9ybXMgYW5kIHNoYWRlcnNcblx0XHRcdHN1cGVyKHtcblx0XHRcdFx0dW5pZm9ybXM6IGVudHJpZXMucmVkdWNlKChhY2MsIFtuYW1lLCB2YWx1ZV0pID0+IHtcblx0XHRcdFx0XHRjb25zdCB1bmlmb3JtID0gVEhSRUUuVW5pZm9ybXNVdGlscy5jbG9uZSh7IFtuYW1lXTogeyB2YWx1ZSB9IH0pO1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHQuLi5hY2MsXG5cdFx0XHRcdFx0XHQuLi51bmlmb3JtLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0sIHt9KSxcblx0XHRcdFx0dmVydGV4U2hhZGVyLFxuXHRcdFx0XHRmcmFnbWVudFNoYWRlcixcblx0XHRcdH0pO1xuXHRcdFx0Ly8gQ3JlYXRlIGdldHRlci9zZXR0ZXJzXG5cdFx0XHRlbnRyaWVzLmZvckVhY2goKFtuYW1lXSkgPT5cblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIG5hbWUsIHtcblx0XHRcdFx0XHRnZXQ6ICgpID0+IHRoaXMudW5pZm9ybXNbbmFtZV0udmFsdWUsXG5cdFx0XHRcdFx0c2V0OiAodikgPT4gKHRoaXMudW5pZm9ybXNbbmFtZV0udmFsdWUgPSB2KSxcblx0XHRcdFx0fSksXG5cdFx0XHQpO1xuXG5cdFx0XHQvLyBBc3NpZ24gcGFyYW1ldGVycywgdGhpcyBtaWdodCBpbmNsdWRlIHVuaWZvcm1zXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtZXRlcnMpO1xuXHRcdFx0Ly8gQ2FsbCBvbkluaXRcblx0XHRcdGlmIChvbkluaXQpIG9uSW5pdCh0aGlzKTtcblx0XHR9XG5cdH0gYXMgdW5rbm93biBhcyB0eXBlb2YgVEhSRUUuU2hhZGVyTWF0ZXJpYWwgJiB7IGtleTogc3RyaW5nIH07XG5cdG1hdGVyaWFsLmtleSA9IFRIUkVFLk1hdGhVdGlscy5nZW5lcmF0ZVVVSUQoKTtcblx0cmV0dXJuIG1hdGVyaWFsO1xufVxuIl19