@aura3d/assets 1.0.6

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 (324) hide show
  1. package/README.md +17 -0
  2. package/dist/AdvancedAssetCorpus.d.ts +124 -0
  3. package/dist/AdvancedAssetCorpus.d.ts.map +1 -0
  4. package/dist/AdvancedAssetCorpus.js +266 -0
  5. package/dist/AdvancedAssetCorpus.js.map +1 -0
  6. package/dist/AssetBundleCacheFixtures.d.ts +62 -0
  7. package/dist/AssetBundleCacheFixtures.d.ts.map +1 -0
  8. package/dist/AssetBundleCacheFixtures.js +222 -0
  9. package/dist/AssetBundleCacheFixtures.js.map +1 -0
  10. package/dist/AssetCache.d.ts +21 -0
  11. package/dist/AssetCache.d.ts.map +1 -0
  12. package/dist/AssetCache.js +54 -0
  13. package/dist/AssetCache.js.map +1 -0
  14. package/dist/AssetCompatibility.d.ts +54 -0
  15. package/dist/AssetCompatibility.d.ts.map +1 -0
  16. package/dist/AssetCompatibility.js +122 -0
  17. package/dist/AssetCompatibility.js.map +1 -0
  18. package/dist/AssetCorpus.d.ts +88 -0
  19. package/dist/AssetCorpus.d.ts.map +1 -0
  20. package/dist/AssetCorpus.js +215 -0
  21. package/dist/AssetCorpus.js.map +1 -0
  22. package/dist/AssetDependencyGraph.d.ts +12 -0
  23. package/dist/AssetDependencyGraph.d.ts.map +1 -0
  24. package/dist/AssetDependencyGraph.js +66 -0
  25. package/dist/AssetDependencyGraph.js.map +1 -0
  26. package/dist/AssetHandle.d.ts +26 -0
  27. package/dist/AssetHandle.d.ts.map +1 -0
  28. package/dist/AssetHandle.js +53 -0
  29. package/dist/AssetHandle.js.map +1 -0
  30. package/dist/AssetImportPreflight.d.ts +43 -0
  31. package/dist/AssetImportPreflight.d.ts.map +1 -0
  32. package/dist/AssetImportPreflight.js +117 -0
  33. package/dist/AssetImportPreflight.js.map +1 -0
  34. package/dist/AssetInspection.d.ts +183 -0
  35. package/dist/AssetInspection.d.ts.map +1 -0
  36. package/dist/AssetInspection.js +397 -0
  37. package/dist/AssetInspection.js.map +1 -0
  38. package/dist/AssetLoader.d.ts +26 -0
  39. package/dist/AssetLoader.d.ts.map +1 -0
  40. package/dist/AssetLoader.js +12 -0
  41. package/dist/AssetLoader.js.map +1 -0
  42. package/dist/AssetManager.d.ts +37 -0
  43. package/dist/AssetManager.d.ts.map +1 -0
  44. package/dist/AssetManager.js +161 -0
  45. package/dist/AssetManager.js.map +1 -0
  46. package/dist/AssetRegistry.d.ts +10 -0
  47. package/dist/AssetRegistry.d.ts.map +1 -0
  48. package/dist/AssetRegistry.js +34 -0
  49. package/dist/AssetRegistry.js.map +1 -0
  50. package/dist/AssetRenderDefaults.d.ts +13 -0
  51. package/dist/AssetRenderDefaults.d.ts.map +1 -0
  52. package/dist/AssetRenderDefaults.js +23 -0
  53. package/dist/AssetRenderDefaults.js.map +1 -0
  54. package/dist/AudioLoader.d.ts +17 -0
  55. package/dist/AudioLoader.d.ts.map +1 -0
  56. package/dist/AudioLoader.js +23 -0
  57. package/dist/AudioLoader.js.map +1 -0
  58. package/dist/BlenderExportValidation.d.ts +64 -0
  59. package/dist/BlenderExportValidation.d.ts.map +1 -0
  60. package/dist/BlenderExportValidation.js +143 -0
  61. package/dist/BlenderExportValidation.js.map +1 -0
  62. package/dist/CarConceptMaterialStability.d.ts +28 -0
  63. package/dist/CarConceptMaterialStability.d.ts.map +1 -0
  64. package/dist/CarConceptMaterialStability.js +1308 -0
  65. package/dist/CarConceptMaterialStability.js.map +1 -0
  66. package/dist/EXRLoader.d.ts +2 -0
  67. package/dist/EXRLoader.d.ts.map +1 -0
  68. package/dist/EXRLoader.js +2 -0
  69. package/dist/EXRLoader.js.map +1 -0
  70. package/dist/ExternalParityGLTFCorpus.d.ts +39 -0
  71. package/dist/ExternalParityGLTFCorpus.d.ts.map +1 -0
  72. package/dist/ExternalParityGLTFCorpus.js +32 -0
  73. package/dist/ExternalParityGLTFCorpus.js.map +1 -0
  74. package/dist/GLTFAnimationRuntime.d.ts +243 -0
  75. package/dist/GLTFAnimationRuntime.d.ts.map +1 -0
  76. package/dist/GLTFAnimationRuntime.js +954 -0
  77. package/dist/GLTFAnimationRuntime.js.map +1 -0
  78. package/dist/GLTFCompressionDecoders.d.ts +42 -0
  79. package/dist/GLTFCompressionDecoders.d.ts.map +1 -0
  80. package/dist/GLTFCompressionDecoders.js +99 -0
  81. package/dist/GLTFCompressionDecoders.js.map +1 -0
  82. package/dist/GLTFExtensionSupport.d.ts +33 -0
  83. package/dist/GLTFExtensionSupport.d.ts.map +1 -0
  84. package/dist/GLTFExtensionSupport.js +85 -0
  85. package/dist/GLTFExtensionSupport.js.map +1 -0
  86. package/dist/GLTFLoader.d.ts +361 -0
  87. package/dist/GLTFLoader.d.ts.map +1 -0
  88. package/dist/GLTFLoader.js +2735 -0
  89. package/dist/GLTFLoader.js.map +1 -0
  90. package/dist/GLTFRenderResources.d.ts +162 -0
  91. package/dist/GLTFRenderResources.d.ts.map +1 -0
  92. package/dist/GLTFRenderResources.js +1684 -0
  93. package/dist/GLTFRenderResources.js.map +1 -0
  94. package/dist/HDRLoader.d.ts +2 -0
  95. package/dist/HDRLoader.d.ts.map +1 -0
  96. package/dist/HDRLoader.js +2 -0
  97. package/dist/HDRLoader.js.map +1 -0
  98. package/dist/ImageLoader.d.ts +15 -0
  99. package/dist/ImageLoader.d.ts.map +1 -0
  100. package/dist/ImageLoader.js +36 -0
  101. package/dist/ImageLoader.js.map +1 -0
  102. package/dist/ImportPipeline.d.ts +39 -0
  103. package/dist/ImportPipeline.d.ts.map +1 -0
  104. package/dist/ImportPipeline.js +105 -0
  105. package/dist/ImportPipeline.js.map +1 -0
  106. package/dist/KTX2BasisTextureTranscoder.d.ts +9 -0
  107. package/dist/KTX2BasisTextureTranscoder.d.ts.map +1 -0
  108. package/dist/KTX2BasisTextureTranscoder.js +178 -0
  109. package/dist/KTX2BasisTextureTranscoder.js.map +1 -0
  110. package/dist/LoadContext.d.ts +20 -0
  111. package/dist/LoadContext.d.ts.map +1 -0
  112. package/dist/LoadContext.js +42 -0
  113. package/dist/LoadContext.js.map +1 -0
  114. package/dist/MaterialLoader.d.ts +17 -0
  115. package/dist/MaterialLoader.d.ts.map +1 -0
  116. package/dist/MaterialLoader.js +138 -0
  117. package/dist/MaterialLoader.js.map +1 -0
  118. package/dist/MeshOptimization.d.ts +20 -0
  119. package/dist/MeshOptimization.d.ts.map +1 -0
  120. package/dist/MeshOptimization.js +65 -0
  121. package/dist/MeshOptimization.js.map +1 -0
  122. package/dist/OBJLoader.d.ts +13 -0
  123. package/dist/OBJLoader.d.ts.map +1 -0
  124. package/dist/OBJLoader.js +492 -0
  125. package/dist/OBJLoader.js.map +1 -0
  126. package/dist/SceneAnalysisFixtures.d.ts +100 -0
  127. package/dist/SceneAnalysisFixtures.d.ts.map +1 -0
  128. package/dist/SceneAnalysisFixtures.js +331 -0
  129. package/dist/SceneAnalysisFixtures.js.map +1 -0
  130. package/dist/SceneLoader.d.ts +27 -0
  131. package/dist/SceneLoader.d.ts.map +1 -0
  132. package/dist/SceneLoader.js +40 -0
  133. package/dist/SceneLoader.js.map +1 -0
  134. package/dist/ShaderLoader.d.ts +12 -0
  135. package/dist/ShaderLoader.d.ts.map +1 -0
  136. package/dist/ShaderLoader.js +18 -0
  137. package/dist/ShaderLoader.js.map +1 -0
  138. package/dist/TextureLoader.d.ts +16 -0
  139. package/dist/TextureLoader.d.ts.map +1 -0
  140. package/dist/TextureLoader.js +17 -0
  141. package/dist/TextureLoader.js.map +1 -0
  142. package/dist/TexturePipeline.d.ts +24 -0
  143. package/dist/TexturePipeline.d.ts.map +1 -0
  144. package/dist/TexturePipeline.js +64 -0
  145. package/dist/TexturePipeline.js.map +1 -0
  146. package/dist/TextureStreaming.d.ts +10 -0
  147. package/dist/TextureStreaming.d.ts.map +1 -0
  148. package/dist/TextureStreaming.js +11 -0
  149. package/dist/TextureStreaming.js.map +1 -0
  150. package/dist/WorkerAssetJobs.d.ts +18 -0
  151. package/dist/WorkerAssetJobs.d.ts.map +1 -0
  152. package/dist/WorkerAssetJobs.js +37 -0
  153. package/dist/WorkerAssetJobs.js.map +1 -0
  154. package/dist/advanced-gallery/index.d.ts +3 -0
  155. package/dist/advanced-gallery/index.d.ts.map +1 -0
  156. package/dist/advanced-gallery/index.js +2 -0
  157. package/dist/advanced-gallery/index.js.map +1 -0
  158. package/dist/asset-corpus/GLTFSceneLoader.d.ts +3 -0
  159. package/dist/asset-corpus/GLTFSceneLoader.d.ts.map +1 -0
  160. package/dist/asset-corpus/GLTFSceneLoader.js +2 -0
  161. package/dist/asset-corpus/GLTFSceneLoader.js.map +1 -0
  162. package/dist/asset-corpus/ProductionAssetCorpus.d.ts +89 -0
  163. package/dist/asset-corpus/ProductionAssetCorpus.d.ts.map +1 -0
  164. package/dist/asset-corpus/ProductionAssetCorpus.js +116 -0
  165. package/dist/asset-corpus/ProductionAssetCorpus.js.map +1 -0
  166. package/dist/asset-corpus/ProductionAssetPipeline.d.ts +3 -0
  167. package/dist/asset-corpus/ProductionAssetPipeline.d.ts.map +1 -0
  168. package/dist/asset-corpus/ProductionAssetPipeline.js +3 -0
  169. package/dist/asset-corpus/ProductionAssetPipeline.js.map +1 -0
  170. package/dist/asset-corpus/ProductionGLTFRenderPipeline.d.ts +65 -0
  171. package/dist/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -0
  172. package/dist/asset-corpus/ProductionGLTFRenderPipeline.js +110 -0
  173. package/dist/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -0
  174. package/dist/asset-corpus/ProductionHDRTextureLoader.d.ts +8 -0
  175. package/dist/asset-corpus/ProductionHDRTextureLoader.d.ts.map +1 -0
  176. package/dist/asset-corpus/ProductionHDRTextureLoader.js +2 -0
  177. package/dist/asset-corpus/ProductionHDRTextureLoader.js.map +1 -0
  178. package/dist/asset-corpus/ProductionKTX2TextureLoader.d.ts +7 -0
  179. package/dist/asset-corpus/ProductionKTX2TextureLoader.d.ts.map +1 -0
  180. package/dist/asset-corpus/ProductionKTX2TextureLoader.js +2 -0
  181. package/dist/asset-corpus/ProductionKTX2TextureLoader.js.map +1 -0
  182. package/dist/asset-corpus/ProductionTextureLoader.d.ts +7 -0
  183. package/dist/asset-corpus/ProductionTextureLoader.d.ts.map +1 -0
  184. package/dist/asset-corpus/ProductionTextureLoader.js +2 -0
  185. package/dist/asset-corpus/ProductionTextureLoader.js.map +1 -0
  186. package/dist/asset-corpus/index.d.ts +10 -0
  187. package/dist/asset-corpus/index.d.ts.map +1 -0
  188. package/dist/asset-corpus/index.js +8 -0
  189. package/dist/asset-corpus/index.js.map +1 -0
  190. package/dist/browser-index.d.ts +48 -0
  191. package/dist/browser-index.d.ts.map +1 -0
  192. package/dist/browser-index.js +26 -0
  193. package/dist/browser-index.js.map +1 -0
  194. package/dist/createRenderableScene.d.ts +23 -0
  195. package/dist/createRenderableScene.d.ts.map +1 -0
  196. package/dist/createRenderableScene.js +94 -0
  197. package/dist/createRenderableScene.js.map +1 -0
  198. package/dist/index.d.ts +82 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +45 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/loadRenderableAsset.d.ts +16 -0
  203. package/dist/loadRenderableAsset.d.ts.map +1 -0
  204. package/dist/loadRenderableAsset.js +50 -0
  205. package/dist/loadRenderableAsset.js.map +1 -0
  206. package/dist/loaders/CubeTextureLoader.d.ts +4 -0
  207. package/dist/loaders/CubeTextureLoader.d.ts.map +1 -0
  208. package/dist/loaders/CubeTextureLoader.js +9 -0
  209. package/dist/loaders/CubeTextureLoader.js.map +1 -0
  210. package/dist/loaders/EXRLoader.d.ts +4 -0
  211. package/dist/loaders/EXRLoader.d.ts.map +1 -0
  212. package/dist/loaders/EXRLoader.js +10 -0
  213. package/dist/loaders/EXRLoader.js.map +1 -0
  214. package/dist/loaders/HDRLoader.d.ts +4 -0
  215. package/dist/loaders/HDRLoader.d.ts.map +1 -0
  216. package/dist/loaders/HDRLoader.js +7 -0
  217. package/dist/loaders/HDRLoader.js.map +1 -0
  218. package/dist/loaders/KTX2Loader.d.ts +4 -0
  219. package/dist/loaders/KTX2Loader.d.ts.map +1 -0
  220. package/dist/loaders/KTX2Loader.js +7 -0
  221. package/dist/loaders/KTX2Loader.js.map +1 -0
  222. package/dist/loaders/LoaderDiagnostics.d.ts +18 -0
  223. package/dist/loaders/LoaderDiagnostics.d.ts.map +1 -0
  224. package/dist/loaders/LoaderDiagnostics.js +18 -0
  225. package/dist/loaders/LoaderDiagnostics.js.map +1 -0
  226. package/dist/loaders/MTLLoader.d.ts +10 -0
  227. package/dist/loaders/MTLLoader.d.ts.map +1 -0
  228. package/dist/loaders/MTLLoader.js +14 -0
  229. package/dist/loaders/MTLLoader.js.map +1 -0
  230. package/dist/loaders/OBJLoader.d.ts +12 -0
  231. package/dist/loaders/OBJLoader.d.ts.map +1 -0
  232. package/dist/loaders/OBJLoader.js +16 -0
  233. package/dist/loaders/OBJLoader.js.map +1 -0
  234. package/dist/loaders/TextureLoader.d.ts +6 -0
  235. package/dist/loaders/TextureLoader.d.ts.map +1 -0
  236. package/dist/loaders/TextureLoader.js +11 -0
  237. package/dist/loaders/TextureLoader.js.map +1 -0
  238. package/dist/loaders/ThreeCompatGLTFLoader.d.ts +10 -0
  239. package/dist/loaders/ThreeCompatGLTFLoader.d.ts.map +1 -0
  240. package/dist/loaders/ThreeCompatGLTFLoader.js +13 -0
  241. package/dist/loaders/ThreeCompatGLTFLoader.js.map +1 -0
  242. package/dist/loaders/index.d.ts +15 -0
  243. package/dist/loaders/index.d.ts.map +1 -0
  244. package/dist/loaders/index.js +10 -0
  245. package/dist/loaders/index.js.map +1 -0
  246. package/dist/threejs-compatibility/ThreeCompatAssetProvenance.d.ts +34 -0
  247. package/dist/threejs-compatibility/ThreeCompatAssetProvenance.d.ts.map +1 -0
  248. package/dist/threejs-compatibility/ThreeCompatAssetProvenance.js +16 -0
  249. package/dist/threejs-compatibility/ThreeCompatAssetProvenance.js.map +1 -0
  250. package/dist/threejs-compatibility/ThreeCompatAssetRegistry.d.ts +29 -0
  251. package/dist/threejs-compatibility/ThreeCompatAssetRegistry.d.ts.map +1 -0
  252. package/dist/threejs-compatibility/ThreeCompatAssetRegistry.js +33 -0
  253. package/dist/threejs-compatibility/ThreeCompatAssetRegistry.js.map +1 -0
  254. package/dist/threejs-example-parity/index.d.ts +20 -0
  255. package/dist/threejs-example-parity/index.d.ts.map +1 -0
  256. package/dist/threejs-example-parity/index.js +218 -0
  257. package/dist/threejs-example-parity/index.js.map +1 -0
  258. package/package.json +23 -0
  259. package/src/AdvancedAssetCorpus.ts +454 -0
  260. package/src/AssetBundleCacheFixtures.ts +290 -0
  261. package/src/AssetCache.ts +76 -0
  262. package/src/AssetCompatibility.ts +224 -0
  263. package/src/AssetCorpus.ts +329 -0
  264. package/src/AssetDependencyGraph.ts +83 -0
  265. package/src/AssetHandle.ts +74 -0
  266. package/src/AssetImportPreflight.ts +179 -0
  267. package/src/AssetInspection.ts +706 -0
  268. package/src/AssetLoader.ts +36 -0
  269. package/src/AssetManager.ts +211 -0
  270. package/src/AssetRegistry.ts +44 -0
  271. package/src/AssetRenderDefaults.ts +36 -0
  272. package/src/AudioLoader.ts +41 -0
  273. package/src/BlenderExportValidation.ts +227 -0
  274. package/src/CarConceptMaterialStability.ts +1405 -0
  275. package/src/EXRLoader.ts +1 -0
  276. package/src/ExternalParityGLTFCorpus.ts +65 -0
  277. package/src/GLTFAnimationRuntime.ts +1221 -0
  278. package/src/GLTFCompressionDecoders.ts +190 -0
  279. package/src/GLTFExtensionSupport.ts +138 -0
  280. package/src/GLTFLoader.ts +4001 -0
  281. package/src/GLTFRenderResources.ts +2105 -0
  282. package/src/HDRLoader.ts +1 -0
  283. package/src/ImageLoader.ts +52 -0
  284. package/src/ImportPipeline.ts +148 -0
  285. package/src/KTX2BasisTextureTranscoder.ts +224 -0
  286. package/src/LoadContext.ts +60 -0
  287. package/src/MaterialLoader.ts +166 -0
  288. package/src/MeshOptimization.ts +93 -0
  289. package/src/OBJLoader.ts +551 -0
  290. package/src/SceneAnalysisFixtures.ts +438 -0
  291. package/src/SceneLoader.ts +62 -0
  292. package/src/ShaderLoader.ts +30 -0
  293. package/src/TextureLoader.ts +30 -0
  294. package/src/TexturePipeline.ts +96 -0
  295. package/src/TextureStreaming.ts +20 -0
  296. package/src/WorkerAssetJobs.ts +56 -0
  297. package/src/advanced-gallery/index.ts +18 -0
  298. package/src/asset-corpus/GLTFSceneLoader.ts +9 -0
  299. package/src/asset-corpus/ProductionAssetCorpus.ts +230 -0
  300. package/src/asset-corpus/ProductionAssetPipeline.ts +5 -0
  301. package/src/asset-corpus/ProductionGLTFRenderPipeline.ts +182 -0
  302. package/src/asset-corpus/ProductionHDRTextureLoader.ts +2 -0
  303. package/src/asset-corpus/ProductionKTX2TextureLoader.ts +2 -0
  304. package/src/asset-corpus/ProductionTextureLoader.ts +2 -0
  305. package/src/asset-corpus/index.ts +29 -0
  306. package/src/browser-index.ts +224 -0
  307. package/src/createRenderableScene.ts +128 -0
  308. package/src/index.ts +317 -0
  309. package/src/loadRenderableAsset.ts +67 -0
  310. package/src/loaders/CubeTextureLoader.ts +8 -0
  311. package/src/loaders/EXRLoader.ts +10 -0
  312. package/src/loaders/HDRLoader.ts +7 -0
  313. package/src/loaders/KTX2Loader.ts +7 -0
  314. package/src/loaders/LoaderDiagnostics.ts +36 -0
  315. package/src/loaders/MTLLoader.ts +20 -0
  316. package/src/loaders/OBJLoader.ts +24 -0
  317. package/src/loaders/TextureLoader.ts +14 -0
  318. package/src/loaders/ThreeCompatGLTFLoader.ts +19 -0
  319. package/src/loaders/index.ts +14 -0
  320. package/src/threejs-compatibility/ThreeCompatAssetProvenance.ts +51 -0
  321. package/src/threejs-compatibility/ThreeCompatAssetRegistry.ts +61 -0
  322. package/src/threejs-example-parity/index.ts +262 -0
  323. package/tests/assets.test.ts +311 -0
  324. package/tsconfig.json +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KTX2BasisTextureTranscoder.js","sourceRoot":"","sources":["../../../../packages/assets/src/KTX2BasisTextureTranscoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AssetHandle } from "./AssetHandle";
2
+ import type { AssetManager } from "./AssetManager";
3
+ export interface LoadContextOptions {
4
+ readonly baseUrl?: string;
5
+ readonly signal?: AbortSignal;
6
+ readonly dependencyChain?: readonly string[];
7
+ readonly manager?: AssetManager;
8
+ }
9
+ export declare class LoadContext {
10
+ readonly baseUrl: string;
11
+ readonly signal?: AbortSignal;
12
+ readonly dependencyChain: readonly string[];
13
+ private readonly manager?;
14
+ constructor(options?: LoadContextOptions);
15
+ resolve(url: string): string;
16
+ throwIfAborted(url: string): void;
17
+ child(url: string): LoadContext;
18
+ loadDependency<T = unknown>(url: string, type?: string): Promise<AssetHandle<T>>;
19
+ }
20
+ //# sourceMappingURL=LoadContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadContext.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/LoadContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAe;gBAE5B,OAAO,GAAE,kBAAuB;IAO5C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAY5B,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMjC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IASzB,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAOvF"}
@@ -0,0 +1,42 @@
1
+ import { AssetLoadError } from "./AssetLoader.js";
2
+ export class LoadContext {
3
+ baseUrl;
4
+ signal;
5
+ dependencyChain;
6
+ manager;
7
+ constructor(options = {}) {
8
+ this.baseUrl = options.baseUrl ?? "";
9
+ this.signal = options.signal;
10
+ this.dependencyChain = options.dependencyChain ?? [];
11
+ this.manager = options.manager;
12
+ }
13
+ resolve(url) {
14
+ if (/^(?:[a-z]+:)?\/\//i.test(url) || url.startsWith("data:") || url.startsWith("blob:")) {
15
+ return url;
16
+ }
17
+ if (this.baseUrl.length === 0) {
18
+ return url;
19
+ }
20
+ return new URL(url, this.baseUrl.endsWith("/") ? this.baseUrl : `${this.baseUrl}/`).toString();
21
+ }
22
+ throwIfAborted(url) {
23
+ if (this.signal?.aborted) {
24
+ throw new AssetLoadError("Asset load aborted", url, this.dependencyChain, this.signal.reason);
25
+ }
26
+ }
27
+ child(url) {
28
+ return new LoadContext({
29
+ baseUrl: this.baseUrl,
30
+ signal: this.signal,
31
+ manager: this.manager,
32
+ dependencyChain: [...this.dependencyChain, url]
33
+ });
34
+ }
35
+ async loadDependency(url, type) {
36
+ if (!this.manager) {
37
+ throw new AssetLoadError("Cannot load dependency without an AssetManager", url, this.dependencyChain);
38
+ }
39
+ return this.manager.load(url, { type, signal: this.signal, dependencyChain: this.dependencyChain });
40
+ }
41
+ }
42
+ //# sourceMappingURL=LoadContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadContext.js","sourceRoot":"","sources":["../../../../packages/assets/src/LoadContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAW/C,MAAM,OAAO,WAAW;IACb,OAAO,CAAS;IAChB,MAAM,CAAe;IACrB,eAAe,CAAoB;IAE3B,OAAO,CAAgB;IAExC,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzF,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjG,CAAC;IAED,cAAc,CAAC,GAAW;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,IAAI,WAAW,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAc,GAAW,EAAE,IAAa;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,cAAc,CAAC,gDAAgD,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACxG,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAI,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACzG,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { AssetLoadRequest, AssetLoader } from "./AssetLoader";
2
+ import type { LoadContext } from "./LoadContext";
3
+ import { Material } from "@aura3d/rendering";
4
+ export interface MaterialDescriptorAsset {
5
+ readonly url: string;
6
+ readonly name?: string;
7
+ readonly model: "unlit" | "pbr";
8
+ readonly properties: Readonly<Record<string, unknown>>;
9
+ createMaterial(): Material;
10
+ }
11
+ export declare class MaterialLoader implements AssetLoader<MaterialDescriptorAsset> {
12
+ readonly type = "material";
13
+ canLoad(request: AssetLoadRequest): boolean;
14
+ load(request: AssetLoadRequest, context: LoadContext): Promise<MaterialDescriptorAsset>;
15
+ }
16
+ export declare function createMaterialFromDescriptor(descriptor: Pick<MaterialDescriptorAsset, "name" | "model" | "properties">): Material;
17
+ //# sourceMappingURL=MaterialLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterialLoader.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/MaterialLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,QAAQ,EAMT,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,cAAc,IAAI,QAAQ,CAAC;CAC5B;AAED,qBAAa,cAAe,YAAW,WAAW,CAAC,uBAAuB,CAAC;IACzE,QAAQ,CAAC,IAAI,cAAc;IAE3B,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAIrC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA4B9F;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC,GAAG,QAAQ,CAKjI"}
@@ -0,0 +1,138 @@
1
+ import { Material, PBRMaterial, UnlitMaterial } from "@aura3d/rendering";
2
+ export class MaterialLoader {
3
+ type = "material";
4
+ canLoad(request) {
5
+ return /\.(?:mat|material)\.json(?:\?.*)?$/i.test(request.url);
6
+ }
7
+ async load(request, context) {
8
+ context.throwIfAborted(request.url);
9
+ if (typeof fetch !== "function") {
10
+ throw new Error("MaterialLoader requires fetch");
11
+ }
12
+ const response = await fetch(request.url, { signal: request.signal });
13
+ if (!response.ok) {
14
+ throw new Error(`Material request failed with ${response.status}`);
15
+ }
16
+ const parsed = (await response.json());
17
+ if (parsed.model !== "unlit" && parsed.model !== "pbr") {
18
+ throw new Error(`Unsupported material model for ${request.url}`);
19
+ }
20
+ const descriptor = {
21
+ url: request.url,
22
+ name: parsed.name,
23
+ model: parsed.model,
24
+ properties: parseProperties(parsed.properties, request.url)
25
+ };
26
+ return {
27
+ ...descriptor,
28
+ createMaterial: () => createMaterialFromDescriptor(descriptor)
29
+ };
30
+ }
31
+ }
32
+ export function createMaterialFromDescriptor(descriptor) {
33
+ if (descriptor.model === "unlit") {
34
+ return new UnlitMaterial(toUnlitOptions(descriptor));
35
+ }
36
+ return new PBRMaterial(toPBRMaterialOptions(descriptor));
37
+ }
38
+ function toUnlitOptions(descriptor) {
39
+ const color = readVec4(descriptor.properties, ["color", "baseColor", "baseColorFactor"]);
40
+ return {
41
+ name: descriptor.name,
42
+ color: color ?? undefined,
43
+ renderState: readRenderState(descriptor.properties)
44
+ };
45
+ }
46
+ function toPBRMaterialOptions(descriptor) {
47
+ const properties = descriptor.properties;
48
+ return {
49
+ name: descriptor.name,
50
+ baseColor: readVec4(properties, ["baseColor", "baseColorFactor"]) ?? undefined,
51
+ metallic: readNumber(properties, ["metallic", "metallicFactor"]),
52
+ roughness: readNumber(properties, ["roughness", "roughnessFactor"]),
53
+ emissiveColor: readVec3(properties, ["emissiveColor", "emissiveFactor"]) ?? undefined,
54
+ emissiveStrength: readNumber(properties, ["emissiveStrength"]),
55
+ clearcoatFactor: readNumber(properties, ["clearcoatFactor"]),
56
+ clearcoatRoughnessFactor: readNumber(properties, ["clearcoatRoughnessFactor"]),
57
+ transmissionFactor: readNumber(properties, ["transmissionFactor"]),
58
+ diffuseTransmissionFactor: readNumber(properties, ["diffuseTransmissionFactor"]),
59
+ diffuseTransmissionColorFactor: readVec3(properties, ["diffuseTransmissionColorFactor"]) ?? undefined,
60
+ volumeThicknessFactor: readNumber(properties, ["volumeThicknessFactor"]),
61
+ volumeAttenuationDistance: readNumber(properties, ["volumeAttenuationDistance"]),
62
+ volumeAttenuationColor: readVec3(properties, ["volumeAttenuationColor"]) ?? undefined,
63
+ ior: readNumber(properties, ["ior"]),
64
+ specularFactor: readNumber(properties, ["specularFactor"]),
65
+ specularColorFactor: readVec3(properties, ["specularColorFactor"]) ?? undefined,
66
+ sheenColorFactor: readVec3(properties, ["sheenColorFactor"]) ?? undefined,
67
+ sheenRoughnessFactor: readNumber(properties, ["sheenRoughnessFactor"]),
68
+ anisotropyStrength: readNumber(properties, ["anisotropyStrength"]),
69
+ anisotropyRotation: readNumber(properties, ["anisotropyRotation"]),
70
+ iridescenceFactor: readNumber(properties, ["iridescenceFactor"]),
71
+ iridescenceIor: readNumber(properties, ["iridescenceIor"]),
72
+ iridescenceThicknessMinimum: readNumber(properties, ["iridescenceThicknessMinimum"]),
73
+ iridescenceThicknessMaximum: readNumber(properties, ["iridescenceThicknessMaximum"]),
74
+ dispersion: readNumber(properties, ["dispersion"]),
75
+ renderState: readRenderState(properties)
76
+ };
77
+ }
78
+ function parseProperties(value, url) {
79
+ if (value === undefined)
80
+ return {};
81
+ if (!isRecord(value) || Array.isArray(value)) {
82
+ throw new Error(`Material properties for ${url} must be an object`);
83
+ }
84
+ return value;
85
+ }
86
+ function readNumber(properties, keys) {
87
+ const value = readFirst(properties, keys);
88
+ if (value === undefined)
89
+ return undefined;
90
+ if (typeof value !== "number") {
91
+ throw new Error(`Material property ${keys[0]} must be a number`);
92
+ }
93
+ return value;
94
+ }
95
+ function readVec3(properties, keys) {
96
+ const value = readFirst(properties, keys);
97
+ if (value === undefined)
98
+ return undefined;
99
+ if (!Array.isArray(value) || value.length !== 3) {
100
+ throw new Error(`Material property ${keys[0]} must be a vec3`);
101
+ }
102
+ return [readFinite(value[0], keys[0]), readFinite(value[1], keys[0]), readFinite(value[2], keys[0])];
103
+ }
104
+ function readVec4(properties, keys) {
105
+ const value = readFirst(properties, keys);
106
+ if (value === undefined)
107
+ return undefined;
108
+ if (!Array.isArray(value) || value.length !== 4) {
109
+ throw new Error(`Material property ${keys[0]} must be a vec4`);
110
+ }
111
+ return [readFinite(value[0], keys[0]), readFinite(value[1], keys[0]), readFinite(value[2], keys[0]), readFinite(value[3], keys[0])];
112
+ }
113
+ function readRenderState(properties) {
114
+ const value = properties.renderState;
115
+ if (value === undefined)
116
+ return undefined;
117
+ if (!isRecord(value) || Array.isArray(value)) {
118
+ throw new Error("Material property renderState must be an object");
119
+ }
120
+ return value;
121
+ }
122
+ function readFirst(properties, keys) {
123
+ for (const key of keys) {
124
+ if (Object.hasOwn(properties, key))
125
+ return properties[key];
126
+ }
127
+ return undefined;
128
+ }
129
+ function readFinite(value, label) {
130
+ if (typeof value !== "number" || !Number.isFinite(value)) {
131
+ throw new Error(`Material property ${label} must contain finite numbers`);
132
+ }
133
+ return value;
134
+ }
135
+ function isRecord(value) {
136
+ return typeof value === "object" && value !== null;
137
+ }
138
+ //# sourceMappingURL=MaterialLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterialLoader.js","sourceRoot":"","sources":["../../../../packages/assets/src/MaterialLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ImportStage } from "./ImportPipeline";
2
+ export type MeshAttributeValue = number | readonly number[];
3
+ export interface MeshOptimizationInput {
4
+ readonly vertexCount: number;
5
+ readonly indices: readonly number[];
6
+ readonly attributes?: Readonly<Record<string, readonly MeshAttributeValue[]>>;
7
+ }
8
+ export interface MeshOptimizationResult {
9
+ readonly vertexCount: number;
10
+ readonly indices: readonly number[];
11
+ readonly attributes: Readonly<Record<string, readonly MeshAttributeValue[]>>;
12
+ readonly remap: readonly number[];
13
+ readonly removedVertices: number;
14
+ }
15
+ export interface MeshOptimizationStageOptions {
16
+ readonly name?: string;
17
+ }
18
+ export declare function optimizeIndexedMesh(input: MeshOptimizationInput): MeshOptimizationResult;
19
+ export declare function createMeshOptimizationStage(options?: MeshOptimizationStageOptions): ImportStage<MeshOptimizationInput, MeshOptimizationResult>;
20
+ //# sourceMappingURL=MeshOptimization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshOptimization.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/MeshOptimization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CA2BxF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,4BAAiC,GAAG,WAAW,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAKlJ"}
@@ -0,0 +1,65 @@
1
+ export function optimizeIndexedMesh(input) {
2
+ validateMeshOptimizationInput(input);
3
+ const remap = new Array(input.vertexCount).fill(-1);
4
+ const usedVertices = [];
5
+ const optimizedIndices = input.indices.map((index) => {
6
+ let nextIndex = remap[index];
7
+ if (nextIndex === -1) {
8
+ nextIndex = usedVertices.length;
9
+ remap[index] = nextIndex;
10
+ usedVertices.push(index);
11
+ }
12
+ return nextIndex;
13
+ });
14
+ const attributes = {};
15
+ for (const [semantic, values] of Object.entries(input.attributes ?? {})) {
16
+ attributes[semantic] = usedVertices.map((sourceIndex) => cloneAttributeValue(values[sourceIndex]));
17
+ }
18
+ return {
19
+ vertexCount: usedVertices.length,
20
+ indices: optimizedIndices,
21
+ attributes,
22
+ remap,
23
+ removedVertices: input.vertexCount - usedVertices.length
24
+ };
25
+ }
26
+ export function createMeshOptimizationStage(options = {}) {
27
+ return {
28
+ name: options.name ?? "mesh-optimization",
29
+ run: (input) => optimizeIndexedMesh(input)
30
+ };
31
+ }
32
+ function validateMeshOptimizationInput(input) {
33
+ if (!Number.isInteger(input.vertexCount) || input.vertexCount < 0) {
34
+ throw new Error("Mesh optimization vertexCount must be a non-negative integer");
35
+ }
36
+ if (!Array.isArray(input.indices) || input.indices.length === 0) {
37
+ throw new Error("Mesh optimization requires one or more indices");
38
+ }
39
+ input.indices.forEach((index, offset) => {
40
+ if (!Number.isInteger(index) || index < 0 || index >= input.vertexCount) {
41
+ throw new Error(`Mesh optimization index ${offset} references invalid vertex ${index}`);
42
+ }
43
+ });
44
+ for (const [semantic, values] of Object.entries(input.attributes ?? {})) {
45
+ if (!Array.isArray(values) || values.length !== input.vertexCount) {
46
+ throw new Error(`Mesh optimization attribute ${semantic} must contain exactly ${input.vertexCount} values`);
47
+ }
48
+ values.forEach((value, index) => validateAttributeValue(value, semantic, index));
49
+ }
50
+ }
51
+ function validateAttributeValue(value, semantic, index) {
52
+ if (typeof value === "number") {
53
+ if (!Number.isFinite(value)) {
54
+ throw new Error(`Mesh optimization attribute ${semantic}[${index}] must be finite`);
55
+ }
56
+ return;
57
+ }
58
+ if (!Array.isArray(value) || value.length === 0 || value.some((component) => !Number.isFinite(component))) {
59
+ throw new Error(`Mesh optimization attribute ${semantic}[${index}] must be a finite scalar or numeric tuple`);
60
+ }
61
+ }
62
+ function cloneAttributeValue(value) {
63
+ return Array.isArray(value) ? [...value] : value;
64
+ }
65
+ //# sourceMappingURL=MeshOptimization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshOptimization.js","sourceRoot":"","sources":["../../../../packages/assets/src/MeshOptimization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AssetLoadRequest, AssetLoader } from "./AssetLoader";
2
+ import { GLTFLoader, type GLTFAsset } from "./GLTFLoader";
3
+ import type { LoadContext } from "./LoadContext";
4
+ export declare class OBJLoader implements AssetLoader<GLTFAsset> {
5
+ readonly type = "obj";
6
+ private readonly gltfLoader;
7
+ private readonly innerAssets;
8
+ constructor(gltfLoader?: GLTFLoader);
9
+ canLoad(request: AssetLoadRequest): boolean;
10
+ load(request: AssetLoadRequest, context: LoadContext): Promise<GLTFAsset>;
11
+ dispose(asset: GLTFAsset): void;
12
+ }
13
+ //# sourceMappingURL=OBJLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OBJLoader.d.ts","sourceRoot":"","sources":["../../../../packages/assets/src/OBJLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAA8B,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiDjD,qBAAa,SAAU,YAAW,WAAW,CAAC,SAAS,CAAC;IACtD,QAAQ,CAAC,IAAI,SAAS;IAEtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;gBAEvD,UAAU,aAAmB;IAIzC,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAIrC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAa/E,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAGhC"}