@luma.gl/webgl 9.2.6 → 9.3.0-alpha.10

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 (247) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +1 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +4 -1
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.d.ts +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  9. package/dist/adapter/converters/shader-formats.d.ts +1 -64
  10. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  11. package/dist/adapter/converters/shader-formats.js +1 -64
  12. package/dist/adapter/converters/shader-formats.js.map +1 -1
  13. package/dist/adapter/converters/webgl-shadertypes.d.ts +1 -3
  14. package/dist/adapter/converters/webgl-shadertypes.d.ts.map +1 -1
  15. package/dist/adapter/converters/webgl-shadertypes.js +1 -6
  16. package/dist/adapter/converters/webgl-shadertypes.js.map +1 -1
  17. package/dist/adapter/converters/webgl-texture-table.d.ts +8 -4
  18. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -1
  19. package/dist/adapter/converters/webgl-texture-table.js +122 -58
  20. package/dist/adapter/converters/webgl-texture-table.js.map +1 -1
  21. package/dist/adapter/converters/webgl-vertex-formats.d.ts +1 -1
  22. package/dist/adapter/converters/webgl-vertex-formats.d.ts.map +1 -1
  23. package/dist/adapter/converters/webgl-vertex-formats.js +1 -1
  24. package/dist/adapter/converters/webgl-vertex-formats.js.map +1 -1
  25. package/dist/adapter/device-helpers/webgl-device-features.d.ts +1 -1
  26. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  27. package/dist/adapter/device-helpers/webgl-device-features.js +1 -2
  28. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -1
  29. package/dist/adapter/device-helpers/webgl-device-info.d.ts +1 -1
  30. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -1
  31. package/dist/adapter/device-helpers/webgl-device-info.js +6 -1
  32. package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -1
  33. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +1 -1
  34. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
  36. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -1
  37. package/dist/adapter/helpers/format-utils.d.ts +1 -1
  38. package/dist/adapter/helpers/format-utils.d.ts.map +1 -1
  39. package/dist/adapter/helpers/format-utils.js +1 -1
  40. package/dist/adapter/helpers/format-utils.js.map +1 -1
  41. package/dist/adapter/helpers/get-shader-layout-from-glsl.js +36 -22
  42. package/dist/adapter/helpers/get-shader-layout-from-glsl.js.map +1 -1
  43. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  44. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.js +20 -0
  46. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  47. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  48. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.js +1 -1
  50. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  51. package/dist/adapter/helpers/webgl-texture-utils.d.ts +1 -1
  52. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  53. package/dist/adapter/helpers/webgl-texture-utils.js +4 -4
  54. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -1
  55. package/dist/adapter/helpers/webgl-topology-utils.d.ts +1 -1
  56. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.js +1 -1
  58. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -1
  59. package/dist/adapter/resources/webgl-buffer.d.ts +1 -1
  60. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgl-buffer.js +20 -5
  62. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  63. package/dist/adapter/resources/webgl-command-buffer.d.ts +3 -4
  64. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  65. package/dist/adapter/resources/webgl-command-buffer.js +29 -39
  66. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  67. package/dist/adapter/resources/webgl-command-encoder.d.ts +6 -5
  68. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  69. package/dist/adapter/resources/webgl-command-encoder.js +23 -8
  70. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  71. package/dist/adapter/resources/webgl-fence.d.ts +14 -0
  72. package/dist/adapter/resources/webgl-fence.d.ts.map +1 -0
  73. package/dist/adapter/resources/webgl-fence.js +49 -0
  74. package/dist/adapter/resources/webgl-fence.js.map +1 -0
  75. package/dist/adapter/resources/webgl-framebuffer.d.ts +3 -1
  76. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-framebuffer.js +10 -1
  78. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  79. package/dist/adapter/resources/webgl-query-set.d.ts +37 -31
  80. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -1
  81. package/dist/adapter/resources/webgl-query-set.js +247 -96
  82. package/dist/adapter/resources/webgl-query-set.js.map +1 -1
  83. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  84. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-render-pass.js +28 -11
  86. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  87. package/dist/adapter/resources/webgl-render-pipeline.d.ts +17 -21
  88. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  89. package/dist/adapter/resources/webgl-render-pipeline.js +70 -169
  90. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  91. package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
  92. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  93. package/dist/adapter/resources/webgl-sampler.js +1 -1
  94. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  95. package/dist/adapter/resources/webgl-shader.d.ts +1 -1
  96. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  97. package/dist/adapter/resources/webgl-shader.js +15 -8
  98. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  99. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts +24 -0
  100. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts.map +1 -0
  101. package/dist/adapter/resources/webgl-shared-render-pipeline.js +155 -0
  102. package/dist/adapter/resources/webgl-shared-render-pipeline.js.map +1 -0
  103. package/dist/adapter/resources/webgl-texture.d.ts +42 -4
  104. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  105. package/dist/adapter/resources/webgl-texture.js +286 -62
  106. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  107. package/dist/adapter/resources/webgl-transform-feedback.js +6 -6
  108. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
  109. package/dist/adapter/resources/webgl-vertex-array.d.ts +2 -2
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  111. package/dist/adapter/resources/webgl-vertex-array.js +1 -1
  112. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
  113. package/dist/adapter/webgl-adapter.d.ts.map +1 -1
  114. package/dist/adapter/webgl-adapter.js +22 -23
  115. package/dist/adapter/webgl-adapter.js.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  117. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  118. package/dist/adapter/webgl-canvas-context.js +16 -6
  119. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  120. package/dist/adapter/webgl-device.d.ts +10 -5
  121. package/dist/adapter/webgl-device.d.ts.map +1 -1
  122. package/dist/adapter/webgl-device.js +75 -28
  123. package/dist/adapter/webgl-device.js.map +1 -1
  124. package/dist/adapter/webgl-presentation-context.d.ts +21 -0
  125. package/dist/adapter/webgl-presentation-context.d.ts.map +1 -0
  126. package/dist/adapter/webgl-presentation-context.js +64 -0
  127. package/dist/adapter/webgl-presentation-context.js.map +1 -0
  128. package/dist/constants/index.d.ts +3 -0
  129. package/dist/constants/index.d.ts.map +1 -0
  130. package/dist/constants/index.js +5 -0
  131. package/dist/constants/index.js.map +1 -0
  132. package/dist/constants/webgl-constants.d.ts +822 -0
  133. package/dist/constants/webgl-constants.d.ts.map +1 -0
  134. package/dist/constants/webgl-constants.js +928 -0
  135. package/dist/constants/webgl-constants.js.map +1 -0
  136. package/dist/constants/webgl-types.d.ts +480 -0
  137. package/dist/constants/webgl-types.d.ts.map +1 -0
  138. package/dist/constants/webgl-types.js +6 -0
  139. package/dist/constants/webgl-types.js.map +1 -0
  140. package/dist/context/debug/spector.d.ts.map +1 -1
  141. package/dist/context/debug/spector.js +4 -4
  142. package/dist/context/debug/spector.js.map +1 -1
  143. package/dist/context/debug/webgl-developer-tools.js +7 -7
  144. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  145. package/dist/context/helpers/create-browser-context.d.ts.map +1 -1
  146. package/dist/context/helpers/create-browser-context.js +46 -36
  147. package/dist/context/helpers/create-browser-context.js.map +1 -1
  148. package/dist/context/helpers/webgl-context-data.d.ts +5 -1
  149. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -1
  150. package/dist/context/helpers/webgl-context-data.js +9 -10
  151. package/dist/context/helpers/webgl-context-data.js.map +1 -1
  152. package/dist/context/helpers/webgl-extensions.d.ts +1 -1
  153. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -1
  154. package/dist/context/parameters/unified-parameter-api.d.ts +2 -2
  155. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  156. package/dist/context/parameters/unified-parameter-api.js +2 -2
  157. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  158. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  159. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  160. package/dist/context/parameters/webgl-parameter-tables.js +1 -1
  161. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  162. package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -1
  163. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -1
  164. package/dist/context/state-tracker/webgl-state-tracker.js +2 -2
  165. package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -1
  166. package/dist/dist.dev.js +1897 -999
  167. package/dist/dist.min.js +2 -2
  168. package/dist/index.cjs +3 -5255
  169. package/dist/index.cjs.map +4 -4
  170. package/dist/index.d.ts +3 -0
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +2 -0
  173. package/dist/index.js.map +1 -1
  174. package/dist/utils/fill-array.js +1 -1
  175. package/dist/utils/fill-array.js.map +1 -1
  176. package/dist/webgl-constants.d.ts +2 -0
  177. package/dist/webgl-constants.d.ts.map +1 -0
  178. package/dist/webgl-constants.js +5 -0
  179. package/dist/webgl-constants.js.map +1 -0
  180. package/dist/webgl-types.d.ts +2 -0
  181. package/dist/webgl-types.d.ts.map +1 -0
  182. package/dist/{types.js → webgl-types.js} +1 -1
  183. package/dist/webgl-types.js.map +1 -0
  184. package/package.json +19 -5
  185. package/src/adapter/converters/device-parameters.ts +6 -2
  186. package/src/adapter/converters/sampler-parameters.ts +1 -1
  187. package/src/adapter/converters/shader-formats.ts +1 -66
  188. package/src/adapter/converters/webgl-shadertypes.ts +1 -9
  189. package/src/adapter/converters/webgl-texture-table.ts +160 -68
  190. package/src/adapter/converters/webgl-vertex-formats.ts +1 -1
  191. package/src/adapter/device-helpers/webgl-device-features.ts +2 -3
  192. package/src/adapter/device-helpers/webgl-device-info.ts +7 -1
  193. package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
  194. package/src/adapter/helpers/format-utils.ts +1 -1
  195. package/src/adapter/helpers/get-shader-layout-from-glsl.ts +44 -24
  196. package/src/adapter/helpers/parse-shader-compiler-log.ts +23 -1
  197. package/src/adapter/helpers/set-uniform.ts +1 -1
  198. package/src/adapter/helpers/webgl-texture-utils.ts +4 -4
  199. package/src/adapter/helpers/webgl-topology-utils.ts +1 -1
  200. package/src/adapter/resources/webgl-buffer.ts +17 -5
  201. package/src/adapter/resources/webgl-command-buffer.ts +44 -48
  202. package/src/adapter/resources/webgl-command-encoder.ts +28 -11
  203. package/src/adapter/resources/webgl-fence.ts +55 -0
  204. package/src/adapter/resources/webgl-framebuffer.ts +12 -1
  205. package/src/adapter/resources/webgl-query-set.ts +295 -101
  206. package/src/adapter/resources/webgl-render-pass.ts +30 -13
  207. package/src/adapter/resources/webgl-render-pipeline.ts +102 -198
  208. package/src/adapter/resources/webgl-sampler.ts +1 -1
  209. package/src/adapter/resources/webgl-shader.ts +15 -8
  210. package/src/adapter/resources/webgl-shared-render-pipeline.ts +211 -0
  211. package/src/adapter/resources/webgl-texture.ts +455 -81
  212. package/src/adapter/resources/webgl-transform-feedback.ts +6 -6
  213. package/src/adapter/resources/webgl-vertex-array.ts +1 -1
  214. package/src/adapter/webgl-adapter.ts +26 -24
  215. package/src/adapter/webgl-canvas-context.ts +19 -8
  216. package/src/adapter/webgl-device.ts +91 -35
  217. package/src/adapter/webgl-presentation-context.ts +93 -0
  218. package/src/constants/index.d.ts.map +1 -0
  219. package/src/constants/index.js.map +1 -0
  220. package/src/constants/index.ts +31 -0
  221. package/src/constants/webgl-constants.d.ts.map +1 -0
  222. package/src/constants/webgl-constants.js.map +1 -0
  223. package/src/constants/webgl-constants.ts +1051 -0
  224. package/src/constants/webgl-types.d.ts.map +1 -0
  225. package/src/constants/webgl-types.js.map +1 -0
  226. package/src/constants/webgl-types.ts +813 -0
  227. package/src/context/debug/spector.ts +4 -4
  228. package/src/context/debug/webgl-developer-tools.ts +16 -7
  229. package/src/context/helpers/create-browser-context.ts +54 -43
  230. package/src/context/helpers/webgl-context-data.ts +17 -11
  231. package/src/context/helpers/webgl-extensions.ts +1 -1
  232. package/src/context/parameters/unified-parameter-api.ts +3 -3
  233. package/src/context/parameters/webgl-parameter-tables.ts +1 -1
  234. package/src/context/polyfills/polyfill-webgl1-extensions.ts +1 -1
  235. package/src/context/state-tracker/webgl-state-tracker.ts +2 -2
  236. package/src/index.ts +27 -0
  237. package/src/utils/fill-array.ts +1 -1
  238. package/src/webgl-constants.d.ts.map +1 -0
  239. package/src/webgl-constants.js.map +1 -0
  240. package/src/webgl-constants.ts +5 -0
  241. package/src/webgl-types.d.ts.map +1 -0
  242. package/src/webgl-types.js.map +1 -0
  243. package/src/webgl-types.ts +29 -0
  244. package/dist/types.d.ts +0 -11
  245. package/dist/types.d.ts.map +0 -1
  246. package/dist/types.js.map +0 -1
  247. package/src/types.ts +0 -14
@@ -5,7 +5,7 @@
5
5
  import type {TypedArray, NumericArray} from '@math.gl/types';
6
6
  import type {Device, Buffer, VertexArrayProps} from '@luma.gl/core';
7
7
  import {VertexArray, getScratchArray} from '@luma.gl/core';
8
- import {GL} from '@luma.gl/constants';
8
+ import {GL} from '@luma.gl/webgl/constants';
9
9
  import {getBrowser} from '@probe.gl/env';
10
10
 
11
11
  import {WebGLDevice} from '../webgl-device';
@@ -55,10 +55,9 @@ export class WebGLAdapter extends Adapter {
55
55
  if (gl instanceof WebGLDevice) {
56
56
  return gl;
57
57
  }
58
- // @ts-expect-error
59
- if (gl?.device instanceof WebGLDevice) {
60
- // @ts-expect-error
61
- return gl.device as WebGLDevice;
58
+ const existingDevice = WebGLDevice.getDeviceFromContext(gl as WebGL2RenderingContext | null);
59
+ if (existingDevice) {
60
+ return existingDevice;
62
61
  }
63
62
  if (!isWebGL(gl)) {
64
63
  throw new Error('Invalid WebGL2RenderingContext');
@@ -78,40 +77,44 @@ export class WebGLAdapter extends Adapter {
78
77
  async create(props: DeviceProps = {}): Promise<WebGLDevice> {
79
78
  const {WebGLDevice} = await import('./webgl-device');
80
79
 
81
- log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created')();
82
- try {
83
- const promises: Promise<unknown>[] = [];
80
+ const promises: Promise<unknown>[] = [];
84
81
 
85
- // Load webgl and spector debug scripts from CDN if requested
86
- if (props.debugWebGL || props.debug) {
87
- promises.push(loadWebGLDeveloperTools());
88
- }
82
+ // Load webgl and spector debug scripts from CDN if requested
83
+ if (props.debugWebGL || props.debug) {
84
+ promises.push(loadWebGLDeveloperTools());
85
+ }
89
86
 
90
- if (props.debugSpectorJS) {
91
- promises.push(loadSpectorJS(props));
92
- }
87
+ if (props.debugSpectorJS) {
88
+ promises.push(loadSpectorJS(props));
89
+ }
93
90
 
94
- // Wait for all the loads to settle before creating the context.
95
- // The Device.create() functions are async, so in contrast to the constructor, we can `await` here.
96
- const results = await Promise.allSettled(promises);
97
- for (const result of results) {
98
- if (result.status === 'rejected') {
99
- log.error(`Failed to initialize debug libraries ${result.reason}`)();
100
- }
91
+ // Wait for all the loads to settle before creating the context.
92
+ // The Device.create() functions are async, so in contrast to the constructor, we can `await` here.
93
+ const results = await Promise.allSettled(promises);
94
+ for (const result of results) {
95
+ if (result.status === 'rejected') {
96
+ log.error(`Failed to initialize debug libraries ${result.reason}`)();
101
97
  }
98
+ }
102
99
 
100
+ try {
103
101
  const device = new WebGLDevice(props);
104
102
 
103
+ log.groupCollapsed(LOG_LEVEL, `WebGLDevice ${device.id} created`)();
105
104
  // Log some debug info about the newly created context
106
105
  const message = `\
107
106
  ${device._reused ? 'Reusing' : 'Created'} device with WebGL2 ${device.props.debug ? 'debug ' : ''}context: \
108
107
  ${device.info.vendor}, ${device.info.renderer} for canvas: ${device.canvasContext.id}`;
109
108
  log.probe(LOG_LEVEL, message)();
110
109
  log.table(LOG_LEVEL, device.info)();
111
-
112
110
  return device;
113
111
  } finally {
114
112
  log.groupEnd(LOG_LEVEL)();
113
+ log.info(
114
+ LOG_LEVEL,
115
+ `%cWebGL call tracing: luma.log.set('debug-webgl') `,
116
+ 'color: white; background: blue; padding: 2px 6px; border-radius: 3px;'
117
+ )();
115
118
  }
116
119
  }
117
120
  }
@@ -121,8 +124,7 @@ function isWebGL(gl: any): gl is WebGL2RenderingContext {
121
124
  if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
122
125
  return true;
123
126
  }
124
- // Look for debug contexts, headless gl etc
125
- return Boolean(gl && Number.isFinite(gl._version));
127
+ return Boolean(gl && typeof gl.createVertexArray === 'function');
126
128
  }
127
129
 
128
130
  export const webgl2Adapter = new WebGLAdapter();
@@ -27,16 +27,27 @@ export class WebGLCanvasContext extends CanvasContext {
27
27
 
28
28
  // Base class constructor cannot access derived methods/fields, so we need to call these functions in the subclass constructor
29
29
  this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
30
- this._updateDevice();
31
- }
32
-
33
- getCurrentFramebuffer(): WEBGLFramebuffer {
34
- // Setting handle to null returns a reference to the default framebuffer
35
- this._framebuffer = this._framebuffer || new WEBGLFramebuffer(this.device, {handle: null});
36
- return this._framebuffer;
30
+ this._configureDevice();
37
31
  }
38
32
 
39
33
  // IMPLEMENTATION OF ABSTRACT METHODS
40
34
 
41
- _updateDevice(): void {}
35
+ _configureDevice(): void {
36
+ const shouldResize =
37
+ this.drawingBufferWidth !== this._framebuffer?.width ||
38
+ this.drawingBufferHeight !== this._framebuffer?.height;
39
+ if (shouldResize) {
40
+ this._framebuffer?.resize([this.drawingBufferWidth, this.drawingBufferHeight]);
41
+ }
42
+ }
43
+
44
+ _getCurrentFramebuffer(): WEBGLFramebuffer {
45
+ this._framebuffer ||= new WEBGLFramebuffer(this.device, {
46
+ id: 'canvas-context-framebuffer',
47
+ handle: null, // Setting handle to null returns a reference to the default WebGL framebuffer
48
+ width: this.drawingBufferWidth,
49
+ height: this.drawingBufferHeight
50
+ });
51
+ return this._framebuffer;
52
+ }
42
53
  }
@@ -8,6 +8,8 @@ import type {
8
8
  DeviceInfo,
9
9
  DeviceTextureFormatCapabilities,
10
10
  CanvasContextProps,
11
+ PresentationContextProps,
12
+ PresentationContext,
11
13
  Buffer,
12
14
  Texture,
13
15
  Framebuffer,
@@ -23,6 +25,7 @@ import type {
23
25
  FramebufferProps,
24
26
  // RenderPipeline,
25
27
  RenderPipelineProps,
28
+ SharedRenderPipeline,
26
29
  ComputePipeline,
27
30
  ComputePipelineProps,
28
31
  // CommandEncoder,
@@ -33,13 +36,15 @@ import type {
33
36
  VertexFormat
34
37
  } from '@luma.gl/core';
35
38
  import {Device, CanvasContext, log} from '@luma.gl/core';
36
- import type {GLExtensions} from '@luma.gl/constants';
39
+ import type {GLExtensions} from '@luma.gl/webgl/constants';
37
40
  import {WebGLStateTracker} from '../context/state-tracker/webgl-state-tracker';
38
41
  import {createBrowserContext} from '../context/helpers/create-browser-context';
42
+ import {getWebGLContextData} from '../context/helpers/webgl-context-data';
39
43
  import {getDeviceInfo} from './device-helpers/webgl-device-info';
40
44
  import {WebGLDeviceFeatures} from './device-helpers/webgl-device-features';
41
45
  import {WebGLDeviceLimits} from './device-helpers/webgl-device-limits';
42
46
  import {WebGLCanvasContext} from './webgl-canvas-context';
47
+ import {WebGLPresentationContext} from './webgl-presentation-context';
43
48
  import type {Spector} from '../context/debug/spector-types';
44
49
  import {initializeSpectorJS} from '../context/debug/spector';
45
50
  import {makeDebugContext} from '../context/debug/webgl-developer-tools';
@@ -52,11 +57,13 @@ import {WEBGLSampler} from './resources/webgl-sampler';
52
57
  import {WEBGLTexture} from './resources/webgl-texture';
53
58
  import {WEBGLFramebuffer} from './resources/webgl-framebuffer';
54
59
  import {WEBGLRenderPipeline} from './resources/webgl-render-pipeline';
60
+ import {WEBGLSharedRenderPipeline} from './resources/webgl-shared-render-pipeline';
55
61
  import {WEBGLCommandEncoder} from './resources/webgl-command-encoder';
56
62
  import {WEBGLCommandBuffer} from './resources/webgl-command-buffer';
57
63
  import {WEBGLVertexArray} from './resources/webgl-vertex-array';
58
64
  import {WEBGLTransformFeedback} from './resources/webgl-transform-feedback';
59
65
  import {WEBGLQuerySet} from './resources/webgl-query-set';
66
+ import {WEBGLFence} from './resources/webgl-fence';
60
67
 
61
68
  import {readPixelsToArray, readPixelsToBuffer} from './helpers/webgl-texture-utils';
62
69
  import {
@@ -69,6 +76,13 @@ import {getWebGLExtension} from '../context/helpers/webgl-extensions';
69
76
 
70
77
  /** WebGPU style Device API for a WebGL context */
71
78
  export class WebGLDevice extends Device {
79
+ static getDeviceFromContext(gl: WebGL2RenderingContext | null): WebGLDevice | null {
80
+ if (!gl) {
81
+ return null;
82
+ }
83
+ // @ts-expect-error Ingore WebGL2RenderingContext type
84
+ return gl.luma?.device ?? null;
85
+ }
72
86
  // Public `Device` API
73
87
 
74
88
  /** type of this device */
@@ -99,7 +113,7 @@ export class WebGLDevice extends Device {
99
113
  _constants: (TypedArray | null)[];
100
114
 
101
115
  /** State used by luma.gl classes - TODO - not used? */
102
- readonly _extensions: GLExtensions = {};
116
+ readonly extensions!: GLExtensions;
103
117
  _polyfilled: boolean = false;
104
118
 
105
119
  /** Instance of Spector.js (if initialized) */
@@ -140,7 +154,8 @@ export class WebGLDevice extends Device {
140
154
  // Note that this can be avoided in webgl2adapter.create() if
141
155
  // DeviceProps._reuseDevices is set.
142
156
  // @ts-expect-error device is attached to context
143
- let device: WebGLDevice | undefined = canvasContextProps.canvas?.gl?.device;
157
+ const existingContext = canvasContextProps.canvas?.gl ?? null;
158
+ let device: WebGLDevice | null = WebGLDevice.getDeviceFromContext(existingContext);
144
159
  if (device) {
145
160
  throw new Error(`WebGL context already attached to device ${device.id}`);
146
161
  }
@@ -160,6 +175,9 @@ export class WebGLDevice extends Device {
160
175
  if (props.powerPreference !== undefined) {
161
176
  webglContextAttributes.powerPreference = props.powerPreference;
162
177
  }
178
+ if (props.failIfMajorPerformanceCaveat !== undefined) {
179
+ webglContextAttributes.failIfMajorPerformanceCaveat = props.failIfMajorPerformanceCaveat;
180
+ }
163
181
 
164
182
  // Check if we should attach to an externally created context or create a new context
165
183
  const externalGLContext = this.props._handle as WebGL2RenderingContext | null;
@@ -186,8 +204,7 @@ export class WebGLDevice extends Device {
186
204
 
187
205
  // Note that the browser will only create one WebGL context per canvas.
188
206
  // This means that a newly created gl context may already have a device attached to it.
189
- // @ts-expect-error luma.gl stores a device reference on the context.
190
- device = gl.device;
207
+ device = WebGLDevice.getDeviceFromContext(gl);
191
208
  if (device) {
192
209
  if (props._reuseDevices) {
193
210
  log.log(
@@ -195,6 +212,9 @@ export class WebGLDevice extends Device {
195
212
  `Not creating a new Device, instead returning a reference to Device ${device.id} already attached to WebGL context`,
196
213
  device
197
214
  )();
215
+ // Destroy the orphaned canvas context that was created above (line 149)
216
+ // to prevent its ResizeObserver from firing callbacks with undefined device
217
+ this.canvasContext.destroy();
198
218
  device._reused = true;
199
219
  return device;
200
220
  }
@@ -210,18 +230,15 @@ export class WebGLDevice extends Device {
210
230
  this.spectorJS = initializeSpectorJS({...this.props, gl: this.handle});
211
231
 
212
232
  // Instrument context
213
- (this.gl as any).device = this; // Update GL context: Link webgl context back to device
214
- // TODO - remove, this is only used to detect debug contexts.
215
- (this.gl as any)._version = 2; // Update GL context: Store WebGL version field on gl context (HACK to identify debug contexts)
233
+ const contextData = getWebGLContextData(this.handle);
234
+ contextData.device = this; // Update GL context: Link webgl context back to device
235
+
236
+ this.extensions = contextData.extensions || (contextData.extensions = {});
216
237
 
217
238
  // initialize luma Device fields
218
- this.info = getDeviceInfo(this.gl, this._extensions);
239
+ this.info = getDeviceInfo(this.gl, this.extensions);
219
240
  this.limits = new WebGLDeviceLimits(this.gl);
220
- this.features = new WebGLDeviceFeatures(
221
- this.gl,
222
- this._extensions,
223
- this.props._disabledFeatures
224
- );
241
+ this.features = new WebGLDeviceFeatures(this.gl, this.extensions, this.props._disabledFeatures);
225
242
  if (this.props._initializeFeatures) {
226
243
  this.features.initializeFeatures();
227
244
  }
@@ -232,18 +249,18 @@ export class WebGLDevice extends Device {
232
249
  });
233
250
  glState.trackState(this.gl, {copyState: false});
234
251
 
235
- // DEBUG contexts: Add luma debug instrumentation to the context, force log level to at least 1
236
- const debugWebGL = props.debugWebGL || props.debug;
237
- const traceWebGL = props.debugWebGL;
238
- if (debugWebGL) {
239
- this.gl = makeDebugContext(this.gl, {debugWebGL, traceWebGL});
252
+ // props.debug - instrument the WebGL context with Khronos debug tools
253
+ // props.debugWebGL - activate WebGL context tracing, force log level to at least 1
254
+ if (props.debug || props.debugWebGL) {
255
+ this.gl = makeDebugContext(this.gl, {debugWebGL: true, traceWebGL: props.debugWebGL});
240
256
  log.warn('WebGL debug mode activated. Performance reduced.')();
241
- if (props.debugWebGL) {
242
- log.level = Math.max(log.level, 1);
243
- }
257
+ }
258
+ if (props.debugWebGL) {
259
+ log.level = Math.max(log.level, 1);
244
260
  }
245
261
 
246
262
  this.commandEncoder = new WEBGLCommandEncoder(this, {id: `${this}-command-encoder`});
263
+ this.canvasContext._startObservers();
247
264
  }
248
265
 
249
266
  /**
@@ -257,6 +274,7 @@ export class WebGLDevice extends Device {
257
274
  * browser API for destroying WebGL contexts.
258
275
  */
259
276
  destroy(): void {
277
+ this.commandEncoder?.destroy();
260
278
  // Note that deck.gl (especially in React strict mode) depends on being able
261
279
  // to asynchronously create a Device against the same canvas (i.e. WebGL context)
262
280
  // multiple times and getting the same device back. Since deck.gl is not aware
@@ -264,7 +282,8 @@ export class WebGLDevice extends Device {
264
282
  // Therefore we must do nothing in destroy() if props._reuseDevices is true
265
283
  if (!this.props._reuseDevices && !this._reused) {
266
284
  // Delete the reference to the device that we store on the WebGL context
267
- delete (this.gl as any).device;
285
+ const contextData = getWebGLContextData(this.handle);
286
+ contextData.device = null;
268
287
  }
269
288
  }
270
289
 
@@ -274,14 +293,14 @@ export class WebGLDevice extends Device {
274
293
 
275
294
  // IMPLEMENTATION OF ABSTRACT DEVICE
276
295
 
277
- getTextureByteAlignment(): number {
278
- return 4;
279
- }
280
-
281
296
  createCanvasContext(props?: CanvasContextProps): CanvasContext {
282
297
  throw new Error('WebGL only supports a single canvas');
283
298
  }
284
299
 
300
+ createPresentationContext(props?: PresentationContextProps): PresentationContext {
301
+ return new WebGLPresentationContext(this, props || {});
302
+ }
303
+
285
304
  createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WEBGLBuffer {
286
305
  const newProps = this._normalizeBufferProps(props);
287
306
  return new WEBGLBuffer(this, newProps);
@@ -319,10 +338,21 @@ export class WebGLDevice extends Device {
319
338
  return new WEBGLQuerySet(this, props);
320
339
  }
321
340
 
341
+ override createFence(): WEBGLFence {
342
+ return new WEBGLFence(this);
343
+ }
344
+
322
345
  createRenderPipeline(props: RenderPipelineProps): WEBGLRenderPipeline {
323
346
  return new WEBGLRenderPipeline(this, props);
324
347
  }
325
348
 
349
+ override _createSharedRenderPipelineWebGL(props: RenderPipelineProps): SharedRenderPipeline {
350
+ return new WEBGLSharedRenderPipeline(
351
+ this,
352
+ props as RenderPipelineProps & {vs: WEBGLShader; fs: WEBGLShader}
353
+ );
354
+ }
355
+
326
356
  createComputePipeline(props?: ComputePipelineProps): ComputePipeline {
327
357
  throw new Error('ComputePipeline not supported in WebGL');
328
358
  }
@@ -336,14 +366,40 @@ export class WebGLDevice extends Device {
336
366
  * https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/commit
337
367
  * Chrome's offscreen canvas does not require gl.commit
338
368
  */
339
- submit(commandBuffer: WEBGLCommandBuffer): void {
369
+ submit(commandBuffer?: WEBGLCommandBuffer): void {
370
+ let submittedCommandEncoder: WEBGLCommandEncoder | null = null;
340
371
  if (!commandBuffer) {
341
- commandBuffer = this.commandEncoder.finish();
342
- this.commandEncoder.destroy();
343
- this.commandEncoder = this.createCommandEncoder({id: `${this.id}-default-encoder`});
372
+ ({submittedCommandEncoder, commandBuffer} = this._finalizeDefaultCommandEncoderForSubmit());
344
373
  }
345
374
 
346
- commandBuffer._executeCommands();
375
+ try {
376
+ commandBuffer._executeCommands();
377
+
378
+ if (submittedCommandEncoder) {
379
+ submittedCommandEncoder
380
+ .resolveTimeProfilingQuerySet()
381
+ .then(() => {
382
+ this.commandEncoder._gpuTimeMs = submittedCommandEncoder._gpuTimeMs;
383
+ })
384
+ .catch(() => {});
385
+ }
386
+ } finally {
387
+ commandBuffer.destroy();
388
+ }
389
+ }
390
+
391
+ private _finalizeDefaultCommandEncoderForSubmit(): {
392
+ submittedCommandEncoder: WEBGLCommandEncoder;
393
+ commandBuffer: WEBGLCommandBuffer;
394
+ } {
395
+ const submittedCommandEncoder = this.commandEncoder;
396
+ const commandBuffer = submittedCommandEncoder.finish();
397
+ this.commandEncoder.destroy();
398
+ this.commandEncoder = this.createCommandEncoder({
399
+ id: submittedCommandEncoder.props.id,
400
+ timeProfilingQuerySet: submittedCommandEncoder.getTimeProfilingQuerySet()
401
+ });
402
+ return {submittedCommandEncoder, commandBuffer};
347
403
  }
348
404
 
349
405
  //
@@ -406,7 +462,7 @@ export class WebGLDevice extends Device {
406
462
  override _getDeviceSpecificTextureFormatCapabilities(
407
463
  capabilities: DeviceTextureFormatCapabilities
408
464
  ): DeviceTextureFormatCapabilities {
409
- return getTextureFormatCapabilitiesWebGL(this.gl, capabilities, this._extensions);
465
+ return getTextureFormatCapabilitiesWebGL(this.gl, capabilities, this.extensions);
410
466
  }
411
467
 
412
468
  //
@@ -509,8 +565,8 @@ export class WebGLDevice extends Device {
509
565
 
510
566
  /** Ensure extensions are only requested once */
511
567
  getExtension(name: keyof GLExtensions): GLExtensions {
512
- getWebGLExtension(this.gl, name, this._extensions);
513
- return this._extensions;
568
+ getWebGLExtension(this.gl, name, this.extensions);
569
+ return this.extensions;
514
570
  }
515
571
 
516
572
  // INTERNAL SUPPORT METHODS FOR WEBGL RESOURCES
@@ -0,0 +1,93 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {PresentationContextProps, TextureFormatDepthStencil, Framebuffer} from '@luma.gl/core';
6
+ import {PresentationContext} from '@luma.gl/core';
7
+ import type {WebGLDevice} from './webgl-device';
8
+
9
+ type PresentationCanvasRenderingContext2D =
10
+ | CanvasRenderingContext2D
11
+ | OffscreenCanvasRenderingContext2D;
12
+
13
+ /**
14
+ * Tracks a non-WebGL destination canvas while rendering into the device's default canvas context.
15
+ */
16
+ export class WebGLPresentationContext extends PresentationContext {
17
+ readonly device: WebGLDevice;
18
+ readonly handle = null;
19
+ readonly context2d: PresentationCanvasRenderingContext2D;
20
+
21
+ get [Symbol.toStringTag](): string {
22
+ return 'WebGLPresentationContext';
23
+ }
24
+
25
+ constructor(device: WebGLDevice, props: PresentationContextProps = {}) {
26
+ super(props);
27
+ this.device = device;
28
+ const contextLabel = `${this[Symbol.toStringTag]}(${this.id})`;
29
+
30
+ const defaultCanvasContext = this.device.getDefaultCanvasContext();
31
+ if (!defaultCanvasContext.offscreenCanvas) {
32
+ throw new Error(
33
+ `${contextLabel}: WebGL PresentationContext requires the default CanvasContext canvas to be an OffscreenCanvas`
34
+ );
35
+ }
36
+
37
+ const context2d = this.canvas.getContext('2d');
38
+ if (!context2d) {
39
+ throw new Error(`${contextLabel}: Failed to create 2d presentation context`);
40
+ }
41
+ this.context2d = context2d;
42
+
43
+ this._setAutoCreatedCanvasId(`${this.device.id}-presentation-canvas`);
44
+ this._configureDevice();
45
+ this._startObservers();
46
+ }
47
+
48
+ present(): void {
49
+ this._resizeDrawingBufferIfNeeded();
50
+ this.device.submit();
51
+
52
+ const defaultCanvasContext = this.device.getDefaultCanvasContext();
53
+ const [sourceWidth, sourceHeight] = defaultCanvasContext.getDrawingBufferSize();
54
+
55
+ // Responsive layouts can transiently collapse presentation canvases to 0x0 during reflow.
56
+ // In that case WebGL has nothing meaningful to present, and drawImage() would throw when the
57
+ // offscreen source canvas has zero width or height.
58
+ if (
59
+ this.drawingBufferWidth === 0 ||
60
+ this.drawingBufferHeight === 0 ||
61
+ sourceWidth === 0 ||
62
+ sourceHeight === 0 ||
63
+ defaultCanvasContext.canvas.width === 0 ||
64
+ defaultCanvasContext.canvas.height === 0
65
+ ) {
66
+ return;
67
+ }
68
+
69
+ if (
70
+ sourceWidth !== this.drawingBufferWidth ||
71
+ sourceHeight !== this.drawingBufferHeight ||
72
+ defaultCanvasContext.canvas.width !== this.drawingBufferWidth ||
73
+ defaultCanvasContext.canvas.height !== this.drawingBufferHeight
74
+ ) {
75
+ throw new Error(
76
+ `${this[Symbol.toStringTag]}(${this.id}): Default canvas context size ${sourceWidth}x${sourceHeight} does not match presentation size ${this.drawingBufferWidth}x${this.drawingBufferHeight}`
77
+ );
78
+ }
79
+
80
+ this.context2d.clearRect(0, 0, this.drawingBufferWidth, this.drawingBufferHeight);
81
+ this.context2d.drawImage(defaultCanvasContext.canvas, 0, 0);
82
+ }
83
+
84
+ protected override _configureDevice(): void {}
85
+
86
+ protected override _getCurrentFramebuffer(options?: {
87
+ depthStencilFormat?: TextureFormatDepthStencil | false;
88
+ }): Framebuffer {
89
+ const defaultCanvasContext = this.device.getDefaultCanvasContext();
90
+ defaultCanvasContext.setDrawingBufferSize(this.drawingBufferWidth, this.drawingBufferHeight);
91
+ return defaultCanvasContext.getCurrentFramebuffer(options);
92
+ }
93
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,EAAE,EAAC,6BAA0B;AAErC,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,iBAAiB,EAClB,yBAAsB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,EAAE,EAAC,6BAA0B"}
@@ -0,0 +1,31 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ export {GL} from './webgl-constants';
6
+
7
+ export type {
8
+ GLTextureTarget,
9
+ GLTextureCubeMapTarget,
10
+ GLTexelDataFormat,
11
+ GLPrimitiveTopology,
12
+ GLPrimitive,
13
+ GLDataType,
14
+ GLPixelType,
15
+ GLUniformType,
16
+ GLSamplerType,
17
+ GLFunction,
18
+ GLBlendEquation,
19
+ GLBlendFunction,
20
+ GLStencilOp,
21
+ GLSamplerParameters,
22
+ GLValueParameters,
23
+ GLPackParameters,
24
+ GLUnpackParameters,
25
+ GLFunctionParameters,
26
+ GLParameters,
27
+ GLLimits,
28
+ GLExtensions,
29
+ GLPolygonMode,
30
+ GLProvokingVertex
31
+ } from './webgl-types';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-constants.d.ts","sourceRoot":"","sources":["webgl-constants.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AAEH,aAAK,MAAM;IAIT,yDAAyD;IACzD,gBAAgB,MAAa;IAC7B,2DAA2D;IAC3D,kBAAkB,OAAa;IAC/B,yDAAyD;IACzD,gBAAgB,QAAa;IAK7B,kEAAkE;IAClE,MAAM,IAAS;IACf,oGAAoG;IACpG,KAAK,IAAS;IACd,0HAA0H;IAC1H,SAAS,IAAS;IAClB,yHAAyH;IACzH,UAAU,IAAS;IACnB,sHAAsH;IACtH,SAAS,IAAS;IAClB,mFAAmF;IACnF,cAAc,IAAS;IACvB,yJAAyJ;IACzJ,YAAY,IAAS;IAIrB,wEAAwE;IACxE,IAAI,IAAI;IACR,uEAAuE;IACvE,GAAG,IAAI;IACP,qGAAqG;IACrG,SAAS,MAAS;IAClB,+GAA+G;IAC/G,mBAAmB,MAAS;IAC5B,8FAA8F;IAC9F,SAAS,MAAS;IAClB,wGAAwG;IACxG,mBAAmB,MAAS;IAC5B,mGAAmG;IACnG,SAAS,MAAS;IAClB,6GAA6G;IAC7G,mBAAmB,MAAS;IAC5B,mGAAmG;IACnG,SAAS,MAAS;IAClB,6GAA6G;IAC7G,mBAAmB,MAAS;IAC5B,8IAA8I;IAC9I,kBAAkB,MAAS;IAC3B,2FAA2F;IAC3F,cAAc,QAAS;IACvB,qGAAqG;IACrG,wBAAwB,QAAS;IACjC,2FAA2F;IAC3F,cAAc,QAAS;IACvB,qGAAqG;IACrG,wBAAwB,QAAS;IAMjC,0FAA0F;IAC1F,uHAAuH;IACvH,+HAA+H;IAC/H,QAAQ,QAAS;IACjB,aAAa,QAAS;IACtB,qBAAqB,QAAS;IAK9B,oEAAoE;IACpE,cAAc,QAAS;IACvB,2FAA2F;IAC3F,kBAAkB,QAAS;IAC3B,6FAA6F;IAC7F,oBAAoB,QAAS;IAC7B,gFAAgF;IAChF,aAAa,QAAS;IACtB,gFAAgF;IAChF,aAAa,QAAS;IACtB,kFAAkF;IAClF,eAAe,QAAS;IACxB,6EAA6E;IAC7E,eAAe,QAAS;IAExB,kEAAkE;IAClE,WAAW,QAAS;IACpB,8DAA8D;IAC9D,oBAAoB,QAAS;IAC7B,sEAAsE;IACtE,4BAA4B,QAAS;IACrC,yFAAyF;IACzF,UAAU,OAAS;IACnB,qFAAqF;IACrF,wBAAwB,QAAS;IACjC,+IAA+I;IAC/I,wBAAwB,QAAS;IACjC,gHAAgH;IAChH,cAAc,OAAS;IACvB,mGAAmG;IACnG,UAAU,OAAS;IACnB,kGAAkG;IAClG,WAAW,OAAS;IACpB,8EAA8E;IAE9E,eAAe,OAAS;IACxB,yEAAyE;IACzE,iBAAiB,OAAS;IAC1B,0IAA0I;IAC1I,UAAU,OAAS;IACnB,8EAA8E;IAC9E,mBAAmB,OAAS;IAC5B,4IAA4I;IAC5I,YAAY,OAAS;IACrB,iJAAiJ;IACjJ,YAAY,OAAS;IACrB,mLAAmL;IACnL,uBAAuB,OAAS;IAChC,mLAAmL;IACnL,uBAAuB,OAAS;IAChC,gFAAgF;IAChF,WAAW,OAAS;IACpB,kBAAkB,OAAS;IAC3B,iBAAiB,OAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,4BAA4B,QAAS;IACrC,4BAA4B,QAAS;IACrC,gBAAgB,QAAS;IACzB,uBAAuB,QAAS;IAChC,sBAAsB,QAAS;IAE/B,4EAA4E;IAC5E,QAAQ,OAAS;IACjB,+EAA+E;IAC/E,WAAW,OAAS;IACpB,iBAAiB,OAAS;IAC1B,eAAe,OAAS;IACxB,gBAAgB,OAAS;IACzB,cAAc,OAAS;IACvB,gBAAgB,OAAS;IACzB,iBAAiB,OAAS;IAC1B,aAAa,OAAS;IACtB,QAAQ,OAAS;IACjB,UAAU,OAAS;IACnB,SAAS,OAAS;IAClB,UAAU,OAAS;IACnB,UAAU,OAAS;IACnB,YAAY,OAAS;IACrB,oBAAoB,QAAS;IAC7B,qBAAqB,QAAS;IAC9B,kBAAkB,QAAS;IAC3B,cAAc,QAAS;IACvB,OAAO,QAAS;IAChB,qBAAqB,QAAS;IAC9B,sBAAsB,QAAS;IAC/B,0BAA0B,QAAS;IACnC,MAAM,OAAS;IACf,QAAQ,OAAS;IACjB,OAAO,OAAS;IAChB,8BAA8B,QAAS;IACvC,gCAAgC,QAAS;IACzC,qBAAqB,QAAS;IAM9B,gIAAgI;IAChI,WAAW,QAAS;IACpB,+GAA+G;IAC/G,WAAW,QAAS;IACpB,4HAA4H;IAC5H,YAAY,QAAS;IACrB,mFAAmF;IACnF,YAAY,QAAS;IACrB,mFAAmF;IACnF,oBAAoB,QAAS;IAC7B,2DAA2D;IAC3D,WAAW,QAAS;IACpB,iGAAiG;IACjG,YAAY,QAAS;IAKrB,2EAA2E;IAC3E,qBAAqB,QAAS;IAC9B,2BAA2B,QAAS;IACpC,wBAAwB,QAAS;IACjC,0BAA0B,QAAS;IACnC,wBAAwB,QAAS;IACjC,8BAA8B,QAAS;IACvC,2BAA2B,QAAS;IACpC,kCAAkC,QAAS;IAK3C,8HAA8H;IAC9H,SAAS,OAAS;IAClB,4EAA4E;IAC5E,KAAK,OAAS;IACd,2EAA2E;IAC3E,IAAI,OAAS;IACb,gFAAgF;IAChF,cAAc,OAAS;IAKvB,gIAAgI;IAChI,KAAK,OAAS;IACd,0HAA0H;IAC1H,UAAU,OAAS;IACnB,kIAAkI;IAClI,MAAM,OAAS;IACf,uNAAuN;IACvN,mBAAmB,QAAS;IAC5B,4GAA4G;IAC5G,wBAAwB,QAAS;IACjC,2FAA2F;IAC3F,eAAe,QAAS;IACxB,8HAA8H;IAC9H,YAAY,OAAS;IACrB,8HAA8H;IAC9H,YAAY,OAAS;IAKrB,gCAAgC;IAChC,QAAQ,IAAI;IACZ,gCAAgC;IAChC,YAAY,OAAS;IACrB,gCAAgC;IAChC,aAAa,OAAS;IACtB,gCAAgC;IAChC,iBAAiB,OAAS;IAC1B,gCAAgC;IAChC,aAAa,OAAS;IACtB,gCAAgC;IAChC,kBAAkB,QAAS;IAK3B,qGAAqG;IACrG,EAAE,OAAS;IACX,6GAA6G;IAC7G,GAAG,OAAS;IAKZ,gDAAgD;IAChD,SAAS,OAAS;IAClB,kDAAkD;IAClD,OAAO,OAAS;IAChB,qEAAqE;IACrE,MAAM,OAAS;IACf,mHAAmH;IACnH,oBAAoB,QAAS;IAI7B,IAAI,OAAS;IACb,aAAa,OAAS;IACtB,KAAK,OAAS;IACd,cAAc,OAAS;IACvB,GAAG,OAAS;IACZ,YAAY,OAAS;IACrB,KAAK,OAAS;IACd,MAAM,OAAS;IAIf,eAAe,OAAS;IACxB,KAAK,OAAS;IACd,GAAG,OAAS;IACZ,IAAI,OAAS;IACb,SAAS,OAAS;IAClB,eAAe,OAAS;IAKxB,sBAAsB,QAAS;IAC/B,sBAAsB,QAAS;IAC/B,oBAAoB,QAAS;IAK7B,0DAA0D;IAC1D,eAAe,QAAS;IACxB,uDAAuD;IACvD,aAAa,QAAS;IACtB,mLAAmL;IACnL,cAAc,QAAS;IACvB,mIAAmI;IACnI,aAAa,QAAS;IACtB,iMAAiM;IACjM,WAAW,QAAS;IACpB,mIAAmI;IACnI,eAAe,QAAS;IACxB,oJAAoJ;IACpJ,gBAAgB,QAAS;IACzB,yFAAyF;IACzF,iBAAiB,QAAS;IAC1B,uFAAuF;IACvF,eAAe,QAAS;IACxB,2EAA2E;IAC3E,kBAAkB,QAAS;IAC3B,0BAA0B,QAAS;IACnC,mBAAmB,QAAS;IAC5B,gCAAgC,QAAS;IACzC,8BAA8B,QAAS;IACvC,4EAA4E;IAC5E,uBAAuB,QAAS;IAChC,4BAA4B,QAAS;IACrC,WAAW,QAAS;IACpB,wBAAwB,QAAS;IACjC,eAAe,QAAS;IAKxB,iIAAiI;IACjI,KAAK,MAAS;IACd,mJAAmJ;IACnJ,IAAI,MAAS;IACb,mJAAmJ;IACnJ,KAAK,MAAS;IACd,+JAA+J;IAC/J,MAAM,MAAS;IACf,sJAAsJ;IACtJ,OAAO,MAAS;IAChB,sJAAsJ;IACtJ,QAAQ,MAAS;IACjB,kKAAkK;IAClK,MAAM,MAAS;IACf,6JAA6J;IAC7J,MAAM,MAAS;IAKf,IAAI,OAAS;IACb,OAAO,OAAS;IAChB,IAAI,OAAS;IACb,IAAI,OAAS;IACb,MAAM,OAAS;IACf,SAAS,QAAS;IAClB,SAAS,QAAS;IAMlB,OAAO,OAAS;IAChB,MAAM,OAAS;IACf,sBAAsB,OAAS;IAC/B,qBAAqB,OAAS;IAC9B,qBAAqB,OAAS;IAC9B,oBAAoB,OAAS;IAC7B,gaAAga;IACha,kBAAkB,QAAS;IAC3B,yUAAyU;IACzU,kBAAkB,QAAS;IAC3B,sHAAsH;IACtH,cAAc,QAAS;IACvB,sHAAsH;IACtH,cAAc,QAAS;IACvB,UAAU,OAAS;IACnB,OAAO,OAAS;IAChB,gBAAgB,QAAS;IACzB,wBAAwB,QAAS;IACjC,2BAA2B,QAAS;IACpC,2BAA2B,QAAS;IACpC,2BAA2B,QAAS;IACpC,2BAA2B,QAAS;IACpC,2BAA2B,QAAS;IACpC,2BAA2B,QAAS;IACpC,yBAAyB,QAAS;IAElC,QAAQ,QAAS;IACjB,cAAc,QAAS;IACvB,MAAM,QAAS;IACf,aAAa,QAAS;IACtB,eAAe,QAAS;IAGxB,aAAa,OAAS;IACtB,cAAc,OAAS;IAIvB,UAAU,QAAS;IACnB,UAAU,QAAS;IACnB,UAAU,QAAS;IACnB,QAAQ,QAAS;IACjB,QAAQ,QAAS;IACjB,QAAQ,QAAS;IACjB,IAAI,QAAS;IACb,SAAS,QAAS;IAClB,SAAS,QAAS;IAClB,SAAS,QAAS;IAClB,UAAU,QAAS;IACnB,UAAU,QAAS;IACnB,UAAU,QAAS;IACnB,UAAU,QAAS;IACnB,YAAY,QAAS;IAIrB,SAAS,QAAS;IAClB,YAAY,QAAS;IACrB,UAAU,QAAS;IACnB,OAAO,QAAS;IAChB,UAAU,QAAS;IACnB,QAAQ,QAAS;IAIjB,WAAW,QAAS;IACpB,YAAY,QAAS;IACrB,KAAK,QAAS;IACd,OAAO,QAAS;IAChB,MAAM,QAAS;IACf,iBAAiB,QAAS;IAC1B,aAAa,OAAS;IACtB,cAAc,QAAS;IACvB,aAAa,QAAS;IACtB,kBAAkB,QAAS;IAC3B,mBAAmB,QAAS;IAC5B,4BAA4B,QAAS;IACrC,qBAAqB,QAAS;IAC9B,uBAAuB,QAAS;IAChC,sBAAsB,QAAS;IAC/B,uBAAuB,QAAS;IAChC,uBAAuB,QAAS;IAChC,yBAAyB,QAAS;IAClC,kCAAkC,QAAS;IAC3C,kCAAkC,QAAS;IAC3C,oCAAoC,QAAS;IAC7C,4CAA4C,QAAS;IACrD,iBAAiB,QAAS;IAC1B,gBAAgB,QAAS;IACzB,kBAAkB,QAAS;IAC3B,wBAAwB,QAAS;IACjC,IAAI,IAAI;IACR,oBAAoB,QAAS;IAC7B,iCAAiC,QAAS;IAC1C,yCAAyC,QAAS;IAClD,iCAAiC,QAAS;IAC1C,uBAAuB,QAAS;IAChC,mBAAmB,QAAS;IAC5B,oBAAoB,QAAS;IAC7B,gBAAgB,QAAS;IACzB,gBAAgB,QAAS;IACzB,qBAAqB,QAAS;IAC9B,6BAA6B,OAAS;IAKtC,mBAAmB,QAAS;IAC5B,8BAA8B,QAAS;IACvC,kCAAkC,QAAS;IAU3C,WAAW,OAAS;IACpB,iBAAiB,OAAS;IAC1B,gBAAgB,OAAS;IACzB,kBAAkB,OAAS;IAC3B,eAAe,OAAS;IACxB,cAAc,OAAS;IACvB,gBAAgB,OAAS;IACzB,kBAAkB,QAAS;IAC3B,kBAAkB,QAAS;IAC3B,mBAAmB,QAAS;IAC5B,mBAAmB,QAAS;IAC5B,qBAAqB,QAAS;IAC9B,oBAAoB,QAAS;IAC7B,oBAAoB,QAAS;IAC7B,+BAA+B,QAAS;IACxC,6BAA6B,QAAS;IACtC,wBAAwB,QAAS;IACjC,wBAAwB,QAAS;IACjC,wBAAwB,QAAS;IACjC,sBAAsB,QAAS;IAC/B,+BAA+B,QAAS;IACxC,kBAAkB,QAAS;IAC3B,oBAAoB,QAAS;IAC7B,4BAA4B,QAAS;IACrC,6BAA6B,QAAS;IACtC,uBAAuB,QAAS;IAChC,iBAAiB,QAAS;IAM1B,GAAG,OAAS;IACZ,IAAI,QAAS;IACb,KAAK,QAAS;IACd,QAAQ,QAAS;IACjB,UAAU,QAAS;IACnB,sHAAsH;IACtH,cAAc,QAAS;IACvB,eAAe,QAAS;IACxB,eAAe,QAAS;IACxB,kBAAkB,QAAS;IAC3B,iBAAiB,QAAS;IAC1B,oBAAoB,QAAS;IAC7B,oBAAoB,QAAS;IAC7B,IAAI,QAAS;IACb,KAAK,QAAS;IACd,YAAY,QAAS;IACrB,sBAAsB,QAAS;IAC/B,OAAO,QAAS;IAChB,MAAM,QAAS;IACf,OAAO,QAAS;IAChB,MAAM,QAAS;IACf,gBAAgB,QAAS;IACzB,wBAAwB,QAAS;IACjC,cAAc,QAAS;IACvB,OAAO,QAAS;IAChB,QAAQ,QAAS;IACjB,OAAO,QAAS;IAChB,QAAQ,QAAS;IACjB,OAAO,QAAS;IAChB,OAAO,QAAS;IAChB,MAAM,QAAS;IACf,OAAO,QAAS;IAChB,MAAM,QAAS;IACf,OAAO,QAAS;IAChB,MAAM,QAAS;IACf,MAAM,QAAS;IACf,KAAK,QAAS;IACd,WAAW,QAAS;IACpB,WAAW,QAAS;IACpB,YAAY,QAAS;IACrB,EAAE,QAAS;IACX,GAAG,QAAS;IACZ,IAAI,QAAS;IACb,IAAI,QAAS;IACb,KAAK,QAAS;IACd,KAAK,QAAS;IACd,GAAG,QAAS;IACZ,IAAI,QAAS;IACb,IAAI,QAAS;IACb,KAAK,QAAS;IACd,IAAI,QAAS;IACb,KAAK,QAAS;IACd,IAAI,QAAS;IACb,KAAK,QAAS;IACd,KAAK,QAAS;IACd,MAAM,QAAS;IACf,KAAK,QAAS;IACd,MAAM,QAAS;IACf,QAAQ,QAAS;IACjB,SAAS,QAAS;IAClB,UAAU,QAAS;IACnB,WAAW,QAAS;IACpB,UAAU,QAAS;IAcnB,wBAAwB,QAAS;IACjC,wBAAwB,QAAS;IAIjC,2BAA2B,QAAS;IACpC,4BAA4B,QAAS;IACrC,wBAAwB,QAAS;IACjC,8BAA8B,QAAS;IACvC,iBAAiB,QAAS;IAC1B,UAAU,OAAS;IACnB,EAAE,QAAS;IACX,UAAU,QAAS;IACnB,kBAAkB,QAAS;IAI3B,aAAa,QAAS;IACtB,oDAAoD;IACpD,YAAY,QAAS;IACrB,yCAAyC;IACzC,sBAAsB,QAAS;IAC/B,sDAAsD;IACtD,kBAAkB,QAAS;IAC3B,mDAAmD;IACnD,+BAA+B,QAAS;IAIxC,gBAAgB,QAAS;IACzB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,aAAa,QAAS;IACtB,aAAa,QAAS;IACtB,aAAa,QAAS;IACtB,aAAa,QAAS;IACtB,aAAa,QAAS;IACtB,aAAa,QAAS;IACtB,qBAAqB,QAAS;IAC9B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,kBAAkB,QAAS;IAC3B,kBAAkB,QAAS;IAC3B,kBAAkB,QAAS;IAC3B,kBAAkB,QAAS;IAC3B,kBAAkB,QAAS;IAC3B,kBAAkB,QAAS;IAI3B,UAAU,QAAS;IACnB,iBAAiB,QAAS;IAC1B,gBAAgB,QAAS;IACzB,uBAAuB,QAAS;IAChC,mBAAmB,QAAS;IAC5B,cAAc,QAAS;IACvB,cAAc,QAAS;IACvB,gBAAgB,QAAS;IACzB,oBAAoB,QAAS;IAC7B,uBAAuB,QAAS;IAChC,uBAAuB,QAAS;IAChC,yBAAyB,QAAS;IAClC,6BAA6B,QAAS;IACtC,WAAW,QAAS;IACpB,eAAe,QAAS;IAIxB,iBAAiB,QAAS;IAC1B,mBAAmB,QAAS;IAC5B,yBAAyB,QAAS;IAClC,2BAA2B,QAAS;IACpC,gBAAgB,QAAS;IACzB,iBAAiB,QAAS;IAC1B,wBAAwB,QAAS;IACjC,yBAAyB,QAAS;IAIlC,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,iBAAiB,QAAS;IAC1B,mBAAmB,QAAS;IAC5B,iBAAiB,QAAS;IAI1B,2BAA2B,QAAS;IACpC,2BAA2B,QAAS;IAIpC,8BAA8B,QAAS;IACvC,0CAA0C,QAAS;IACnD,2BAA2B,QAAS;IACpC,+BAA+B,QAAS;IACxC,8BAA8B,QAAS;IACvC,qCAAqC,QAAS;IAC9C,6CAA6C,QAAS;IACtD,uCAAuC,QAAS;IAChD,mBAAmB,QAAS;IAC5B,gBAAgB,QAAS;IACzB,yBAAyB,QAAS;IAClC,iCAAiC,QAAS;IAC1C,kBAAkB,QAAS;IAC3B,yBAAyB,QAAS;IAClC,yBAAyB,QAAS;IAClC,0BAA0B,QAAS;IAInC,qCAAqC,QAAS;IAC9C,qCAAqC,QAAS;IAC9C,+BAA+B,QAAS;IACxC,iCAAiC,QAAS;IAC1C,gCAAgC,QAAS;IACzC,iCAAiC,QAAS;IAC1C,iCAAiC,QAAS;IAC1C,mCAAmC,QAAS;IAC5C,mBAAmB,QAAS;IAG5B,gBAAgB,QAAS;IACzB,wBAAwB,QAAS;IACjC,wBAAwB,QAAS;IACjC,oBAAoB,QAAS;IAC7B,oCAAoC,QAAS;IAC7C,kCAAkC,QAAS;IAI3C,cAAc,QAAS;IACvB,sBAAsB,QAAS;IAC/B,oBAAoB,QAAS;IAC7B,mBAAmB,QAAS;IAC5B,yBAAyB,QAAS;IAClC,2BAA2B,QAAS;IACpC,2BAA2B,QAAS;IACpC,2BAA2B,QAAS;IACpC,sBAAsB,QAAS;IAC/B,sCAAsC,QAAS;IAC/C,wCAAwC,QAAS;IACjD,+BAA+B,QAAS;IACxC,qBAAqB,QAAS;IAC9B,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,mBAAmB,QAAS;IAC5B,cAAc,QAAS;IACvB,oBAAoB,QAAS;IAC7B,qBAAqB,QAAS;IAC9B,oBAAoB,QAAS;IAC7B,qBAAqB,QAAS;IAC9B,uBAAuB,QAAS;IAChC,6BAA6B,QAAS;IACtC,oCAAoC,QAAS;IAC7C,yCAAyC,QAAS;IAClD,2CAA2C,QAAS;IAIpD,WAAW,QAAS;IACpB,cAAc,QAAS;IACvB,WAAW,QAAS;IACpB,UAAU,QAAS;IACnB,UAAU,QAAS;IACnB,0BAA0B,QAAS;IACnC,UAAU,QAAS;IACnB,QAAQ,QAAS;IACjB,gBAAgB,QAAS;IACzB,eAAe,QAAS;IACxB,mBAAmB,QAAS;IAC5B,WAAW,QAAS;IACpB,uBAAuB,IAAa;IAIpC,KAAK,OAAS;IACd,KAAK,OAAS;IACd,OAAO,OAAS;IAChB,GAAG,QAAS;IACZ,GAAG,QAAS;IACZ,iBAAiB,QAAS;IAC1B,WAAW,QAAS;IACpB,WAAW,QAAS;IACpB,WAAW,QAAS;IACpB,WAAW,QAAS;IACpB,YAAY,QAAS;IACrB,YAAY,QAAS;IACrB,kBAAkB,QAAS;IAC3B,iBAAiB,QAAS;IAC1B,aAAa,aAAa;IAC1B,eAAe,KAAK;IACpB,6BAA6B,QAAS;IAMtC,8EAA8E;IAC9E,qBAAqB,QAAS;IAC9B,gFAAgF;IAChF,uBAAuB,QAAS;IAIhC,gDAAgD;IAChD,8BAA8B,QAAS;IACvC,kFAAkF;IAClF,0BAA0B,QAAS;IAInC,OAAO,QAAS;IAChB,QAAQ,QAAS;IACjB,SAAS,QAAS;IAClB,UAAU,QAAS;IACnB,aAAa,QAAS;IACtB,cAAc,QAAS;IACvB,eAAe,QAAS;IACxB,gBAAgB,QAAS;IAIzB,sDAAsD;IACtD,4BAA4B,QAAS;IACrC,uFAAuF;IACvF,6BAA6B,QAAS;IACtC,qHAAqH;IACrH,6BAA6B,QAAS;IACtC,qKAAqK;IACrK,6BAA6B,QAAS;IAItC,6BAA6B,QAAS;IACtC,mCAAmC,QAAS;IAC5C,mCAAmC,QAAS;IAC5C,mCAAmC,QAAS;IAI5C,wBAAwB,QAAS;IACjC,+BAA+B,QAAS;IACxC,8BAA8B,QAAS;IACvC,qCAAqC,QAAS;IAI9C,8BAA8B,QAAS;IACvC,oCAAoC,QAAS;IAC7C,oCAAoC,QAAS;IAC7C,sCAAsC,QAAS;IAI/C,qDAAqD;IACrD,kBAAkB,QAAS;IAC3B,mDAAmD;IACnD,yBAAyB,QAAS;IAClC,+DAA+D;IAC/D,mBAAmB,QAAS;IAC5B,6DAA6D;IAC7D,0BAA0B,QAAS;IACnC,kDAAkD;IAClD,oBAAoB,QAAS;IAC7B,qHAAqH;IACrH,yBAAyB,QAAS;IAClC,mDAAmD;IACnD,qBAAqB,QAAS;IAC9B,wHAAwH;IACxH,gCAAgC,QAAS;IACzC,yIAAyI;IACzI,wCAAwC,QAAS;IACjD,0IAA0I;IAC1I,yCAAyC,QAAS;IAIlD,oEAAoE;IACpE,+BAA+B,QAAS;IACxC,qEAAqE;IACrE,gCAAgC,QAAS;IACzC,oEAAoE;IACpE,+BAA+B,QAAS;IACxC,qEAAqE;IACrE,gCAAgC,QAAS;IAIzC,wDAAwD;IACxD,yBAAyB,QAAS;IAIlC,wBAAwB,QAAS;IACjC,wCAAwC,QAAS;IACjD,4CAA4C,QAAS;IAIrD,4BAA4B,QAAS;IACrC,4BAA4B,QAAS;IACrC,4BAA4B,QAAS;IACrC,4BAA4B,QAAS;IACrC,4BAA4B,QAAS;IACrC,4BAA4B,QAAS;IACrC,4BAA4B,QAAS;IACrC,4BAA4B,QAAS;IACrC,6BAA6B,QAAS;IACtC,6BAA6B,QAAS;IACtC,6BAA6B,QAAS;IACtC,8BAA8B,QAAS;IACvC,8BAA8B,QAAS;IACvC,8BAA8B,QAAS;IACvC,oCAAoC,QAAS;IAC7C,oCAAoC,QAAS;IAC7C,oCAAoC,QAAS;IAC7C,oCAAoC,QAAS;IAC7C,oCAAoC,QAAS;IAC7C,oCAAoC,QAAS;IAC7C,oCAAoC,QAAS;IAC7C,oCAAoC,QAAS;IAC7C,qCAAqC,QAAS;IAC9C,qCAAqC,QAAS;IAC9C,qCAAqC,QAAS;IAC9C,sCAAsC,QAAS;IAC/C,sCAAsC,QAAS;IAC/C,sCAAsC,QAAS;IAI/C,6EAA6E;IAC7E,sBAAsB,QAAS;IAC/B,kCAAkC;IAClC,iBAAiB,QAAS;IAC1B,wBAAwB;IACxB,gBAAgB,QAAS;IACzB,uEAAuE;IACvE,0BAA0B,QAAS;IACnC,qCAAqC;IACrC,gBAAgB,QAAS;IACzB,wBAAwB;IACxB,aAAa,QAAS;IACtB,kGAAkG;IAClG,gBAAgB,QAAS;IAIzB,kIAAkI;IAClI,qBAAqB,QAAS;IAI9B,8BAA8B;IAC9B,eAAe,QAAS;IAIxB,oEAAoE;IACpE,6BAA6B,QAAS;IACtC,oEAAoE;IACpE,4BAA4B,QAAS,CAAE,UAAU;IACjD,kEAAkE;IAClE,qBAAqB,QAAS;IAI9B,kBAAkB,OAAS;IAC3B,yBAAyB,QAAS;IAClC,UAAU,OAAS;IACnB,UAAU,OAAS;IAInB,yBAAyB;IACzB,wBAAwB,OAAS;IACjC,yBAAyB;IACzB,wBAAwB,QAAS;IACjC,kCAAkC;IAClC,0CAA0C,QAAS;IAEnD,uDAAuD;IACvD,oBAAoB,QAAS;IAC7B,uDAAuD;IACvD,oBAAoB,QAAS;IAC7B,uDAAuD;IACvD,oBAAoB,QAAS;IAC7B,uDAAuD;IACvD,oBAAoB,QAAS;IAC7B,uDAAuD;IACvD,oBAAoB,QAAS;IAC7B,uDAAuD;IACvD,oBAAoB,QAAS;IAC7B,uDAAuD;IACvD,oBAAoB,QAAS;IAC7B,uDAAuD;IACvD,oBAAoB,QAAS;IAE7B,uGAAuG;IACvG,wBAAwB,QAAS;IAEjC,uFAAuF;IACvF,cAAc,QAAS;IACvB,cAAc,QAAS;IAEvB,uBAAuB,QAAS;IAChC,eAAe,QAAS;IAExB,eAAe,QAAS;IACxB,mBAAmB,QAAS;IAE5B,yGAAyG;IACzG,gBAAgB,QAAS;IACzB,gBAAgB,QAAS;IACzB,0BAA0B,QAAS;IACnC,0BAA0B,QAAS;IACnC,kCAAkC,QAAS;IAE3C,uHAAuH;IACvH,wBAAwB,QAAS;CAClC;AAED,OAAO,EAAC,MAAM,IAAI,EAAE,EAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-constants.js","sourceRoot":"","sources":["webgl-constants.ts"],"names":[],"mappings":"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"}