@carbonenginejs/runtime-resource 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/LICENSE +21 -21
  2. package/NOTICE +31 -29
  3. package/README.md +67 -548
  4. package/dist/CjsMotherLode.js +1271 -1271
  5. package/dist/CjsResMan.js +3005 -3005
  6. package/dist/CjsResManQueue.js +214 -214
  7. package/dist/CjsResource.js +566 -566
  8. package/dist/CjsResourceSource.js +68 -59
  9. package/dist/CjsResourceSource.js.map +1 -1
  10. package/dist/_virtual/_rollupPluginBabelHelpers.js +153 -153
  11. package/dist/format/CjsBlueReader.js +269 -269
  12. package/dist/format/CjsFormat.js +197 -192
  13. package/dist/format/CjsFormat.js.map +1 -1
  14. package/dist/format/CjsReader.js +18 -18
  15. package/dist/format/CjsResourceProbe.js +277 -277
  16. package/dist/format/payloadContract.js +173 -173
  17. package/dist/formats/black/CjsBlackFormat.js +278 -278
  18. package/dist/formats/black/core/CjsBlackBinaryReader.js +157 -153
  19. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  20. package/dist/formats/black/core/CjsBlackPropertyReaders.js +387 -382
  21. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  22. package/dist/formats/black/core/CjsBlackReader.js +639 -639
  23. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +437 -433
  24. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  25. package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -0
  26. package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js.map +1 -0
  27. package/dist/formats/black/core/blackConstants.js +7 -7
  28. package/dist/formats/black/core/blackDefinitions.js +10 -10
  29. package/dist/formats/black/core/blackDefinitions.js.map +1 -1
  30. package/dist/formats/black/core/blackEnums.js +6 -6
  31. package/dist/formats/black/core/blackSchema.js +3 -3
  32. package/dist/formats/black/core/blackVersion.js +22 -22
  33. package/dist/formats/black/core/helpers.js +182 -182
  34. package/dist/formats/black/core/schema.js +4 -4
  35. package/dist/formats/black/index.js +2 -2
  36. package/dist/formats/bnk/CjsBnkFormat.js +125 -125
  37. package/dist/formats/bnk/core/graph.js +140 -140
  38. package/dist/formats/bnk/core/helpers.js +409 -409
  39. package/dist/formats/bnk/core/musicNodes.js +493 -489
  40. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  41. package/dist/formats/bnk/core/soundbanksInfo.js +246 -246
  42. package/dist/formats/bnk/index.js +2 -2
  43. package/dist/formats/cmf/CjsCmfFormat.js +497 -497
  44. package/dist/formats/cmf/core/binary.js +123 -118
  45. package/dist/formats/cmf/core/binary.js.map +1 -1
  46. package/dist/formats/cmf/core/buffers.js +233 -233
  47. package/dist/formats/cmf/core/constants.js +47 -47
  48. package/dist/formats/cmf/core/gr2Anim.js +453 -453
  49. package/dist/formats/cmf/core/helpers.js +287 -287
  50. package/dist/formats/cmf/core/pack.js +276 -276
  51. package/dist/formats/cmf/core/schema.js +364 -364
  52. package/dist/formats/cmf/core/shared.js +268 -268
  53. package/dist/formats/cmf/core/writer.js +517 -517
  54. package/dist/formats/cmf/index.js +2 -2
  55. package/dist/formats/dds/CjsDdsFormat.js +200 -193
  56. package/dist/formats/dds/CjsDdsFormat.js.map +1 -1
  57. package/dist/formats/dds/core/bc6h.js +288 -288
  58. package/dist/formats/dds/core/bc7.js +256 -251
  59. package/dist/formats/dds/core/bc7.js.map +1 -1
  60. package/dist/formats/dds/core/helpers.js +815 -815
  61. package/dist/formats/dds/index.js +2 -2
  62. package/dist/formats/fbx/CjsFbxFormat.js +266 -266
  63. package/dist/formats/fbx/core/helpers.js +3911 -3901
  64. package/dist/formats/fbx/core/helpers.js.map +1 -1
  65. package/dist/formats/fbx/index.js +2 -2
  66. package/dist/formats/flac/CjsFlacFormat.js +93 -87
  67. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  68. package/dist/formats/flac/core/helpers.js +295 -295
  69. package/dist/formats/flac/index.js +2 -2
  70. package/dist/formats/gif/CjsGifFormat.js +92 -87
  71. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  72. package/dist/formats/gif/core/helpers.js +360 -360
  73. package/dist/formats/gif/index.js +2 -2
  74. package/dist/formats/gltf/CjsGltfFormat.js +290 -290
  75. package/dist/formats/gltf/core/helpers.js +292 -292
  76. package/dist/formats/gltf/core/json.js +79 -79
  77. package/dist/formats/gltf/core/parser.js +666 -666
  78. package/dist/formats/gltf/core/targets.js +163 -163
  79. package/dist/formats/gltf/index.js +2 -2
  80. package/dist/formats/gr2/CjsGr2Format.js +46 -0
  81. package/dist/formats/gr2/CjsGr2Format.js.map +1 -0
  82. package/dist/formats/gr2/core/CjsFormatGr2.js +273 -0
  83. package/dist/formats/gr2/core/CjsFormatGr2.js.map +1 -0
  84. package/dist/formats/gr2/core/bitknit2.js +280 -0
  85. package/dist/formats/gr2/core/bitknit2.js.map +1 -0
  86. package/dist/formats/gr2/core/curves.js +1047 -0
  87. package/dist/formats/gr2/core/curves.js.map +1 -0
  88. package/dist/formats/gr2/core/gsf.js +72 -0
  89. package/dist/formats/gr2/core/gsf.js.map +1 -0
  90. package/dist/formats/gr2/core/helpers.js +332 -0
  91. package/dist/formats/gr2/core/helpers.js.map +1 -0
  92. package/dist/formats/gr2/core/json.js +622 -0
  93. package/dist/formats/gr2/core/json.js.map +1 -0
  94. package/dist/formats/gr2/core/oodle1.js +388 -0
  95. package/dist/formats/gr2/core/oodle1.js.map +1 -0
  96. package/dist/formats/gr2/core/reader.js +617 -0
  97. package/dist/formats/gr2/core/reader.js.map +1 -0
  98. package/dist/formats/gr2/core/tangents.js +48 -0
  99. package/dist/formats/gr2/core/tangents.js.map +1 -0
  100. package/dist/formats/gr2/core/targets.js +351 -0
  101. package/dist/formats/gr2/core/targets.js.map +1 -0
  102. package/dist/formats/gr2/index.js +3 -0
  103. package/dist/formats/gr2/index.js.map +1 -0
  104. package/dist/formats/index.js +30 -23
  105. package/dist/formats/index.js.map +1 -1
  106. package/dist/formats/jpeg/CjsJpegFormat.js +212 -206
  107. package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -1
  108. package/dist/formats/jpeg/core/helpers.js +350 -350
  109. package/dist/formats/jpeg/core/jpeg.js +387 -377
  110. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  111. package/dist/formats/jpeg/index.js +2 -2
  112. package/dist/formats/mp3/CjsMp3Format.js +197 -192
  113. package/dist/formats/mp3/CjsMp3Format.js.map +1 -1
  114. package/dist/formats/mp3/core/helpers.js +338 -338
  115. package/dist/formats/mp3/index.js +2 -2
  116. package/dist/formats/mp4/CjsMp4Format.js +197 -191
  117. package/dist/formats/mp4/CjsMp4Format.js.map +1 -1
  118. package/dist/formats/mp4/core/helpers.js +449 -449
  119. package/dist/formats/mp4/index.js +2 -2
  120. package/dist/formats/obj/CjsObjFormat.js +253 -253
  121. package/dist/formats/obj/core/helpers.js +573 -573
  122. package/dist/formats/obj/core/json.js +64 -64
  123. package/dist/formats/obj/core/parser.js +321 -321
  124. package/dist/formats/obj/index.js +2 -2
  125. package/dist/formats/ogg/CjsOggFormat.js +94 -88
  126. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  127. package/dist/formats/ogg/core/helpers.js +387 -387
  128. package/dist/formats/ogg/core/imdct.js +178 -178
  129. package/dist/formats/ogg/core/vorbis.js +1004 -999
  130. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  131. package/dist/formats/ogg/index.js +2 -2
  132. package/dist/formats/png/CjsPngFormat.js +201 -195
  133. package/dist/formats/png/CjsPngFormat.js.map +1 -1
  134. package/dist/formats/png/core/helpers.js +583 -583
  135. package/dist/formats/png/index.js +2 -2
  136. package/dist/formats/red/CjsRedFormat.js +261 -261
  137. package/dist/formats/red/core/CjsRedReader.js +194 -194
  138. package/dist/formats/red/core/blackDefinitions.js +3 -3
  139. package/dist/formats/red/core/helpers.js +139 -139
  140. package/dist/formats/red/core/redGraph.js +68 -68
  141. package/dist/formats/red/core/schema.js +4 -4
  142. package/dist/formats/red/index.js +2 -2
  143. package/dist/formats/stl/CjsStlFormat.js +365 -365
  144. package/dist/formats/stl/core/helpers.js +261 -261
  145. package/dist/formats/stl/core/json.js +51 -51
  146. package/dist/formats/stl/core/stl.js +634 -629
  147. package/dist/formats/stl/core/stl.js.map +1 -1
  148. package/dist/formats/stl/core/targets.js +163 -163
  149. package/dist/formats/stl/index.js +2 -2
  150. package/dist/formats/tga/CjsTgaFormat.js +197 -192
  151. package/dist/formats/tga/CjsTgaFormat.js.map +1 -1
  152. package/dist/formats/tga/core/helpers.js +446 -446
  153. package/dist/formats/tga/index.js +2 -2
  154. package/dist/formats/wav/CjsWavFormat.js +198 -192
  155. package/dist/formats/wav/CjsWavFormat.js.map +1 -1
  156. package/dist/formats/wav/core/helpers.js +328 -328
  157. package/dist/formats/wav/index.js +2 -2
  158. package/dist/formats/webm/CjsWebmFormat.js +197 -191
  159. package/dist/formats/webm/CjsWebmFormat.js.map +1 -1
  160. package/dist/formats/webm/core/helpers.js +537 -537
  161. package/dist/formats/webm/index.js +2 -2
  162. package/dist/formats/webp/CjsWebpFormat.js +91 -86
  163. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  164. package/dist/formats/webp/core/helpers.js +214 -214
  165. package/dist/formats/webp/index.js +2 -2
  166. package/dist/formats/wem/CjsWemFormat.js +242 -241
  167. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  168. package/dist/formats/wem/core/bitStream.js +259 -259
  169. package/dist/formats/wem/core/codebookLibrary.js +164 -164
  170. package/dist/formats/wem/core/helpers.js +417 -417
  171. package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
  172. package/dist/formats/wem/core/ptadpcm.js +77 -77
  173. package/dist/formats/wem/core/resolve.js +121 -121
  174. package/dist/formats/wem/core/wemToOgg.js +485 -485
  175. package/dist/formats/wem/index.js +2 -2
  176. package/dist/formats/yaml/CjsYamlFormat.js +89 -83
  177. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  178. package/dist/formats/yaml/core/CjsYamlReader.js +311 -305
  179. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  180. package/dist/formats/yaml/core/helpers.js +160 -160
  181. package/dist/formats/yaml/index.js +2 -2
  182. package/dist/index.js +49 -48
  183. package/dist/index.js.map +1 -1
  184. package/dist/resourcePath.js +18 -18
  185. package/dist/resourceStates.js +9 -9
  186. package/dist/resources/AudioGeometryResData.js +47 -47
  187. package/dist/resources/GStateBindingCallbackData.js +31 -31
  188. package/dist/resources/MeshDecalData.js +37 -37
  189. package/dist/resources/MeshDecalLodData.js +34 -34
  190. package/dist/resources/Tr2EffectRes.js +71 -71
  191. package/dist/resources/Tr2GrannyIntersectionResult.js +60 -60
  192. package/dist/resources/Tr2GrannyStateRes.js +44 -44
  193. package/dist/resources/Tr2ImageRes.js +114 -114
  194. package/dist/resources/Tr2LightProfileRes.js +40 -40
  195. package/dist/resources/Tr2MaterialArea.js +34 -34
  196. package/dist/resources/Tr2MaterialMesh.js +31 -31
  197. package/dist/resources/Tr2MaterialRes.js +34 -34
  198. package/dist/resources/Tr2ShaderPermutation.js +43 -43
  199. package/dist/resources/Tr2TextureLodManager.js +80 -80
  200. package/dist/resources/Tr2TextureLodUpdateRequest.js +37 -37
  201. package/dist/resources/Tr2TexturePackChannel.js +37 -37
  202. package/dist/resources/Tr2TexturePipeline.js +52 -52
  203. package/dist/resources/Tr2TexturePipelineParams.js +34 -34
  204. package/dist/resources/Tr2TexturePipelineStepCompress.js +40 -40
  205. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js +22 -0
  206. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
  207. package/dist/resources/Tr2TexturePipelineStepLimitSize.js +34 -34
  208. package/dist/resources/Tr2TexturePipelineStepLoad.js +31 -31
  209. package/dist/resources/Tr2TexturePipelineStepPack.js +43 -43
  210. package/dist/resources/TriGeometryRes.js +239 -239
  211. package/dist/resources/TriGeometryResAreaData.js +59 -59
  212. package/dist/resources/TriGeometryResJointData.js +38 -38
  213. package/dist/resources/TriGeometryResLodData.js +88 -88
  214. package/dist/resources/TriGeometryResMeshData.js +63 -63
  215. package/dist/resources/TriGeometryResSkeletonData.js +34 -34
  216. package/dist/resources/TriGrannyRes.js +43 -43
  217. package/dist/resources/TriJointBinding.js +38 -38
  218. package/dist/resources/TriMorphTargetGeometryConstants.js +46 -46
  219. package/dist/resources/TriRtGeometryConstants.js +88 -88
  220. package/dist/resources/TriTextureRes.js +304 -304
  221. package/dist/resources/enums.js +18 -18
  222. package/dist/resources/resourceBoundary.js +47 -47
  223. package/dist/resources/texturePipelineBehavior.js +308 -308
  224. package/dist/texture/CjsTextureArrayRes.js +406 -406
  225. package/dist/texture/CjsTextureParameterProxy.js +133 -133
  226. package/docs/README.md +73 -0
  227. package/docs/architecture.md +86 -0
  228. package/docs/concepts/resource-lifecycle.md +217 -0
  229. package/docs/formats/README.md +105 -0
  230. package/docs/formats/gr2.md +161 -0
  231. package/{FORMAT-PROVENANCE.md → docs/formats/provenance.md} +173 -155
  232. package/docs/formats/stl.md +37 -0
  233. package/docs/formats/wwise.md +44 -0
  234. package/docs/reference/classes/README.md +33 -0
  235. package/docs/reference/classes/core.md +106 -0
  236. package/docs/reference/classes/dropped.md +46 -0
  237. package/docs/reference/classes/formats.md +522 -0
  238. package/docs/reference/classes/resources.md +346 -0
  239. package/docs/reference/classes/texture.md +26 -0
  240. package/docs/reference/events.md +92 -0
  241. package/docs/reference/motherlode-cache.md +244 -0
  242. package/docs/reference/queues.md +102 -0
  243. package/docs/reference/reload.md +107 -0
  244. package/docs/reference/texture-arrays.md +113 -0
  245. package/docs/reference/texture-pipeline.md +53 -0
  246. package/docs/roadmap.md +104 -0
  247. package/format-notices/black/LICENSE +21 -21
  248. package/format-notices/black/NOTICE +47 -47
  249. package/format-notices/bnk/LICENSE +21 -21
  250. package/format-notices/bnk/NOTICE +20 -20
  251. package/format-notices/cmf/LICENSE +21 -21
  252. package/format-notices/cmf/NOTICE +36 -36
  253. package/format-notices/dds/LICENSE +21 -21
  254. package/format-notices/dds/NOTICE +14 -14
  255. package/format-notices/fbx/LICENSE +21 -21
  256. package/format-notices/fbx/NOTICE +14 -14
  257. package/format-notices/flac/LICENSE +21 -21
  258. package/format-notices/flac/NOTICE +14 -14
  259. package/format-notices/gif/LICENSE +21 -21
  260. package/format-notices/gif/NOTICE +14 -14
  261. package/format-notices/gltf/LICENSE +21 -21
  262. package/format-notices/gltf/NOTICE +27 -27
  263. package/format-notices/gr2/LICENSE +21 -0
  264. package/format-notices/gr2/NOTICE +60 -0
  265. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -0
  266. package/format-notices/jpeg/LICENSE +21 -21
  267. package/format-notices/jpeg/NOTICE +14 -14
  268. package/format-notices/mp3/LICENSE +21 -21
  269. package/format-notices/mp3/NOTICE +14 -14
  270. package/format-notices/mp4/LICENSE +21 -21
  271. package/format-notices/mp4/NOTICE +14 -14
  272. package/format-notices/obj/LICENSE +21 -21
  273. package/format-notices/obj/NOTICE +26 -26
  274. package/format-notices/ogg/LICENSE +21 -21
  275. package/format-notices/ogg/NOTICE +28 -28
  276. package/format-notices/png/LICENSE +21 -21
  277. package/format-notices/png/NOTICE +14 -14
  278. package/format-notices/red/LICENSE +21 -21
  279. package/format-notices/red/NOTICE +31 -31
  280. package/format-notices/stl/LICENSE +21 -21
  281. package/format-notices/stl/NOTICE +21 -21
  282. package/format-notices/tga/LICENSE +21 -21
  283. package/format-notices/tga/NOTICE +14 -14
  284. package/format-notices/wav/LICENSE +21 -21
  285. package/format-notices/wav/NOTICE +14 -14
  286. package/format-notices/webm/LICENSE +21 -21
  287. package/format-notices/webm/NOTICE +14 -14
  288. package/format-notices/webp/LICENSE +21 -21
  289. package/format-notices/webp/NOTICE +14 -14
  290. package/format-notices/wem/LICENSE +57 -57
  291. package/format-notices/wem/NOTICE +33 -33
  292. package/format-notices/yaml/LICENSE +21 -21
  293. package/format-notices/yaml/NOTICE +44 -44
  294. package/package.json +52 -51
  295. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +0 -4
  296. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js.map +0 -1
  297. package/resource-lifecycle.md +0 -679
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/fbx/core/helpers.js"],"sourcesContent":["import {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"@carbonenginejs/core-math/mesh\";\n\nexport const OUTPUT_CMF = \"cmf\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_FBX_JSON = \"fbxJson\";\n\nexport const GR2_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Mesh\",\n \"BoneBinding\",\n \"IndexGroup\",\n \"MorphTarget\",\n \"Model\",\n \"Skeleton\",\n \"Bone\",\n \"Animation\",\n \"TrackGroup\",\n \"TransformTrack\",\n \"Curve\"\n]);\n\nexport const CMF_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Section\",\n \"Metadata\",\n \"MetadataEntry\",\n \"Mesh\",\n \"IndexGroup\",\n \"VertexElement\",\n \"MeshLod\",\n \"MeshArea\",\n \"LodMeshArea\",\n \"BoneBinding\",\n \"MorphTargets\",\n \"MorphTarget\",\n \"LodMorphTarget\",\n \"AudioOcclusionMesh\",\n \"Skeleton\",\n \"BoneMask\",\n \"BoneWeight\",\n \"Animation\",\n \"AnimationChannel\",\n \"AnimationCurve\"\n]);\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"fbx\",\n source: \"\",\n flipV: true,\n classes: Object.freeze({}),\n maxBytes: 256 * 1024 * 1024,\n maxNodes: 250000,\n maxDepth: 128,\n maxProperties: 4096,\n maxArrayLength: 20000000\n});\n\nconst BINARY_SIGNATURE = \"Kaydara FBX Binary \\u0000\\u001a\\u0000\";\nconst BINARY_HEADER_SIZE = 27;\nconst NODE_HEADER_32_SIZE = 13;\nconst NODE_HEADER_64_SIZE = 25;\nconst ASCII_PREFIX_LENGTH = 8192;\nconst BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst TEXT_DECODER = new TextDecoder(\"utf-8\");\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"inputType\",\n \"source\",\n \"flipV\",\n \"classes\",\n \"maxBytes\",\n \"maxNodes\",\n \"maxDepth\",\n \"maxProperties\",\n \"maxArrayLength\"\n]);\nconst DEFLATE_CODE_LENGTH_ORDER = Object.freeze([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\nconst DEFLATE_LENGTH_BASE = Object.freeze([ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ]);\nconst DEFLATE_LENGTH_EXTRA = Object.freeze([ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 ]);\nconst DEFLATE_DISTANCE_BASE = Object.freeze([ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]);\nconst DEFLATE_DISTANCE_EXTRA = Object.freeze([ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ]);\nconst ADLER32_MOD = 65521;\nconst TRIANGULATION_EPSILON = 1e-10;\nconst IDENTITY_MATRIX4 = Object.freeze([\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n]);\nconst DEFAULT_ROTATION_ORDER = \"XYZ\";\nconst FBX_ROTATION_ORDERS = Object.freeze([ \"XYZ\", \"XZY\", \"YZX\", \"YXZ\", \"ZXY\", \"ZYX\" ]);\nconst FBX_TICKS_PER_SECOND = 46186158000;\nconst CMF_VERTEX_CHANNELS = Object.freeze([\n [ \"position\", \"Position\", 3 ],\n [ \"normal\", \"Normal\", 3 ],\n [ \"tangent\", \"Tangent\", 3 ],\n [ \"binormal\", \"Binormal\", 3 ],\n [ \"texcoord0\", \"TexCoord\", 2, 0 ],\n [ \"texcoord1\", \"TexCoord\", 2, 1 ],\n [ \"color0\", \"Color\", 4, 0 ],\n [ \"blendIndice\", \"BoneIndices\", 4, 0, \"UInt8\" ],\n [ \"blendWeight\", \"BoneWeights\", 4, 0 ]\n]);\nconst FEATURE_SCAN_ROOT_NODES = Object.freeze([ \"GlobalSettings\", \"Objects\", \"Connections\" ]);\nconst SUPPORTED_GEOMETRY_CLASSES = new Set([ \"\", \"Mesh\", \"Shape\" ]);\nconst SUPPORTED_LAYER_ELEMENTS = new Set([\n \"LayerElementNormal\",\n \"LayerElementTangent\",\n \"LayerElementBinormal\",\n \"LayerElementUV\",\n \"LayerElementColor\",\n \"LayerElementMaterial\"\n]);\nconst SUPPORTED_LAYER_MAPPINGS = new Set([ \"ByPolygonVertex\", \"ByControlPoint\", \"ByVertice\", \"ByVertex\", \"ByPolygon\", \"AllSame\" ]);\nconst SUPPORTED_LAYER_REFERENCES = new Set([ \"Direct\", \"IndexToDirect\", \"Index\" ]);\nconst SUPPORTED_MATERIAL_MAPPINGS = new Set([ \"AllSame\", \"ByPolygon\" ]);\n\nlet fixedDeflateTables = null;\n\n/**\n * Normalize reader values.\n *\n * @param {object} [base] Base values.\n * @param {object} [options] Override values.\n * @param {string} [readerName] Reader name for errors.\n * @returns {object} Normalized values.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsFbxFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const baseValues = { ...DEFAULT_VALUES, ...(base || {}) };\n const values = { ...baseValues, ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"fbx\";\n values.emit = normalizeEmit(values.emit, readerName);\n values.maxBytes = normalizeIntegerLimit(values.maxBytes, \"maxBytes\", readerName);\n values.maxNodes = normalizeIntegerLimit(values.maxNodes, \"maxNodes\", readerName);\n values.maxDepth = normalizeIntegerLimit(values.maxDepth, \"maxDepth\", readerName);\n values.maxProperties = normalizeIntegerLimit(values.maxProperties, \"maxProperties\", readerName);\n values.maxArrayLength = normalizeIntegerLimit(values.maxArrayLength, \"maxArrayLength\", readerName);\n values.flipV = normalizeBooleanOption(values.flipV, \"flipV\", readerName);\n values.classes = hasOwn(options, \"classes\")\n ? mergeClasses(baseValues.classes || {}, options.classes, readerName)\n : normalizeClasses(baseValues.classes || {}, readerName);\n if ((values.emit === OUTPUT_GR2 || values.emit === OUTPUT_CMF) && !hasClasses(values.classes))\n {\n throw new TypeError(`${readerName}: emit \"${values.emit}\" requires explicit classes`);\n }\n return values;\n}\n\n/**\n * Validate a node class key.\n *\n * @param {string} key Class key.\n * @param {string} [readerName] Reader name for errors.\n * @returns {string} The validated key.\n */\nexport function validateClassKey(key, readerName = \"CjsFbxFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n return key;\n}\n\n/**\n * Validate a node class constructor.\n *\n * @param {string} key Class key.\n * @param {Function} Class Constructor.\n * @param {string} [readerName] Reader name for errors.\n * @returns {Function} The validated constructor.\n */\nexport function validateClass(key, Class, readerName = \"CjsFbxFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${key} must be a constructor`);\n }\n return Class;\n}\n\n/**\n * Normalize an emit target.\n *\n * @param {string} emit Emit target.\n * @param {string} readerName Reader name for errors.\n * @returns {string} Normalized emit target.\n */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null)\n {\n return OUTPUT_RAW;\n }\n if (emit === OUTPUT_JSON)\n {\n return OUTPUT_FBX_JSON;\n }\n if ([ OUTPUT_RAW, OUTPUT_FBX_JSON, OUTPUT_GR2, OUTPUT_CMF ].includes(emit))\n {\n return emit;\n }\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/**\n * Convert supported binary inputs to bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Binary input.\n * @returns {Uint8Array} Byte view.\n */\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array)\n {\n return input;\n }\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n throw new TypeError(\"FBX input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\n/**\n * Read FBX bytes with normalized values.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Raw or debug payload.\n */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n\n if (values.emit === OUTPUT_RAW)\n {\n const metadata = inspectWithValues(bytes, values);\n return {\n payloadType: \"raw\",\n sourceFormat: \"fbx\",\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_FBX_JSON)\n {\n return parseWithValues(bytes, values);\n }\n\n if (values.emit === OUTPUT_GR2)\n {\n return readGr2WithValues(bytes, values);\n }\n\n return readCmfWithValues(bytes, values);\n}\n\n/**\n * Inspect FBX bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Lightweight FBX metadata.\n */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n const detected = inspectBytes(bytes);\n\n return {\n payloadType: \"geometry\",\n mediaTypes: [ \"geometry\" ],\n sourceFormat: \"fbx\",\n byteLength: bytes.byteLength,\n source: values.source || \"\",\n ...detected\n };\n}\n\n/**\n * Parse FBX bytes into a browser-safe debug document.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Parsed FBX document.\n */\nexport function parseWithValues(input, values = DEFAULT_VALUES)\n{\n return {\n ...parseDocumentWithValues(input, values),\n payloadType: OUTPUT_FBX_JSON\n };\n}\n\n/**\n * Read static FBX mesh data into GR2-shaped caller classes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Hydrated GR2-shaped root.\n */\nexport function readGr2WithValues(input, values = DEFAULT_VALUES)\n{\n const document = parseGr2DocumentWithValues(input, values);\n return hydrateGr2(buildGr2FromFbxNodes(document.nodes, values), values.classes, { source: values.source });\n}\n\n/**\n * Read static FBX mesh data into CMF-shaped caller classes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Hydrated CMF-shaped root.\n */\nexport function readCmfWithValues(input, values = DEFAULT_VALUES)\n{\n const document = parseGr2DocumentWithValues(input, values);\n return hydrateCmf(buildCmfFromShared(buildGr2FromFbxNodes(document.nodes, values)), values.classes, { source: values.source });\n}\n\nfunction parseDocumentWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n if (bytes.byteLength > values.maxBytes)\n {\n throw new Error(`fbx: input exceeds maxBytes (${values.maxBytes})`);\n }\n const metadata = inspectWithValues(bytes, values);\n\n if (metadata.encoding === \"binary\")\n {\n return parseBinaryDocument(bytes, metadata, values);\n }\n\n if (metadata.encoding === \"ascii\")\n {\n return parseAsciiDocument(bytes, metadata, values);\n }\n\n const error = new Error(\"fbx: unrecognized FBX data\");\n error.code = \"CJS_FORMAT_UNRECOGNIZED\";\n error.sourceFormat = \"fbx\";\n throw error;\n}\n\nfunction parseGr2DocumentWithValues(input, values)\n{\n const bytes = toBytes(input);\n if (bytes.byteLength > values.maxBytes)\n {\n throw new Error(`fbx: input exceeds maxBytes (${values.maxBytes})`);\n }\n const metadata = inspectWithValues(bytes, values);\n\n if (metadata.encoding === \"binary\")\n {\n return {\n ...metadata,\n nodes: readBinaryTargetNodes(bytes, metadata, values, new Set([ \"GlobalSettings\", \"Objects\", \"Connections\" ]))\n };\n }\n\n if (metadata.encoding === \"ascii\")\n {\n return {\n ...metadata,\n nodes: readAsciiTargetNodes(bytes, values, new Set([ \"GlobalSettings\", \"Objects\", \"Connections\" ]))\n };\n }\n\n const error = new Error(\"fbx: unrecognized FBX data\");\n error.code = \"CJS_FORMAT_UNRECOGNIZED\";\n error.sourceFormat = \"fbx\";\n throw error;\n}\n\n/**\n * Report FBX support for the current implementation.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Support report.\n */\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const recognized = metadata.encoding !== \"\";\n const diagnostics = recognized\n ? inspectFbxFeatureSupport(input, values, metadata)\n : { warnings: [], errors: [] };\n\n return {\n format: \"fbx\",\n source: values.source || \"buffer\",\n supported: recognized ? \"partial\" : \"none\",\n confidence: recognized ? metadata.confidence : 0,\n preferred: recognized ? \"gr2\" : \"\",\n reason: recognized ? \"FBX document parsing plus basic static/skinned/morphed GR2/CMF output and basic CMF animation curves are available; full CarbonEngine-equivalent import is not implemented yet.\" : \"Unrecognized FBX data.\",\n metadata,\n variants: [\n { kind: \"document\", codec: metadata.encoding || \"unknown\", supported: recognized },\n { kind: \"gr2\", codec: \"gr2-geometry\", supported: recognized, reason: recognized ? \"Basic static/skinned/morphed geometry class output is available.\" : \"Unrecognized FBX data.\" },\n { kind: \"cmf\", codec: \"cmf-geometry-animation\", supported: recognized, reason: recognized ? \"Basic static/skinned/morphed geometry and basic morph/bone animation class output are available.\" : \"Unrecognized FBX data.\" }\n ],\n warnings: diagnostics.warnings,\n errors: diagnostics.errors\n };\n }\n catch (error)\n {\n return {\n format: \"fbx\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nfunction inspectFbxFeatureSupport(input, values, metadata)\n{\n try\n {\n const\n bytes = toBytes(input),\n targetNames = new Set(FEATURE_SCAN_ROOT_NODES),\n nodes = metadata.encoding === \"binary\"\n ? readBinaryTargetNodes(bytes, metadata, values, targetNames)\n : readAsciiTargetNodes(bytes, values, targetNames);\n\n return collectFbxFeatureSupport(nodes);\n }\n catch (error)\n {\n return {\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nfunction collectFbxFeatureSupport(nodes)\n{\n const\n warnings = [],\n objectsNode = findFirstNode(nodes, \"Objects\");\n\n if (!objectsNode)\n {\n return {\n warnings: [ \"fbx: no Objects node; runtime GR2/CMF output requires mesh Geometry nodes.\" ],\n errors: []\n };\n }\n\n const\n objectIndex = indexObjectNodes(objectsNode),\n connections = readConnections(findFirstNode(nodes, \"Connections\"));\n\n collectGeometryFeatureWarnings(objectIndex, warnings);\n collectLayerElementFeatureWarnings(objectIndex, warnings);\n collectSkinFeatureWarnings(objectIndex, connections, warnings);\n collectBlendShapeFeatureWarnings(objectIndex, connections, warnings);\n\n return {\n warnings,\n errors: []\n };\n}\n\nfunction collectGeometryFeatureWarnings(objectIndex, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\"))\n {\n if (!SUPPORTED_GEOMETRY_CLASSES.has(geometry.className))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} class ${JSON.stringify(geometry.className)} is not imported by GR2/CMF output.`);\n continue;\n }\n\n if (geometry.className === \"Shape\")\n {\n continue;\n }\n\n if (!findFirstNode(geometry.node.children, \"Vertices\"))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} is missing Vertices and cannot be imported as a mesh.`);\n }\n if (!findFirstNode(geometry.node.children, \"PolygonVertexIndex\"))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} is missing PolygonVertexIndex and cannot be imported as a mesh.`);\n }\n }\n}\n\nfunction collectLayerElementFeatureWarnings(objectIndex, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n for (const layer of geometry.node.children.filter(child => child.name.startsWith(\"LayerElement\")))\n {\n if (!SUPPORTED_LAYER_ELEMENTS.has(layer.name))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} is ignored by GR2/CMF output.`);\n continue;\n }\n\n if (layer.name === \"LayerElementMaterial\")\n {\n collectMaterialLayerFeatureWarnings(geometry, layer, warnings);\n }\n else\n {\n collectVertexLayerFeatureWarnings(geometry, layer, warnings);\n }\n }\n }\n}\n\nfunction collectVertexLayerFeatureWarnings(geometry, layer, warnings)\n{\n const\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"ByPolygonVertex\"),\n reference = String(readFirstChildProperty(layer, \"ReferenceInformationType\") || \"Direct\");\n\n if (!SUPPORTED_LAYER_MAPPINGS.has(mapping))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} uses unsupported MappingInformationType ${JSON.stringify(mapping)}.`);\n }\n if (!SUPPORTED_LAYER_REFERENCES.has(reference))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} uses unsupported ReferenceInformationType ${JSON.stringify(reference)}.`);\n }\n}\n\nfunction collectMaterialLayerFeatureWarnings(geometry, layer, warnings)\n{\n const mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"AllSame\");\n if (!SUPPORTED_MATERIAL_MAPPINGS.has(mapping))\n {\n addWarning(warnings, `fbx: LayerElementMaterial on Geometry ${objectLabel(geometry)} uses unsupported MappingInformationType ${JSON.stringify(mapping)}.`);\n }\n}\n\nfunction collectSkinFeatureWarnings(objectIndex, connections, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n const skins = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\").filter(isSkinDeformer);\n if (skins.length > 1)\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} has ${skins.length} Skin deformers; GR2/CMF output imports only the first skin.`);\n }\n }\n\n const skins = objectIndex.list\n .filter(entry => entry.nodeName === \"Deformer\" && isSkinDeformer(entry));\n\n for (const skin of skins)\n {\n const clusters = connectedChildObjects(skin, objectIndex, connections, \"Deformer\")\n .filter(isClusterDeformer);\n\n for (const cluster of clusters)\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n indexes = readChildArray(cluster.node, \"Indexes\") || [],\n weights = readChildArray(cluster.node, \"Weights\") || [];\n\n if (!bone)\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no linked bone Model.`);\n }\n else if (!indexes.length)\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no Indexes.`);\n }\n else if (!hasPositiveClusterWeight(indexes, weights))\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no positive Weights.`);\n }\n }\n\n if (hasControlPointInfluenceOverflow(buildSkinClusterRecords(clusters, objectIndex, connections)))\n {\n addWarning(warnings, `fbx: Skin ${objectLabel(skin)} has control points with more than four positive bone influences; GR2/CMF output keeps the strongest four and renormalizes them.`);\n }\n }\n}\n\n/**\n * Check whether an indexed FBX object is a Skin deformer.\n *\n * @param {object} entry Indexed object entry.\n * @returns {boolean} True when the entry is a Skin deformer.\n */\nfunction isSkinDeformer(entry)\n{\n return entry?.className === \"Skin\" || entry?.fullName?.startsWith(\"Deformer::Skin\") || entry?.name === \"Skin\";\n}\n\n/**\n * Check whether an indexed FBX object is a Cluster deformer.\n *\n * @param {object} entry Indexed object entry.\n * @returns {boolean} True when the entry is a Cluster deformer.\n */\nfunction isClusterDeformer(entry)\n{\n return entry?.className === \"Cluster\" || entry?.fullName?.startsWith(\"SubDeformer::\") || entry?.name?.includes(\"Cluster\");\n}\n\nfunction hasControlPointInfluenceOverflow(records)\n{\n const controlPointInfluences = buildControlPointInfluences(records);\n for (const influences of controlPointInfluences.values())\n {\n if (influences.filter(influence => influence.weight > 0).length > 4)\n {\n return true;\n }\n }\n return false;\n}\n\nfunction collectBlendShapeFeatureWarnings(objectIndex, connections, warnings)\n{\n const channels = objectIndex.list\n .filter(entry => isBlendShapeChannel(entry));\n\n for (const channel of channels)\n {\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n addWarning(warnings, `fbx: BlendShapeChannel ${objectLabel(channel)} is skipped because in-between morph interpolation is not implemented.`);\n }\n }\n}\n\nfunction addWarning(warnings, message)\n{\n if (!warnings.includes(message))\n {\n warnings.push(message);\n }\n}\n\nfunction objectLabel(entry)\n{\n return JSON.stringify(entry?.name || entry?.fullName || entry?.key || \"\");\n}\n\n/**\n * Inspect raw bytes without normalized options.\n *\n * @param {Uint8Array} bytes FBX bytes.\n * @returns {object} Detected metadata.\n */\nexport function inspectBytes(bytes)\n{\n if (isBinaryFBX(bytes))\n {\n return inspectBinaryBytes(bytes);\n }\n\n const text = decodeAsciiPrefix(bytes, ASCII_PREFIX_LENGTH);\n const ascii = isAsciiFBXText(text);\n return {\n encoding: ascii ? \"ascii\" : \"\",\n version: ascii ? readAsciiVersion(text) : 0,\n signature: ascii ? \"FBX ASCII\" : \"\",\n rootNodeCount: ascii ? countAsciiRootNodes(text) : 0,\n rootNodeNames: ascii ? collectAsciiRootNames(text) : [],\n confidence: ascii ? 0.85 : 0\n };\n}\n\n/**\n * Test whether bytes look like FBX.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the input appears to be FBX.\n */\nexport function isFBX(input)\n{\n const bytes = toBytes(input);\n return isBinaryFBX(bytes) || isAsciiFBXText(decodeAsciiPrefix(bytes, ASCII_PREFIX_LENGTH));\n}\n\n/**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (ArrayBuffer.isView(value))\n {\n return { type: value.constructor.name, length: value.length };\n }\n if (Array.isArray(value))\n {\n return value.map(toJsonValue);\n }\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value))\n {\n output[key] = toJsonValue(entry);\n }\n return output;\n }\n return value;\n}\n\nfunction inspectBinaryBytes(bytes)\n{\n const version = readU32LE(bytes, 23);\n const headerSize = getBinaryNodeHeaderSize(version);\n const rootNodeNames = [];\n let rootNodeCount = 0;\n let offset = BINARY_HEADER_SIZE;\n\n while (offset + headerSize <= bytes.byteLength && !isNullRecord(bytes, offset, headerSize))\n {\n const header = readBinaryNodeHeader(bytes, offset, version);\n if (!header || header.endOffset <= offset || header.endOffset > bytes.byteLength)\n {\n break;\n }\n rootNodeNames.push(readString(bytes, header.nameOffset, header.nameLength));\n rootNodeCount++;\n offset = header.endOffset;\n }\n\n return {\n encoding: \"binary\",\n version,\n signature: \"Kaydara FBX Binary\",\n rootNodeCount,\n rootNodeNames,\n confidence: 1\n };\n}\n\nfunction parseBinaryDocument(bytes, metadata, values)\n{\n const nodes = [];\n const headerSize = getBinaryNodeHeaderSize(metadata.version);\n let offset = BINARY_HEADER_SIZE;\n let nodeCount = 0;\n\n while (offset + headerSize <= bytes.byteLength)\n {\n if (isNullRecord(bytes, offset, headerSize))\n {\n break;\n }\n\n const result = readBinaryNode(bytes, offset, metadata.version, values, 0);\n nodes.push(result.node);\n nodeCount += result.count;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n offset = result.offset;\n }\n\n const document = {\n ...metadata,\n payloadType: OUTPUT_FBX_JSON,\n nodes,\n nodeCount,\n rootNodeCount: nodes.length,\n rootNodeNames: nodes.map(node => node.name)\n };\n document.root = buildFbxRoot(document.nodes);\n return document;\n}\n\nfunction readBinaryNode(bytes, offset, version, values, depth)\n{\n if (depth > values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n\n const header = readBinaryNodeHeader(bytes, offset, version);\n if (!header)\n {\n throw new Error(`fbx: invalid node header at offset ${offset}`);\n }\n if (header.endOffset > bytes.byteLength)\n {\n throw new Error(`fbx: node ${header.name} extends beyond end of file`);\n }\n if (header.propertyCount > values.maxProperties)\n {\n throw new Error(`fbx: node ${header.name} exceeds maxProperties (${values.maxProperties})`);\n }\n\n let cursor = header.propertiesOffset;\n const properties = [];\n const propertyTypes = [];\n\n for (let i = 0; i < header.propertyCount; i++)\n {\n const result = readBinaryProperty(bytes, cursor, values);\n properties.push(result.value);\n propertyTypes.push(result.type);\n cursor = result.offset;\n }\n\n const propertyEnd = header.propertiesOffset + header.propertyListLength;\n if (cursor > propertyEnd)\n {\n throw new Error(`fbx: property list for node ${header.name} overflowed`);\n }\n cursor = propertyEnd;\n\n const children = [];\n let count = 1;\n const headerSize = getBinaryNodeHeaderSize(version);\n\n while (cursor + headerSize <= header.endOffset)\n {\n if (isNullRecord(bytes, cursor, headerSize))\n {\n cursor += headerSize;\n break;\n }\n if (cursor >= header.endOffset)\n {\n break;\n }\n\n const child = readBinaryNode(bytes, cursor, version, values, depth + 1);\n if (child.offset > header.endOffset)\n {\n throw new Error(`fbx: child node for ${header.name} overflowed`);\n }\n children.push(child.node);\n count += child.count;\n cursor = child.offset;\n }\n\n return {\n offset: header.endOffset,\n count,\n node: {\n name: header.name,\n properties,\n propertyTypes,\n children\n }\n };\n}\n\nfunction readBinaryNodeHeader(bytes, offset, version)\n{\n const large = version >= 7500;\n const headerSize = getBinaryNodeHeaderSize(version);\n if (offset + headerSize > bytes.byteLength)\n {\n return null;\n }\n\n let cursor = offset;\n const endOffset = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const propertyCount = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const propertyListLength = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const nameLength = bytes[cursor++];\n const nameOffset = cursor;\n\n if (endOffset === 0 && propertyCount === 0 && propertyListLength === 0 && nameLength === 0)\n {\n return null;\n }\n if (!Number.isSafeInteger(endOffset) || !Number.isSafeInteger(propertyCount) || !Number.isSafeInteger(propertyListLength))\n {\n throw new Error(\"fbx: 64-bit node offsets exceed JavaScript safe integer range\");\n }\n if (nameOffset + nameLength > bytes.byteLength)\n {\n throw new Error(`fbx: node name at offset ${offset} is truncated`);\n }\n\n return {\n endOffset,\n propertyCount,\n propertyListLength,\n nameLength,\n nameOffset,\n name: readString(bytes, nameOffset, nameLength),\n propertiesOffset: nameOffset + nameLength\n };\n}\n\nfunction readBinaryProperty(bytes, offset, values)\n{\n ensureRange(bytes, offset, 1, \"fbx: property type is truncated\");\n const type = String.fromCharCode(bytes[offset]);\n let cursor = offset + 1;\n\n switch (type)\n {\n case \"Y\":\n ensureRange(bytes, cursor, 2, \"fbx: int16 property is truncated\");\n return { type, value: readI16LE(bytes, cursor), offset: cursor + 2 };\n case \"C\":\n ensureRange(bytes, cursor, 1, \"fbx: bool property is truncated\");\n return { type, value: bytes[cursor] !== 0, offset: cursor + 1 };\n case \"I\":\n ensureRange(bytes, cursor, 4, \"fbx: int32 property is truncated\");\n return { type, value: readI32LE(bytes, cursor), offset: cursor + 4 };\n case \"F\":\n ensureRange(bytes, cursor, 4, \"fbx: float32 property is truncated\");\n return { type, value: readF32LE(bytes, cursor), offset: cursor + 4 };\n case \"D\":\n ensureRange(bytes, cursor, 8, \"fbx: float64 property is truncated\");\n return { type, value: readF64LE(bytes, cursor), offset: cursor + 8 };\n case \"L\":\n ensureRange(bytes, cursor, 8, \"fbx: int64 property is truncated\");\n return { type, value: readI64LEValue(bytes, cursor), offset: cursor + 8 };\n case \"R\":\n return readBinaryBlobProperty(bytes, cursor, type, \"bytes\");\n case \"S\":\n return readBinaryBlobProperty(bytes, cursor, type, \"string\");\n case \"f\":\n case \"d\":\n case \"i\":\n case \"l\":\n case \"b\":\n case \"c\":\n return readBinaryArrayProperty(bytes, cursor, type, values);\n default:\n throw new Error(`fbx: unsupported property type ${JSON.stringify(type)} at offset ${offset}`);\n }\n}\n\nfunction readBinaryBlobProperty(bytes, offset, type, kind)\n{\n ensureRange(bytes, offset, 4, `fbx: ${kind} property length is truncated`);\n const length = readU32LE(bytes, offset);\n const dataOffset = offset + 4;\n const endOffset = dataOffset + length;\n ensureRange(bytes, dataOffset, length, `fbx: ${kind} property is truncated`);\n\n return {\n type,\n value: kind === \"string\" ? readString(bytes, dataOffset, length) : bytes.subarray(dataOffset, endOffset),\n offset: endOffset\n };\n}\n\nfunction readBinaryArrayProperty(bytes, offset, type, values)\n{\n ensureRange(bytes, offset, 12, \"fbx: array property header is truncated\");\n const length = readU32LE(bytes, offset);\n const encoding = readU32LE(bytes, offset + 4);\n const byteLength = readU32LE(bytes, offset + 8);\n const dataOffset = offset + 12;\n const endOffset = dataOffset + byteLength;\n ensureRange(bytes, dataOffset, byteLength, \"fbx: array property is truncated\");\n if (length > values.maxArrayLength)\n {\n throw new Error(`fbx: array property exceeds maxArrayLength (${values.maxArrayLength})`);\n }\n\n if (encoding === 0)\n {\n return {\n type,\n value: readUncompressedArray(bytes, dataOffset, type, length, byteLength),\n offset: endOffset\n };\n }\n\n if (encoding === 1)\n {\n const expectedByteLength = getArrayElementSize(type) * length;\n const expanded = inflateZlib(bytes.subarray(dataOffset, endOffset), expectedByteLength);\n return {\n type,\n value: readUncompressedArray(expanded, 0, type, length, expectedByteLength),\n offset: endOffset\n };\n }\n\n return {\n type,\n value: {\n arrayType: type,\n length,\n encoding,\n byteOffset: dataOffset,\n byteLength,\n compressed: true\n },\n offset: endOffset\n };\n}\n\nfunction readUncompressedArray(bytes, offset, type, length, byteLength)\n{\n const expected = getArrayElementSize(type) * length;\n if (byteLength < expected)\n {\n throw new Error(`fbx: array property ${type} is truncated`);\n }\n\n if (type === \"f\")\n {\n const value = new Float32Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readF32LE(bytes, offset + i * 4);\n }\n return value;\n }\n if (type === \"d\")\n {\n const value = new Float64Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readF64LE(bytes, offset + i * 8);\n }\n return value;\n }\n if (type === \"i\")\n {\n const value = new Int32Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readI32LE(bytes, offset + i * 4);\n }\n return value;\n }\n if (type === \"l\")\n {\n const value = [];\n for (let i = 0; i < length; i++)\n {\n value.push(readI64LEValue(bytes, offset + i * 8));\n }\n return value;\n }\n\n const value = [];\n for (let i = 0; i < length; i++)\n {\n value.push(bytes[offset + i] !== 0);\n }\n return value;\n}\n\nfunction inflateZlib(source, expectedLength)\n{\n if (source.byteLength < 6)\n {\n throw new Error(\"fbx: compressed array zlib stream is truncated\");\n }\n\n const\n cmf = source[0],\n flg = source[1];\n\n if ((cmf & 0x0f) !== 8 || (cmf >> 4) > 7 || ((cmf << 8) + flg) % 31 !== 0)\n {\n throw new Error(\"fbx: compressed array has invalid zlib header\");\n }\n if (flg & 0x20)\n {\n throw new Error(\"fbx: compressed array uses a preset zlib dictionary\");\n }\n\n const\n expectedAdler = readU32BE(source, source.byteLength - 4),\n output = inflateDeflate(source.subarray(2, source.byteLength - 4), expectedLength),\n actualAdler = adler32(output);\n\n if (actualAdler !== expectedAdler)\n {\n throw new Error(\"fbx: compressed array zlib checksum mismatch\");\n }\n\n return output;\n}\n\nfunction inflateDeflate(source, expectedLength)\n{\n const\n reader = new DeflateBitReader(source),\n state = {\n output: new Uint8Array(expectedLength),\n offset: 0\n };\n\n let finalBlock = false;\n while (!finalBlock)\n {\n finalBlock = reader.readBits(1) === 1;\n const blockType = reader.readBits(2);\n if (blockType === 0)\n {\n inflateStoredBlock(reader, state);\n }\n else if (blockType === 1)\n {\n const tables = getFixedDeflateTables();\n inflateHuffmanBlock(reader, state, tables.literalLength, tables.distance);\n }\n else if (blockType === 2)\n {\n const tables = readDynamicDeflateTables(reader);\n inflateHuffmanBlock(reader, state, tables.literalLength, tables.distance);\n }\n else\n {\n throw new Error(\"fbx: compressed array uses reserved deflate block type\");\n }\n }\n\n if (state.offset !== expectedLength)\n {\n throw new Error(\"fbx: compressed array decoded to unexpected length\");\n }\n\n return state.output;\n}\n\nfunction inflateStoredBlock(reader, state)\n{\n reader.alignByte();\n const\n length = reader.readAlignedU16LE(),\n inverseLength = reader.readAlignedU16LE();\n\n if (((length ^ 0xffff) & 0xffff) !== inverseLength)\n {\n throw new Error(\"fbx: compressed array stored block length mismatch\");\n }\n\n for (let i = 0; i < length; i++)\n {\n writeInflatedByte(state, reader.readAlignedByte());\n }\n}\n\nfunction inflateHuffmanBlock(reader, state, literalLengthTable, distanceTable)\n{\n for (;;)\n {\n const symbol = literalLengthTable.decode(reader);\n if (symbol < 256)\n {\n writeInflatedByte(state, symbol);\n continue;\n }\n if (symbol === 256)\n {\n return;\n }\n\n const lengthIndex = symbol - 257;\n if (lengthIndex < 0 || lengthIndex >= DEFLATE_LENGTH_BASE.length)\n {\n throw new Error(\"fbx: compressed array has invalid deflate length symbol\");\n }\n\n const\n length = DEFLATE_LENGTH_BASE[lengthIndex] + reader.readBits(DEFLATE_LENGTH_EXTRA[lengthIndex]),\n distanceSymbol = distanceTable.decode(reader);\n\n if (distanceSymbol < 0 || distanceSymbol >= DEFLATE_DISTANCE_BASE.length)\n {\n throw new Error(\"fbx: compressed array has invalid deflate distance symbol\");\n }\n\n const distance = DEFLATE_DISTANCE_BASE[distanceSymbol] + reader.readBits(DEFLATE_DISTANCE_EXTRA[distanceSymbol]);\n copyInflatedBytes(state, distance, length);\n }\n}\n\nfunction getFixedDeflateTables()\n{\n if (!fixedDeflateTables)\n {\n const literalLengths = new Array(288).fill(0);\n for (let symbol = 0; symbol <= 143; symbol++)\n {\n literalLengths[symbol] = 8;\n }\n for (let symbol = 144; symbol <= 255; symbol++)\n {\n literalLengths[symbol] = 9;\n }\n for (let symbol = 256; symbol <= 279; symbol++)\n {\n literalLengths[symbol] = 7;\n }\n for (let symbol = 280; symbol <= 287; symbol++)\n {\n literalLengths[symbol] = 8;\n }\n\n fixedDeflateTables = {\n literalLength: new DeflateHuffmanTable(literalLengths),\n distance: new DeflateHuffmanTable(new Array(32).fill(5))\n };\n }\n return fixedDeflateTables;\n}\n\nfunction readDynamicDeflateTables(reader)\n{\n const\n literalLengthCount = reader.readBits(5) + 257,\n distanceCount = reader.readBits(5) + 1,\n codeLengthCount = reader.readBits(4) + 4,\n codeLengthLengths = new Array(19).fill(0);\n\n for (let i = 0; i < codeLengthCount; i++)\n {\n codeLengthLengths[DEFLATE_CODE_LENGTH_ORDER[i]] = reader.readBits(3);\n }\n\n const\n codeLengthTable = new DeflateHuffmanTable(codeLengthLengths),\n totalCount = literalLengthCount + distanceCount,\n lengths = [];\n\n while (lengths.length < totalCount)\n {\n const symbol = codeLengthTable.decode(reader);\n if (symbol <= 15)\n {\n lengths.push(symbol);\n }\n else if (symbol === 16)\n {\n if (!lengths.length)\n {\n throw new Error(\"fbx: compressed array repeats missing deflate code length\");\n }\n repeatCodeLength(lengths, lengths[lengths.length - 1], reader.readBits(2) + 3, totalCount);\n }\n else if (symbol === 17)\n {\n repeatCodeLength(lengths, 0, reader.readBits(3) + 3, totalCount);\n }\n else if (symbol === 18)\n {\n repeatCodeLength(lengths, 0, reader.readBits(7) + 11, totalCount);\n }\n else\n {\n throw new Error(\"fbx: compressed array has invalid code length symbol\");\n }\n }\n\n return {\n literalLength: new DeflateHuffmanTable(lengths.slice(0, literalLengthCount)),\n distance: new DeflateHuffmanTable(lengths.slice(literalLengthCount))\n };\n}\n\nfunction repeatCodeLength(lengths, value, count, totalCount)\n{\n if (lengths.length + count > totalCount)\n {\n throw new Error(\"fbx: compressed array code lengths overflow\");\n }\n for (let i = 0; i < count; i++)\n {\n lengths.push(value);\n }\n}\n\nfunction writeInflatedByte(state, value)\n{\n if (state.offset >= state.output.byteLength)\n {\n throw new Error(\"fbx: compressed array decoded past expected length\");\n }\n state.output[state.offset++] = value & 0xff;\n}\n\nfunction copyInflatedBytes(state, distance, length)\n{\n if (distance <= 0 || distance > state.offset)\n {\n throw new Error(\"fbx: compressed array has invalid deflate distance\");\n }\n for (let i = 0; i < length; i++)\n {\n writeInflatedByte(state, state.output[state.offset - distance]);\n }\n}\n\nfunction adler32(bytes)\n{\n let\n a = 1,\n b = 0;\n\n for (const byte of bytes)\n {\n a += byte;\n b += a;\n a %= ADLER32_MOD;\n b %= ADLER32_MOD;\n }\n\n return (((b << 16) >>> 0) | a) >>> 0;\n}\n\nclass DeflateBitReader\n{\n constructor(bytes)\n {\n this.bytes = bytes;\n this.byteOffset = 0;\n this.bitBuffer = 0;\n this.bitCount = 0;\n }\n\n readBits(count)\n {\n let\n value = 0,\n shift = 0,\n remaining = count;\n\n while (remaining > 0)\n {\n if (this.bitCount === 0)\n {\n if (this.byteOffset >= this.bytes.byteLength)\n {\n throw new Error(\"fbx: compressed array deflate stream is truncated\");\n }\n this.bitBuffer = this.bytes[this.byteOffset++];\n this.bitCount = 8;\n }\n\n const take = Math.min(remaining, this.bitCount);\n value |= (this.bitBuffer & ((1 << take) - 1)) << shift;\n this.bitBuffer >>>= take;\n this.bitCount -= take;\n shift += take;\n remaining -= take;\n }\n\n return value;\n }\n\n alignByte()\n {\n this.bitBuffer = 0;\n this.bitCount = 0;\n }\n\n readAlignedByte()\n {\n if (this.byteOffset >= this.bytes.byteLength)\n {\n throw new Error(\"fbx: compressed array stored block is truncated\");\n }\n return this.bytes[this.byteOffset++];\n }\n\n readAlignedU16LE()\n {\n const\n low = this.readAlignedByte(),\n high = this.readAlignedByte();\n return low | (high << 8);\n }\n}\n\nclass DeflateHuffmanTable\n{\n constructor(lengths)\n {\n this.tables = [];\n this.maxBits = 0;\n\n const counts = new Array(16).fill(0);\n for (const length of lengths)\n {\n if (length < 0 || length > 15)\n {\n throw new Error(\"fbx: compressed array has invalid deflate code length\");\n }\n if (length)\n {\n counts[length]++;\n this.maxBits = Math.max(this.maxBits, length);\n }\n }\n\n let code = 0;\n const nextCodes = new Array(16).fill(0);\n for (let bits = 1; bits <= 15; bits++)\n {\n code = (code + counts[bits - 1]) << 1;\n nextCodes[bits] = code;\n }\n\n for (let symbol = 0; symbol < lengths.length; symbol++)\n {\n const length = lengths[symbol];\n if (!length)\n {\n continue;\n }\n\n const reversed = reverseBits(nextCodes[length], length);\n nextCodes[length]++;\n if (!this.tables[length])\n {\n this.tables[length] = [];\n }\n this.tables[length][reversed] = symbol;\n }\n }\n\n decode(reader)\n {\n let code = 0;\n for (let length = 1; length <= this.maxBits; length++)\n {\n code |= reader.readBits(1) << (length - 1);\n const table = this.tables[length];\n if (table && table[code] !== undefined)\n {\n return table[code];\n }\n }\n\n throw new Error(\"fbx: compressed array has invalid deflate code\");\n }\n}\n\nfunction reverseBits(value, length)\n{\n let reversed = 0;\n for (let i = 0; i < length; i++)\n {\n reversed = (reversed << 1) | (value & 1);\n value >>>= 1;\n }\n return reversed;\n}\n\nfunction parseAsciiDocument(bytes, metadata, values)\n{\n const text = TEXT_DECODER.decode(bytes);\n const nodes = [];\n const stack = [ { children: nodes } ];\n let nodeCount = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n\n if (line.startsWith(\"}\"))\n {\n if (stack.length > 1)\n {\n stack.pop();\n }\n continue;\n }\n\n const node = parseAsciiLine(line, values);\n if (!node)\n {\n continue;\n }\n\n stack[stack.length - 1].children.push(node);\n nodeCount++;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n if (node.opensBlock)\n {\n if (stack.length >= values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n delete node.opensBlock;\n stack.push(node);\n }\n else\n {\n delete node.opensBlock;\n }\n }\n\n const document = {\n ...metadata,\n payloadType: OUTPUT_FBX_JSON,\n nodes,\n nodeCount,\n rootNodeCount: nodes.length,\n rootNodeNames: nodes.map(node => node.name)\n };\n document.root = buildFbxRoot(document.nodes);\n return document;\n}\n\nfunction readBinaryTargetNodes(bytes, metadata, values, targetNames)\n{\n const nodes = [];\n const headerSize = getBinaryNodeHeaderSize(metadata.version);\n let offset = BINARY_HEADER_SIZE;\n let nodeCount = 0;\n\n while (offset + headerSize <= bytes.byteLength)\n {\n if (isNullRecord(bytes, offset, headerSize))\n {\n break;\n }\n\n const header = readBinaryNodeHeader(bytes, offset, metadata.version);\n if (!header)\n {\n throw new Error(`fbx: invalid root node header at offset ${offset}`);\n }\n if (header.endOffset <= offset || header.endOffset > bytes.byteLength)\n {\n throw new Error(`fbx: invalid root node ${header.name}`);\n }\n\n if (targetNames.has(header.name))\n {\n const result = readBinaryNode(bytes, offset, metadata.version, values, 0);\n nodes.push(result.node);\n nodeCount += result.count;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n }\n\n offset = header.endOffset;\n }\n\n return nodes;\n}\n\nfunction readAsciiTargetNodes(bytes, values, targetNames)\n{\n const text = TEXT_DECODER.decode(bytes);\n const nodes = [];\n const stack = [ { children: nodes, collecting: true } ];\n let nodeCount = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n\n if (line.startsWith(\"}\"))\n {\n if (stack.length > 1)\n {\n stack.pop();\n }\n continue;\n }\n\n const node = parseAsciiLine(line, values);\n if (!node)\n {\n continue;\n }\n\n nodeCount++;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n\n const isRoot = stack.length === 1;\n const parent = stack[stack.length - 1];\n const collecting = isRoot ? targetNames.has(node.name) : parent.collecting;\n\n if (collecting)\n {\n parent.children.push(node);\n }\n\n if (node.opensBlock)\n {\n if (stack.length >= values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n delete node.opensBlock;\n stack.push(collecting ? { children: node.children, collecting: true } : { children: [], collecting: false });\n }\n else\n {\n delete node.opensBlock;\n }\n }\n\n return nodes;\n}\n\nfunction buildGr2FromFbxNodes(nodes, values)\n{\n const objectsNode = findFirstNode(nodes, \"Objects\");\n if (!objectsNode)\n {\n throw new Error(\"fbx: GR2 output requires an Objects node\");\n }\n\n const\n objectIndex = indexObjectNodes(objectsNode),\n connections = readConnections(findFirstNode(nodes, \"Connections\")),\n sceneTransform = buildSceneTransform(findFirstNode(nodes, \"GlobalSettings\")),\n modelWorldCache = new Map(),\n skeletonContext = buildSkeletonContext(objectIndex, connections, sceneTransform, modelWorldCache),\n meshes = [];\n\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n const owners = connectedParentObjects(geometry, objectIndex, connections, \"Model\");\n for (const owner of owners.length ? owners : [ null ])\n {\n meshes.push(buildGr2MeshFromGeometry(geometry, owner, objectIndex, connections, sceneTransform, modelWorldCache, skeletonContext, values));\n }\n }\n\n if (!meshes.length)\n {\n throw new Error(\"fbx: no supported Geometry mesh nodes found\");\n }\n\n return {\n grannyFileFormatRevision: 0,\n grannyFileSource: values.source || \"memory\",\n meshes,\n models: buildGr2Models(skeletonContext.skeletons, meshes),\n skeletons: skeletonContext.skeletons.map(skeleton => skeleton.cmfSkeleton),\n animations: [],\n cmfAnimations: readCmfAnimations(objectIndex, connections, meshes, skeletonContext, sceneTransform)\n };\n}\n\nfunction buildGr2MeshFromGeometry(geometry, owner, objectIndex, connections, sceneTransform, modelWorldCache, skeletonContext, values)\n{\n const\n controlPoints = requireChildArray(geometry.node, \"Vertices\"),\n polygonVertexIndex = requireChildArray(geometry.node, \"PolygonVertexIndex\");\n\n if (controlPoints.length % 3 !== 0)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has invalid Vertices length`);\n }\n\n const\n decoded = decodePolygonCorners(controlPoints, polygonVertexIndex, geometry),\n meshTransform = buildMeshGeometryToWorld(owner, objectIndex, connections, modelWorldCache),\n positions = transformPoints(decoded.positions, meshTransform, sceneTransform),\n normal = transformDirections(readLayerElementChannel(geometry.node, \"LayerElementNormal\", 0, [ \"Normals\" ], [ \"NormalsIndex\", \"NormalIndex\" ], 3, decoded, \"Normals\"), meshTransform, sceneTransform, true),\n explicitTangent = transformDirections(readLayerElementChannel(geometry.node, \"LayerElementTangent\", 0, [ \"Tangents\" ], [ \"TangentsIndex\", \"TangentIndex\" ], 3, decoded, \"Tangents\"), meshTransform, sceneTransform, true),\n explicitBinormal = transformDirections(readLayerElementChannel(geometry.node, \"LayerElementBinormal\", 0, [ \"Binormals\" ], [ \"BinormalsIndex\", \"BinormalIndex\" ], 3, decoded, \"Binormals\"), meshTransform, sceneTransform, true),\n texcoord0 = readUvLayerElementChannel(geometry.node, 0, decoded, values),\n texcoord1 = readUvLayerElementChannel(geometry.node, 1, decoded, values),\n color0 = readLayerElementChannel(geometry.node, \"LayerElementColor\", 0, [ \"Colors\" ], [ \"ColorIndex\", \"ColorsIndex\", \"ColorIndices\" ], 4, decoded, \"Colors\"),\n polygonTriangles = triangulatePolygonList(decoded.polygons, decoded.positions),\n triangleFaces = flattenPolygonTriangles(polygonTriangles),\n tangent = explicitTangent.length ? explicitTangent : generateBaseTangents(positions, normal, texcoord0, triangleFaces),\n binormal = explicitBinormal.length ? explicitBinormal : generateBaseBinormals(normal, tangent),\n materialNames = readPolygonMaterialNames(geometry, owner, objectIndex, connections, decoded.polygons.length),\n indices = buildIndexGroups(polygonTriangles, materialNames),\n skin = readSkinning(geometry, objectIndex, connections, decoded, positions, sceneTransform, modelWorldCache, skeletonContext),\n morphTargets = readMorphTargets(\n geometry,\n owner,\n objectIndex,\n connections,\n decoded,\n controlPoints,\n meshTransform,\n sceneTransform,\n positions,\n triangleFaces,\n { normal, tangent, binormal, texcoord0 }\n ),\n bounds = computeBounds(positions);\n\n return {\n name: meshNameFromFbx(geometry, owner),\n morphTargets,\n minBounds: bounds.minBounds,\n maxBounds: bounds.maxBounds,\n boneBindings: skin.boneBindings,\n vertex: createGr2Vertex(positions, { tangent, normal, texcoord0, texcoord1, binormal, color0, blendIndice: skin.blendIndice, blendWeight: skin.blendWeight }),\n indices,\n skeleton: skin.skeleton\n };\n}\n\nfunction readSkinning(geometry, objectIndex, connections, decoded, positions, sceneTransform, modelWorldCache, skeletonContext)\n{\n const skin = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\")\n .find(isSkinDeformer);\n\n if (!skin)\n {\n return emptySkinning();\n }\n\n const clusters = connectedChildObjects(skin, objectIndex, connections, \"Deformer\")\n .filter(isClusterDeformer);\n\n const clusterRecords = buildSkinClusterRecords(clusters, objectIndex, connections);\n if (!clusterRecords.length)\n {\n return emptySkinning();\n }\n\n const\n boneKeys = clusterRecords.map(record => record.boneKey),\n controlPointInfluences = buildControlPointInfluences(clusterRecords),\n outputInfluences = decoded.corners.map(corner => normalizeInfluences(controlPointInfluences.get(corner.controlPointIndex) || [])),\n blendIndice = [],\n blendWeight = [],\n boneBindings = buildBoneBindingsFromInfluences(clusterRecords, outputInfluences, positions, objectIndex, connections, sceneTransform, modelWorldCache),\n skeleton = findSkinSkeletonIndex(boneKeys, skeletonContext);\n\n for (const influences of outputInfluences)\n {\n for (let i = 0; i < 4; i++)\n {\n blendIndice.push(influences[i]?.boneIndex ?? 0);\n }\n for (let i = 0; i < 4; i++)\n {\n blendWeight.push(influences[i]?.weight ?? 0);\n }\n }\n\n return { boneBindings, blendIndice, blendWeight, boneKeys, skeleton };\n}\n\nfunction emptySkinning()\n{\n return { boneBindings: [], blendIndice: [], blendWeight: [], boneKeys: [], skeleton: null };\n}\n\n/**\n * Generate base mesh tangents when normal and UV channels are available.\n *\n * @param {number[]} positions Expanded position channel.\n * @param {number[]} normal Expanded normal channel.\n * @param {number[]} texcoord0 Expanded primary UV channel.\n * @param {number[]} triangleFaces Triangulated index buffer.\n * @returns {number[]} Expanded tangent channel.\n */\nfunction generateBaseTangents(positions, normal, texcoord0, triangleFaces)\n{\n if (!hasArrayValues(normal) || !hasArrayValues(texcoord0))\n {\n return [];\n }\n return cleanNumericArray(generateTangents(positions, normal, texcoord0, triangleFaces));\n}\n\n/**\n * Generate base mesh binormals when normals and tangents are available.\n *\n * @param {number[]} normal Expanded normal channel.\n * @param {number[]} tangent Expanded tangent channel.\n * @returns {number[]} Expanded binormal channel.\n */\nfunction generateBaseBinormals(normal, tangent)\n{\n if (!hasArrayValues(normal) || !hasArrayValues(tangent))\n {\n return [];\n }\n return cleanNumericArray(generateBiNormals(normal, tangent));\n}\n\nfunction readMorphTargets(geometry, owner, objectIndex, connections, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex)\n{\n const blendShapes = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\")\n .filter(deformer => deformer.className === \"BlendShape\" || deformer.fullName.startsWith(\"Deformer::BlendShape\") || deformer.name.includes(\"BlendShape\"));\n\n const targets = [];\n for (const blendShape of blendShapes)\n {\n const channels = connectedChildObjects(blendShape, objectIndex, connections, \"Deformer\")\n .filter(deformer => deformer.className === \"BlendShapeChannel\" || deformer.fullName.startsWith(\"SubDeformer::\") || deformer.name.includes(\"BlendShapeChannel\"));\n\n for (const channel of channels)\n {\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n continue;\n }\n\n for (const shape of shapes)\n {\n const target = buildMorphTarget(shape, channel, geometry, owner, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex);\n if (target)\n {\n targets.push(target);\n }\n }\n }\n }\n return targets;\n}\n\nfunction buildMorphTarget(shape, channel, geometry, owner, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex)\n{\n const\n indexes = readChildArray(shape.node, \"Indexes\") || [],\n vertices = readChildArray(shape.node, \"Vertices\") || [];\n\n if (!indexes.length || !vertices.length)\n {\n return null;\n }\n if (vertices.length % 3 !== 0)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has invalid Vertices length`);\n }\n if (vertices.length / 3 < indexes.length)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has fewer Vertices than Indexes`);\n }\n\n const controlTargetPositions = controlPoints.slice();\n for (let i = 0; i < indexes.length; i++)\n {\n const\n controlPointIndex = integerNumber(indexes[i], \"Indexes\"),\n targetOffset = i * 3,\n controlOffset = controlPointIndex * 3;\n\n if (controlOffset < 0 || controlOffset + 2 >= controlTargetPositions.length)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has Indexes value out of range`);\n }\n\n controlTargetPositions[controlOffset] = finiteNumber(controlPoints[controlOffset], \"Vertices\") + finiteNumber(vertices[targetOffset], \"Vertices\");\n controlTargetPositions[controlOffset + 1] = finiteNumber(controlPoints[controlOffset + 1], \"Vertices\") + finiteNumber(vertices[targetOffset + 1], \"Vertices\");\n controlTargetPositions[controlOffset + 2] = finiteNumber(controlPoints[controlOffset + 2], \"Vertices\") + finiteNumber(vertices[targetOffset + 2], \"Vertices\");\n }\n\n const expanded = [];\n for (const corner of decoded.corners)\n {\n const source = corner.controlPointIndex * 3;\n expanded.push(\n controlTargetPositions[source],\n controlTargetPositions[source + 1],\n controlTargetPositions[source + 2]\n );\n }\n\n const\n positions = transformPoints(expanded, meshTransform, sceneTransform),\n name = shape.name || channel.name || \"morph_target\",\n vertexChannels = buildMorphTargetVertexChannels(name, geometry, owner, decoded, meshTransform, sceneTransform, positions, triangleFaces, baseVertex);\n\n return {\n name,\n dataIsDeltas: false,\n maxDisplacement: computeMaxDisplacement(basePositions, positions),\n vertex: createGr2Vertex(positions, vertexChannels)\n };\n}\n\nfunction buildMorphTargetVertexChannels(name, geometry, owner, decoded, meshTransform, sceneTransform, positions, triangleFaces, baseVertex)\n{\n let normal = readMorphTargetCustomNormals(name, geometry, owner, decoded, meshTransform, sceneTransform);\n if (!normal.length && hasArrayValues(baseVertex.normal))\n {\n normal = cleanNumericArray(generateNormals(positions, triangleFaces));\n }\n\n const tangent = normal.length && hasArrayValues(baseVertex.tangent) && hasArrayValues(baseVertex.texcoord0)\n ? cleanNumericArray(generateTangents(positions, normal, baseVertex.texcoord0, triangleFaces))\n : [];\n const binormal = normal.length && tangent.length && hasArrayValues(baseVertex.binormal)\n ? cleanNumericArray(generateBiNormals(normal, tangent))\n : [];\n\n return { normal, tangent, binormal };\n}\n\nfunction readMorphTargetCustomNormals(name, geometry, owner, decoded, meshTransform, sceneTransform)\n{\n const encoded = readMorphTargetCustomNormalString(name, owner, geometry);\n if (!encoded)\n {\n return [];\n }\n\n return transformDirections(\n decodeBase64Float32Vector3Array(encoded, decoded.corners.length, `morph target custom normals ${JSON.stringify(name)}`),\n meshTransform,\n sceneTransform,\n true\n );\n}\n\nfunction readMorphTargetCustomNormalString(name, owner, geometry)\n{\n const propertyName = `bsNormals_${name}`;\n for (const entry of [ owner, geometry ])\n {\n const value = readProperties70(entry?.node).properties[propertyName]?.value;\n if (typeof value === \"string\")\n {\n return value;\n }\n }\n return \"\";\n}\n\nfunction decodeBase64Float32Vector3Array(encoded, vertexCount, feature)\n{\n const\n bytes = decodeBase64Bytes(encoded, feature),\n expectedByteLength = vertexCount * 3 * 4;\n\n if (bytes.byteLength !== expectedByteLength)\n {\n throw new Error(`fbx: ${feature} byte length ${bytes.byteLength} does not match expected ${expectedByteLength}`);\n }\n\n const\n view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\n values = [];\n\n for (let offset = 0; offset < bytes.byteLength; offset += 4)\n {\n values.push(finiteNumber(view.getFloat32(offset, true), feature));\n }\n return values;\n}\n\nfunction decodeBase64Bytes(encoded, feature)\n{\n const bytes = [];\n let buffer = 0, bits = 0;\n\n for (const char of String(encoded))\n {\n if (/\\s/u.test(char))\n {\n continue;\n }\n if (char === \"=\")\n {\n break;\n }\n\n const value = BASE64_ALPHABET.indexOf(char);\n if (value === -1)\n {\n throw new Error(`fbx: ${feature} contains invalid base64 data`);\n }\n\n buffer = (buffer << 6) | value;\n bits += 6;\n if (bits >= 8)\n {\n bits -= 8;\n bytes.push((buffer >> bits) & 0xff);\n }\n }\n\n return Uint8Array.from(bytes);\n}\n\nfunction computeMaxDisplacement(basePositions, targetPositions)\n{\n let maxDisplacement = 0;\n for (let i = 0; i < Math.min(basePositions.length, targetPositions.length); i += 3)\n {\n maxDisplacement = Math.max(maxDisplacement, Math.hypot(\n targetPositions[i] - basePositions[i],\n targetPositions[i + 1] - basePositions[i + 1],\n targetPositions[i + 2] - basePositions[i + 2]\n ));\n }\n return cleanFloat(maxDisplacement);\n}\n\nfunction readCmfAnimations(objectIndex, connections, meshes, skeletonContext, sceneTransform)\n{\n const\n morphTargetNames = buildMorphTargetNameSet(meshes),\n boneTargets = buildCmfBoneTargetMap(skeletonContext);\n\n const animations = [];\n for (const stack of objectIndex.list.filter(entry => entry.nodeName === \"AnimationStack\"))\n {\n const animation = readCmfAnimation(stack, objectIndex, connections, morphTargetNames, boneTargets, sceneTransform);\n if (animation)\n {\n animations.push(animation);\n }\n }\n return animations;\n}\n\nfunction buildMorphTargetNameSet(meshes)\n{\n const names = new Set();\n for (const mesh of meshes)\n {\n for (const target of mesh.morphTargets ?? [])\n {\n if (target.name)\n {\n names.add(target.name);\n }\n }\n }\n return names;\n}\n\nfunction buildCmfBoneTargetMap(skeletonContext)\n{\n const targets = new Map();\n for (const skeleton of skeletonContext.skeletons)\n {\n for (let i = 0; i < skeleton.boneKeys.length; i++)\n {\n targets.set(skeleton.boneKeys[i], {\n name: skeleton.cmfSkeleton.bones[i] || `bone_${i}`,\n isRoot: skeleton.cmfSkeleton.parents[i] === 0xffffffff\n });\n }\n }\n return targets;\n}\n\nfunction readCmfAnimation(stack, objectIndex, connections, morphTargetNames, boneTargets, sceneTransform)\n{\n const\n layers = connectedChildObjects(stack, objectIndex, connections, \"AnimationLayer\"),\n curveNodeParents = layers.length ? layers : [ stack ],\n curveNodes = uniqueEntries(curveNodeParents.flatMap(parent => connectedChildObjects(parent, objectIndex, connections, \"AnimationCurveNode\"))),\n records = [];\n\n for (const curveNode of curveNodes)\n {\n records.push(...readMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames));\n records.push(...readRootPropertyMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames, boneTargets));\n\n const boneRecord = readBoneAnimationRecord(curveNode, objectIndex, connections, boneTargets, sceneTransform);\n if (boneRecord)\n {\n records.push(boneRecord);\n }\n }\n\n if (!records.length)\n {\n return null;\n }\n\n const stackTimeSpan = readAnimationStackTimeSpan(stack, records);\n\n const\n channels = [],\n curves = [];\n let duration = 0;\n\n for (const record of records)\n {\n const\n knots = record.curve.ticks.map(tick => cleanFloat((tick - stackTimeSpan.startTick) / FBX_TICKS_PER_SECOND)),\n values = record.curve.values.map(cleanFloat),\n curveIndex = curves.length;\n\n if (values.length !== knots.length * record.valueDimension)\n {\n throw new Error(`fbx: animation curve for ${JSON.stringify(record.target)} has mismatched value dimension`);\n }\n\n for (const knot of knots)\n {\n duration = Math.max(duration, knot);\n }\n curves.push({\n valueDimension: record.valueDimension,\n interpolation: \"Linear\",\n knotType: \"Float32\",\n valueType: \"Float32\",\n knotCount: knots.length,\n knots: packFloat32Values(knots),\n values: packFloat32Values(values)\n });\n channels.push({\n target: record.target,\n targetType: record.targetType,\n curveIndex\n });\n }\n\n return {\n name: stack.name || \"fbx_animation\",\n channels,\n curves,\n duration: cleanFloat(stackTimeSpan.duration ?? duration)\n };\n}\n\nfunction readAnimationStackTimeSpan(stack, records)\n{\n const\n properties = readProperties70(stack.node).properties,\n start = propertyNumber(properties, \"LocalStart\", propertyNumber(properties, \"ReferenceStart\", null)),\n stop = propertyNumber(properties, \"LocalStop\", propertyNumber(properties, \"ReferenceStop\", null));\n\n if (start !== null && stop !== null && stop >= start)\n {\n return {\n startTick: start,\n duration: (stop - start) / FBX_TICKS_PER_SECOND\n };\n }\n\n let startTick = Infinity;\n for (const record of records)\n {\n for (const tick of record.curve.ticks)\n {\n startTick = Math.min(startTick, tick);\n }\n }\n return {\n startTick,\n duration: null\n };\n}\n\nfunction readMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames)\n{\n const\n targets = readMorphAnimationTargets(curveNode, objectIndex, connections, morphTargetNames),\n curve = readMorphAnimationCurve(curveNode, objectIndex, connections);\n\n if (!targets.length || !curve)\n {\n return [];\n }\n\n return targets.map(target => ({\n target,\n targetType: \"MorphTarget\",\n valueDimension: 1,\n curve\n }));\n}\n\nfunction readRootPropertyMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames, boneTargets)\n{\n const targetConnection = connections.list.find(connection =>\n connection.relation === \"OP\" &&\n connection.childKey === curveNode.key &&\n !isBoneAnimationProperty(connection.property) &&\n boneTargets.get(connection.parentKey)?.isRoot &&\n isBoneModel(objectIndex.byId[connection.parentKey]) &&\n isUserDefinedNumericProperty(objectIndex.byId[connection.parentKey], connection.property)\n );\n\n if (!targetConnection)\n {\n return [];\n }\n\n const target = String(targetConnection.property || \"\");\n if (!target || (morphTargetNames.size && !morphTargetNames.has(target)))\n {\n return [];\n }\n\n const curve = readAnyScalarAnimationCurve(curveNode, objectIndex, connections, 1);\n return curve\n ? [ {\n target,\n targetType: \"MorphTarget\",\n valueDimension: 1,\n curve\n } ]\n : [];\n}\n\nfunction readMorphAnimationTargets(curveNode, objectIndex, connections, morphTargetNames)\n{\n const targets = [];\n for (const connection of connections.list)\n {\n if (connection.relation !== \"OP\" || connection.childKey !== curveNode.key || !isMorphAnimationProperty(connection.property))\n {\n continue;\n }\n\n const target = objectIndex.byId[connection.parentKey];\n if (!isBlendShapeChannel(target))\n {\n continue;\n }\n\n for (const name of readBlendShapeChannelMorphNames(target, objectIndex, connections))\n {\n if (!morphTargetNames.size || morphTargetNames.has(name))\n {\n targets.push(name);\n }\n }\n }\n return Array.from(new Set(targets));\n}\n\nfunction readBlendShapeChannelMorphNames(channel, objectIndex, connections)\n{\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n return [];\n }\n\n const names = shapes\n .map(shape => shape.name || channel.name)\n .filter(Boolean);\n\n return names.length ? names : [ channel.name || \"morph_target\" ];\n}\n\nfunction readBlendShapeChannelShapes(channel, objectIndex, connections)\n{\n return connectedChildObjects(channel, objectIndex, connections, \"Geometry\")\n .filter(shape => shape.className === \"Shape\" || shape.fullName.startsWith(\"Geometry::Shape\") || shape.name);\n}\n\nfunction readBlendShapeChannelFullWeights(channel)\n{\n return readChildArray(channel.node, \"FullWeights\") || [];\n}\n\nfunction isUnsupportedBlendShapeInBetween(channel, shapes)\n{\n // Multiple shapes/weights under one FBX channel are in-between targets, not independent sliders.\n return shapes.length > 1 || readBlendShapeChannelFullWeights(channel).length > 1;\n}\n\nfunction readMorphAnimationCurve(curveNode, objectIndex, connections)\n{\n return readAnyScalarAnimationCurve(curveNode, objectIndex, connections, 0.01, isMorphAnimationProperty);\n}\n\nfunction readAnyScalarAnimationCurve(curveNode, objectIndex, connections, scale, predicate = null)\n{\n const curves = connections.list\n .filter(connection => connection.parentKey === curveNode.key)\n .map(connection => ({ connection, curve: objectIndex.byId[connection.childKey] }))\n .filter(item => item.curve?.nodeName === \"AnimationCurve\");\n\n const match = predicate\n ? curves.find(item => predicate(item.connection.property)) || curves[0]\n : curves.find(item => animationCurveAxis(item.connection.property) === 0) || curves[0];\n return match ? readScalarAnimationCurve(match.curve, scale) : null;\n}\n\nfunction readScalarAnimationCurve(curve, scale)\n{\n const\n ticks = readChildArray(curve.node, \"KeyTime\") || [],\n keyValueFloat = readChildArray(curve.node, \"KeyValueFloat\"),\n keyValue = readChildArray(curve.node, \"KeyValue\"),\n valueFeature = hasArrayValues(keyValueFloat) ? \"KeyValueFloat\" : \"KeyValue\",\n values = hasArrayValues(keyValueFloat) ? keyValueFloat : hasArrayValues(keyValue) ? keyValue : [];\n\n if (!ticks.length || !values.length)\n {\n return null;\n }\n if (ticks.length !== values.length)\n {\n throw new Error(`fbx: animation curve ${JSON.stringify(curve.name || curve.key)} has mismatched KeyTime and ${valueFeature} lengths`);\n }\n\n const pairs = ticks.map((tick, index) => ({\n tick: finiteNumber(tick, \"KeyTime\"),\n value: finiteNumber(values[index], valueFeature) * scale\n })).sort((a, b) => a.tick - b.tick);\n\n return {\n ticks: pairs.map(pair => pair.tick),\n values: pairs.map(pair => pair.value)\n };\n}\n\nfunction readBoneAnimationRecord(curveNode, objectIndex, connections, boneTargets, sceneTransform)\n{\n const targetConnection = connections.list.find(connection =>\n connection.relation === \"OP\" &&\n connection.childKey === curveNode.key &&\n isBoneAnimationProperty(connection.property) &&\n boneTargets.has(connection.parentKey) &&\n isBoneModel(objectIndex.byId[connection.parentKey])\n );\n\n if (!targetConnection)\n {\n return null;\n }\n\n const\n bone = objectIndex.byId[targetConnection.parentKey],\n target = boneTargets.get(bone.key),\n properties = readProperties70(bone.node).properties,\n property = normalizeBoneAnimationProperty(targetConnection.property);\n\n if (!property)\n {\n return null;\n }\n\n const vectorCurve = readVectorAnimationCurve(\n curveNode,\n objectIndex,\n connections,\n animationCurveNodeFallback(curveNode, boneAnimationFallback(properties, property))\n );\n if (!vectorCurve)\n {\n return null;\n }\n\n if (property === \"position\")\n {\n return {\n target: target.name,\n targetType: \"BonePosition\",\n valueDimension: 3,\n curve: {\n ticks: vectorCurve.ticks,\n values: packBonePositionValues(vectorCurve.values, sceneTransform, target.isRoot)\n }\n };\n }\n\n if (property === \"rotation\")\n {\n return {\n target: target.name,\n targetType: \"BoneRotation\",\n valueDimension: 4,\n curve: {\n ticks: vectorCurve.ticks,\n values: packBoneRotationValues(bone, vectorCurve.values, sceneTransform, target.isRoot)\n }\n };\n }\n\n return {\n target: target.name,\n targetType: \"BoneScale\",\n valueDimension: 3,\n curve: {\n ticks: vectorCurve.ticks,\n values: vectorCurve.values.map(cleanFloat)\n }\n };\n}\n\nfunction isBoneAnimationProperty(property)\n{\n return !!normalizeBoneAnimationProperty(property);\n}\n\nfunction normalizeBoneAnimationProperty(property)\n{\n const text = String(property || \"\").replace(/\\s+/gu, \"\").toLowerCase();\n if (text.includes(\"translation\") || text === \"t\")\n {\n return \"position\";\n }\n if (text.includes(\"rotation\") || text === \"r\")\n {\n return \"rotation\";\n }\n if (text.includes(\"scaling\") || text.includes(\"scale\") || text === \"s\")\n {\n return \"scale\";\n }\n return \"\";\n}\n\nfunction boneAnimationFallback(properties, property)\n{\n if (property === \"position\")\n {\n return propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ]);\n }\n if (property === \"rotation\")\n {\n return propertyVector3(properties, \"Lcl Rotation\", [ 0, 0, 0 ]);\n }\n return propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ]);\n}\n\nfunction animationCurveNodeFallback(curveNode, fallback)\n{\n const\n properties = readProperties70(curveNode.node).properties,\n axes = [ \"d|X\", \"d|Y\", \"d|Z\" ];\n\n return axes.map((axis, index) => propertyNumber(properties, axis, fallback[index]));\n}\n\nfunction readVectorAnimationCurve(curveNode, objectIndex, connections, fallback)\n{\n const components = [ null, null, null ];\n for (const connection of connections.list.filter(item => item.parentKey === curveNode.key))\n {\n const\n curve = objectIndex.byId[connection.childKey],\n axis = animationCurveAxis(connection.property) ?? animationCurveAxis(curve?.name);\n\n if (curve?.nodeName !== \"AnimationCurve\" || axis === null)\n {\n continue;\n }\n components[axis] = readScalarAnimationCurve(curve, 1);\n }\n\n if (components.every(component => !component))\n {\n return null;\n }\n\n const ticks = uniqueSortedTicks(components);\n const values = [];\n for (const tick of ticks)\n {\n for (let axis = 0; axis < 3; axis++)\n {\n values.push(sampleScalarAnimationCurve(components[axis], tick, fallback[axis]));\n }\n }\n return { ticks, values };\n}\n\nfunction animationCurveAxis(property)\n{\n const text = String(property || \"\").trim().toLowerCase();\n if (/(^|[|._])x$/u.test(text))\n {\n return 0;\n }\n if (/(^|[|._])y$/u.test(text))\n {\n return 1;\n }\n if (/(^|[|._])z$/u.test(text))\n {\n return 2;\n }\n return null;\n}\n\nfunction uniqueSortedTicks(components)\n{\n const ticks = new Set();\n for (const component of components)\n {\n for (const tick of component?.ticks ?? [])\n {\n ticks.add(tick);\n }\n }\n return Array.from(ticks).sort((a, b) => a - b);\n}\n\nfunction sampleScalarAnimationCurve(curve, tick, fallback)\n{\n if (!curve)\n {\n return fallback;\n }\n\n const { ticks, values } = curve;\n if (tick <= ticks[0])\n {\n return values[0];\n }\n if (tick >= ticks[ticks.length - 1])\n {\n return values[values.length - 1];\n }\n\n for (let i = 1; i < ticks.length; i++)\n {\n if (tick > ticks[i])\n {\n continue;\n }\n if (tick === ticks[i])\n {\n return values[i];\n }\n\n const amount = (tick - ticks[i - 1]) / (ticks[i] - ticks[i - 1]);\n return values[i - 1] + (values[i] - values[i - 1]) * amount;\n }\n return fallback;\n}\n\nfunction packBonePositionValues(values, sceneTransform, isRoot)\n{\n const output = [];\n for (let i = 0; i < values.length; i += 3)\n {\n const position = isRoot\n ? transformScenePoint([ values[i], values[i + 1], values[i + 2] ], sceneTransform)\n : [ values[i] * sceneTransform.scale, values[i + 1] * sceneTransform.scale, values[i + 2] * sceneTransform.scale ];\n output.push(...cleanVector3(position));\n }\n return output;\n}\n\nfunction packBoneRotationValues(bone, values, sceneTransform, isRoot)\n{\n const\n properties = readProperties70(bone.node).properties,\n output = [];\n\n for (let i = 0; i < values.length; i += 3)\n {\n const\n matrix = composeModelTransform(properties, {\n translation: [ 0, 0, 0 ],\n rotation: [ values[i], values[i + 1], values[i + 2] ],\n scale: [ 1, 1, 1 ]\n }),\n transformed = isRoot ? transformMatrixScene(matrix, sceneTransform) : matrix,\n rotation = decomposeMatrix4(transformed).rotation;\n\n output.push(...rotation);\n }\n return output;\n}\n\nfunction isBlendShapeChannel(entry)\n{\n return !!entry && entry.nodeName === \"Deformer\" && (\n entry.className === \"BlendShapeChannel\" ||\n entry.fullName.startsWith(\"SubDeformer::\") ||\n entry.name.includes(\"BlendShapeChannel\")\n );\n}\n\nfunction isMorphAnimationProperty(property)\n{\n return String(property || \"\").toLowerCase().includes(\"deformpercent\");\n}\n\nfunction isUserDefinedNumericProperty(entry, property)\n{\n if (!entry || !property)\n {\n return false;\n }\n\n const definition = readProperties70(entry.node).properties[property];\n if (!definition || !String(definition.flags || \"\").includes(\"U\"))\n {\n return false;\n }\n return typeof definition.value === \"number\";\n}\n\nfunction uniqueEntries(entries)\n{\n const\n seen = new Set(),\n unique = [];\n\n for (const entry of entries)\n {\n if (!entry || seen.has(entry.key))\n {\n continue;\n }\n seen.add(entry.key);\n unique.push(entry);\n }\n return unique;\n}\n\nfunction packFloat32Values(values)\n{\n const\n bytes = new Uint8Array(values.length * 4),\n view = new DataView(bytes.buffer);\n\n values.forEach((value, index) => view.setFloat32(index * 4, value, true));\n return Array.from(bytes);\n}\n\nfunction buildSkinClusterRecords(clusters, objectIndex, connections)\n{\n const records = [];\n for (const cluster of clusters)\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n indexes = readChildArray(cluster.node, \"Indexes\") || [],\n weights = readChildArray(cluster.node, \"Weights\") || [];\n\n if (!bone || !indexes.length || !hasPositiveClusterWeight(indexes, weights))\n {\n continue;\n }\n\n records.push({\n cluster,\n bone,\n boneKey: bone.key,\n boneName: bone.name || cluster.name || `bone_${records.length}`,\n indexes,\n weights\n });\n }\n return records;\n}\n\nfunction hasPositiveClusterWeight(indexes, weights)\n{\n for (let i = 0; i < indexes.length; i++)\n {\n if (finiteNumber(weights[i] ?? 0, \"Weights\") > 0)\n {\n return true;\n }\n }\n return false;\n}\n\nfunction buildControlPointInfluences(records)\n{\n const controlPointInfluences = new Map();\n\n records.forEach((record, boneIndex) =>\n {\n const\n indexes = record.indexes,\n weights = record.weights;\n\n for (let i = 0; i < indexes.length; i++)\n {\n const\n controlPointIndex = integerNumber(indexes[i], \"Indexes\"),\n weight = Math.max(0, finiteNumber(weights[i] ?? 0, \"Weights\")),\n list = controlPointInfluences.get(controlPointIndex) || [];\n\n if (weight <= 0)\n {\n continue;\n }\n\n list.push({ boneIndex, boneKey: record.boneKey, boneName: record.boneName, weight });\n controlPointInfluences.set(controlPointIndex, list);\n }\n });\n\n return controlPointInfluences;\n}\n\nfunction normalizeInfluences(influences)\n{\n const best = influences\n .filter(influence => influence.weight > 0)\n .sort((a, b) => b.weight - a.weight)\n .slice(0, 4);\n\n const total = best.reduce((sum, influence) => sum + influence.weight, 0);\n if (total <= 0)\n {\n return [];\n }\n\n return best.map(influence => ({\n ...influence,\n weight: cleanFloat(influence.weight / total)\n }));\n}\n\nfunction buildBoneBindingsFromInfluences(records, outputInfluences, positions, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n return records.map((record, boneIndex) =>\n {\n const\n name = record.boneName || `bone_${boneIndex}`,\n bindingMatrix = buildBoneBindingMatrix(record, objectIndex, connections, sceneTransform, modelWorldCache),\n bindingPositions = [];\n\n for (let vertexIndex = 0; vertexIndex < outputInfluences.length; vertexIndex++)\n {\n if (!outputInfluences[vertexIndex].some(influence => influence.boneIndex === boneIndex && influence.weight > 0))\n {\n continue;\n }\n\n const offset = vertexIndex * 3;\n bindingPositions.push(...transformPointMatrix4([ positions[offset], positions[offset + 1], positions[offset + 2] ], bindingMatrix));\n }\n\n const bounds = computeBounds(bindingPositions);\n return {\n name,\n minBounds: bounds.minBounds,\n maxBounds: bounds.maxBounds\n };\n });\n}\n\nfunction buildBoneBindingMatrix(record, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n return invertMatrix4(transformMatrixScene(\n buildMeshGeometryToWorld(record.bone, objectIndex, connections, modelWorldCache),\n sceneTransform\n ));\n}\n\nfunction clusterBone(cluster, objectIndex, connections)\n{\n return connectedChildObjects(cluster, objectIndex, connections, \"Model\")[0] || null;\n}\n\nfunction findSkinSkeletonIndex(boneKeys, skeletonContext)\n{\n if (!skeletonContext)\n {\n return null;\n }\n\n let skeletonIndex = null;\n for (const key of boneKeys)\n {\n if (!key)\n {\n return null;\n }\n\n const index = skeletonContext.boneToSkeletonIndex.get(key);\n if (index === undefined)\n {\n return null;\n }\n if (skeletonIndex === null)\n {\n skeletonIndex = index;\n }\n else if (skeletonIndex !== index)\n {\n return null;\n }\n }\n\n return skeletonIndex;\n}\n\nfunction buildSkeletonContext(objectIndex, connections, sceneTransform, modelWorldCache)\n{\n const\n roots = objectIndex.list\n .filter(isBoneModel)\n .filter(bone => !connectedParentObjects(bone, objectIndex, connections, \"Model\").some(isBoneModel)),\n bindPoseMatrices = readBindPoseMatrices(objectIndex, sceneTransform),\n skeletons = [],\n boneToSkeletonIndex = new Map(),\n visited = new Set();\n\n for (const root of roots)\n {\n if (visited.has(root.key))\n {\n continue;\n }\n\n const skeleton = buildSkeleton(root, objectIndex, connections, sceneTransform, modelWorldCache, bindPoseMatrices, visited);\n if (!skeleton.cmfSkeleton.bones.length)\n {\n continue;\n }\n\n const skeletonIndex = skeletons.length;\n skeletons.push(skeleton);\n for (const key of skeleton.boneKeys)\n {\n boneToSkeletonIndex.set(key, skeletonIndex);\n }\n }\n\n return { skeletons, boneToSkeletonIndex };\n}\n\nfunction buildSkeleton(root, objectIndex, connections, sceneTransform, modelWorldCache, bindPoseMatrices, visited)\n{\n const records = [];\n\n const importBone = (bone, parentIndex) =>\n {\n if (!bone || visited.has(bone.key))\n {\n return;\n }\n\n visited.add(bone.key);\n const\n localMatrix = buildBoneLocalMatrix(bone, parentIndex, objectIndex, connections, sceneTransform, modelWorldCache),\n transform = decomposeMatrix4(localMatrix),\n recordIndex = records.length;\n\n records.push({ bone, parentIndex, localMatrix, transform });\n\n for (const child of connectedChildObjects(bone, objectIndex, connections, \"Model\").filter(isBoneModel))\n {\n importBone(child, recordIndex);\n }\n };\n\n importBone(root, -1);\n\n const\n name = root.name || \"fbx_skeleton\",\n invBindTransforms = buildInvBindTransforms(records, bindPoseMatrices);\n\n return {\n name,\n boneKeys: records.map(record => record.bone.key),\n gr2Skeleton: {\n name,\n bones: records.map(record => buildGr2Bone(record))\n },\n cmfSkeleton: {\n name,\n bones: records.map(record => record.bone.name || \"bone\"),\n parents: records.map(record => record.parentIndex === -1 ? 0xffffffff : record.parentIndex),\n restTransforms: records.map(record => ({\n position: record.transform.position,\n rotation: record.transform.rotation,\n scale: record.transform.scale\n })),\n invBindTransforms,\n boneMasks: buildCmfBoneMasks(records)\n }\n };\n}\n\n/**\n * Build CMF bone masks from user-defined numeric bone properties.\n *\n * @param {object[]} records Imported skeleton bone records.\n * @returns {object[]} CMF bone masks.\n */\nfunction buildCmfBoneMasks(records)\n{\n const\n masks = [],\n byName = new Map();\n\n records.forEach((record, index) =>\n {\n const properties = readProperties70(record.bone.node).properties;\n for (const [ name, definition ] of Object.entries(properties))\n {\n if (!isUserDefinedNumericPropertyDefinition(definition))\n {\n continue;\n }\n\n let mask = byName.get(name);\n if (!mask)\n {\n mask = { name, weights: [] };\n byName.set(name, mask);\n masks.push(mask);\n }\n mask.weights.push({ index, weight: cleanFloat(clamp01(definition.value)) });\n }\n });\n\n return masks;\n}\n\n/**\n * Check whether a Properties70 definition should become a CMF bone-mask weight.\n *\n * @param {object} definition Parsed Properties70 definition.\n * @returns {boolean} True when the property is user-defined and numeric.\n */\nfunction isUserDefinedNumericPropertyDefinition(definition)\n{\n return !!definition && String(definition.flags || \"\").includes(\"U\") && typeof definition.value === \"number\";\n}\n\n/**\n * Clamp a numeric value to the unit interval.\n *\n * @param {number} value Input value.\n * @returns {number} Clamped value.\n */\nfunction clamp01(value)\n{\n return Math.min(1, Math.max(0, finiteNumber(value, \"bone mask weight\")));\n}\n\nfunction buildGr2Models(skeletons, meshes)\n{\n return skeletons.map((skeleton, skeletonIndex) => ({\n name: skeleton.name,\n skeleton: skeleton.gr2Skeleton,\n meshBindings: meshes\n .map((mesh, meshIndex) => mesh.skeleton === skeletonIndex ? meshIndex : -1)\n .filter(meshIndex => meshIndex !== -1)\n }));\n}\n\nfunction buildGr2Bone(record)\n{\n const transform = record.transform;\n return {\n name: record.bone.name || \"bone\",\n parentIndex: record.parentIndex,\n flag: 7,\n position: transform.position,\n orientation: transform.rotation,\n scaleShear: [\n transform.scale[0], 0, 0,\n 0, transform.scale[1], 0,\n 0, 0, transform.scale[2]\n ]\n };\n}\n\nfunction buildBoneLocalMatrix(bone, parentIndex, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n if (parentIndex === -1)\n {\n return transformMatrixScene(\n buildModelTransformState(bone, objectIndex, connections, modelWorldCache).nodeToWorld,\n sceneTransform\n );\n }\n\n return scaleMatrixTranslation(buildModelLocalTransform(bone), sceneTransform.scale);\n}\n\nfunction buildInvBindTransforms(records, bindPoseMatrices)\n{\n const poseMatrices = records.map(record => bindPoseMatrices.get(record.bone.key));\n if (poseMatrices.every(Boolean))\n {\n return poseMatrices.map(matrix => cleanMatrix4(invertMatrix4(matrix)));\n }\n\n const invBindTransforms = [];\n for (const record of records)\n {\n const\n parentInvTransform = record.parentIndex === -1 ? IDENTITY_MATRIX4 : invBindTransforms[record.parentIndex],\n invLocalTransform = invertMatrix4(record.localMatrix);\n\n invBindTransforms.push(cleanMatrix4(multiplyMatrix4(parentInvTransform, invLocalTransform)));\n }\n return invBindTransforms;\n}\n\nfunction readBindPoseMatrices(objectIndex, sceneTransform)\n{\n const matrices = new Map();\n for (const pose of objectIndex.list.filter(entry => entry.nodeName === \"Pose\"))\n {\n const type = String(readFirstChildProperty(pose.node, \"Type\") || pose.className || pose.name || \"\");\n if (!/bindpose/iu.test(type))\n {\n continue;\n }\n\n for (const poseNode of pose.node.children.filter(child => child.name === \"PoseNode\"))\n {\n const\n nodeId = readFirstChildProperty(poseNode, \"Node\"),\n matrix = readChildArray(poseNode, \"Matrix\");\n\n if (nodeId === undefined || !Array.isArray(matrix) || matrix.length !== 16)\n {\n continue;\n }\n\n matrices.set(toObjectKey(nodeId), transformMatrixScene(matrix, sceneTransform));\n }\n }\n return matrices;\n}\n\nfunction isBoneModel(entry)\n{\n return entry?.nodeName === \"Model\" && (entry.className === \"LimbNode\" || /LimbNode/iu.test(entry.fullName));\n}\n\nfunction buildSceneTransform(globalSettingsNode)\n{\n const properties = readProperties70(globalSettingsNode).properties;\n const unitScaleFactor = propertyNumber(properties, \"UnitScaleFactor\", null);\n return {\n scale: unitScaleFactor === null ? 1 : unitScaleFactor * 0.01,\n right: axisVector(\n propertyNumber(properties, \"CoordAxis\", 0),\n propertyNumber(properties, \"CoordAxisSign\", 1)\n ),\n up: axisVector(\n propertyNumber(properties, \"UpAxis\", 1),\n propertyNumber(properties, \"UpAxisSign\", 1)\n ),\n forward: axisVector(\n propertyNumber(properties, \"FrontAxis\", 2),\n propertyNumber(properties, \"FrontAxisSign\", 1)\n )\n };\n}\n\nfunction buildMeshGeometryToWorld(owner, objectIndex, connections, modelWorldCache)\n{\n if (!owner)\n {\n return IDENTITY_MATRIX4;\n }\n\n return multiplyMatrix4(\n buildModelTransformState(owner, objectIndex, connections, modelWorldCache).nodeToWorld,\n buildModelGeometricTransform(owner)\n );\n}\n\nfunction buildModelTransformState(model, objectIndex, connections, cache)\n{\n if (cache.has(model.key))\n {\n return cache.get(model.key);\n }\n\n const\n local = buildModelLocalState(model),\n parents = connectedParentObjects(model, objectIndex, connections, \"Model\"),\n parent = parents[0],\n parentState = parent ? buildModelTransformState(parent, objectIndex, connections, cache) : null,\n state = parentState\n ? composeInheritedModelState(local, parentState)\n : {\n nodeToWorld: local.matrix,\n unscaledNodeToWorld: local.unscaledMatrix,\n inheritScale: local.scale\n };\n\n cache.set(model.key, state);\n return state;\n}\n\nfunction buildModelLocalTransform(model)\n{\n const properties = readProperties70(model.node).properties;\n return composeModelTransform(properties);\n}\n\nfunction buildModelLocalState(model)\n{\n const\n properties = readProperties70(model.node).properties,\n translation = propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ]),\n scale = propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ]);\n\n return {\n properties,\n translation,\n scale,\n inheritType: propertyNumber(properties, \"InheritType\", 1),\n matrix: composeModelTransform(properties, { translation, scale }),\n unscaledMatrix: composeModelTransform(properties, { translation, scale: [ 1, 1, 1 ] })\n };\n}\n\nfunction composeInheritedModelState(local, parentState)\n{\n const inheritType = integerNumber(local.inheritType, \"InheritType\");\n\n if (inheritType === 0 || inheritType === 2)\n {\n const\n translation = multiplyVector3(local.translation, parentState.inheritScale),\n scale = inheritType === 0 ? multiplyVector3(local.scale, parentState.inheritScale) : local.scale,\n matrix = composeModelTransform(local.properties, { translation, scale }),\n unscaledMatrix = composeModelTransform(local.properties, { translation, scale: [ 1, 1, 1 ] });\n\n return {\n nodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, matrix),\n unscaledNodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, unscaledMatrix),\n inheritScale: scale\n };\n }\n\n return {\n nodeToWorld: multiplyMatrix4(parentState.nodeToWorld, local.matrix),\n unscaledNodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, local.unscaledMatrix),\n inheritScale: multiplyVector3(parentState.inheritScale, local.scale)\n };\n}\n\nfunction buildModelGeometricTransform(model)\n{\n const properties = readProperties70(model.node).properties;\n return composeSimpleTransform(\n propertyVector3(properties, \"GeometricTranslation\", [ 0, 0, 0 ]),\n propertyVector3(properties, \"GeometricRotation\", [ 0, 0, 0 ]),\n propertyVector3(properties, \"GeometricScaling\", [ 1, 1, 1 ]),\n DEFAULT_ROTATION_ORDER\n );\n}\n\nfunction composeModelTransform(properties, overrides = {})\n{\n const\n rotationOrder = propertyRotationOrder(properties),\n rotationPivot = propertyVector3(properties, \"RotationPivot\", [ 0, 0, 0 ]),\n scalingPivot = propertyVector3(properties, \"ScalingPivot\", [ 0, 0, 0 ]);\n\n return multiplyMatrix4List([\n translationMatrix4(overrides.translation ?? propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ])),\n translationMatrix4(propertyVector3(properties, \"RotationOffset\", [ 0, 0, 0 ])),\n translationMatrix4(rotationPivot),\n rotationMatrix4(propertyVector3(properties, \"PreRotation\", [ 0, 0, 0 ]), rotationOrder),\n rotationMatrix4(overrides.rotation ?? propertyVector3(properties, \"Lcl Rotation\", [ 0, 0, 0 ]), rotationOrder),\n inverseRotationMatrix4(propertyVector3(properties, \"PostRotation\", [ 0, 0, 0 ]), rotationOrder),\n translationMatrix4(negateVector3(rotationPivot)),\n translationMatrix4(propertyVector3(properties, \"ScalingOffset\", [ 0, 0, 0 ])),\n translationMatrix4(scalingPivot),\n scaleMatrix4(overrides.scale ?? propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ])),\n translationMatrix4(negateVector3(scalingPivot))\n ]);\n}\n\nfunction composeSimpleTransform(translation, rotationDegrees, scale, rotationOrder)\n{\n return multiplyMatrix4(\n translationMatrix4(translation),\n multiplyMatrix4(rotationMatrix4(rotationDegrees, rotationOrder), scaleMatrix4(scale))\n );\n}\n\nfunction transformPoints(values, matrix, sceneTransform)\n{\n const output = [];\n for (let i = 0; i < values.length; i += 3)\n {\n const point = transformPointMatrix4([ values[i], values[i + 1], values[i + 2] ], matrix);\n output.push(...transformScenePoint(point, sceneTransform));\n }\n return output;\n}\n\nfunction transformDirections(values, matrix, sceneTransform, useNormalMatrix)\n{\n if (!values.length)\n {\n return values;\n }\n\n const\n normalMatrix = useNormalMatrix ? normalMatrix3(matrix) : null,\n output = [];\n\n for (let i = 0; i < values.length; i += 3)\n {\n const vector = useNormalMatrix\n ? transformVectorMatrix3([ values[i], values[i + 1], values[i + 2] ], normalMatrix)\n : transformVectorMatrix4([ values[i], values[i + 1], values[i + 2] ], matrix);\n output.push(...normalizeVector3(transformSceneVector(vector, sceneTransform)));\n }\n\n return output;\n}\n\nfunction transformScenePoint(point, sceneTransform)\n{\n const vector = transformSceneVector(point, sceneTransform);\n return vector.map(value => value * sceneTransform.scale);\n}\n\nfunction transformSceneVector(vector, sceneTransform)\n{\n return [\n dotVector3(vector, sceneTransform.right),\n dotVector3(vector, sceneTransform.up),\n dotVector3(vector, sceneTransform.forward)\n ];\n}\n\nfunction transformMatrixScene(matrix, sceneTransform)\n{\n const\n column0 = transformSceneVector([ matrix[0], matrix[4], matrix[8] ], sceneTransform),\n column1 = transformSceneVector([ matrix[1], matrix[5], matrix[9] ], sceneTransform),\n column2 = transformSceneVector([ matrix[2], matrix[6], matrix[10] ], sceneTransform),\n translation = transformScenePoint([ matrix[3], matrix[7], matrix[11] ], sceneTransform);\n\n return cleanMatrix4([\n column0[0], column1[0], column2[0], translation[0],\n column0[1], column1[1], column2[1], translation[1],\n column0[2], column1[2], column2[2], translation[2],\n 0, 0, 0, 1\n ]);\n}\n\nfunction scaleMatrixTranslation(matrix, scale)\n{\n const output = matrix.slice();\n output[3] *= scale;\n output[7] *= scale;\n output[11] *= scale;\n return cleanMatrix4(output);\n}\n\nfunction decomposeMatrix4(matrix)\n{\n const\n scale = [\n Math.hypot(matrix[0], matrix[4], matrix[8]) || 1,\n Math.hypot(matrix[1], matrix[5], matrix[9]) || 1,\n Math.hypot(matrix[2], matrix[6], matrix[10]) || 1\n ],\n rotationMatrix = [\n matrix[0] / scale[0], matrix[1] / scale[1], matrix[2] / scale[2],\n matrix[4] / scale[0], matrix[5] / scale[1], matrix[6] / scale[2],\n matrix[8] / scale[0], matrix[9] / scale[1], matrix[10] / scale[2]\n ];\n\n return {\n position: cleanVector3([ matrix[3], matrix[7], matrix[11] ]),\n rotation: matrixToQuaternion(rotationMatrix),\n scale: cleanVector3(scale)\n };\n}\n\nfunction matrixToQuaternion(matrix)\n{\n const\n m00 = matrix[0],\n m01 = matrix[1],\n m02 = matrix[2],\n m10 = matrix[3],\n m11 = matrix[4],\n m12 = matrix[5],\n m20 = matrix[6],\n m21 = matrix[7],\n m22 = matrix[8],\n trace = m00 + m11 + m22;\n\n let x, y, z, w;\n if (trace > 0)\n {\n const s = Math.sqrt(trace + 1) * 2;\n w = 0.25 * s;\n x = (m21 - m12) / s;\n y = (m02 - m20) / s;\n z = (m10 - m01) / s;\n }\n else if (m00 > m11 && m00 > m22)\n {\n const s = Math.sqrt(1 + m00 - m11 - m22) * 2;\n w = (m21 - m12) / s;\n x = 0.25 * s;\n y = (m01 + m10) / s;\n z = (m02 + m20) / s;\n }\n else if (m11 > m22)\n {\n const s = Math.sqrt(1 + m11 - m00 - m22) * 2;\n w = (m02 - m20) / s;\n x = (m01 + m10) / s;\n y = 0.25 * s;\n z = (m12 + m21) / s;\n }\n else\n {\n const s = Math.sqrt(1 + m22 - m00 - m11) * 2;\n w = (m10 - m01) / s;\n x = (m02 + m20) / s;\n y = (m12 + m21) / s;\n z = 0.25 * s;\n }\n\n return normalizeQuaternion([ x, y, z, w ]);\n}\n\nfunction propertyVector3(properties, name, fallback)\n{\n const value = properties[name]?.value;\n if (Array.isArray(value))\n {\n return [\n finiteNumber(value[0] ?? fallback[0], name),\n finiteNumber(value[1] ?? fallback[1], name),\n finiteNumber(value[2] ?? fallback[2], name)\n ];\n }\n return fallback;\n}\n\nfunction propertyNumber(properties, name, fallback)\n{\n const value = properties[name]?.value;\n if (value === undefined || value === null || Array.isArray(value))\n {\n return fallback;\n }\n return finiteNumber(value, name);\n}\n\nfunction propertyRotationOrder(properties)\n{\n const value = propertyNumber(properties, \"RotationOrder\", null);\n if (value === null)\n {\n return DEFAULT_ROTATION_ORDER;\n }\n return FBX_ROTATION_ORDERS[value] || DEFAULT_ROTATION_ORDER;\n}\n\nfunction axisVector(axis, sign)\n{\n const vector = [ 0, 0, 0 ];\n const index = Math.max(0, Math.min(2, integerNumber(axis, \"Axis\")));\n vector[index] = sign < 0 ? -1 : 1;\n return vector;\n}\n\nfunction translationMatrix4(translation)\n{\n return [\n 1, 0, 0, translation[0],\n 0, 1, 0, translation[1],\n 0, 0, 1, translation[2],\n 0, 0, 0, 1\n ];\n}\n\nfunction scaleMatrix4(scale)\n{\n return [\n scale[0], 0, 0, 0,\n 0, scale[1], 0, 0,\n 0, 0, scale[2], 0,\n 0, 0, 0, 1\n ];\n}\n\nfunction rotationMatrix4(rotationDegrees, order)\n{\n let matrix = IDENTITY_MATRIX4;\n for (let i = order.length - 1; i >= 0; i--)\n {\n const axis = order[i];\n const radians = degreesToRadians(rotationDegrees[axisIndex(axis)]);\n matrix = multiplyMatrix4(matrix, axisRotationMatrix4(axis, radians));\n }\n return matrix;\n}\n\nfunction inverseRotationMatrix4(rotationDegrees, order)\n{\n let matrix = IDENTITY_MATRIX4;\n for (const axis of order)\n {\n const radians = degreesToRadians(-rotationDegrees[axisIndex(axis)]);\n matrix = multiplyMatrix4(matrix, axisRotationMatrix4(axis, radians));\n }\n return matrix;\n}\n\nfunction multiplyMatrix4List(matrices)\n{\n return matrices.reduce((matrix, next) => multiplyMatrix4(matrix, next), IDENTITY_MATRIX4);\n}\n\nfunction negateVector3(vector)\n{\n return [ -vector[0], -vector[1], -vector[2] ];\n}\n\nfunction multiplyVector3(a, b)\n{\n return [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ];\n}\n\nfunction axisIndex(axis)\n{\n return axis === \"X\" ? 0 : axis === \"Y\" ? 1 : 2;\n}\n\nfunction axisRotationMatrix4(axis, radians)\n{\n const\n c = Math.cos(radians),\n s = Math.sin(radians);\n\n switch (axis)\n {\n case \"X\":\n return [\n 1, 0, 0, 0,\n 0, c, -s, 0,\n 0, s, c, 0,\n 0, 0, 0, 1\n ];\n case \"Y\":\n return [\n c, 0, s, 0,\n 0, 1, 0, 0,\n -s, 0, c, 0,\n 0, 0, 0, 1\n ];\n default:\n return [\n c, -s, 0, 0,\n s, c, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n ];\n }\n}\n\nfunction multiplyMatrix4(a, b)\n{\n const output = new Array(16).fill(0);\n for (let row = 0; row < 4; row++)\n {\n for (let column = 0; column < 4; column++)\n {\n for (let k = 0; k < 4; k++)\n {\n output[row * 4 + column] += a[row * 4 + k] * b[k * 4 + column];\n }\n }\n }\n return output;\n}\n\nfunction invertMatrix4(matrix)\n{\n const\n a = [\n matrix.slice(0, 4),\n matrix.slice(4, 8),\n matrix.slice(8, 12),\n matrix.slice(12, 16)\n ],\n inverse = [\n [ 1, 0, 0, 0 ],\n [ 0, 1, 0, 0 ],\n [ 0, 0, 1, 0 ],\n [ 0, 0, 0, 1 ]\n ];\n\n for (let column = 0; column < 4; column++)\n {\n let pivotRow = column;\n for (let row = column + 1; row < 4; row++)\n {\n if (Math.abs(a[row][column]) > Math.abs(a[pivotRow][column]))\n {\n pivotRow = row;\n }\n }\n\n const pivot = a[pivotRow][column];\n if (Math.abs(pivot) < Number.EPSILON)\n {\n throw new Error(\"fbx: transform matrix is not invertible\");\n }\n\n if (pivotRow !== column)\n {\n [ a[column], a[pivotRow] ] = [ a[pivotRow], a[column] ];\n [ inverse[column], inverse[pivotRow] ] = [ inverse[pivotRow], inverse[column] ];\n }\n\n for (let i = 0; i < 4; i++)\n {\n a[column][i] /= pivot;\n inverse[column][i] /= pivot;\n }\n\n for (let row = 0; row < 4; row++)\n {\n if (row === column)\n {\n continue;\n }\n\n const factor = a[row][column];\n for (let i = 0; i < 4; i++)\n {\n a[row][i] -= factor * a[column][i];\n inverse[row][i] -= factor * inverse[column][i];\n }\n }\n }\n\n return cleanMatrix4(inverse.flat());\n}\n\nfunction transformPointMatrix4(point, matrix)\n{\n return [\n matrix[0] * point[0] + matrix[1] * point[1] + matrix[2] * point[2] + matrix[3],\n matrix[4] * point[0] + matrix[5] * point[1] + matrix[6] * point[2] + matrix[7],\n matrix[8] * point[0] + matrix[9] * point[1] + matrix[10] * point[2] + matrix[11]\n ];\n}\n\nfunction transformVectorMatrix4(vector, matrix)\n{\n return [\n matrix[0] * vector[0] + matrix[1] * vector[1] + matrix[2] * vector[2],\n matrix[4] * vector[0] + matrix[5] * vector[1] + matrix[6] * vector[2],\n matrix[8] * vector[0] + matrix[9] * vector[1] + matrix[10] * vector[2]\n ];\n}\n\nfunction normalMatrix3(matrix)\n{\n const\n a00 = matrix[0],\n a01 = matrix[1],\n a02 = matrix[2],\n a10 = matrix[4],\n a11 = matrix[5],\n a12 = matrix[6],\n a20 = matrix[8],\n a21 = matrix[9],\n a22 = matrix[10],\n b01 = a22 * a11 - a12 * a21,\n b11 = -a22 * a10 + a12 * a20,\n b21 = a21 * a10 - a11 * a20,\n determinant = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (Math.abs(determinant) < Number.EPSILON)\n {\n throw new Error(\"fbx: model transform is not invertible\");\n }\n\n const inverseDeterminant = 1 / determinant;\n return [\n b01 * inverseDeterminant,\n (-a22 * a01 + a02 * a21) * inverseDeterminant,\n (a12 * a01 - a02 * a11) * inverseDeterminant,\n b11 * inverseDeterminant,\n (a22 * a00 - a02 * a20) * inverseDeterminant,\n (-a12 * a00 + a02 * a10) * inverseDeterminant,\n b21 * inverseDeterminant,\n (-a21 * a00 + a01 * a20) * inverseDeterminant,\n (a11 * a00 - a01 * a10) * inverseDeterminant\n ];\n}\n\nfunction transformVectorMatrix3(vector, matrix)\n{\n return [\n matrix[0] * vector[0] + matrix[3] * vector[1] + matrix[6] * vector[2],\n matrix[1] * vector[0] + matrix[4] * vector[1] + matrix[7] * vector[2],\n matrix[2] * vector[0] + matrix[5] * vector[1] + matrix[8] * vector[2]\n ];\n}\n\nfunction normalizeVector3(vector)\n{\n const length = Math.hypot(vector[0], vector[1], vector[2]);\n if (length === 0)\n {\n return [ 0, 0, 0 ];\n }\n return vector.map(value => cleanFloat(value / length));\n}\n\nfunction normalizeQuaternion(quaternion)\n{\n const length = Math.hypot(quaternion[0], quaternion[1], quaternion[2], quaternion[3]);\n if (length === 0)\n {\n return [ 0, 0, 0, 1 ];\n }\n return quaternion.map(value => cleanFloat(value / length));\n}\n\nfunction dotVector3(a, b)\n{\n return cleanFloat(a[0] * b[0] + a[1] * b[1] + a[2] * b[2]);\n}\n\nfunction degreesToRadians(value)\n{\n return value * Math.PI / 180;\n}\n\nfunction cleanFloat(value)\n{\n return Math.abs(value) < 1e-12 ? 0 : value;\n}\n\nfunction cleanVector3(vector)\n{\n return vector.map(cleanFloat);\n}\n\nfunction cleanNumericArray(values)\n{\n return Array.from(values, cleanFloat);\n}\n\nfunction hasArrayValues(values)\n{\n return (Array.isArray(values) || ArrayBuffer.isView(values)) && values.length > 0;\n}\n\nfunction cleanMatrix4(matrix)\n{\n return matrix.map(cleanFloat);\n}\n\nfunction indexObjectNodes(objectsNode)\n{\n const byId = {};\n const byType = {};\n const list = [];\n\n for (const node of objectsNode.children)\n {\n if (!node.properties.length)\n {\n continue;\n }\n\n const summary = readObjectEntry(node);\n const entry = { ...summary, node };\n list.push(entry);\n byId[entry.key] = entry;\n pushIndex(byType, entry.nodeName, entry);\n }\n\n return { list, byId, byType };\n}\n\nfunction connectedParentObjects(entry, objectIndex, connections, nodeName)\n{\n return (connections.parentsByChild[entry.key] || [])\n .map(key => objectIndex.byId[key])\n .filter(parent => parent && parent.nodeName === nodeName);\n}\n\nfunction connectedChildObjects(entry, objectIndex, connections, nodeName)\n{\n if (!entry)\n {\n return [];\n }\n\n return (connections.childrenByParent[entry.key] || [])\n .map(key => objectIndex.byId[key])\n .filter(child => child && child.nodeName === nodeName);\n}\n\nfunction requireChildArray(node, childName)\n{\n const values = readChildArray(node, childName);\n if (!values)\n {\n throw new Error(`fbx: geometry is missing ${childName}`);\n }\n return values;\n}\n\nfunction readChildArray(node, childName)\n{\n const child = findFirstNode(node.children, childName);\n return child ? readNodeArray(child, childName) : null;\n}\n\nfunction readNodeArray(node, feature)\n{\n for (const property of node.properties)\n {\n const values = arrayPropertyToNumbers(property, feature);\n if (values)\n {\n return values;\n }\n }\n\n const asciiArray = findFirstNode(node.children, \"a\");\n return asciiArray ? asciiArray.properties.map(value => finiteNumber(value, feature)) : null;\n}\n\nfunction arrayPropertyToNumbers(property, feature)\n{\n if (!property)\n {\n return null;\n }\n if (property.compressed)\n {\n const error = new Error(`fbx: GR2 output cannot read compressed ${feature} arrays yet`);\n error.code = \"CJS_FORMAT_OUTPUT_UNSUPPORTED\";\n error.sourceFormat = \"fbx\";\n error.emit = OUTPUT_GR2;\n error.feature = \"compressed-array\";\n throw error;\n }\n if (ArrayBuffer.isView(property))\n {\n return Array.from(property, value => finiteNumber(value, feature));\n }\n if (Array.isArray(property))\n {\n return property.map(value => finiteNumber(value, feature));\n }\n return null;\n}\n\nfunction decodePolygonCorners(controlPoints, polygonVertexIndex, geometry)\n{\n const\n controlPointCount = controlPoints.length / 3,\n positions = [],\n corners = [],\n polygons = [];\n\n let polygon = [];\n\n for (const rawValue of polygonVertexIndex)\n {\n const raw = integerNumber(rawValue, \"PolygonVertexIndex\");\n const end = raw < 0;\n const controlPointIndex = end ? -raw - 1 : raw;\n if (controlPointIndex < 0 || controlPointIndex >= controlPointCount)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has PolygonVertexIndex ${raw} out of range`);\n }\n\n const source = controlPointIndex * 3;\n const outputIndex = positions.length / 3;\n const polygonIndex = polygons.length;\n positions.push(\n finiteNumber(controlPoints[source], \"Vertices\"),\n finiteNumber(controlPoints[source + 1], \"Vertices\"),\n finiteNumber(controlPoints[source + 2], \"Vertices\")\n );\n corners.push({\n outputIndex,\n controlPointIndex,\n polygonIndex,\n polygonCornerIndex: polygon.length\n });\n polygon.push(outputIndex);\n\n if (end)\n {\n if (polygon.length < 3)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has a polygon with fewer than three vertices`);\n }\n polygons.push(polygon);\n polygon = [];\n }\n }\n\n if (polygon.length)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has an unterminated polygon`);\n }\n\n return { positions, corners, polygons };\n}\n\nfunction readLayerElementChannel(geometryNode, layerName, layerIndex, valueNames, indexNames, elementSize, decoded, feature)\n{\n const layer = findLayerElementNode(geometryNode, layerName, layerIndex);\n if (!layer)\n {\n return [];\n }\n\n const values = readFirstChildArray(layer, valueNames);\n if (!values)\n {\n return [];\n }\n\n if (values.length % elementSize !== 0)\n {\n throw new Error(`fbx: ${feature} array length is not divisible by ${elementSize}`);\n }\n\n const\n indices = readFirstChildArray(layer, indexNames) || [],\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"ByPolygonVertex\"),\n reference = String(readFirstChildProperty(layer, \"ReferenceInformationType\") || \"Direct\"),\n output = [];\n\n for (const corner of decoded.corners)\n {\n const\n mappedIndex = resolveLayerMappingIndex(mapping, corner, feature),\n directIndex = resolveLayerReferenceIndex(reference, indices, mappedIndex, feature);\n\n appendLayerElement(output, values, directIndex, elementSize, feature);\n }\n\n return output;\n}\n\n/**\n * Read an FBX UV layer and apply the configured V-axis convention.\n *\n * @param {object} geometryNode Geometry node.\n * @param {number} layerIndex UV layer index.\n * @param {object} decoded Decoded polygon corner state.\n * @param {object} values Normalized reader values.\n * @returns {number[]} Expanded UV channel.\n */\nfunction readUvLayerElementChannel(geometryNode, layerIndex, decoded, values)\n{\n const texcoord = readLayerElementChannel(geometryNode, \"LayerElementUV\", layerIndex, [ \"UV\" ], [ \"UVIndex\", \"UVIndices\" ], 2, decoded, \"UV\");\n return values.flipV ? flipTexcoordV(texcoord) : texcoord;\n}\n\n/**\n * Flip the V coordinate of an expanded UV channel.\n *\n * @param {number[]} texcoord Expanded UV channel.\n * @returns {number[]} Flipped UV channel.\n */\nfunction flipTexcoordV(texcoord)\n{\n const flipped = texcoord.slice();\n for (let i = 1; i < flipped.length; i += 2)\n {\n flipped[i] = 1 - flipped[i];\n }\n return flipped;\n}\n\nfunction findLayerElementNode(geometryNode, layerName, layerIndex)\n{\n const layers = geometryNode.children.filter(child => child.name === layerName);\n return layers.find((child, index) =>\n {\n const id = child.properties.length ? Number(child.properties[0]) : index;\n return Number.isFinite(id) && id === layerIndex;\n }) || layers[layerIndex] || null;\n}\n\nfunction readFirstChildArray(node, childNames)\n{\n for (const childName of childNames)\n {\n const values = readChildArray(node, childName);\n if (values)\n {\n return values;\n }\n }\n return null;\n}\n\nfunction resolveLayerMappingIndex(mapping, corner, feature)\n{\n switch (mapping)\n {\n case \"ByPolygonVertex\":\n return corner.outputIndex;\n case \"ByControlPoint\":\n case \"ByVertice\":\n case \"ByVertex\":\n return corner.controlPointIndex;\n case \"ByPolygon\":\n return corner.polygonIndex;\n case \"AllSame\":\n return 0;\n default:\n throw new Error(`fbx: unsupported ${feature} MappingInformationType ${JSON.stringify(mapping)}`);\n }\n}\n\nfunction resolveLayerReferenceIndex(reference, indices, mappedIndex, feature)\n{\n switch (reference)\n {\n case \"Direct\":\n return mappedIndex;\n case \"IndexToDirect\":\n case \"Index\":\n {\n if (mappedIndex >= indices.length)\n {\n throw new Error(`fbx: ${feature} index array is too short`);\n }\n return integerNumber(indices[mappedIndex], feature);\n }\n default:\n throw new Error(`fbx: unsupported ${feature} ReferenceInformationType ${JSON.stringify(reference)}`);\n }\n}\n\nfunction appendLayerElement(output, values, directIndex, elementSize, feature)\n{\n const offset = directIndex * elementSize;\n if (directIndex < 0 || offset + elementSize > values.length)\n {\n throw new Error(`fbx: ${feature} direct index ${directIndex} is out of range`);\n }\n\n for (let i = 0; i < elementSize; i++)\n {\n output.push(finiteNumber(values[offset + i], feature));\n }\n}\n\nfunction buildIndexGroups(polygonTriangles, materialNames)\n{\n const groups = [];\n const groupByName = new Map();\n let maxIndex = 0;\n\n for (let polygonIndex = 0; polygonIndex < polygonTriangles.length; polygonIndex++)\n {\n const\n triangles = polygonTriangles[polygonIndex],\n name = materialNames[polygonIndex] || \"default\",\n group = getIndexGroup(groups, groupByName, name);\n\n for (const triangle of triangles)\n {\n group.faces.push(triangle[0], triangle[1], triangle[2]);\n maxIndex = Math.max(maxIndex, triangle[0], triangle[1], triangle[2]);\n }\n }\n\n const bytesPerIndex = maxIndex > 0xffff ? 4 : 2;\n for (const group of groups)\n {\n group.bytesPerIndex = bytesPerIndex;\n }\n return groups;\n}\n\nfunction triangulatePolygonList(polygons, positions)\n{\n return polygons.map(polygon => triangulatePolygon(polygon, positions));\n}\n\nfunction triangulatePolygon(polygon, positions)\n{\n if (polygon.length === 3)\n {\n return [ polygon.slice() ];\n }\n\n const projected = projectPolygonTo2D(polygon, positions);\n if (!projected)\n {\n return triangulatePolygonFan(polygon);\n }\n\n const area = signedArea2D(projected);\n if (Math.abs(area) <= TRIANGULATION_EPSILON)\n {\n return triangulatePolygonFan(polygon);\n }\n if (isConvexPolygon2D(projected, area))\n {\n return triangulatePolygonFan(polygon);\n }\n\n const\n triangles = [],\n remaining = polygon.map((value, index) => index);\n\n let guard = polygon.length * polygon.length;\n while (remaining.length > 3 && guard-- > 0)\n {\n let clipped = false;\n for (let index = 0; index < remaining.length; index++)\n {\n const\n previous = remaining[(index + remaining.length - 1) % remaining.length],\n current = remaining[index],\n next = remaining[(index + 1) % remaining.length];\n\n if (!isEar2D(previous, current, next, remaining, projected, area))\n {\n continue;\n }\n\n triangles.push([ polygon[previous], polygon[current], polygon[next] ]);\n remaining.splice(index, 1);\n clipped = true;\n break;\n }\n\n if (!clipped)\n {\n return triangulatePolygonFan(polygon);\n }\n }\n\n if (remaining.length === 3)\n {\n triangles.push([ polygon[remaining[0]], polygon[remaining[1]], polygon[remaining[2]] ]);\n }\n\n return triangles.length ? triangles : triangulatePolygonFan(polygon);\n}\n\nfunction flattenPolygonTriangles(polygonTriangles)\n{\n const faces = [];\n for (const triangles of polygonTriangles)\n {\n for (const triangle of triangles)\n {\n faces.push(triangle[0], triangle[1], triangle[2]);\n }\n }\n return faces;\n}\n\nfunction triangulatePolygonFan(polygon)\n{\n const triangles = [];\n for (let i = 1; i < polygon.length - 1; i++)\n {\n triangles.push([ polygon[0], polygon[i], polygon[i + 1] ]);\n }\n return triangles;\n}\n\nfunction projectPolygonTo2D(polygon, positions)\n{\n const normal = computePolygonNormal(polygon, positions);\n const\n absX = Math.abs(normal[0]),\n absY = Math.abs(normal[1]),\n absZ = Math.abs(normal[2]);\n\n if (Math.max(absX, absY, absZ) <= TRIANGULATION_EPSILON)\n {\n return null;\n }\n\n const dropAxis = absX > absY && absX > absZ ? 0 : absY > absZ ? 1 : 2;\n return polygon.map(index =>\n {\n const offset = index * 3;\n if (dropAxis === 0)\n {\n return [ positions[offset + 1], positions[offset + 2] ];\n }\n if (dropAxis === 1)\n {\n return [ positions[offset], positions[offset + 2] ];\n }\n return [ positions[offset], positions[offset + 1] ];\n });\n}\n\nfunction computePolygonNormal(polygon, positions)\n{\n const normal = [ 0, 0, 0 ];\n for (let i = 0; i < polygon.length; i++)\n {\n const\n current = polygon[i] * 3,\n next = polygon[(i + 1) % polygon.length] * 3,\n x0 = positions[current],\n y0 = positions[current + 1],\n z0 = positions[current + 2],\n x1 = positions[next],\n y1 = positions[next + 1],\n z1 = positions[next + 2];\n\n normal[0] += (y0 - y1) * (z0 + z1);\n normal[1] += (z0 - z1) * (x0 + x1);\n normal[2] += (x0 - x1) * (y0 + y1);\n }\n return normal;\n}\n\nfunction signedArea2D(points)\n{\n let area = 0;\n for (let i = 0; i < points.length; i++)\n {\n const\n current = points[i],\n next = points[(i + 1) % points.length];\n\n area += current[0] * next[1] - next[0] * current[1];\n }\n return area * 0.5;\n}\n\nfunction isEar2D(previous, current, next, remaining, points, area)\n{\n const cross = cross2D(points[previous], points[current], points[next]);\n if (area > 0 ? cross <= TRIANGULATION_EPSILON : cross >= -TRIANGULATION_EPSILON)\n {\n return false;\n }\n\n for (const pointIndex of remaining)\n {\n if (pointIndex === previous || pointIndex === current || pointIndex === next)\n {\n continue;\n }\n if (pointInTriangle2D(points[pointIndex], points[previous], points[current], points[next]))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction isConvexPolygon2D(points, area)\n{\n for (let i = 0; i < points.length; i++)\n {\n const cross = cross2D(points[i], points[(i + 1) % points.length], points[(i + 2) % points.length]);\n if (Math.abs(cross) <= TRIANGULATION_EPSILON)\n {\n continue;\n }\n if (area > 0 ? cross < -TRIANGULATION_EPSILON : cross > TRIANGULATION_EPSILON)\n {\n return false;\n }\n }\n return true;\n}\n\nfunction cross2D(a, b, c)\n{\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n\nfunction pointInTriangle2D(point, a, b, c)\n{\n const\n ab = cross2D(a, b, point),\n bc = cross2D(b, c, point),\n ca = cross2D(c, a, point),\n hasNegative = ab < -TRIANGULATION_EPSILON || bc < -TRIANGULATION_EPSILON || ca < -TRIANGULATION_EPSILON,\n hasPositive = ab > TRIANGULATION_EPSILON || bc > TRIANGULATION_EPSILON || ca > TRIANGULATION_EPSILON;\n\n return !(hasNegative && hasPositive);\n}\n\nfunction getIndexGroup(groups, groupByName, name)\n{\n let group = groupByName.get(name);\n if (!group)\n {\n group = { name, bytesPerIndex: 2, faces: [] };\n groupByName.set(name, group);\n groups.push(group);\n }\n return group;\n}\n\nfunction readPolygonMaterialNames(geometry, owner, objectIndex, connections, polygonCount)\n{\n const materialSlots = readMaterialSlotNames(geometry, owner, objectIndex, connections);\n if (!materialSlots.length)\n {\n return new Array(polygonCount).fill(\"default\");\n }\n\n const layer = findFirstNode(geometry.node.children, \"LayerElementMaterial\");\n if (!layer)\n {\n return new Array(polygonCount).fill(materialSlots[0] || \"default\");\n }\n\n const\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"AllSame\"),\n materials = readChildArray(layer, \"Materials\") || [],\n names = [];\n\n for (let i = 0; i < polygonCount; i++)\n {\n const slot = mapping === \"ByPolygon\"\n ? integerNumber(materials[i] ?? 0, \"Materials\")\n : integerNumber(materials[0] ?? 0, \"Materials\");\n names.push(slot >= 0 ? materialSlots[slot] || `material_${slot}` : \"default\");\n }\n\n return names;\n}\n\nfunction readMaterialSlotNames(geometry, owner, objectIndex, connections)\n{\n const materials = [\n ...connectedChildObjects(owner, objectIndex, connections, \"Material\"),\n ...connectedChildObjects(geometry, objectIndex, connections, \"Material\")\n ];\n const seen = new Set();\n const names = [];\n\n for (const material of materials)\n {\n if (seen.has(material.key))\n {\n continue;\n }\n seen.add(material.key);\n names.push(material.name || `material_${names.length}`);\n }\n\n return names;\n}\n\nfunction meshNameFromFbx(geometry, owner)\n{\n return owner?.name || geometry.name || \"fbx_mesh\";\n}\n\nfunction createGr2Vertex(position, channels = {})\n{\n return {\n position,\n blendIndice: channels.blendIndice || [],\n tangent: channels.tangent || [],\n normal: channels.normal || [],\n texcoord0: channels.texcoord0 || [],\n texcoord1: channels.texcoord1 || [],\n color0: channels.color0 || [],\n binormal: channels.binormal || [],\n blendWeight: channels.blendWeight || []\n };\n}\n\nfunction computeBounds(positions)\n{\n if (!positions.length)\n {\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\n }\n\n const\n minBounds = [ positions[0], positions[1], positions[2] ],\n maxBounds = [ positions[0], positions[1], positions[2] ];\n\n for (let i = 3; i < positions.length; i += 3)\n {\n for (let c = 0; c < 3; c++)\n {\n const value = positions[i + c];\n if (value < minBounds[c])\n {\n minBounds[c] = value;\n }\n if (value > maxBounds[c])\n {\n maxBounds[c] = value;\n }\n }\n }\n\n return { minBounds, maxBounds };\n}\n\nfunction hydrateGr2(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n grannyFileFormatRevision: root.grannyFileFormatRevision,\n grannyFileSource: root.grannyFileSource,\n meshes: root.meshes.map(mesh => hydrate(\"Mesh\", {\n name: mesh.name,\n morphTargets: mesh.morphTargets.map(target => hydrate(\"MorphTarget\", target, hydrationClasses)),\n minBounds: mesh.minBounds,\n maxBounds: mesh.maxBounds,\n boneBindings: mesh.boneBindings.map(binding => hydrate(\"BoneBinding\", binding, hydrationClasses)),\n vertex: mesh.vertex,\n indices: mesh.indices.map(group => hydrate(\"IndexGroup\", group, hydrationClasses))\n }, hydrationClasses)),\n models: root.models.map(model => hydrateGr2Model(model, hydrationClasses)),\n animations: root.animations\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateGr2Model(model, classes)\n{\n return hydrate(\"Model\", {\n ...model,\n skeleton: hydrateGr2Skeleton(model.skeleton, classes)\n }, classes);\n}\n\nfunction hydrateGr2Skeleton(skeleton, classes)\n{\n return hydrate(\"Skeleton\", {\n ...skeleton,\n bones: skeleton.bones.map(bone => hydrate(\"Bone\", bone, classes))\n }, classes);\n}\n\nfunction buildCmfFromShared(root)\n{\n return {\n version: 1,\n metadata: buildCmfMetadata(root),\n meshes: (root.meshes ?? []).map(mesh => buildCmfMesh(mesh)),\n skeletons: root.skeletons ?? [],\n animations: root.cmfAnimations ?? []\n };\n}\n\nfunction buildCmfMetadata(root)\n{\n const\n source = String(root.grannyFileSource || \"\"),\n entries = [];\n\n if (source && source !== \"memory\")\n {\n entries.push({ key: \"source\", value: source });\n }\n\n entries.push(\n { key: \"sourceFormat\", value: \"fbx\" },\n { key: \"generator\", value: \"CjsFbxFormat\" }\n );\n\n return { entries };\n}\n\nfunction buildCmfMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n indices = mesh.indices ?? [],\n boneBindings = (mesh.boneBindings ?? []).map(binding => buildCmfBoneBinding(binding)),\n morphTargets = buildCmfMorphTargets(mesh),\n areas = indices.map(group => buildCmfMeshArea(group, mesh, morphTargets)),\n stride = estimateVertexStride(vertex),\n vertexCount = stride === 0 ? 0 : Math.floor((vertex.position ?? []).length / 3);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildCmfDecl(vertex),\n lods: [ {\n vb: { index: 1, offset: 0, size: vertexCount * stride, stride },\n ib: { index: 2, offset: 0, size: totalIndexCount(indices) * cmfBytesPerIndex(indices), stride: cmfBytesPerIndex(indices) },\n areas: indices.map((group, index) => ({\n firstElement: firstTriangle(indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: morphTargets.lods,\n threshold: 0xffffffff,\n vertex,\n indices\n } ],\n areas,\n boneBindings,\n morphTargets: {\n decl: morphTargets.decl,\n targets: morphTargets.targets\n },\n uvDensities: [],\n bounds: cmfBounds(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: mesh.skeleton ?? null,\n vertex,\n indices\n };\n}\n\nfunction buildCmfMeshArea(group, mesh, morphTargets)\n{\n const bones = buildCmfAreaBones(group, mesh.vertex ?? {});\n return {\n name: group.name ?? \"\",\n bounds: cmfAreaBounds(group, mesh),\n bones,\n affectedByBones: bones.length > 0,\n affectedByMorphTargets: isCmfAreaAffectedByMorphTargets(group, mesh.vertex ?? {}, morphTargets.lods)\n };\n}\n\nfunction buildCmfAreaBones(group, vertex)\n{\n const\n boneIndices = vertex.blendIndice ?? [],\n boneWeights = vertex.blendWeight ?? [],\n hasWeights = hasArrayValues(boneWeights),\n bones = new Set();\n\n if (!hasArrayValues(boneIndices))\n {\n return [];\n }\n\n for (const vertexIndex of group.faces ?? [])\n {\n const offset = vertexIndex * 4;\n for (let i = 0; i < 4; i++)\n {\n const weight = hasWeights ? boneWeights[offset + i] ?? 0 : i === 0 ? 1 : 0;\n if (weight > 0)\n {\n bones.add(boneIndices[offset + i] ?? 0);\n }\n }\n }\n\n return Array.from(bones);\n}\n\nfunction isCmfAreaAffectedByMorphTargets(group, baseVertex, morphLods)\n{\n const basePositions = baseVertex.position ?? [];\n for (const lod of morphLods)\n {\n const positions = lod.vertex?.position ?? [];\n for (const vertexIndex of group.faces ?? [])\n {\n const offset = vertexIndex * 3;\n if (\n positions[offset] !== basePositions[offset] ||\n positions[offset + 1] !== basePositions[offset + 1] ||\n positions[offset + 2] !== basePositions[offset + 2]\n )\n {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction buildCmfMorphTargets(mesh)\n{\n const targets = mesh.morphTargets ?? [];\n if (!targets.length)\n {\n return { decl: [], targets: [], lods: [] };\n }\n\n const\n targetVertices = targets.map(target => target.vertex ?? {}),\n decl = buildCmfDeclFromVertices(targetVertices),\n stride = estimateStrideFromDecl(decl);\n\n return {\n decl,\n targets: targets.map(target => ({\n name: target.name ?? \"\",\n maxDisplacement: target.maxDisplacement ?? computeMaxDisplacement(mesh.vertex?.position ?? [], target.vertex?.position ?? [])\n })),\n lods: targets.map(target =>\n {\n const\n morphVertex = target.vertex ?? {},\n vertexCount = Math.floor((morphVertex.position ?? []).length / 3);\n\n return {\n vb: { index: 0, offset: 0, size: vertexCount * stride, stride },\n vertex: normalizeCmfVertexForDecl(morphVertex, decl, vertexCount)\n };\n })\n };\n}\n\nfunction buildCmfBoneBinding(binding)\n{\n return {\n name: binding.name ?? \"\",\n bounds: {\n min: binding.minBounds ?? binding.bounds?.min ?? [ 0, 0, 0 ],\n max: binding.maxBounds ?? binding.bounds?.max ?? [ 0, 0, 0 ]\n }\n };\n}\n\nfunction buildCmfDecl(vertex)\n{\n return buildCmfDeclFromVertices([ vertex ]);\n}\n\nfunction buildCmfDeclFromVertices(vertices)\n{\n const decl = [];\n let offset = 0;\n for (const channel of CMF_VERTEX_CHANNELS)\n {\n const [ name, usage, elementCount, usageIndex = 0, type = \"Float32\" ] = channel;\n if (!vertices.some(vertex => hasArrayValues(vertex[name])))\n {\n continue;\n }\n decl.push({ usage, usageIndex, type, elementCount, offset });\n offset += elementCount * cmfElementTypeSize(type);\n }\n return decl;\n}\n\nfunction normalizeCmfVertexForDecl(vertex, decl, vertexCount)\n{\n const normalized = { ...vertex };\n for (const channel of CMF_VERTEX_CHANNELS)\n {\n const [ name, usage, elementCount, usageIndex = 0 ] = channel;\n if (!decl.some(element => element.usage === usage && element.usageIndex === usageIndex))\n {\n continue;\n }\n if (!hasArrayValues(normalized[name]))\n {\n normalized[name] = new Array(vertexCount * elementCount).fill(0);\n }\n }\n return normalized;\n}\n\nfunction estimateVertexStride(vertex)\n{\n return estimateStrideFromDecl(buildCmfDecl(vertex));\n}\n\nfunction estimateStrideFromDecl(decl)\n{\n return decl.reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * cmfElementTypeSize(element.type)), 0);\n}\n\nfunction cmfElementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices)\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction cmfBytesPerIndex(indices)\n{\n return indices.some(group => group.bytesPerIndex === 4 || (group.faces ?? []).some(index => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices, areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++)\n {\n first += Math.floor((indices[i].faces ?? []).length / 3);\n }\n return first;\n}\n\nfunction cmfBounds(mesh)\n{\n return {\n min: mesh.minBounds ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? [ 0, 0, 0 ]\n };\n}\n\nfunction cmfAreaBounds(group, mesh)\n{\n const\n positions = mesh.vertex?.position ?? [],\n areaPositions = [];\n\n for (const vertexIndex of group.faces ?? [])\n {\n const offset = vertexIndex * 3;\n if (offset + 2 < positions.length)\n {\n areaPositions.push(positions[offset], positions[offset + 1], positions[offset + 2]);\n }\n }\n\n const bounds = computeBounds(areaPositions);\n return {\n min: bounds.minBounds,\n max: bounds.maxBounds\n };\n}\n\nfunction hydrateCmf(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n ...root,\n metadata: root.metadata ? hydrateCmfMetadata(root.metadata, hydrationClasses) : null,\n meshes: root.meshes.map(mesh => hydrateCmfMesh(mesh, hydrationClasses)),\n skeletons: root.skeletons.map(skeleton => hydrateCmfSkeleton(skeleton, hydrationClasses)),\n animations: root.animations.map(animation => hydrateCmfAnimation(animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateCmfMetadata(metadata, classes)\n{\n return hydrate(\"Metadata\", {\n entries: (metadata.entries ?? []).map(entry => hydrate(\"MetadataEntry\", entry, classes))\n }, classes);\n}\n\nfunction hydrateCmfMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n ...mesh,\n decl: mesh.decl.map(element => hydrate(\"VertexElement\", element, classes)),\n lods: mesh.lods.map(lod => hydrate(\"MeshLod\", {\n ...lod,\n areas: lod.areas.map(area => hydrate(\"LodMeshArea\", area, classes)),\n morphTargets: lod.morphTargets.map(target => hydrate(\"LodMorphTarget\", target, classes))\n }, classes)),\n areas: mesh.areas.map(area => hydrate(\"MeshArea\", area, classes)),\n boneBindings: mesh.boneBindings.map(binding => hydrate(\"BoneBinding\", binding, classes)),\n morphTargets: hydrate(\"MorphTargets\", {\n decl: mesh.morphTargets.decl.map(element => hydrate(\"VertexElement\", element, classes)),\n targets: mesh.morphTargets.targets.map(target => hydrate(\"MorphTarget\", target, classes))\n }, classes),\n audioOcclusionMesh: hydrate(\"AudioOcclusionMesh\", mesh.audioOcclusionMesh, classes)\n }, classes);\n}\n\nfunction hydrateCmfSkeleton(skeleton, classes)\n{\n return hydrate(\"Skeleton\", {\n ...skeleton,\n boneMasks: skeleton.boneMasks.map(mask => hydrate(\"BoneMask\", {\n ...mask,\n weights: mask.weights.map(weight => hydrate(\"BoneWeight\", weight, classes))\n }, classes))\n }, classes);\n}\n\nfunction hydrateCmfAnimation(animation, classes)\n{\n return hydrate(\"Animation\", {\n ...animation,\n channels: animation.channels.map(channel => hydrate(\"AnimationChannel\", channel, classes)),\n curves: animation.curves.map(curve => hydrate(\"AnimationCurve\", curve, classes))\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n if (!Class)\n {\n return fields;\n }\n\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return populate(new Class(), fields, options);\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsFbxFormat class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n\nfunction buildFbxRoot(nodes)\n{\n const headerNode = findFirstNode(nodes, \"FBXHeaderExtension\");\n const globalSettingsNode = findFirstNode(nodes, \"GlobalSettings\");\n const definitionsNode = findFirstNode(nodes, \"Definitions\");\n const objectsNode = findFirstNode(nodes, \"Objects\");\n const connectionsNode = findFirstNode(nodes, \"Connections\");\n\n return {\n rootNodeNames: nodes.map(node => node.name),\n header: readHeader(headerNode),\n globalSettings: readProperties70(globalSettingsNode),\n definitions: readDefinitions(definitionsNode),\n objects: readObjects(objectsNode),\n connections: readConnections(connectionsNode)\n };\n}\n\nfunction readHeader(node)\n{\n if (!node)\n {\n return {};\n }\n\n return {\n fbxHeaderVersion: readFirstChildProperty(node, \"FBXHeaderVersion\"),\n fbxVersion: readFirstChildProperty(node, \"FBXVersion\"),\n creator: readFirstChildProperty(node, \"Creator\")\n };\n}\n\nfunction readDefinitions(node)\n{\n if (!node)\n {\n return {\n version: 0,\n count: 0,\n objectTypes: []\n };\n }\n\n return {\n version: readFirstChildProperty(node, \"Version\") || 0,\n count: readFirstChildProperty(node, \"Count\") || 0,\n objectTypes: node.children\n .filter(child => child.name === \"ObjectType\")\n .map(readObjectType)\n };\n}\n\nfunction readObjectType(node)\n{\n return {\n type: node.properties[0] || \"\",\n count: readFirstChildProperty(node, \"Count\") || 0\n };\n}\n\nfunction readObjects(node)\n{\n const byId = {};\n const byType = {};\n const list = [];\n\n if (!node)\n {\n return { count: 0, list, byId, byType };\n }\n\n for (const child of node.children)\n {\n if (child.properties.length === 0)\n {\n continue;\n }\n\n const entry = readObjectEntry(child);\n list.push(entry);\n byId[entry.key] = entry;\n if (!byType[entry.nodeName])\n {\n byType[entry.nodeName] = [];\n }\n byType[entry.nodeName].push(entry.key);\n }\n\n return {\n count: list.length,\n list,\n byId,\n byType\n };\n}\n\nfunction readObjectEntry(node)\n{\n const id = node.properties[0];\n const fullName = node.properties[1] || \"\";\n const className = node.properties[2] || \"\";\n\n return {\n id,\n key: toObjectKey(id),\n nodeName: node.name,\n name: getShortObjectName(fullName),\n fullName,\n className,\n propertyCount: node.properties.length,\n childCount: node.children.length,\n attributeNames: node.children.map(child => child.name)\n };\n}\n\nfunction readConnections(node)\n{\n const list = [];\n const parentsByChild = {};\n const childrenByParent = {};\n\n if (node)\n {\n for (const child of node.children)\n {\n if (child.name !== \"C\")\n {\n continue;\n }\n\n const entry = {\n relation: child.properties[0] || \"\",\n childId: child.properties[1],\n parentId: child.properties[2],\n property: child.properties[3] || \"\"\n };\n entry.childKey = toObjectKey(entry.childId);\n entry.parentKey = toObjectKey(entry.parentId);\n list.push(entry);\n pushIndex(parentsByChild, entry.childKey, entry.parentKey);\n pushIndex(childrenByParent, entry.parentKey, entry.childKey);\n }\n }\n\n return {\n count: list.length,\n list,\n parentsByChild,\n childrenByParent\n };\n}\n\nfunction readProperties70(node)\n{\n const properties = {};\n const properties70 = node ? findFirstNode(node.children, \"Properties70\") : null;\n\n if (!properties70)\n {\n return { properties };\n }\n\n for (const child of properties70.children)\n {\n if (child.name !== \"P\" || child.properties.length === 0)\n {\n continue;\n }\n\n const key = child.properties[0];\n properties[key] = {\n type: child.properties[1] || \"\",\n label: child.properties[2] || \"\",\n flags: child.properties[3] || \"\",\n value: getProperty70Value(child.properties)\n };\n }\n\n return { properties };\n}\n\nfunction getProperty70Value(properties)\n{\n if (properties.length <= 5)\n {\n return properties[4];\n }\n return properties.slice(4);\n}\n\nfunction readFirstChildProperty(node, childName)\n{\n const child = findFirstNode(node.children, childName);\n return child ? child.properties[0] : undefined;\n}\n\nfunction findFirstNode(nodes, name)\n{\n return nodes.find(node => node.name === name) || null;\n}\n\nfunction getShortObjectName(fullName)\n{\n if (typeof fullName !== \"string\")\n {\n return \"\";\n }\n const\n fbxClassMarker = fullName.indexOf(\"\\u0000\\u0001\"),\n objectName = fbxClassMarker === -1 ? fullName : fullName.slice(0, fbxClassMarker),\n namespaceMarker = objectName.lastIndexOf(\"::\");\n\n return namespaceMarker === -1 ? objectName : objectName.slice(namespaceMarker + 2);\n}\n\nfunction pushIndex(index, key, value)\n{\n if (!index[key])\n {\n index[key] = [];\n }\n index[key].push(value);\n}\n\nfunction toObjectKey(value)\n{\n return value === undefined || value === null ? \"\" : String(value);\n}\n\nfunction parseAsciiLine(line, values)\n{\n const match = /^([A-Za-z_][\\w.]*)\\s*:\\s*(.*)$/u.exec(line);\n if (!match)\n {\n return null;\n }\n\n let body = match[2].trim();\n const opensBlock = body.endsWith(\"{\");\n if (opensBlock)\n {\n body = body.slice(0, -1).trim();\n }\n\n const properties = body ? parseAsciiProperties(body) : [];\n if (properties.length > values.maxProperties)\n {\n throw new Error(`fbx: ASCII node ${match[1]} exceeds maxProperties (${values.maxProperties})`);\n }\n\n return {\n name: match[1],\n properties,\n propertyTypes: [],\n children: [],\n opensBlock\n };\n}\n\nfunction parseAsciiProperties(body)\n{\n return splitAsciiProperties(body).map(parseAsciiValue);\n}\n\nfunction splitAsciiProperties(body)\n{\n const parts = [];\n let current = \"\";\n let quoted = false;\n let escaped = false;\n\n for (let i = 0; i < body.length; i++)\n {\n const char = body[i];\n if (escaped)\n {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\")\n {\n current += char;\n escaped = true;\n continue;\n }\n if (char === \"\\\"\")\n {\n quoted = !quoted;\n current += char;\n continue;\n }\n if (char === \",\" && !quoted)\n {\n parts.push(current.trim());\n current = \"\";\n continue;\n }\n current += char;\n }\n\n if (current.trim() || body.endsWith(\",\"))\n {\n parts.push(current.trim());\n }\n\n return parts;\n}\n\nfunction parseAsciiValue(value)\n{\n if (/^\".*\"$/u.test(value))\n {\n return value.slice(1, -1).replace(/\\\\\"/gu, \"\\\"\").replace(/\\\\\\\\/gu, \"\\\\\");\n }\n if (/^(true|false)$/iu.test(value))\n {\n return value.toLowerCase() === \"true\";\n }\n if (/^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?$/iu.test(value))\n {\n return Number(value);\n }\n return value;\n}\n\nfunction stripAsciiComment(line)\n{\n let quoted = false;\n let escaped = false;\n for (let i = 0; i < line.length; i++)\n {\n const char = line[i];\n if (escaped)\n {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\")\n {\n escaped = true;\n continue;\n }\n if (char === \"\\\"\")\n {\n quoted = !quoted;\n continue;\n }\n if (char === \";\" && !quoted)\n {\n return line.slice(0, i);\n }\n }\n return line;\n}\n\nfunction isBinaryFBX(bytes)\n{\n if (bytes.byteLength < BINARY_HEADER_SIZE)\n {\n return false;\n }\n for (let i = 0; i < BINARY_SIGNATURE.length; i++)\n {\n if (bytes[i] !== BINARY_SIGNATURE.charCodeAt(i))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction isAsciiFBXText(text)\n{\n return /(^|\\n)\\s*FBXHeaderExtension\\s*:/u.test(text) ||\n /(^|\\n)\\s*Objects\\s*:/u.test(text) ||\n /;\\s*FBX\\s+\\d+\\.\\d+\\.\\d+/iu.test(text);\n}\n\nfunction countAsciiRootNodes(text)\n{\n return collectAsciiRootNames(text).length;\n}\n\nfunction collectAsciiRootNames(text)\n{\n const names = [];\n let depth = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n if (line.startsWith(\"}\"))\n {\n depth = Math.max(depth - 1, 0);\n continue;\n }\n\n const match = /^([A-Za-z_][\\w.]*)\\s*:/u.exec(line);\n if (match && depth === 0)\n {\n names.push(match[1]);\n }\n if (line.endsWith(\"{\"))\n {\n depth++;\n }\n }\n\n return names;\n}\n\nfunction readAsciiVersion(text)\n{\n const direct = /FBXVersion\\s*:\\s*(\\d+)/u.exec(text);\n if (direct)\n {\n return Number(direct[1]);\n }\n\n const comment = /;\\s*FBX\\s+(\\d+)\\.(\\d+)\\.(\\d+)/iu.exec(text);\n if (!comment)\n {\n return 0;\n }\n return Number(`${comment[1]}${comment[2].padStart(2, \"0\")}${comment[3].padStart(2, \"0\")}`);\n}\n\nfunction decodeAsciiPrefix(bytes, length)\n{\n let text = \"\";\n const count = Math.min(bytes.byteLength, length);\n for (let i = 0; i < count; i++)\n {\n const byte = bytes[i];\n if (byte === 0)\n {\n break;\n }\n text += String.fromCharCode(byte);\n }\n return text;\n}\n\nfunction getBinaryNodeHeaderSize(version)\n{\n return version >= 7500 ? NODE_HEADER_64_SIZE : NODE_HEADER_32_SIZE;\n}\n\nfunction isNullRecord(bytes, offset, length)\n{\n if (offset + length > bytes.byteLength)\n {\n return false;\n }\n for (let i = 0; i < length; i++)\n {\n if (bytes[offset + i] !== 0)\n {\n return false;\n }\n }\n return true;\n}\n\nfunction getArrayElementSize(type)\n{\n if (type === \"d\" || type === \"l\")\n {\n return 8;\n }\n if (type === \"f\" || type === \"i\")\n {\n return 4;\n }\n return 1;\n}\n\nfunction normalizeIntegerLimit(value, fieldName, readerName)\n{\n if (!Number.isInteger(value) || value < 1)\n {\n throw new TypeError(`${readerName}: ${fieldName} must be a positive integer`);\n }\n return value;\n}\n\n/**\n * Normalize a boolean reader option.\n *\n * @param {boolean|0|1} value Option value.\n * @param {string} fieldName Option name.\n * @param {string} readerName Reader name for errors.\n * @returns {boolean} Normalized boolean.\n */\nfunction normalizeBooleanOption(value, fieldName, readerName)\n{\n if (typeof value === \"boolean\")\n {\n return value;\n }\n if (value === 0 || value === 1)\n {\n return Boolean(value);\n }\n throw new TypeError(`${readerName}: ${fieldName} must be a boolean`);\n}\n\nfunction hasOwn(value, key)\n{\n return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction normalizeClasses(classes, readerName)\n{\n if (!classes)\n {\n return {};\n }\n if (typeof classes !== \"object\" || Array.isArray(classes))\n {\n throw new TypeError(`${readerName}: classes must be an object map`);\n }\n\n const normalized = {};\n for (const [ key, Class ] of Object.entries(classes))\n {\n validateClass(key, Class, readerName);\n normalized[key] = Class;\n }\n return normalized;\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\" || Array.isArray(classes))\n {\n throw new TypeError(`${readerName}: classes must be an object map`);\n }\n\n const normalized = normalizeClasses(base, readerName);\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(key, readerName);\n delete normalized[key];\n continue;\n }\n validateClass(key, Class, readerName);\n normalized[key] = Class;\n }\n return normalized;\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some(Class => typeof Class === \"function\");\n}\n\nfunction finiteNumber(value, feature)\n{\n const number = Number(value);\n if (!Number.isFinite(number))\n {\n throw new Error(`fbx: ${feature} contains a non-finite number`);\n }\n return number;\n}\n\nfunction integerNumber(value, feature)\n{\n const number = finiteNumber(value, feature);\n if (!Number.isInteger(number))\n {\n throw new Error(`fbx: ${feature} contains a non-integer value`);\n }\n return number;\n}\n\nfunction ensureRange(bytes, offset, length, message)\n{\n if (offset + length > bytes.byteLength)\n {\n throw new Error(message);\n }\n}\n\nfunction readString(bytes, offset, length)\n{\n ensureRange(bytes, offset, length, \"fbx: string is truncated\");\n return TEXT_DECODER.decode(bytes.subarray(offset, offset + length));\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction readU32BE(bytes, offset)\n{\n return (((bytes[offset] << 24) >>> 0) | (bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]) >>> 0;\n}\n\nfunction readI16LE(bytes, offset)\n{\n const value = bytes[offset] | (bytes[offset + 1] << 8);\n return value & 0x8000 ? value - 0x10000 : value;\n}\n\nfunction readI32LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] << 24);\n}\n\nfunction readU64LEAsNumber(bytes, offset)\n{\n const low = readU32LE(bytes, offset);\n const high = readU32LE(bytes, offset + 4);\n return high * 0x100000000 + low;\n}\n\nfunction readI64LEValue(bytes, offset)\n{\n const low = readU32LE(bytes, offset);\n const highUnsigned = readU32LE(bytes, offset + 4);\n const negative = !!(highUnsigned & 0x80000000);\n let value = highUnsigned * 0x100000000 + low;\n\n if (negative)\n {\n value -= 0x10000000000000000;\n }\n\n return Number.isSafeInteger(value) ? value : String(value);\n}\n\nfunction readF32LE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getFloat32(0, true);\n}\n\nfunction readF64LE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 8).getFloat64(0, true);\n}\n"],"names":["OUTPUT_CMF","OUTPUT_GR2","OUTPUT_RAW","OUTPUT_JSON","OUTPUT_FBX_JSON","GR2_CLASS_KEYS","Object","freeze","CMF_CLASS_KEYS","CLASS_KEYS","Array","from","Set","DEFAULT_VALUES","emit","inputType","source","flipV","classes","maxBytes","maxNodes","maxDepth","maxProperties","maxArrayLength","BINARY_SIGNATURE","BINARY_HEADER_SIZE","NODE_HEADER_32_SIZE","NODE_HEADER_64_SIZE","ASCII_PREFIX_LENGTH","BASE64_ALPHABET","TEXT_DECODER","TextDecoder","OPTION_KEYS","DEFLATE_CODE_LENGTH_ORDER","DEFLATE_LENGTH_BASE","DEFLATE_LENGTH_EXTRA","DEFLATE_DISTANCE_BASE","DEFLATE_DISTANCE_EXTRA","ADLER32_MOD","TRIANGULATION_EPSILON","IDENTITY_MATRIX4","DEFAULT_ROTATION_ORDER","FBX_ROTATION_ORDERS","FBX_TICKS_PER_SECOND","CMF_VERTEX_CHANNELS","FEATURE_SCAN_ROOT_NODES","SUPPORTED_GEOMETRY_CLASSES","SUPPORTED_LAYER_ELEMENTS","SUPPORTED_LAYER_MAPPINGS","SUPPORTED_LAYER_REFERENCES","SUPPORTED_MATERIAL_MAPPINGS","fixedDeflateTables","normalizeValues","base","options","readerName","TypeError","key","keys","has","JSON","stringify","baseValues","values","String","replace","toLowerCase","normalizeEmit","normalizeIntegerLimit","normalizeBooleanOption","hasOwn","mergeClasses","normalizeClasses","hasClasses","validateClassKey","includes","Error","join","validateClass","Class","undefined","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","readWithValues","bytes","metadata","inspectWithValues","payloadType","sourceFormat","parseWithValues","readGr2WithValues","readCmfWithValues","detected","inspectBytes","mediaTypes","parseDocumentWithValues","document","parseGr2DocumentWithValues","hydrateGr2","buildGr2FromFbxNodes","nodes","hydrateCmf","buildCmfFromShared","encoding","parseBinaryDocument","parseAsciiDocument","error","code","readBinaryTargetNodes","readAsciiTargetNodes","isSupportedWithValues","recognized","diagnostics","inspectFbxFeatureSupport","warnings","errors","format","supported","confidence","preferred","reason","variants","kind","codec","message","targetNames","collectFbxFeatureSupport","objectsNode","findFirstNode","objectIndex","indexObjectNodes","connections","readConnections","collectGeometryFeatureWarnings","collectLayerElementFeatureWarnings","collectSkinFeatureWarnings","collectBlendShapeFeatureWarnings","geometry","list","filter","entry","nodeName","className","addWarning","objectLabel","node","children","layer","child","name","startsWith","collectMaterialLayerFeatureWarnings","collectVertexLayerFeatureWarnings","mapping","readFirstChildProperty","reference","skins","connectedChildObjects","isSkinDeformer","length","skin","clusters","isClusterDeformer","cluster","bone","clusterBone","indexes","readChildArray","weights","hasPositiveClusterWeight","hasControlPointInfluenceOverflow","buildSkinClusterRecords","fullName","records","controlPointInfluences","buildControlPointInfluences","influences","influence","weight","channels","isBlendShapeChannel","channel","shapes","readBlendShapeChannelShapes","isUnsupportedBlendShapeInBetween","push","isBinaryFBX","inspectBinaryBytes","text","decodeAsciiPrefix","ascii","isAsciiFBXText","version","readAsciiVersion","signature","rootNodeCount","countAsciiRootNodes","rootNodeNames","collectAsciiRootNames","isFBX","toJsonValue","value","type","constructor","isArray","map","output","entries","readU32LE","headerSize","getBinaryNodeHeaderSize","offset","isNullRecord","header","readBinaryNodeHeader","endOffset","readString","nameOffset","nameLength","nodeCount","result","readBinaryNode","count","root","buildFbxRoot","depth","propertyCount","cursor","propertiesOffset","properties","propertyTypes","i","readBinaryProperty","propertyEnd","propertyListLength","large","readU64LEAsNumber","Number","isSafeInteger","ensureRange","fromCharCode","readI16LE","readI32LE","readF32LE","readF64LE","readI64LEValue","readBinaryBlobProperty","readBinaryArrayProperty","dataOffset","subarray","readUncompressedArray","expectedByteLength","getArrayElementSize","expanded","inflateZlib","arrayType","compressed","expected","Float32Array","Float64Array","Int32Array","expectedLength","cmf","flg","expectedAdler","readU32BE","inflateDeflate","actualAdler","adler32","reader","DeflateBitReader","state","finalBlock","readBits","blockType","inflateStoredBlock","tables","getFixedDeflateTables","inflateHuffmanBlock","literalLength","distance","readDynamicDeflateTables","alignByte","readAlignedU16LE","inverseLength","writeInflatedByte","readAlignedByte","literalLengthTable","distanceTable","symbol","decode","lengthIndex","distanceSymbol","copyInflatedBytes","literalLengths","fill","DeflateHuffmanTable","literalLengthCount","distanceCount","codeLengthCount","codeLengthLengths","codeLengthTable","totalCount","lengths","repeatCodeLength","slice","a","b","byte","bitBuffer","bitCount","shift","remaining","take","Math","min","low","high","maxBits","counts","max","nextCodes","bits","reversed","reverseBits","table","stack","rawLine","split","line","stripAsciiComment","trim","pop","parseAsciiLine","opensBlock","collecting","isRoot","parent","sceneTransform","buildSceneTransform","modelWorldCache","Map","skeletonContext","buildSkeletonContext","meshes","owners","connectedParentObjects","owner","buildGr2MeshFromGeometry","grannyFileFormatRevision","grannyFileSource","models","buildGr2Models","skeletons","skeleton","cmfSkeleton","animations","cmfAnimations","readCmfAnimations","controlPoints","requireChildArray","polygonVertexIndex","decoded","decodePolygonCorners","meshTransform","buildMeshGeometryToWorld","positions","transformPoints","normal","transformDirections","readLayerElementChannel","explicitTangent","explicitBinormal","texcoord0","readUvLayerElementChannel","texcoord1","color0","polygonTriangles","triangulatePolygonList","polygons","triangleFaces","flattenPolygonTriangles","tangent","generateBaseTangents","binormal","generateBaseBinormals","materialNames","readPolygonMaterialNames","indices","buildIndexGroups","readSkinning","morphTargets","readMorphTargets","bounds","computeBounds","meshNameFromFbx","minBounds","maxBounds","boneBindings","vertex","createGr2Vertex","blendIndice","blendWeight","find","emptySkinning","clusterRecords","boneKeys","record","boneKey","outputInfluences","corners","corner","normalizeInfluences","get","controlPointIndex","buildBoneBindingsFromInfluences","findSkinSkeletonIndex","boneIndex","hasArrayValues","cleanNumericArray","generateTangents","generateBiNormals","basePositions","baseVertex","blendShapes","deformer","targets","blendShape","shape","target","buildMorphTarget","vertices","controlTargetPositions","integerNumber","targetOffset","controlOffset","finiteNumber","vertexChannels","buildMorphTargetVertexChannels","dataIsDeltas","maxDisplacement","computeMaxDisplacement","readMorphTargetCustomNormals","generateNormals","encoded","readMorphTargetCustomNormalString","decodeBase64Float32Vector3Array","propertyName","readProperties70","vertexCount","feature","decodeBase64Bytes","view","DataView","getFloat32","char","test","indexOf","targetPositions","hypot","cleanFloat","morphTargetNames","buildMorphTargetNameSet","boneTargets","buildCmfBoneTargetMap","animation","readCmfAnimation","names","mesh","add","set","bones","parents","layers","curveNodeParents","curveNodes","uniqueEntries","flatMap","curveNode","readMorphAnimationRecords","readRootPropertyMorphAnimationRecords","boneRecord","readBoneAnimationRecord","stackTimeSpan","readAnimationStackTimeSpan","curves","duration","knots","curve","ticks","tick","startTick","curveIndex","valueDimension","knot","interpolation","knotType","valueType","knotCount","packFloat32Values","targetType","start","propertyNumber","stop","Infinity","readMorphAnimationTargets","readMorphAnimationCurve","targetConnection","connection","relation","childKey","isBoneAnimationProperty","property","parentKey","isBoneModel","byId","isUserDefinedNumericProperty","size","readAnyScalarAnimationCurve","isMorphAnimationProperty","readBlendShapeChannelMorphNames","Boolean","readBlendShapeChannelFullWeights","scale","predicate","item","match","animationCurveAxis","readScalarAnimationCurve","keyValueFloat","keyValue","valueFeature","pairs","index","sort","pair","normalizeBoneAnimationProperty","vectorCurve","readVectorAnimationCurve","animationCurveNodeFallback","boneAnimationFallback","packBonePositionValues","packBoneRotationValues","propertyVector3","fallback","axes","axis","components","every","component","uniqueSortedTicks","sampleScalarAnimationCurve","amount","position","transformScenePoint","cleanVector3","matrix","composeModelTransform","translation","rotation","transformed","transformMatrixScene","decomposeMatrix4","definition","flags","seen","unique","forEach","setFloat32","boneName","best","total","reduce","sum","bindingMatrix","buildBoneBindingMatrix","bindingPositions","vertexIndex","some","transformPointMatrix4","invertMatrix4","skeletonIndex","boneToSkeletonIndex","roots","bindPoseMatrices","readBindPoseMatrices","visited","buildSkeleton","importBone","parentIndex","localMatrix","buildBoneLocalMatrix","transform","recordIndex","invBindTransforms","buildInvBindTransforms","gr2Skeleton","buildGr2Bone","restTransforms","boneMasks","buildCmfBoneMasks","masks","byName","isUserDefinedNumericPropertyDefinition","mask","clamp01","meshBindings","meshIndex","flag","orientation","scaleShear","buildModelTransformState","nodeToWorld","scaleMatrixTranslation","buildModelLocalTransform","poseMatrices","cleanMatrix4","parentInvTransform","invLocalTransform","multiplyMatrix4","matrices","pose","poseNode","nodeId","toObjectKey","globalSettingsNode","unitScaleFactor","right","axisVector","up","forward","buildModelGeometricTransform","model","cache","local","buildModelLocalState","parentState","composeInheritedModelState","unscaledNodeToWorld","unscaledMatrix","inheritScale","inheritType","multiplyVector3","composeSimpleTransform","overrides","rotationOrder","propertyRotationOrder","rotationPivot","scalingPivot","multiplyMatrix4List","translationMatrix4","rotationMatrix4","inverseRotationMatrix4","negateVector3","scaleMatrix4","rotationDegrees","point","useNormalMatrix","normalMatrix","normalMatrix3","vector","transformVectorMatrix3","normalizeVector3","transformSceneVector","dotVector3","column0","column1","column2","rotationMatrix","matrixToQuaternion","m00","m01","m02","m10","m11","m12","m20","m21","m22","trace","x","y","z","w","s","sqrt","normalizeQuaternion","sign","order","radians","degreesToRadians","axisIndex","axisRotationMatrix4","next","c","cos","sin","row","column","k","inverse","pivotRow","abs","pivot","EPSILON","factor","flat","a00","a01","a02","a10","a11","a12","a20","a21","a22","b01","b11","b21","determinant","inverseDeterminant","quaternion","PI","byType","summary","readObjectEntry","pushIndex","parentsByChild","childrenByParent","childName","readNodeArray","arrayPropertyToNumbers","asciiArray","controlPointCount","polygon","rawValue","raw","end","outputIndex","polygonIndex","polygonCornerIndex","geometryNode","layerName","layerIndex","valueNames","indexNames","elementSize","findLayerElementNode","readFirstChildArray","mappedIndex","resolveLayerMappingIndex","directIndex","resolveLayerReferenceIndex","appendLayerElement","texcoord","flipTexcoordV","flipped","id","isFinite","childNames","groups","groupByName","maxIndex","triangles","group","getIndexGroup","triangle","faces","bytesPerIndex","triangulatePolygon","projected","projectPolygonTo2D","triangulatePolygonFan","area","signedArea2D","isConvexPolygon2D","guard","clipped","previous","current","isEar2D","splice","computePolygonNormal","absX","absY","absZ","dropAxis","x0","y0","z0","x1","y1","z1","points","cross","cross2D","pointIndex","pointInTriangle2D","ab","bc","ca","hasNegative","hasPositive","polygonCount","materialSlots","readMaterialSlotNames","materials","slot","material","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","binding","hydrateGr2Model","hydrateGr2Skeleton","buildCmfMetadata","buildCmfMesh","buildCmfBoneBinding","buildCmfMorphTargets","areas","buildCmfMeshArea","stride","estimateVertexStride","floor","decl","buildCmfDecl","lods","vb","ib","totalIndexCount","cmfBytesPerIndex","firstElement","firstTriangle","elementCount","threshold","uvDensities","cmfBounds","audioOcclusionMesh","topology","buildCmfAreaBones","cmfAreaBounds","affectedByBones","affectedByMorphTargets","isCmfAreaAffectedByMorphTargets","boneIndices","boneWeights","hasWeights","morphLods","lod","targetVertices","buildCmfDeclFromVertices","estimateStrideFromDecl","morphVertex","normalizeCmfVertexForDecl","usage","usageIndex","cmfElementTypeSize","normalized","element","areaIndex","first","areaPositions","hydrateCmfMetadata","hydrateCmfMesh","hydrateCmfSkeleton","hydrateCmfAnimation","fields","__hydrationOptions","populate","instance","SetValues","skipUpdate","skipEvents","create","defineProperty","enumerable","headerNode","definitionsNode","connectionsNode","readHeader","globalSettings","definitions","readDefinitions","objects","readObjects","fbxHeaderVersion","fbxVersion","creator","objectTypes","readObjectType","getShortObjectName","childCount","attributeNames","childId","parentId","properties70","label","getProperty70Value","fbxClassMarker","objectName","namespaceMarker","lastIndexOf","exec","body","endsWith","parseAsciiProperties","splitAsciiProperties","parseAsciiValue","parts","quoted","escaped","charCodeAt","direct","comment","padStart","fieldName","isInteger","prototype","hasOwnProperty","call","number","highUnsigned","negative","getFloat64"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/fbx/core/helpers.js"],"sourcesContent":["import {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"@carbonenginejs/core-math/mesh\";\n\nexport const OUTPUT_CMF = \"cmf\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_FBX_JSON = \"fbxJson\";\n\nexport const GR2_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Mesh\",\n \"BoneBinding\",\n \"IndexGroup\",\n \"MorphTarget\",\n \"Model\",\n \"Skeleton\",\n \"Bone\",\n \"Animation\",\n \"TrackGroup\",\n \"TransformTrack\",\n \"Curve\"\n]);\n\nexport const CMF_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Section\",\n \"Metadata\",\n \"MetadataEntry\",\n \"Mesh\",\n \"IndexGroup\",\n \"VertexElement\",\n \"MeshLod\",\n \"MeshArea\",\n \"LodMeshArea\",\n \"BoneBinding\",\n \"MorphTargets\",\n \"MorphTarget\",\n \"LodMorphTarget\",\n \"AudioOcclusionMesh\",\n \"Skeleton\",\n \"BoneMask\",\n \"BoneWeight\",\n \"Animation\",\n \"AnimationChannel\",\n \"AnimationCurve\"\n]);\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"fbx\",\n source: \"\",\n flipV: true,\n classes: Object.freeze({}),\n maxBytes: 256 * 1024 * 1024,\n maxNodes: 250000,\n maxDepth: 128,\n maxProperties: 4096,\n maxArrayLength: 20000000\n});\n\nconst BINARY_SIGNATURE = \"Kaydara FBX Binary \\u0000\\u001a\\u0000\";\nconst BINARY_HEADER_SIZE = 27;\nconst NODE_HEADER_32_SIZE = 13;\nconst NODE_HEADER_64_SIZE = 25;\nconst ASCII_PREFIX_LENGTH = 8192;\nconst BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst TEXT_DECODER = new TextDecoder(\"utf-8\");\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"inputType\",\n \"source\",\n \"flipV\",\n \"classes\",\n \"maxBytes\",\n \"maxNodes\",\n \"maxDepth\",\n \"maxProperties\",\n \"maxArrayLength\"\n]);\nconst DEFLATE_CODE_LENGTH_ORDER = Object.freeze([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\nconst DEFLATE_LENGTH_BASE = Object.freeze([ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ]);\nconst DEFLATE_LENGTH_EXTRA = Object.freeze([ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 ]);\nconst DEFLATE_DISTANCE_BASE = Object.freeze([ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]);\nconst DEFLATE_DISTANCE_EXTRA = Object.freeze([ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ]);\nconst ADLER32_MOD = 65521;\nconst TRIANGULATION_EPSILON = 1e-10;\nconst IDENTITY_MATRIX4 = Object.freeze([\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n]);\nconst DEFAULT_ROTATION_ORDER = \"XYZ\";\nconst FBX_ROTATION_ORDERS = Object.freeze([ \"XYZ\", \"XZY\", \"YZX\", \"YXZ\", \"ZXY\", \"ZYX\" ]);\nconst FBX_TICKS_PER_SECOND = 46186158000;\nconst CMF_VERTEX_CHANNELS = Object.freeze([\n [ \"position\", \"Position\", 3 ],\n [ \"normal\", \"Normal\", 3 ],\n [ \"tangent\", \"Tangent\", 3 ],\n [ \"binormal\", \"Binormal\", 3 ],\n [ \"texcoord0\", \"TexCoord\", 2, 0 ],\n [ \"texcoord1\", \"TexCoord\", 2, 1 ],\n [ \"color0\", \"Color\", 4, 0 ],\n [ \"blendIndice\", \"BoneIndices\", 4, 0, \"UInt8\" ],\n [ \"blendWeight\", \"BoneWeights\", 4, 0 ]\n]);\nconst FEATURE_SCAN_ROOT_NODES = Object.freeze([ \"GlobalSettings\", \"Objects\", \"Connections\" ]);\nconst SUPPORTED_GEOMETRY_CLASSES = new Set([ \"\", \"Mesh\", \"Shape\" ]);\nconst SUPPORTED_LAYER_ELEMENTS = new Set([\n \"LayerElementNormal\",\n \"LayerElementTangent\",\n \"LayerElementBinormal\",\n \"LayerElementUV\",\n \"LayerElementColor\",\n \"LayerElementMaterial\"\n]);\nconst SUPPORTED_LAYER_MAPPINGS = new Set([ \"ByPolygonVertex\", \"ByControlPoint\", \"ByVertice\", \"ByVertex\", \"ByPolygon\", \"AllSame\" ]);\nconst SUPPORTED_LAYER_REFERENCES = new Set([ \"Direct\", \"IndexToDirect\", \"Index\" ]);\nconst SUPPORTED_MATERIAL_MAPPINGS = new Set([ \"AllSame\", \"ByPolygon\" ]);\n\nlet fixedDeflateTables = null;\n\n/**\n * Normalize reader values.\n *\n * @param {object} [base] Base values.\n * @param {object} [options] Override values.\n * @param {string} [readerName] Reader name for errors.\n * @returns {object} Normalized values.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsFbxFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const baseValues = { ...DEFAULT_VALUES, ...(base || {}) };\n const values = { ...baseValues, ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"fbx\";\n values.emit = normalizeEmit(values.emit, readerName);\n values.maxBytes = normalizeIntegerLimit(values.maxBytes, \"maxBytes\", readerName);\n values.maxNodes = normalizeIntegerLimit(values.maxNodes, \"maxNodes\", readerName);\n values.maxDepth = normalizeIntegerLimit(values.maxDepth, \"maxDepth\", readerName);\n values.maxProperties = normalizeIntegerLimit(values.maxProperties, \"maxProperties\", readerName);\n values.maxArrayLength = normalizeIntegerLimit(values.maxArrayLength, \"maxArrayLength\", readerName);\n values.flipV = normalizeBooleanOption(values.flipV, \"flipV\", readerName);\n values.classes = hasOwn(options, \"classes\")\n ? mergeClasses(baseValues.classes || {}, options.classes, readerName)\n : normalizeClasses(baseValues.classes || {}, readerName);\n if ((values.emit === OUTPUT_GR2 || values.emit === OUTPUT_CMF) && !hasClasses(values.classes))\n {\n throw new TypeError(`${readerName}: emit \"${values.emit}\" requires explicit classes`);\n }\n return values;\n}\n\n/**\n * Validate a node class key.\n *\n * @param {string} key Class key.\n * @param {string} [readerName] Reader name for errors.\n * @returns {string} The validated key.\n */\nexport function validateClassKey(key, readerName = \"CjsFbxFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n return key;\n}\n\n/**\n * Validate a node class constructor.\n *\n * @param {string} key Class key.\n * @param {Function} Class Constructor.\n * @param {string} [readerName] Reader name for errors.\n * @returns {Function} The validated constructor.\n */\nexport function validateClass(key, Class, readerName = \"CjsFbxFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${key} must be a constructor`);\n }\n return Class;\n}\n\n/**\n * Normalize an emit target.\n *\n * @param {string} emit Emit target.\n * @param {string} readerName Reader name for errors.\n * @returns {string} Normalized emit target.\n */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null)\n {\n return OUTPUT_RAW;\n }\n if (emit === OUTPUT_JSON)\n {\n return OUTPUT_FBX_JSON;\n }\n if ([ OUTPUT_RAW, OUTPUT_FBX_JSON, OUTPUT_GR2, OUTPUT_CMF ].includes(emit))\n {\n return emit;\n }\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/**\n * Convert supported binary inputs to bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Binary input.\n * @returns {Uint8Array} Byte view.\n */\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array)\n {\n return input;\n }\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n throw new TypeError(\"FBX input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\n/**\n * Read FBX bytes with normalized values.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Raw or debug payload.\n */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n\n if (values.emit === OUTPUT_RAW)\n {\n const metadata = inspectWithValues(bytes, values);\n return {\n payloadType: \"raw\",\n sourceFormat: \"fbx\",\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_FBX_JSON)\n {\n return parseWithValues(bytes, values);\n }\n\n if (values.emit === OUTPUT_GR2)\n {\n return readGr2WithValues(bytes, values);\n }\n\n return readCmfWithValues(bytes, values);\n}\n\n/**\n * Inspect FBX bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Lightweight FBX metadata.\n */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n const detected = inspectBytes(bytes);\n\n return {\n payloadType: \"geometry\",\n mediaTypes: [ \"geometry\" ],\n sourceFormat: \"fbx\",\n byteLength: bytes.byteLength,\n source: values.source || \"\",\n ...detected\n };\n}\n\n/**\n * Parse FBX bytes into a browser-safe debug document.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Parsed FBX document.\n */\nexport function parseWithValues(input, values = DEFAULT_VALUES)\n{\n return {\n ...parseDocumentWithValues(input, values),\n payloadType: OUTPUT_FBX_JSON\n };\n}\n\n/**\n * Read static FBX mesh data into GR2-shaped caller classes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Hydrated GR2-shaped root.\n */\nexport function readGr2WithValues(input, values = DEFAULT_VALUES)\n{\n const document = parseGr2DocumentWithValues(input, values);\n return hydrateGr2(buildGr2FromFbxNodes(document.nodes, values), values.classes, { source: values.source });\n}\n\n/**\n * Read static FBX mesh data into CMF-shaped caller classes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Hydrated CMF-shaped root.\n */\nexport function readCmfWithValues(input, values = DEFAULT_VALUES)\n{\n const document = parseGr2DocumentWithValues(input, values);\n return hydrateCmf(buildCmfFromShared(buildGr2FromFbxNodes(document.nodes, values)), values.classes, { source: values.source });\n}\n\nfunction parseDocumentWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n if (bytes.byteLength > values.maxBytes)\n {\n throw new Error(`fbx: input exceeds maxBytes (${values.maxBytes})`);\n }\n const metadata = inspectWithValues(bytes, values);\n\n if (metadata.encoding === \"binary\")\n {\n return parseBinaryDocument(bytes, metadata, values);\n }\n\n if (metadata.encoding === \"ascii\")\n {\n return parseAsciiDocument(bytes, metadata, values);\n }\n\n const error = new Error(\"fbx: unrecognized FBX data\");\n error.code = \"CJS_FORMAT_UNRECOGNIZED\";\n error.sourceFormat = \"fbx\";\n throw error;\n}\n\nfunction parseGr2DocumentWithValues(input, values)\n{\n const bytes = toBytes(input);\n if (bytes.byteLength > values.maxBytes)\n {\n throw new Error(`fbx: input exceeds maxBytes (${values.maxBytes})`);\n }\n const metadata = inspectWithValues(bytes, values);\n\n if (metadata.encoding === \"binary\")\n {\n return {\n ...metadata,\n nodes: readBinaryTargetNodes(bytes, metadata, values, new Set([ \"GlobalSettings\", \"Objects\", \"Connections\" ]))\n };\n }\n\n if (metadata.encoding === \"ascii\")\n {\n return {\n ...metadata,\n nodes: readAsciiTargetNodes(bytes, values, new Set([ \"GlobalSettings\", \"Objects\", \"Connections\" ]))\n };\n }\n\n const error = new Error(\"fbx: unrecognized FBX data\");\n error.code = \"CJS_FORMAT_UNRECOGNIZED\";\n error.sourceFormat = \"fbx\";\n throw error;\n}\n\n/**\n * Report FBX support for the current implementation.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input FBX bytes.\n * @param {object} values Normalized reader values.\n * @returns {object} Support report.\n */\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const recognized = metadata.encoding !== \"\";\n const diagnostics = recognized\n ? inspectFbxFeatureSupport(input, values, metadata)\n : { warnings: [], errors: [] };\n\n return {\n format: \"fbx\",\n source: values.source || \"buffer\",\n supported: recognized ? \"partial\" : \"none\",\n confidence: recognized ? metadata.confidence : 0,\n preferred: recognized ? \"gr2\" : \"\",\n reason: recognized ? \"FBX document parsing plus basic static/skinned/morphed GR2/CMF output and basic CMF animation curves are available; full CarbonEngine-equivalent import is not implemented yet.\" : \"Unrecognized FBX data.\",\n metadata,\n variants: [\n { kind: \"document\", codec: metadata.encoding || \"unknown\", supported: recognized },\n { kind: \"gr2\", codec: \"gr2-geometry\", supported: recognized, reason: recognized ? \"Basic static/skinned/morphed geometry class output is available.\" : \"Unrecognized FBX data.\" },\n { kind: \"cmf\", codec: \"cmf-geometry-animation\", supported: recognized, reason: recognized ? \"Basic static/skinned/morphed geometry and basic morph/bone animation class output are available.\" : \"Unrecognized FBX data.\" }\n ],\n warnings: diagnostics.warnings,\n errors: diagnostics.errors\n };\n }\n catch (error)\n {\n return {\n format: \"fbx\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nfunction inspectFbxFeatureSupport(input, values, metadata)\n{\n try\n {\n const\n bytes = toBytes(input),\n targetNames = new Set(FEATURE_SCAN_ROOT_NODES),\n nodes = metadata.encoding === \"binary\"\n ? readBinaryTargetNodes(bytes, metadata, values, targetNames)\n : readAsciiTargetNodes(bytes, values, targetNames);\n\n return collectFbxFeatureSupport(nodes);\n }\n catch (error)\n {\n return {\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nfunction collectFbxFeatureSupport(nodes)\n{\n const\n warnings = [],\n objectsNode = findFirstNode(nodes, \"Objects\");\n\n if (!objectsNode)\n {\n return {\n warnings: [ \"fbx: no Objects node; runtime GR2/CMF output requires mesh Geometry nodes.\" ],\n errors: []\n };\n }\n\n const\n objectIndex = indexObjectNodes(objectsNode),\n connections = readConnections(findFirstNode(nodes, \"Connections\"));\n\n collectGeometryFeatureWarnings(objectIndex, warnings);\n collectLayerElementFeatureWarnings(objectIndex, warnings);\n collectSkinFeatureWarnings(objectIndex, connections, warnings);\n collectBlendShapeFeatureWarnings(objectIndex, connections, warnings);\n\n return {\n warnings,\n errors: []\n };\n}\n\nfunction collectGeometryFeatureWarnings(objectIndex, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\"))\n {\n if (!SUPPORTED_GEOMETRY_CLASSES.has(geometry.className))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} class ${JSON.stringify(geometry.className)} is not imported by GR2/CMF output.`);\n continue;\n }\n\n if (geometry.className === \"Shape\")\n {\n continue;\n }\n\n if (!findFirstNode(geometry.node.children, \"Vertices\"))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} is missing Vertices and cannot be imported as a mesh.`);\n }\n if (!findFirstNode(geometry.node.children, \"PolygonVertexIndex\"))\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} is missing PolygonVertexIndex and cannot be imported as a mesh.`);\n }\n }\n}\n\nfunction collectLayerElementFeatureWarnings(objectIndex, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n for (const layer of geometry.node.children.filter(child => child.name.startsWith(\"LayerElement\")))\n {\n if (!SUPPORTED_LAYER_ELEMENTS.has(layer.name))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} is ignored by GR2/CMF output.`);\n continue;\n }\n\n if (layer.name === \"LayerElementMaterial\")\n {\n collectMaterialLayerFeatureWarnings(geometry, layer, warnings);\n }\n else\n {\n collectVertexLayerFeatureWarnings(geometry, layer, warnings);\n }\n }\n }\n}\n\nfunction collectVertexLayerFeatureWarnings(geometry, layer, warnings)\n{\n const\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"ByPolygonVertex\"),\n reference = String(readFirstChildProperty(layer, \"ReferenceInformationType\") || \"Direct\");\n\n if (!SUPPORTED_LAYER_MAPPINGS.has(mapping))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} uses unsupported MappingInformationType ${JSON.stringify(mapping)}.`);\n }\n if (!SUPPORTED_LAYER_REFERENCES.has(reference))\n {\n addWarning(warnings, `fbx: ${layer.name} on Geometry ${objectLabel(geometry)} uses unsupported ReferenceInformationType ${JSON.stringify(reference)}.`);\n }\n}\n\nfunction collectMaterialLayerFeatureWarnings(geometry, layer, warnings)\n{\n const mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"AllSame\");\n if (!SUPPORTED_MATERIAL_MAPPINGS.has(mapping))\n {\n addWarning(warnings, `fbx: LayerElementMaterial on Geometry ${objectLabel(geometry)} uses unsupported MappingInformationType ${JSON.stringify(mapping)}.`);\n }\n}\n\nfunction collectSkinFeatureWarnings(objectIndex, connections, warnings)\n{\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n const skins = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\").filter(isSkinDeformer);\n if (skins.length > 1)\n {\n addWarning(warnings, `fbx: Geometry ${objectLabel(geometry)} has ${skins.length} Skin deformers; GR2/CMF output imports only the first skin.`);\n }\n }\n\n const skins = objectIndex.list\n .filter(entry => entry.nodeName === \"Deformer\" && isSkinDeformer(entry));\n\n for (const skin of skins)\n {\n const clusters = connectedChildObjects(skin, objectIndex, connections, \"Deformer\")\n .filter(isClusterDeformer);\n\n for (const cluster of clusters)\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n indexes = readChildArray(cluster.node, \"Indexes\") || [],\n weights = readChildArray(cluster.node, \"Weights\") || [];\n\n if (!bone)\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no linked bone Model.`);\n }\n else if (!indexes.length)\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no Indexes.`);\n }\n else if (!hasPositiveClusterWeight(indexes, weights))\n {\n addWarning(warnings, `fbx: Skin cluster ${objectLabel(cluster)} is skipped because it has no positive Weights.`);\n }\n }\n\n if (hasControlPointInfluenceOverflow(buildSkinClusterRecords(clusters, objectIndex, connections)))\n {\n addWarning(warnings, `fbx: Skin ${objectLabel(skin)} has control points with more than four positive bone influences; GR2/CMF output keeps the strongest four and renormalizes them.`);\n }\n }\n}\n\n/**\n * Check whether an indexed FBX object is a Skin deformer.\n *\n * @param {object} entry Indexed object entry.\n * @returns {boolean} True when the entry is a Skin deformer.\n */\nfunction isSkinDeformer(entry)\n{\n return entry?.className === \"Skin\" || entry?.fullName?.startsWith(\"Deformer::Skin\") || entry?.name === \"Skin\";\n}\n\n/**\n * Check whether an indexed FBX object is a Cluster deformer.\n *\n * @param {object} entry Indexed object entry.\n * @returns {boolean} True when the entry is a Cluster deformer.\n */\nfunction isClusterDeformer(entry)\n{\n return entry?.className === \"Cluster\" || entry?.fullName?.startsWith(\"SubDeformer::\") || entry?.name?.includes(\"Cluster\");\n}\n\nfunction hasControlPointInfluenceOverflow(records)\n{\n const controlPointInfluences = buildControlPointInfluences(records);\n for (const influences of controlPointInfluences.values())\n {\n if (influences.filter(influence => influence.weight > 0).length > 4)\n {\n return true;\n }\n }\n return false;\n}\n\nfunction collectBlendShapeFeatureWarnings(objectIndex, connections, warnings)\n{\n const channels = objectIndex.list\n .filter(entry => isBlendShapeChannel(entry));\n\n for (const channel of channels)\n {\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n addWarning(warnings, `fbx: BlendShapeChannel ${objectLabel(channel)} is skipped because in-between morph interpolation is not implemented.`);\n }\n }\n}\n\nfunction addWarning(warnings, message)\n{\n if (!warnings.includes(message))\n {\n warnings.push(message);\n }\n}\n\nfunction objectLabel(entry)\n{\n return JSON.stringify(entry?.name || entry?.fullName || entry?.key || \"\");\n}\n\n/**\n * Inspect raw bytes without normalized options.\n *\n * @param {Uint8Array} bytes FBX bytes.\n * @returns {object} Detected metadata.\n */\nexport function inspectBytes(bytes)\n{\n if (isBinaryFBX(bytes))\n {\n return inspectBinaryBytes(bytes);\n }\n\n const text = decodeAsciiPrefix(bytes, ASCII_PREFIX_LENGTH);\n const ascii = isAsciiFBXText(text);\n return {\n encoding: ascii ? \"ascii\" : \"\",\n version: ascii ? readAsciiVersion(text) : 0,\n signature: ascii ? \"FBX ASCII\" : \"\",\n rootNodeCount: ascii ? countAsciiRootNodes(text) : 0,\n rootNodeNames: ascii ? collectAsciiRootNames(text) : [],\n confidence: ascii ? 0.85 : 0\n };\n}\n\n/**\n * Test whether bytes look like FBX.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the input appears to be FBX.\n */\nexport function isFBX(input)\n{\n const bytes = toBytes(input);\n return isBinaryFBX(bytes) || isAsciiFBXText(decodeAsciiPrefix(bytes, ASCII_PREFIX_LENGTH));\n}\n\n/**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (ArrayBuffer.isView(value))\n {\n return { type: value.constructor.name, length: value.length };\n }\n if (Array.isArray(value))\n {\n return value.map(toJsonValue);\n }\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value))\n {\n output[key] = toJsonValue(entry);\n }\n return output;\n }\n return value;\n}\n\nfunction inspectBinaryBytes(bytes)\n{\n const version = readU32LE(bytes, 23);\n const headerSize = getBinaryNodeHeaderSize(version);\n const rootNodeNames = [];\n let rootNodeCount = 0;\n let offset = BINARY_HEADER_SIZE;\n\n while (offset + headerSize <= bytes.byteLength && !isNullRecord(bytes, offset, headerSize))\n {\n const header = readBinaryNodeHeader(bytes, offset, version);\n if (!header || header.endOffset <= offset || header.endOffset > bytes.byteLength)\n {\n break;\n }\n rootNodeNames.push(readString(bytes, header.nameOffset, header.nameLength));\n rootNodeCount++;\n offset = header.endOffset;\n }\n\n return {\n encoding: \"binary\",\n version,\n signature: \"Kaydara FBX Binary\",\n rootNodeCount,\n rootNodeNames,\n confidence: 1\n };\n}\n\nfunction parseBinaryDocument(bytes, metadata, values)\n{\n const nodes = [];\n const headerSize = getBinaryNodeHeaderSize(metadata.version);\n let offset = BINARY_HEADER_SIZE;\n let nodeCount = 0;\n\n while (offset + headerSize <= bytes.byteLength)\n {\n if (isNullRecord(bytes, offset, headerSize))\n {\n break;\n }\n\n const result = readBinaryNode(bytes, offset, metadata.version, values, 0);\n nodes.push(result.node);\n nodeCount += result.count;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n offset = result.offset;\n }\n\n const document = {\n ...metadata,\n payloadType: OUTPUT_FBX_JSON,\n nodes,\n nodeCount,\n rootNodeCount: nodes.length,\n rootNodeNames: nodes.map(node => node.name)\n };\n document.root = buildFbxRoot(document.nodes);\n return document;\n}\n\nfunction readBinaryNode(bytes, offset, version, values, depth)\n{\n if (depth > values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n\n const header = readBinaryNodeHeader(bytes, offset, version);\n if (!header)\n {\n throw new Error(`fbx: invalid node header at offset ${offset}`);\n }\n if (header.endOffset > bytes.byteLength)\n {\n throw new Error(`fbx: node ${header.name} extends beyond end of file`);\n }\n if (header.propertyCount > values.maxProperties)\n {\n throw new Error(`fbx: node ${header.name} exceeds maxProperties (${values.maxProperties})`);\n }\n\n let cursor = header.propertiesOffset;\n const properties = [];\n const propertyTypes = [];\n\n for (let i = 0; i < header.propertyCount; i++)\n {\n const result = readBinaryProperty(bytes, cursor, values);\n properties.push(result.value);\n propertyTypes.push(result.type);\n cursor = result.offset;\n }\n\n const propertyEnd = header.propertiesOffset + header.propertyListLength;\n if (cursor > propertyEnd)\n {\n throw new Error(`fbx: property list for node ${header.name} overflowed`);\n }\n cursor = propertyEnd;\n\n const children = [];\n let count = 1;\n const headerSize = getBinaryNodeHeaderSize(version);\n\n while (cursor + headerSize <= header.endOffset)\n {\n if (isNullRecord(bytes, cursor, headerSize))\n {\n cursor += headerSize;\n break;\n }\n if (cursor >= header.endOffset)\n {\n break;\n }\n\n const child = readBinaryNode(bytes, cursor, version, values, depth + 1);\n if (child.offset > header.endOffset)\n {\n throw new Error(`fbx: child node for ${header.name} overflowed`);\n }\n children.push(child.node);\n count += child.count;\n cursor = child.offset;\n }\n\n return {\n offset: header.endOffset,\n count,\n node: {\n name: header.name,\n properties,\n propertyTypes,\n children\n }\n };\n}\n\nfunction readBinaryNodeHeader(bytes, offset, version)\n{\n const large = version >= 7500;\n const headerSize = getBinaryNodeHeaderSize(version);\n if (offset + headerSize > bytes.byteLength)\n {\n return null;\n }\n\n let cursor = offset;\n const endOffset = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const propertyCount = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const propertyListLength = large ? readU64LEAsNumber(bytes, cursor) : readU32LE(bytes, cursor);\n cursor += large ? 8 : 4;\n const nameLength = bytes[cursor++];\n const nameOffset = cursor;\n\n if (endOffset === 0 && propertyCount === 0 && propertyListLength === 0 && nameLength === 0)\n {\n return null;\n }\n if (!Number.isSafeInteger(endOffset) || !Number.isSafeInteger(propertyCount) || !Number.isSafeInteger(propertyListLength))\n {\n throw new Error(\"fbx: 64-bit node offsets exceed JavaScript safe integer range\");\n }\n if (nameOffset + nameLength > bytes.byteLength)\n {\n throw new Error(`fbx: node name at offset ${offset} is truncated`);\n }\n\n return {\n endOffset,\n propertyCount,\n propertyListLength,\n nameLength,\n nameOffset,\n name: readString(bytes, nameOffset, nameLength),\n propertiesOffset: nameOffset + nameLength\n };\n}\n\nfunction readBinaryProperty(bytes, offset, values)\n{\n ensureRange(bytes, offset, 1, \"fbx: property type is truncated\");\n const type = String.fromCharCode(bytes[offset]);\n let cursor = offset + 1;\n\n switch (type)\n {\n case \"Y\":\n ensureRange(bytes, cursor, 2, \"fbx: int16 property is truncated\");\n return { type, value: readI16LE(bytes, cursor), offset: cursor + 2 };\n case \"C\":\n ensureRange(bytes, cursor, 1, \"fbx: bool property is truncated\");\n return { type, value: bytes[cursor] !== 0, offset: cursor + 1 };\n case \"I\":\n ensureRange(bytes, cursor, 4, \"fbx: int32 property is truncated\");\n return { type, value: readI32LE(bytes, cursor), offset: cursor + 4 };\n case \"F\":\n ensureRange(bytes, cursor, 4, \"fbx: float32 property is truncated\");\n return { type, value: readF32LE(bytes, cursor), offset: cursor + 4 };\n case \"D\":\n ensureRange(bytes, cursor, 8, \"fbx: float64 property is truncated\");\n return { type, value: readF64LE(bytes, cursor), offset: cursor + 8 };\n case \"L\":\n ensureRange(bytes, cursor, 8, \"fbx: int64 property is truncated\");\n return { type, value: readI64LEValue(bytes, cursor), offset: cursor + 8 };\n case \"R\":\n return readBinaryBlobProperty(bytes, cursor, type, \"bytes\");\n case \"S\":\n return readBinaryBlobProperty(bytes, cursor, type, \"string\");\n case \"f\":\n case \"d\":\n case \"i\":\n case \"l\":\n case \"b\":\n case \"c\":\n return readBinaryArrayProperty(bytes, cursor, type, values);\n default:\n throw new Error(`fbx: unsupported property type ${JSON.stringify(type)} at offset ${offset}`);\n }\n}\n\nfunction readBinaryBlobProperty(bytes, offset, type, kind)\n{\n ensureRange(bytes, offset, 4, `fbx: ${kind} property length is truncated`);\n const length = readU32LE(bytes, offset);\n const dataOffset = offset + 4;\n const endOffset = dataOffset + length;\n ensureRange(bytes, dataOffset, length, `fbx: ${kind} property is truncated`);\n\n return {\n type,\n value: kind === \"string\" ? readString(bytes, dataOffset, length) : bytes.subarray(dataOffset, endOffset),\n offset: endOffset\n };\n}\n\nfunction readBinaryArrayProperty(bytes, offset, type, values)\n{\n ensureRange(bytes, offset, 12, \"fbx: array property header is truncated\");\n const length = readU32LE(bytes, offset);\n const encoding = readU32LE(bytes, offset + 4);\n const byteLength = readU32LE(bytes, offset + 8);\n const dataOffset = offset + 12;\n const endOffset = dataOffset + byteLength;\n ensureRange(bytes, dataOffset, byteLength, \"fbx: array property is truncated\");\n if (length > values.maxArrayLength)\n {\n throw new Error(`fbx: array property exceeds maxArrayLength (${values.maxArrayLength})`);\n }\n\n if (encoding === 0)\n {\n return {\n type,\n value: readUncompressedArray(bytes, dataOffset, type, length, byteLength),\n offset: endOffset\n };\n }\n\n if (encoding === 1)\n {\n const expectedByteLength = getArrayElementSize(type) * length;\n const expanded = inflateZlib(bytes.subarray(dataOffset, endOffset), expectedByteLength);\n return {\n type,\n value: readUncompressedArray(expanded, 0, type, length, expectedByteLength),\n offset: endOffset\n };\n }\n\n return {\n type,\n value: {\n arrayType: type,\n length,\n encoding,\n byteOffset: dataOffset,\n byteLength,\n compressed: true\n },\n offset: endOffset\n };\n}\n\nfunction readUncompressedArray(bytes, offset, type, length, byteLength)\n{\n const expected = getArrayElementSize(type) * length;\n if (byteLength < expected)\n {\n throw new Error(`fbx: array property ${type} is truncated`);\n }\n\n if (type === \"f\")\n {\n const value = new Float32Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readF32LE(bytes, offset + i * 4);\n }\n return value;\n }\n if (type === \"d\")\n {\n const value = new Float64Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readF64LE(bytes, offset + i * 8);\n }\n return value;\n }\n if (type === \"i\")\n {\n const value = new Int32Array(length);\n for (let i = 0; i < length; i++)\n {\n value[i] = readI32LE(bytes, offset + i * 4);\n }\n return value;\n }\n if (type === \"l\")\n {\n const value = [];\n for (let i = 0; i < length; i++)\n {\n value.push(readI64LEValue(bytes, offset + i * 8));\n }\n return value;\n }\n\n const value = [];\n for (let i = 0; i < length; i++)\n {\n value.push(bytes[offset + i] !== 0);\n }\n return value;\n}\n\nfunction inflateZlib(source, expectedLength)\n{\n if (source.byteLength < 6)\n {\n throw new Error(\"fbx: compressed array zlib stream is truncated\");\n }\n\n const\n cmf = source[0],\n flg = source[1];\n\n if ((cmf & 0x0f) !== 8 || (cmf >> 4) > 7 || ((cmf << 8) + flg) % 31 !== 0)\n {\n throw new Error(\"fbx: compressed array has invalid zlib header\");\n }\n if (flg & 0x20)\n {\n throw new Error(\"fbx: compressed array uses a preset zlib dictionary\");\n }\n\n const\n expectedAdler = readU32BE(source, source.byteLength - 4),\n output = inflateDeflate(source.subarray(2, source.byteLength - 4), expectedLength),\n actualAdler = adler32(output);\n\n if (actualAdler !== expectedAdler)\n {\n throw new Error(\"fbx: compressed array zlib checksum mismatch\");\n }\n\n return output;\n}\n\nfunction inflateDeflate(source, expectedLength)\n{\n const\n reader = new DeflateBitReader(source),\n state = {\n output: new Uint8Array(expectedLength),\n offset: 0\n };\n\n let finalBlock = false;\n while (!finalBlock)\n {\n finalBlock = reader.readBits(1) === 1;\n const blockType = reader.readBits(2);\n if (blockType === 0)\n {\n inflateStoredBlock(reader, state);\n }\n else if (blockType === 1)\n {\n const tables = getFixedDeflateTables();\n inflateHuffmanBlock(reader, state, tables.literalLength, tables.distance);\n }\n else if (blockType === 2)\n {\n const tables = readDynamicDeflateTables(reader);\n inflateHuffmanBlock(reader, state, tables.literalLength, tables.distance);\n }\n else\n {\n throw new Error(\"fbx: compressed array uses reserved deflate block type\");\n }\n }\n\n if (state.offset !== expectedLength)\n {\n throw new Error(\"fbx: compressed array decoded to unexpected length\");\n }\n\n return state.output;\n}\n\nfunction inflateStoredBlock(reader, state)\n{\n reader.alignByte();\n const\n length = reader.readAlignedU16LE(),\n inverseLength = reader.readAlignedU16LE();\n\n if (((length ^ 0xffff) & 0xffff) !== inverseLength)\n {\n throw new Error(\"fbx: compressed array stored block length mismatch\");\n }\n\n for (let i = 0; i < length; i++)\n {\n writeInflatedByte(state, reader.readAlignedByte());\n }\n}\n\nfunction inflateHuffmanBlock(reader, state, literalLengthTable, distanceTable)\n{\n for (;;)\n {\n const symbol = literalLengthTable.decode(reader);\n if (symbol < 256)\n {\n writeInflatedByte(state, symbol);\n continue;\n }\n if (symbol === 256)\n {\n return;\n }\n\n const lengthIndex = symbol - 257;\n if (lengthIndex < 0 || lengthIndex >= DEFLATE_LENGTH_BASE.length)\n {\n throw new Error(\"fbx: compressed array has invalid deflate length symbol\");\n }\n\n const\n length = DEFLATE_LENGTH_BASE[lengthIndex] + reader.readBits(DEFLATE_LENGTH_EXTRA[lengthIndex]),\n distanceSymbol = distanceTable.decode(reader);\n\n if (distanceSymbol < 0 || distanceSymbol >= DEFLATE_DISTANCE_BASE.length)\n {\n throw new Error(\"fbx: compressed array has invalid deflate distance symbol\");\n }\n\n const distance = DEFLATE_DISTANCE_BASE[distanceSymbol] + reader.readBits(DEFLATE_DISTANCE_EXTRA[distanceSymbol]);\n copyInflatedBytes(state, distance, length);\n }\n}\n\nfunction getFixedDeflateTables()\n{\n if (!fixedDeflateTables)\n {\n const literalLengths = new Array(288).fill(0);\n for (let symbol = 0; symbol <= 143; symbol++)\n {\n literalLengths[symbol] = 8;\n }\n for (let symbol = 144; symbol <= 255; symbol++)\n {\n literalLengths[symbol] = 9;\n }\n for (let symbol = 256; symbol <= 279; symbol++)\n {\n literalLengths[symbol] = 7;\n }\n for (let symbol = 280; symbol <= 287; symbol++)\n {\n literalLengths[symbol] = 8;\n }\n\n fixedDeflateTables = {\n literalLength: new DeflateHuffmanTable(literalLengths),\n distance: new DeflateHuffmanTable(new Array(32).fill(5))\n };\n }\n return fixedDeflateTables;\n}\n\nfunction readDynamicDeflateTables(reader)\n{\n const\n literalLengthCount = reader.readBits(5) + 257,\n distanceCount = reader.readBits(5) + 1,\n codeLengthCount = reader.readBits(4) + 4,\n codeLengthLengths = new Array(19).fill(0);\n\n for (let i = 0; i < codeLengthCount; i++)\n {\n codeLengthLengths[DEFLATE_CODE_LENGTH_ORDER[i]] = reader.readBits(3);\n }\n\n const\n codeLengthTable = new DeflateHuffmanTable(codeLengthLengths),\n totalCount = literalLengthCount + distanceCount,\n lengths = [];\n\n while (lengths.length < totalCount)\n {\n const symbol = codeLengthTable.decode(reader);\n if (symbol <= 15)\n {\n lengths.push(symbol);\n }\n else if (symbol === 16)\n {\n if (!lengths.length)\n {\n throw new Error(\"fbx: compressed array repeats missing deflate code length\");\n }\n repeatCodeLength(lengths, lengths[lengths.length - 1], reader.readBits(2) + 3, totalCount);\n }\n else if (symbol === 17)\n {\n repeatCodeLength(lengths, 0, reader.readBits(3) + 3, totalCount);\n }\n else if (symbol === 18)\n {\n repeatCodeLength(lengths, 0, reader.readBits(7) + 11, totalCount);\n }\n else\n {\n throw new Error(\"fbx: compressed array has invalid code length symbol\");\n }\n }\n\n return {\n literalLength: new DeflateHuffmanTable(lengths.slice(0, literalLengthCount)),\n distance: new DeflateHuffmanTable(lengths.slice(literalLengthCount))\n };\n}\n\nfunction repeatCodeLength(lengths, value, count, totalCount)\n{\n if (lengths.length + count > totalCount)\n {\n throw new Error(\"fbx: compressed array code lengths overflow\");\n }\n for (let i = 0; i < count; i++)\n {\n lengths.push(value);\n }\n}\n\nfunction writeInflatedByte(state, value)\n{\n if (state.offset >= state.output.byteLength)\n {\n throw new Error(\"fbx: compressed array decoded past expected length\");\n }\n state.output[state.offset++] = value & 0xff;\n}\n\nfunction copyInflatedBytes(state, distance, length)\n{\n if (distance <= 0 || distance > state.offset)\n {\n throw new Error(\"fbx: compressed array has invalid deflate distance\");\n }\n for (let i = 0; i < length; i++)\n {\n writeInflatedByte(state, state.output[state.offset - distance]);\n }\n}\n\nfunction adler32(bytes)\n{\n let\n a = 1,\n b = 0;\n\n for (const byte of bytes)\n {\n a += byte;\n b += a;\n a %= ADLER32_MOD;\n b %= ADLER32_MOD;\n }\n\n return (((b << 16) >>> 0) | a) >>> 0;\n}\n\n/**\n * Bit reader over a zlib/deflate stream used to inflate compressed FBX\n * property arrays.\n */\nclass DeflateBitReader\n{\n constructor(bytes)\n {\n this.bytes = bytes;\n this.byteOffset = 0;\n this.bitBuffer = 0;\n this.bitCount = 0;\n }\n\n readBits(count)\n {\n let\n value = 0,\n shift = 0,\n remaining = count;\n\n while (remaining > 0)\n {\n if (this.bitCount === 0)\n {\n if (this.byteOffset >= this.bytes.byteLength)\n {\n throw new Error(\"fbx: compressed array deflate stream is truncated\");\n }\n this.bitBuffer = this.bytes[this.byteOffset++];\n this.bitCount = 8;\n }\n\n const take = Math.min(remaining, this.bitCount);\n value |= (this.bitBuffer & ((1 << take) - 1)) << shift;\n this.bitBuffer >>>= take;\n this.bitCount -= take;\n shift += take;\n remaining -= take;\n }\n\n return value;\n }\n\n alignByte()\n {\n this.bitBuffer = 0;\n this.bitCount = 0;\n }\n\n readAlignedByte()\n {\n if (this.byteOffset >= this.bytes.byteLength)\n {\n throw new Error(\"fbx: compressed array stored block is truncated\");\n }\n return this.bytes[this.byteOffset++];\n }\n\n readAlignedU16LE()\n {\n const\n low = this.readAlignedByte(),\n high = this.readAlignedByte();\n return low | (high << 8);\n }\n}\n\n/**\n * Canonical Huffman decode table built from deflate code lengths for\n * inflating compressed FBX property arrays.\n */\nclass DeflateHuffmanTable\n{\n constructor(lengths)\n {\n this.tables = [];\n this.maxBits = 0;\n\n const counts = new Array(16).fill(0);\n for (const length of lengths)\n {\n if (length < 0 || length > 15)\n {\n throw new Error(\"fbx: compressed array has invalid deflate code length\");\n }\n if (length)\n {\n counts[length]++;\n this.maxBits = Math.max(this.maxBits, length);\n }\n }\n\n let code = 0;\n const nextCodes = new Array(16).fill(0);\n for (let bits = 1; bits <= 15; bits++)\n {\n code = (code + counts[bits - 1]) << 1;\n nextCodes[bits] = code;\n }\n\n for (let symbol = 0; symbol < lengths.length; symbol++)\n {\n const length = lengths[symbol];\n if (!length)\n {\n continue;\n }\n\n const reversed = reverseBits(nextCodes[length], length);\n nextCodes[length]++;\n if (!this.tables[length])\n {\n this.tables[length] = [];\n }\n this.tables[length][reversed] = symbol;\n }\n }\n\n decode(reader)\n {\n let code = 0;\n for (let length = 1; length <= this.maxBits; length++)\n {\n code |= reader.readBits(1) << (length - 1);\n const table = this.tables[length];\n if (table && table[code] !== undefined)\n {\n return table[code];\n }\n }\n\n throw new Error(\"fbx: compressed array has invalid deflate code\");\n }\n}\n\nfunction reverseBits(value, length)\n{\n let reversed = 0;\n for (let i = 0; i < length; i++)\n {\n reversed = (reversed << 1) | (value & 1);\n value >>>= 1;\n }\n return reversed;\n}\n\nfunction parseAsciiDocument(bytes, metadata, values)\n{\n const text = TEXT_DECODER.decode(bytes);\n const nodes = [];\n const stack = [ { children: nodes } ];\n let nodeCount = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n\n if (line.startsWith(\"}\"))\n {\n if (stack.length > 1)\n {\n stack.pop();\n }\n continue;\n }\n\n const node = parseAsciiLine(line, values);\n if (!node)\n {\n continue;\n }\n\n stack[stack.length - 1].children.push(node);\n nodeCount++;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n if (node.opensBlock)\n {\n if (stack.length >= values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n delete node.opensBlock;\n stack.push(node);\n }\n else\n {\n delete node.opensBlock;\n }\n }\n\n const document = {\n ...metadata,\n payloadType: OUTPUT_FBX_JSON,\n nodes,\n nodeCount,\n rootNodeCount: nodes.length,\n rootNodeNames: nodes.map(node => node.name)\n };\n document.root = buildFbxRoot(document.nodes);\n return document;\n}\n\nfunction readBinaryTargetNodes(bytes, metadata, values, targetNames)\n{\n const nodes = [];\n const headerSize = getBinaryNodeHeaderSize(metadata.version);\n let offset = BINARY_HEADER_SIZE;\n let nodeCount = 0;\n\n while (offset + headerSize <= bytes.byteLength)\n {\n if (isNullRecord(bytes, offset, headerSize))\n {\n break;\n }\n\n const header = readBinaryNodeHeader(bytes, offset, metadata.version);\n if (!header)\n {\n throw new Error(`fbx: invalid root node header at offset ${offset}`);\n }\n if (header.endOffset <= offset || header.endOffset > bytes.byteLength)\n {\n throw new Error(`fbx: invalid root node ${header.name}`);\n }\n\n if (targetNames.has(header.name))\n {\n const result = readBinaryNode(bytes, offset, metadata.version, values, 0);\n nodes.push(result.node);\n nodeCount += result.count;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n }\n\n offset = header.endOffset;\n }\n\n return nodes;\n}\n\nfunction readAsciiTargetNodes(bytes, values, targetNames)\n{\n const text = TEXT_DECODER.decode(bytes);\n const nodes = [];\n const stack = [ { children: nodes, collecting: true } ];\n let nodeCount = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n\n if (line.startsWith(\"}\"))\n {\n if (stack.length > 1)\n {\n stack.pop();\n }\n continue;\n }\n\n const node = parseAsciiLine(line, values);\n if (!node)\n {\n continue;\n }\n\n nodeCount++;\n if (nodeCount > values.maxNodes)\n {\n throw new Error(`fbx: node count exceeds maxNodes (${values.maxNodes})`);\n }\n\n const isRoot = stack.length === 1;\n const parent = stack[stack.length - 1];\n const collecting = isRoot ? targetNames.has(node.name) : parent.collecting;\n\n if (collecting)\n {\n parent.children.push(node);\n }\n\n if (node.opensBlock)\n {\n if (stack.length >= values.maxDepth)\n {\n throw new Error(`fbx: node depth exceeds maxDepth (${values.maxDepth})`);\n }\n delete node.opensBlock;\n stack.push(collecting ? { children: node.children, collecting: true } : { children: [], collecting: false });\n }\n else\n {\n delete node.opensBlock;\n }\n }\n\n return nodes;\n}\n\nfunction buildGr2FromFbxNodes(nodes, values)\n{\n const objectsNode = findFirstNode(nodes, \"Objects\");\n if (!objectsNode)\n {\n throw new Error(\"fbx: GR2 output requires an Objects node\");\n }\n\n const\n objectIndex = indexObjectNodes(objectsNode),\n connections = readConnections(findFirstNode(nodes, \"Connections\")),\n sceneTransform = buildSceneTransform(findFirstNode(nodes, \"GlobalSettings\")),\n modelWorldCache = new Map(),\n skeletonContext = buildSkeletonContext(objectIndex, connections, sceneTransform, modelWorldCache),\n meshes = [];\n\n for (const geometry of objectIndex.list.filter(entry => entry.nodeName === \"Geometry\" && (!entry.className || entry.className === \"Mesh\")))\n {\n const owners = connectedParentObjects(geometry, objectIndex, connections, \"Model\");\n for (const owner of owners.length ? owners : [ null ])\n {\n meshes.push(buildGr2MeshFromGeometry(geometry, owner, objectIndex, connections, sceneTransform, modelWorldCache, skeletonContext, values));\n }\n }\n\n if (!meshes.length)\n {\n throw new Error(\"fbx: no supported Geometry mesh nodes found\");\n }\n\n return {\n grannyFileFormatRevision: 0,\n grannyFileSource: values.source || \"memory\",\n meshes,\n models: buildGr2Models(skeletonContext.skeletons, meshes),\n skeletons: skeletonContext.skeletons.map(skeleton => skeleton.cmfSkeleton),\n animations: [],\n cmfAnimations: readCmfAnimations(objectIndex, connections, meshes, skeletonContext, sceneTransform)\n };\n}\n\nfunction buildGr2MeshFromGeometry(geometry, owner, objectIndex, connections, sceneTransform, modelWorldCache, skeletonContext, values)\n{\n const\n controlPoints = requireChildArray(geometry.node, \"Vertices\"),\n polygonVertexIndex = requireChildArray(geometry.node, \"PolygonVertexIndex\");\n\n if (controlPoints.length % 3 !== 0)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has invalid Vertices length`);\n }\n\n const\n decoded = decodePolygonCorners(controlPoints, polygonVertexIndex, geometry),\n meshTransform = buildMeshGeometryToWorld(owner, objectIndex, connections, modelWorldCache),\n positions = transformPoints(decoded.positions, meshTransform, sceneTransform),\n normal = transformDirections(readLayerElementChannel(geometry.node, \"LayerElementNormal\", 0, [ \"Normals\" ], [ \"NormalsIndex\", \"NormalIndex\" ], 3, decoded, \"Normals\"), meshTransform, sceneTransform, true),\n explicitTangent = transformDirections(readLayerElementChannel(geometry.node, \"LayerElementTangent\", 0, [ \"Tangents\" ], [ \"TangentsIndex\", \"TangentIndex\" ], 3, decoded, \"Tangents\"), meshTransform, sceneTransform, true),\n explicitBinormal = transformDirections(readLayerElementChannel(geometry.node, \"LayerElementBinormal\", 0, [ \"Binormals\" ], [ \"BinormalsIndex\", \"BinormalIndex\" ], 3, decoded, \"Binormals\"), meshTransform, sceneTransform, true),\n texcoord0 = readUvLayerElementChannel(geometry.node, 0, decoded, values),\n texcoord1 = readUvLayerElementChannel(geometry.node, 1, decoded, values),\n color0 = readLayerElementChannel(geometry.node, \"LayerElementColor\", 0, [ \"Colors\" ], [ \"ColorIndex\", \"ColorsIndex\", \"ColorIndices\" ], 4, decoded, \"Colors\"),\n polygonTriangles = triangulatePolygonList(decoded.polygons, decoded.positions),\n triangleFaces = flattenPolygonTriangles(polygonTriangles),\n tangent = explicitTangent.length ? explicitTangent : generateBaseTangents(positions, normal, texcoord0, triangleFaces),\n binormal = explicitBinormal.length ? explicitBinormal : generateBaseBinormals(normal, tangent),\n materialNames = readPolygonMaterialNames(geometry, owner, objectIndex, connections, decoded.polygons.length),\n indices = buildIndexGroups(polygonTriangles, materialNames),\n skin = readSkinning(geometry, objectIndex, connections, decoded, positions, sceneTransform, modelWorldCache, skeletonContext),\n morphTargets = readMorphTargets(\n geometry,\n owner,\n objectIndex,\n connections,\n decoded,\n controlPoints,\n meshTransform,\n sceneTransform,\n positions,\n triangleFaces,\n { normal, tangent, binormal, texcoord0 }\n ),\n bounds = computeBounds(positions);\n\n return {\n name: meshNameFromFbx(geometry, owner),\n morphTargets,\n minBounds: bounds.minBounds,\n maxBounds: bounds.maxBounds,\n boneBindings: skin.boneBindings,\n vertex: createGr2Vertex(positions, { tangent, normal, texcoord0, texcoord1, binormal, color0, blendIndice: skin.blendIndice, blendWeight: skin.blendWeight }),\n indices,\n skeleton: skin.skeleton\n };\n}\n\nfunction readSkinning(geometry, objectIndex, connections, decoded, positions, sceneTransform, modelWorldCache, skeletonContext)\n{\n const skin = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\")\n .find(isSkinDeformer);\n\n if (!skin)\n {\n return emptySkinning();\n }\n\n const clusters = connectedChildObjects(skin, objectIndex, connections, \"Deformer\")\n .filter(isClusterDeformer);\n\n const clusterRecords = buildSkinClusterRecords(clusters, objectIndex, connections);\n if (!clusterRecords.length)\n {\n return emptySkinning();\n }\n\n const\n boneKeys = clusterRecords.map(record => record.boneKey),\n controlPointInfluences = buildControlPointInfluences(clusterRecords),\n outputInfluences = decoded.corners.map(corner => normalizeInfluences(controlPointInfluences.get(corner.controlPointIndex) || [])),\n blendIndice = [],\n blendWeight = [],\n boneBindings = buildBoneBindingsFromInfluences(clusterRecords, outputInfluences, positions, objectIndex, connections, sceneTransform, modelWorldCache),\n skeleton = findSkinSkeletonIndex(boneKeys, skeletonContext);\n\n for (const influences of outputInfluences)\n {\n for (let i = 0; i < 4; i++)\n {\n blendIndice.push(influences[i]?.boneIndex ?? 0);\n }\n for (let i = 0; i < 4; i++)\n {\n blendWeight.push(influences[i]?.weight ?? 0);\n }\n }\n\n return { boneBindings, blendIndice, blendWeight, boneKeys, skeleton };\n}\n\nfunction emptySkinning()\n{\n return { boneBindings: [], blendIndice: [], blendWeight: [], boneKeys: [], skeleton: null };\n}\n\n/**\n * Generate base mesh tangents when normal and UV channels are available.\n *\n * @param {number[]} positions Expanded position channel.\n * @param {number[]} normal Expanded normal channel.\n * @param {number[]} texcoord0 Expanded primary UV channel.\n * @param {number[]} triangleFaces Triangulated index buffer.\n * @returns {number[]} Expanded tangent channel.\n */\nfunction generateBaseTangents(positions, normal, texcoord0, triangleFaces)\n{\n if (!hasArrayValues(normal) || !hasArrayValues(texcoord0))\n {\n return [];\n }\n return cleanNumericArray(generateTangents(positions, normal, texcoord0, triangleFaces));\n}\n\n/**\n * Generate base mesh binormals when normals and tangents are available.\n *\n * @param {number[]} normal Expanded normal channel.\n * @param {number[]} tangent Expanded tangent channel.\n * @returns {number[]} Expanded binormal channel.\n */\nfunction generateBaseBinormals(normal, tangent)\n{\n if (!hasArrayValues(normal) || !hasArrayValues(tangent))\n {\n return [];\n }\n return cleanNumericArray(generateBiNormals(normal, tangent));\n}\n\nfunction readMorphTargets(geometry, owner, objectIndex, connections, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex)\n{\n const blendShapes = connectedChildObjects(geometry, objectIndex, connections, \"Deformer\")\n .filter(deformer => deformer.className === \"BlendShape\" || deformer.fullName.startsWith(\"Deformer::BlendShape\") || deformer.name.includes(\"BlendShape\"));\n\n const targets = [];\n for (const blendShape of blendShapes)\n {\n const channels = connectedChildObjects(blendShape, objectIndex, connections, \"Deformer\")\n .filter(deformer => deformer.className === \"BlendShapeChannel\" || deformer.fullName.startsWith(\"SubDeformer::\") || deformer.name.includes(\"BlendShapeChannel\"));\n\n for (const channel of channels)\n {\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n continue;\n }\n\n for (const shape of shapes)\n {\n const target = buildMorphTarget(shape, channel, geometry, owner, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex);\n if (target)\n {\n targets.push(target);\n }\n }\n }\n }\n return targets;\n}\n\nfunction buildMorphTarget(shape, channel, geometry, owner, decoded, controlPoints, meshTransform, sceneTransform, basePositions, triangleFaces, baseVertex)\n{\n const\n indexes = readChildArray(shape.node, \"Indexes\") || [],\n vertices = readChildArray(shape.node, \"Vertices\") || [];\n\n if (!indexes.length || !vertices.length)\n {\n return null;\n }\n if (vertices.length % 3 !== 0)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has invalid Vertices length`);\n }\n if (vertices.length / 3 < indexes.length)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has fewer Vertices than Indexes`);\n }\n\n const controlTargetPositions = controlPoints.slice();\n for (let i = 0; i < indexes.length; i++)\n {\n const\n controlPointIndex = integerNumber(indexes[i], \"Indexes\"),\n targetOffset = i * 3,\n controlOffset = controlPointIndex * 3;\n\n if (controlOffset < 0 || controlOffset + 2 >= controlTargetPositions.length)\n {\n throw new Error(`fbx: morph target ${JSON.stringify(shape.name || shape.key)} has Indexes value out of range`);\n }\n\n controlTargetPositions[controlOffset] = finiteNumber(controlPoints[controlOffset], \"Vertices\") + finiteNumber(vertices[targetOffset], \"Vertices\");\n controlTargetPositions[controlOffset + 1] = finiteNumber(controlPoints[controlOffset + 1], \"Vertices\") + finiteNumber(vertices[targetOffset + 1], \"Vertices\");\n controlTargetPositions[controlOffset + 2] = finiteNumber(controlPoints[controlOffset + 2], \"Vertices\") + finiteNumber(vertices[targetOffset + 2], \"Vertices\");\n }\n\n const expanded = [];\n for (const corner of decoded.corners)\n {\n const source = corner.controlPointIndex * 3;\n expanded.push(\n controlTargetPositions[source],\n controlTargetPositions[source + 1],\n controlTargetPositions[source + 2]\n );\n }\n\n const\n positions = transformPoints(expanded, meshTransform, sceneTransform),\n name = shape.name || channel.name || \"morph_target\",\n vertexChannels = buildMorphTargetVertexChannels(name, geometry, owner, decoded, meshTransform, sceneTransform, positions, triangleFaces, baseVertex);\n\n return {\n name,\n dataIsDeltas: false,\n maxDisplacement: computeMaxDisplacement(basePositions, positions),\n vertex: createGr2Vertex(positions, vertexChannels)\n };\n}\n\nfunction buildMorphTargetVertexChannels(name, geometry, owner, decoded, meshTransform, sceneTransform, positions, triangleFaces, baseVertex)\n{\n let normal = readMorphTargetCustomNormals(name, geometry, owner, decoded, meshTransform, sceneTransform);\n if (!normal.length && hasArrayValues(baseVertex.normal))\n {\n normal = cleanNumericArray(generateNormals(positions, triangleFaces));\n }\n\n const tangent = normal.length && hasArrayValues(baseVertex.tangent) && hasArrayValues(baseVertex.texcoord0)\n ? cleanNumericArray(generateTangents(positions, normal, baseVertex.texcoord0, triangleFaces))\n : [];\n const binormal = normal.length && tangent.length && hasArrayValues(baseVertex.binormal)\n ? cleanNumericArray(generateBiNormals(normal, tangent))\n : [];\n\n return { normal, tangent, binormal };\n}\n\nfunction readMorphTargetCustomNormals(name, geometry, owner, decoded, meshTransform, sceneTransform)\n{\n const encoded = readMorphTargetCustomNormalString(name, owner, geometry);\n if (!encoded)\n {\n return [];\n }\n\n return transformDirections(\n decodeBase64Float32Vector3Array(encoded, decoded.corners.length, `morph target custom normals ${JSON.stringify(name)}`),\n meshTransform,\n sceneTransform,\n true\n );\n}\n\nfunction readMorphTargetCustomNormalString(name, owner, geometry)\n{\n const propertyName = `bsNormals_${name}`;\n for (const entry of [ owner, geometry ])\n {\n const value = readProperties70(entry?.node).properties[propertyName]?.value;\n if (typeof value === \"string\")\n {\n return value;\n }\n }\n return \"\";\n}\n\nfunction decodeBase64Float32Vector3Array(encoded, vertexCount, feature)\n{\n const\n bytes = decodeBase64Bytes(encoded, feature),\n expectedByteLength = vertexCount * 3 * 4;\n\n if (bytes.byteLength !== expectedByteLength)\n {\n throw new Error(`fbx: ${feature} byte length ${bytes.byteLength} does not match expected ${expectedByteLength}`);\n }\n\n const\n view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\n values = [];\n\n for (let offset = 0; offset < bytes.byteLength; offset += 4)\n {\n values.push(finiteNumber(view.getFloat32(offset, true), feature));\n }\n return values;\n}\n\nfunction decodeBase64Bytes(encoded, feature)\n{\n const bytes = [];\n let buffer = 0, bits = 0;\n\n for (const char of String(encoded))\n {\n if (/\\s/u.test(char))\n {\n continue;\n }\n if (char === \"=\")\n {\n break;\n }\n\n const value = BASE64_ALPHABET.indexOf(char);\n if (value === -1)\n {\n throw new Error(`fbx: ${feature} contains invalid base64 data`);\n }\n\n buffer = (buffer << 6) | value;\n bits += 6;\n if (bits >= 8)\n {\n bits -= 8;\n bytes.push((buffer >> bits) & 0xff);\n }\n }\n\n return Uint8Array.from(bytes);\n}\n\nfunction computeMaxDisplacement(basePositions, targetPositions)\n{\n let maxDisplacement = 0;\n for (let i = 0; i < Math.min(basePositions.length, targetPositions.length); i += 3)\n {\n maxDisplacement = Math.max(maxDisplacement, Math.hypot(\n targetPositions[i] - basePositions[i],\n targetPositions[i + 1] - basePositions[i + 1],\n targetPositions[i + 2] - basePositions[i + 2]\n ));\n }\n return cleanFloat(maxDisplacement);\n}\n\nfunction readCmfAnimations(objectIndex, connections, meshes, skeletonContext, sceneTransform)\n{\n const\n morphTargetNames = buildMorphTargetNameSet(meshes),\n boneTargets = buildCmfBoneTargetMap(skeletonContext);\n\n const animations = [];\n for (const stack of objectIndex.list.filter(entry => entry.nodeName === \"AnimationStack\"))\n {\n const animation = readCmfAnimation(stack, objectIndex, connections, morphTargetNames, boneTargets, sceneTransform);\n if (animation)\n {\n animations.push(animation);\n }\n }\n return animations;\n}\n\nfunction buildMorphTargetNameSet(meshes)\n{\n const names = new Set();\n for (const mesh of meshes)\n {\n for (const target of mesh.morphTargets ?? [])\n {\n if (target.name)\n {\n names.add(target.name);\n }\n }\n }\n return names;\n}\n\nfunction buildCmfBoneTargetMap(skeletonContext)\n{\n const targets = new Map();\n for (const skeleton of skeletonContext.skeletons)\n {\n for (let i = 0; i < skeleton.boneKeys.length; i++)\n {\n targets.set(skeleton.boneKeys[i], {\n name: skeleton.cmfSkeleton.bones[i] || `bone_${i}`,\n isRoot: skeleton.cmfSkeleton.parents[i] === 0xffffffff\n });\n }\n }\n return targets;\n}\n\nfunction readCmfAnimation(stack, objectIndex, connections, morphTargetNames, boneTargets, sceneTransform)\n{\n const\n layers = connectedChildObjects(stack, objectIndex, connections, \"AnimationLayer\"),\n curveNodeParents = layers.length ? layers : [ stack ],\n curveNodes = uniqueEntries(curveNodeParents.flatMap(parent => connectedChildObjects(parent, objectIndex, connections, \"AnimationCurveNode\"))),\n records = [];\n\n for (const curveNode of curveNodes)\n {\n records.push(...readMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames));\n records.push(...readRootPropertyMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames, boneTargets));\n\n const boneRecord = readBoneAnimationRecord(curveNode, objectIndex, connections, boneTargets, sceneTransform);\n if (boneRecord)\n {\n records.push(boneRecord);\n }\n }\n\n if (!records.length)\n {\n return null;\n }\n\n const stackTimeSpan = readAnimationStackTimeSpan(stack, records);\n\n const\n channels = [],\n curves = [];\n let duration = 0;\n\n for (const record of records)\n {\n const\n knots = record.curve.ticks.map(tick => cleanFloat((tick - stackTimeSpan.startTick) / FBX_TICKS_PER_SECOND)),\n values = record.curve.values.map(cleanFloat),\n curveIndex = curves.length;\n\n if (values.length !== knots.length * record.valueDimension)\n {\n throw new Error(`fbx: animation curve for ${JSON.stringify(record.target)} has mismatched value dimension`);\n }\n\n for (const knot of knots)\n {\n duration = Math.max(duration, knot);\n }\n curves.push({\n valueDimension: record.valueDimension,\n interpolation: \"Linear\",\n knotType: \"Float32\",\n valueType: \"Float32\",\n knotCount: knots.length,\n knots: packFloat32Values(knots),\n values: packFloat32Values(values)\n });\n channels.push({\n target: record.target,\n targetType: record.targetType,\n curveIndex\n });\n }\n\n return {\n name: stack.name || \"fbx_animation\",\n channels,\n curves,\n duration: cleanFloat(stackTimeSpan.duration ?? duration)\n };\n}\n\nfunction readAnimationStackTimeSpan(stack, records)\n{\n const\n properties = readProperties70(stack.node).properties,\n start = propertyNumber(properties, \"LocalStart\", propertyNumber(properties, \"ReferenceStart\", null)),\n stop = propertyNumber(properties, \"LocalStop\", propertyNumber(properties, \"ReferenceStop\", null));\n\n if (start !== null && stop !== null && stop >= start)\n {\n return {\n startTick: start,\n duration: (stop - start) / FBX_TICKS_PER_SECOND\n };\n }\n\n let startTick = Infinity;\n for (const record of records)\n {\n for (const tick of record.curve.ticks)\n {\n startTick = Math.min(startTick, tick);\n }\n }\n return {\n startTick,\n duration: null\n };\n}\n\nfunction readMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames)\n{\n const\n targets = readMorphAnimationTargets(curveNode, objectIndex, connections, morphTargetNames),\n curve = readMorphAnimationCurve(curveNode, objectIndex, connections);\n\n if (!targets.length || !curve)\n {\n return [];\n }\n\n return targets.map(target => ({\n target,\n targetType: \"MorphTarget\",\n valueDimension: 1,\n curve\n }));\n}\n\nfunction readRootPropertyMorphAnimationRecords(curveNode, objectIndex, connections, morphTargetNames, boneTargets)\n{\n const targetConnection = connections.list.find(connection =>\n connection.relation === \"OP\" &&\n connection.childKey === curveNode.key &&\n !isBoneAnimationProperty(connection.property) &&\n boneTargets.get(connection.parentKey)?.isRoot &&\n isBoneModel(objectIndex.byId[connection.parentKey]) &&\n isUserDefinedNumericProperty(objectIndex.byId[connection.parentKey], connection.property)\n );\n\n if (!targetConnection)\n {\n return [];\n }\n\n const target = String(targetConnection.property || \"\");\n if (!target || (morphTargetNames.size && !morphTargetNames.has(target)))\n {\n return [];\n }\n\n const curve = readAnyScalarAnimationCurve(curveNode, objectIndex, connections, 1);\n return curve\n ? [ {\n target,\n targetType: \"MorphTarget\",\n valueDimension: 1,\n curve\n } ]\n : [];\n}\n\nfunction readMorphAnimationTargets(curveNode, objectIndex, connections, morphTargetNames)\n{\n const targets = [];\n for (const connection of connections.list)\n {\n if (connection.relation !== \"OP\" || connection.childKey !== curveNode.key || !isMorphAnimationProperty(connection.property))\n {\n continue;\n }\n\n const target = objectIndex.byId[connection.parentKey];\n if (!isBlendShapeChannel(target))\n {\n continue;\n }\n\n for (const name of readBlendShapeChannelMorphNames(target, objectIndex, connections))\n {\n if (!morphTargetNames.size || morphTargetNames.has(name))\n {\n targets.push(name);\n }\n }\n }\n return Array.from(new Set(targets));\n}\n\nfunction readBlendShapeChannelMorphNames(channel, objectIndex, connections)\n{\n const shapes = readBlendShapeChannelShapes(channel, objectIndex, connections);\n if (isUnsupportedBlendShapeInBetween(channel, shapes))\n {\n return [];\n }\n\n const names = shapes\n .map(shape => shape.name || channel.name)\n .filter(Boolean);\n\n return names.length ? names : [ channel.name || \"morph_target\" ];\n}\n\nfunction readBlendShapeChannelShapes(channel, objectIndex, connections)\n{\n return connectedChildObjects(channel, objectIndex, connections, \"Geometry\")\n .filter(shape => shape.className === \"Shape\" || shape.fullName.startsWith(\"Geometry::Shape\") || shape.name);\n}\n\nfunction readBlendShapeChannelFullWeights(channel)\n{\n return readChildArray(channel.node, \"FullWeights\") || [];\n}\n\nfunction isUnsupportedBlendShapeInBetween(channel, shapes)\n{\n // Multiple shapes/weights under one FBX channel are in-between targets, not independent sliders.\n return shapes.length > 1 || readBlendShapeChannelFullWeights(channel).length > 1;\n}\n\nfunction readMorphAnimationCurve(curveNode, objectIndex, connections)\n{\n return readAnyScalarAnimationCurve(curveNode, objectIndex, connections, 0.01, isMorphAnimationProperty);\n}\n\nfunction readAnyScalarAnimationCurve(curveNode, objectIndex, connections, scale, predicate = null)\n{\n const curves = connections.list\n .filter(connection => connection.parentKey === curveNode.key)\n .map(connection => ({ connection, curve: objectIndex.byId[connection.childKey] }))\n .filter(item => item.curve?.nodeName === \"AnimationCurve\");\n\n const match = predicate\n ? curves.find(item => predicate(item.connection.property)) || curves[0]\n : curves.find(item => animationCurveAxis(item.connection.property) === 0) || curves[0];\n return match ? readScalarAnimationCurve(match.curve, scale) : null;\n}\n\nfunction readScalarAnimationCurve(curve, scale)\n{\n const\n ticks = readChildArray(curve.node, \"KeyTime\") || [],\n keyValueFloat = readChildArray(curve.node, \"KeyValueFloat\"),\n keyValue = readChildArray(curve.node, \"KeyValue\"),\n valueFeature = hasArrayValues(keyValueFloat) ? \"KeyValueFloat\" : \"KeyValue\",\n values = hasArrayValues(keyValueFloat) ? keyValueFloat : hasArrayValues(keyValue) ? keyValue : [];\n\n if (!ticks.length || !values.length)\n {\n return null;\n }\n if (ticks.length !== values.length)\n {\n throw new Error(`fbx: animation curve ${JSON.stringify(curve.name || curve.key)} has mismatched KeyTime and ${valueFeature} lengths`);\n }\n\n const pairs = ticks.map((tick, index) => ({\n tick: finiteNumber(tick, \"KeyTime\"),\n value: finiteNumber(values[index], valueFeature) * scale\n })).sort((a, b) => a.tick - b.tick);\n\n return {\n ticks: pairs.map(pair => pair.tick),\n values: pairs.map(pair => pair.value)\n };\n}\n\nfunction readBoneAnimationRecord(curveNode, objectIndex, connections, boneTargets, sceneTransform)\n{\n const targetConnection = connections.list.find(connection =>\n connection.relation === \"OP\" &&\n connection.childKey === curveNode.key &&\n isBoneAnimationProperty(connection.property) &&\n boneTargets.has(connection.parentKey) &&\n isBoneModel(objectIndex.byId[connection.parentKey])\n );\n\n if (!targetConnection)\n {\n return null;\n }\n\n const\n bone = objectIndex.byId[targetConnection.parentKey],\n target = boneTargets.get(bone.key),\n properties = readProperties70(bone.node).properties,\n property = normalizeBoneAnimationProperty(targetConnection.property);\n\n if (!property)\n {\n return null;\n }\n\n const vectorCurve = readVectorAnimationCurve(\n curveNode,\n objectIndex,\n connections,\n animationCurveNodeFallback(curveNode, boneAnimationFallback(properties, property))\n );\n if (!vectorCurve)\n {\n return null;\n }\n\n if (property === \"position\")\n {\n return {\n target: target.name,\n targetType: \"BonePosition\",\n valueDimension: 3,\n curve: {\n ticks: vectorCurve.ticks,\n values: packBonePositionValues(vectorCurve.values, sceneTransform, target.isRoot)\n }\n };\n }\n\n if (property === \"rotation\")\n {\n return {\n target: target.name,\n targetType: \"BoneRotation\",\n valueDimension: 4,\n curve: {\n ticks: vectorCurve.ticks,\n values: packBoneRotationValues(bone, vectorCurve.values, sceneTransform, target.isRoot)\n }\n };\n }\n\n return {\n target: target.name,\n targetType: \"BoneScale\",\n valueDimension: 3,\n curve: {\n ticks: vectorCurve.ticks,\n values: vectorCurve.values.map(cleanFloat)\n }\n };\n}\n\nfunction isBoneAnimationProperty(property)\n{\n return !!normalizeBoneAnimationProperty(property);\n}\n\nfunction normalizeBoneAnimationProperty(property)\n{\n const text = String(property || \"\").replace(/\\s+/gu, \"\").toLowerCase();\n if (text.includes(\"translation\") || text === \"t\")\n {\n return \"position\";\n }\n if (text.includes(\"rotation\") || text === \"r\")\n {\n return \"rotation\";\n }\n if (text.includes(\"scaling\") || text.includes(\"scale\") || text === \"s\")\n {\n return \"scale\";\n }\n return \"\";\n}\n\nfunction boneAnimationFallback(properties, property)\n{\n if (property === \"position\")\n {\n return propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ]);\n }\n if (property === \"rotation\")\n {\n return propertyVector3(properties, \"Lcl Rotation\", [ 0, 0, 0 ]);\n }\n return propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ]);\n}\n\nfunction animationCurveNodeFallback(curveNode, fallback)\n{\n const\n properties = readProperties70(curveNode.node).properties,\n axes = [ \"d|X\", \"d|Y\", \"d|Z\" ];\n\n return axes.map((axis, index) => propertyNumber(properties, axis, fallback[index]));\n}\n\nfunction readVectorAnimationCurve(curveNode, objectIndex, connections, fallback)\n{\n const components = [ null, null, null ];\n for (const connection of connections.list.filter(item => item.parentKey === curveNode.key))\n {\n const\n curve = objectIndex.byId[connection.childKey],\n axis = animationCurveAxis(connection.property) ?? animationCurveAxis(curve?.name);\n\n if (curve?.nodeName !== \"AnimationCurve\" || axis === null)\n {\n continue;\n }\n components[axis] = readScalarAnimationCurve(curve, 1);\n }\n\n if (components.every(component => !component))\n {\n return null;\n }\n\n const ticks = uniqueSortedTicks(components);\n const values = [];\n for (const tick of ticks)\n {\n for (let axis = 0; axis < 3; axis++)\n {\n values.push(sampleScalarAnimationCurve(components[axis], tick, fallback[axis]));\n }\n }\n return { ticks, values };\n}\n\nfunction animationCurveAxis(property)\n{\n const text = String(property || \"\").trim().toLowerCase();\n if (/(^|[|._])x$/u.test(text))\n {\n return 0;\n }\n if (/(^|[|._])y$/u.test(text))\n {\n return 1;\n }\n if (/(^|[|._])z$/u.test(text))\n {\n return 2;\n }\n return null;\n}\n\nfunction uniqueSortedTicks(components)\n{\n const ticks = new Set();\n for (const component of components)\n {\n for (const tick of component?.ticks ?? [])\n {\n ticks.add(tick);\n }\n }\n return Array.from(ticks).sort((a, b) => a - b);\n}\n\nfunction sampleScalarAnimationCurve(curve, tick, fallback)\n{\n if (!curve)\n {\n return fallback;\n }\n\n const { ticks, values } = curve;\n if (tick <= ticks[0])\n {\n return values[0];\n }\n if (tick >= ticks[ticks.length - 1])\n {\n return values[values.length - 1];\n }\n\n for (let i = 1; i < ticks.length; i++)\n {\n if (tick > ticks[i])\n {\n continue;\n }\n if (tick === ticks[i])\n {\n return values[i];\n }\n\n const amount = (tick - ticks[i - 1]) / (ticks[i] - ticks[i - 1]);\n return values[i - 1] + (values[i] - values[i - 1]) * amount;\n }\n return fallback;\n}\n\nfunction packBonePositionValues(values, sceneTransform, isRoot)\n{\n const output = [];\n for (let i = 0; i < values.length; i += 3)\n {\n const position = isRoot\n ? transformScenePoint([ values[i], values[i + 1], values[i + 2] ], sceneTransform)\n : [ values[i] * sceneTransform.scale, values[i + 1] * sceneTransform.scale, values[i + 2] * sceneTransform.scale ];\n output.push(...cleanVector3(position));\n }\n return output;\n}\n\nfunction packBoneRotationValues(bone, values, sceneTransform, isRoot)\n{\n const\n properties = readProperties70(bone.node).properties,\n output = [];\n\n for (let i = 0; i < values.length; i += 3)\n {\n const\n matrix = composeModelTransform(properties, {\n translation: [ 0, 0, 0 ],\n rotation: [ values[i], values[i + 1], values[i + 2] ],\n scale: [ 1, 1, 1 ]\n }),\n transformed = isRoot ? transformMatrixScene(matrix, sceneTransform) : matrix,\n rotation = decomposeMatrix4(transformed).rotation;\n\n output.push(...rotation);\n }\n return output;\n}\n\nfunction isBlendShapeChannel(entry)\n{\n return !!entry && entry.nodeName === \"Deformer\" && (\n entry.className === \"BlendShapeChannel\" ||\n entry.fullName.startsWith(\"SubDeformer::\") ||\n entry.name.includes(\"BlendShapeChannel\")\n );\n}\n\nfunction isMorphAnimationProperty(property)\n{\n return String(property || \"\").toLowerCase().includes(\"deformpercent\");\n}\n\nfunction isUserDefinedNumericProperty(entry, property)\n{\n if (!entry || !property)\n {\n return false;\n }\n\n const definition = readProperties70(entry.node).properties[property];\n if (!definition || !String(definition.flags || \"\").includes(\"U\"))\n {\n return false;\n }\n return typeof definition.value === \"number\";\n}\n\nfunction uniqueEntries(entries)\n{\n const\n seen = new Set(),\n unique = [];\n\n for (const entry of entries)\n {\n if (!entry || seen.has(entry.key))\n {\n continue;\n }\n seen.add(entry.key);\n unique.push(entry);\n }\n return unique;\n}\n\nfunction packFloat32Values(values)\n{\n const\n bytes = new Uint8Array(values.length * 4),\n view = new DataView(bytes.buffer);\n\n values.forEach((value, index) => view.setFloat32(index * 4, value, true));\n return Array.from(bytes);\n}\n\nfunction buildSkinClusterRecords(clusters, objectIndex, connections)\n{\n const records = [];\n for (const cluster of clusters)\n {\n const\n bone = clusterBone(cluster, objectIndex, connections),\n indexes = readChildArray(cluster.node, \"Indexes\") || [],\n weights = readChildArray(cluster.node, \"Weights\") || [];\n\n if (!bone || !indexes.length || !hasPositiveClusterWeight(indexes, weights))\n {\n continue;\n }\n\n records.push({\n cluster,\n bone,\n boneKey: bone.key,\n boneName: bone.name || cluster.name || `bone_${records.length}`,\n indexes,\n weights\n });\n }\n return records;\n}\n\nfunction hasPositiveClusterWeight(indexes, weights)\n{\n for (let i = 0; i < indexes.length; i++)\n {\n if (finiteNumber(weights[i] ?? 0, \"Weights\") > 0)\n {\n return true;\n }\n }\n return false;\n}\n\nfunction buildControlPointInfluences(records)\n{\n const controlPointInfluences = new Map();\n\n records.forEach((record, boneIndex) =>\n {\n const\n indexes = record.indexes,\n weights = record.weights;\n\n for (let i = 0; i < indexes.length; i++)\n {\n const\n controlPointIndex = integerNumber(indexes[i], \"Indexes\"),\n weight = Math.max(0, finiteNumber(weights[i] ?? 0, \"Weights\")),\n list = controlPointInfluences.get(controlPointIndex) || [];\n\n if (weight <= 0)\n {\n continue;\n }\n\n list.push({ boneIndex, boneKey: record.boneKey, boneName: record.boneName, weight });\n controlPointInfluences.set(controlPointIndex, list);\n }\n });\n\n return controlPointInfluences;\n}\n\nfunction normalizeInfluences(influences)\n{\n const best = influences\n .filter(influence => influence.weight > 0)\n .sort((a, b) => b.weight - a.weight)\n .slice(0, 4);\n\n const total = best.reduce((sum, influence) => sum + influence.weight, 0);\n if (total <= 0)\n {\n return [];\n }\n\n return best.map(influence => ({\n ...influence,\n weight: cleanFloat(influence.weight / total)\n }));\n}\n\nfunction buildBoneBindingsFromInfluences(records, outputInfluences, positions, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n return records.map((record, boneIndex) =>\n {\n const\n name = record.boneName || `bone_${boneIndex}`,\n bindingMatrix = buildBoneBindingMatrix(record, objectIndex, connections, sceneTransform, modelWorldCache),\n bindingPositions = [];\n\n for (let vertexIndex = 0; vertexIndex < outputInfluences.length; vertexIndex++)\n {\n if (!outputInfluences[vertexIndex].some(influence => influence.boneIndex === boneIndex && influence.weight > 0))\n {\n continue;\n }\n\n const offset = vertexIndex * 3;\n bindingPositions.push(...transformPointMatrix4([ positions[offset], positions[offset + 1], positions[offset + 2] ], bindingMatrix));\n }\n\n const bounds = computeBounds(bindingPositions);\n return {\n name,\n minBounds: bounds.minBounds,\n maxBounds: bounds.maxBounds\n };\n });\n}\n\nfunction buildBoneBindingMatrix(record, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n return invertMatrix4(transformMatrixScene(\n buildMeshGeometryToWorld(record.bone, objectIndex, connections, modelWorldCache),\n sceneTransform\n ));\n}\n\nfunction clusterBone(cluster, objectIndex, connections)\n{\n return connectedChildObjects(cluster, objectIndex, connections, \"Model\")[0] || null;\n}\n\nfunction findSkinSkeletonIndex(boneKeys, skeletonContext)\n{\n if (!skeletonContext)\n {\n return null;\n }\n\n let skeletonIndex = null;\n for (const key of boneKeys)\n {\n if (!key)\n {\n return null;\n }\n\n const index = skeletonContext.boneToSkeletonIndex.get(key);\n if (index === undefined)\n {\n return null;\n }\n if (skeletonIndex === null)\n {\n skeletonIndex = index;\n }\n else if (skeletonIndex !== index)\n {\n return null;\n }\n }\n\n return skeletonIndex;\n}\n\nfunction buildSkeletonContext(objectIndex, connections, sceneTransform, modelWorldCache)\n{\n const\n roots = objectIndex.list\n .filter(isBoneModel)\n .filter(bone => !connectedParentObjects(bone, objectIndex, connections, \"Model\").some(isBoneModel)),\n bindPoseMatrices = readBindPoseMatrices(objectIndex, sceneTransform),\n skeletons = [],\n boneToSkeletonIndex = new Map(),\n visited = new Set();\n\n for (const root of roots)\n {\n if (visited.has(root.key))\n {\n continue;\n }\n\n const skeleton = buildSkeleton(root, objectIndex, connections, sceneTransform, modelWorldCache, bindPoseMatrices, visited);\n if (!skeleton.cmfSkeleton.bones.length)\n {\n continue;\n }\n\n const skeletonIndex = skeletons.length;\n skeletons.push(skeleton);\n for (const key of skeleton.boneKeys)\n {\n boneToSkeletonIndex.set(key, skeletonIndex);\n }\n }\n\n return { skeletons, boneToSkeletonIndex };\n}\n\nfunction buildSkeleton(root, objectIndex, connections, sceneTransform, modelWorldCache, bindPoseMatrices, visited)\n{\n const records = [];\n\n const importBone = (bone, parentIndex) =>\n {\n if (!bone || visited.has(bone.key))\n {\n return;\n }\n\n visited.add(bone.key);\n const\n localMatrix = buildBoneLocalMatrix(bone, parentIndex, objectIndex, connections, sceneTransform, modelWorldCache),\n transform = decomposeMatrix4(localMatrix),\n recordIndex = records.length;\n\n records.push({ bone, parentIndex, localMatrix, transform });\n\n for (const child of connectedChildObjects(bone, objectIndex, connections, \"Model\").filter(isBoneModel))\n {\n importBone(child, recordIndex);\n }\n };\n\n importBone(root, -1);\n\n const\n name = root.name || \"fbx_skeleton\",\n invBindTransforms = buildInvBindTransforms(records, bindPoseMatrices);\n\n return {\n name,\n boneKeys: records.map(record => record.bone.key),\n gr2Skeleton: {\n name,\n bones: records.map(record => buildGr2Bone(record))\n },\n cmfSkeleton: {\n name,\n bones: records.map(record => record.bone.name || \"bone\"),\n parents: records.map(record => record.parentIndex === -1 ? 0xffffffff : record.parentIndex),\n restTransforms: records.map(record => ({\n position: record.transform.position,\n rotation: record.transform.rotation,\n scale: record.transform.scale\n })),\n invBindTransforms,\n boneMasks: buildCmfBoneMasks(records)\n }\n };\n}\n\n/**\n * Build CMF bone masks from user-defined numeric bone properties.\n *\n * @param {object[]} records Imported skeleton bone records.\n * @returns {object[]} CMF bone masks.\n */\nfunction buildCmfBoneMasks(records)\n{\n const\n masks = [],\n byName = new Map();\n\n records.forEach((record, index) =>\n {\n const properties = readProperties70(record.bone.node).properties;\n for (const [ name, definition ] of Object.entries(properties))\n {\n if (!isUserDefinedNumericPropertyDefinition(definition))\n {\n continue;\n }\n\n let mask = byName.get(name);\n if (!mask)\n {\n mask = { name, weights: [] };\n byName.set(name, mask);\n masks.push(mask);\n }\n mask.weights.push({ index, weight: cleanFloat(clamp01(definition.value)) });\n }\n });\n\n return masks;\n}\n\n/**\n * Check whether a Properties70 definition should become a CMF bone-mask weight.\n *\n * @param {object} definition Parsed Properties70 definition.\n * @returns {boolean} True when the property is user-defined and numeric.\n */\nfunction isUserDefinedNumericPropertyDefinition(definition)\n{\n return !!definition && String(definition.flags || \"\").includes(\"U\") && typeof definition.value === \"number\";\n}\n\n/**\n * Clamp a numeric value to the unit interval.\n *\n * @param {number} value Input value.\n * @returns {number} Clamped value.\n */\nfunction clamp01(value)\n{\n return Math.min(1, Math.max(0, finiteNumber(value, \"bone mask weight\")));\n}\n\nfunction buildGr2Models(skeletons, meshes)\n{\n return skeletons.map((skeleton, skeletonIndex) => ({\n name: skeleton.name,\n skeleton: skeleton.gr2Skeleton,\n meshBindings: meshes\n .map((mesh, meshIndex) => mesh.skeleton === skeletonIndex ? meshIndex : -1)\n .filter(meshIndex => meshIndex !== -1)\n }));\n}\n\nfunction buildGr2Bone(record)\n{\n const transform = record.transform;\n return {\n name: record.bone.name || \"bone\",\n parentIndex: record.parentIndex,\n flag: 7,\n position: transform.position,\n orientation: transform.rotation,\n scaleShear: [\n transform.scale[0], 0, 0,\n 0, transform.scale[1], 0,\n 0, 0, transform.scale[2]\n ]\n };\n}\n\nfunction buildBoneLocalMatrix(bone, parentIndex, objectIndex, connections, sceneTransform, modelWorldCache)\n{\n if (parentIndex === -1)\n {\n return transformMatrixScene(\n buildModelTransformState(bone, objectIndex, connections, modelWorldCache).nodeToWorld,\n sceneTransform\n );\n }\n\n return scaleMatrixTranslation(buildModelLocalTransform(bone), sceneTransform.scale);\n}\n\nfunction buildInvBindTransforms(records, bindPoseMatrices)\n{\n const poseMatrices = records.map(record => bindPoseMatrices.get(record.bone.key));\n if (poseMatrices.every(Boolean))\n {\n return poseMatrices.map(matrix => cleanMatrix4(invertMatrix4(matrix)));\n }\n\n const invBindTransforms = [];\n for (const record of records)\n {\n const\n parentInvTransform = record.parentIndex === -1 ? IDENTITY_MATRIX4 : invBindTransforms[record.parentIndex],\n invLocalTransform = invertMatrix4(record.localMatrix);\n\n invBindTransforms.push(cleanMatrix4(multiplyMatrix4(parentInvTransform, invLocalTransform)));\n }\n return invBindTransforms;\n}\n\nfunction readBindPoseMatrices(objectIndex, sceneTransform)\n{\n const matrices = new Map();\n for (const pose of objectIndex.list.filter(entry => entry.nodeName === \"Pose\"))\n {\n const type = String(readFirstChildProperty(pose.node, \"Type\") || pose.className || pose.name || \"\");\n if (!/bindpose/iu.test(type))\n {\n continue;\n }\n\n for (const poseNode of pose.node.children.filter(child => child.name === \"PoseNode\"))\n {\n const\n nodeId = readFirstChildProperty(poseNode, \"Node\"),\n matrix = readChildArray(poseNode, \"Matrix\");\n\n if (nodeId === undefined || !Array.isArray(matrix) || matrix.length !== 16)\n {\n continue;\n }\n\n matrices.set(toObjectKey(nodeId), transformMatrixScene(matrix, sceneTransform));\n }\n }\n return matrices;\n}\n\nfunction isBoneModel(entry)\n{\n return entry?.nodeName === \"Model\" && (entry.className === \"LimbNode\" || /LimbNode/iu.test(entry.fullName));\n}\n\nfunction buildSceneTransform(globalSettingsNode)\n{\n const properties = readProperties70(globalSettingsNode).properties;\n const unitScaleFactor = propertyNumber(properties, \"UnitScaleFactor\", null);\n return {\n scale: unitScaleFactor === null ? 1 : unitScaleFactor * 0.01,\n right: axisVector(\n propertyNumber(properties, \"CoordAxis\", 0),\n propertyNumber(properties, \"CoordAxisSign\", 1)\n ),\n up: axisVector(\n propertyNumber(properties, \"UpAxis\", 1),\n propertyNumber(properties, \"UpAxisSign\", 1)\n ),\n forward: axisVector(\n propertyNumber(properties, \"FrontAxis\", 2),\n propertyNumber(properties, \"FrontAxisSign\", 1)\n )\n };\n}\n\nfunction buildMeshGeometryToWorld(owner, objectIndex, connections, modelWorldCache)\n{\n if (!owner)\n {\n return IDENTITY_MATRIX4;\n }\n\n return multiplyMatrix4(\n buildModelTransformState(owner, objectIndex, connections, modelWorldCache).nodeToWorld,\n buildModelGeometricTransform(owner)\n );\n}\n\nfunction buildModelTransformState(model, objectIndex, connections, cache)\n{\n if (cache.has(model.key))\n {\n return cache.get(model.key);\n }\n\n const\n local = buildModelLocalState(model),\n parents = connectedParentObjects(model, objectIndex, connections, \"Model\"),\n parent = parents[0],\n parentState = parent ? buildModelTransformState(parent, objectIndex, connections, cache) : null,\n state = parentState\n ? composeInheritedModelState(local, parentState)\n : {\n nodeToWorld: local.matrix,\n unscaledNodeToWorld: local.unscaledMatrix,\n inheritScale: local.scale\n };\n\n cache.set(model.key, state);\n return state;\n}\n\nfunction buildModelLocalTransform(model)\n{\n const properties = readProperties70(model.node).properties;\n return composeModelTransform(properties);\n}\n\nfunction buildModelLocalState(model)\n{\n const\n properties = readProperties70(model.node).properties,\n translation = propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ]),\n scale = propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ]);\n\n return {\n properties,\n translation,\n scale,\n inheritType: propertyNumber(properties, \"InheritType\", 1),\n matrix: composeModelTransform(properties, { translation, scale }),\n unscaledMatrix: composeModelTransform(properties, { translation, scale: [ 1, 1, 1 ] })\n };\n}\n\nfunction composeInheritedModelState(local, parentState)\n{\n const inheritType = integerNumber(local.inheritType, \"InheritType\");\n\n if (inheritType === 0 || inheritType === 2)\n {\n const\n translation = multiplyVector3(local.translation, parentState.inheritScale),\n scale = inheritType === 0 ? multiplyVector3(local.scale, parentState.inheritScale) : local.scale,\n matrix = composeModelTransform(local.properties, { translation, scale }),\n unscaledMatrix = composeModelTransform(local.properties, { translation, scale: [ 1, 1, 1 ] });\n\n return {\n nodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, matrix),\n unscaledNodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, unscaledMatrix),\n inheritScale: scale\n };\n }\n\n return {\n nodeToWorld: multiplyMatrix4(parentState.nodeToWorld, local.matrix),\n unscaledNodeToWorld: multiplyMatrix4(parentState.unscaledNodeToWorld, local.unscaledMatrix),\n inheritScale: multiplyVector3(parentState.inheritScale, local.scale)\n };\n}\n\nfunction buildModelGeometricTransform(model)\n{\n const properties = readProperties70(model.node).properties;\n return composeSimpleTransform(\n propertyVector3(properties, \"GeometricTranslation\", [ 0, 0, 0 ]),\n propertyVector3(properties, \"GeometricRotation\", [ 0, 0, 0 ]),\n propertyVector3(properties, \"GeometricScaling\", [ 1, 1, 1 ]),\n DEFAULT_ROTATION_ORDER\n );\n}\n\nfunction composeModelTransform(properties, overrides = {})\n{\n const\n rotationOrder = propertyRotationOrder(properties),\n rotationPivot = propertyVector3(properties, \"RotationPivot\", [ 0, 0, 0 ]),\n scalingPivot = propertyVector3(properties, \"ScalingPivot\", [ 0, 0, 0 ]);\n\n return multiplyMatrix4List([\n translationMatrix4(overrides.translation ?? propertyVector3(properties, \"Lcl Translation\", [ 0, 0, 0 ])),\n translationMatrix4(propertyVector3(properties, \"RotationOffset\", [ 0, 0, 0 ])),\n translationMatrix4(rotationPivot),\n rotationMatrix4(propertyVector3(properties, \"PreRotation\", [ 0, 0, 0 ]), rotationOrder),\n rotationMatrix4(overrides.rotation ?? propertyVector3(properties, \"Lcl Rotation\", [ 0, 0, 0 ]), rotationOrder),\n inverseRotationMatrix4(propertyVector3(properties, \"PostRotation\", [ 0, 0, 0 ]), rotationOrder),\n translationMatrix4(negateVector3(rotationPivot)),\n translationMatrix4(propertyVector3(properties, \"ScalingOffset\", [ 0, 0, 0 ])),\n translationMatrix4(scalingPivot),\n scaleMatrix4(overrides.scale ?? propertyVector3(properties, \"Lcl Scaling\", [ 1, 1, 1 ])),\n translationMatrix4(negateVector3(scalingPivot))\n ]);\n}\n\nfunction composeSimpleTransform(translation, rotationDegrees, scale, rotationOrder)\n{\n return multiplyMatrix4(\n translationMatrix4(translation),\n multiplyMatrix4(rotationMatrix4(rotationDegrees, rotationOrder), scaleMatrix4(scale))\n );\n}\n\nfunction transformPoints(values, matrix, sceneTransform)\n{\n const output = [];\n for (let i = 0; i < values.length; i += 3)\n {\n const point = transformPointMatrix4([ values[i], values[i + 1], values[i + 2] ], matrix);\n output.push(...transformScenePoint(point, sceneTransform));\n }\n return output;\n}\n\nfunction transformDirections(values, matrix, sceneTransform, useNormalMatrix)\n{\n if (!values.length)\n {\n return values;\n }\n\n const\n normalMatrix = useNormalMatrix ? normalMatrix3(matrix) : null,\n output = [];\n\n for (let i = 0; i < values.length; i += 3)\n {\n const vector = useNormalMatrix\n ? transformVectorMatrix3([ values[i], values[i + 1], values[i + 2] ], normalMatrix)\n : transformVectorMatrix4([ values[i], values[i + 1], values[i + 2] ], matrix);\n output.push(...normalizeVector3(transformSceneVector(vector, sceneTransform)));\n }\n\n return output;\n}\n\nfunction transformScenePoint(point, sceneTransform)\n{\n const vector = transformSceneVector(point, sceneTransform);\n return vector.map(value => value * sceneTransform.scale);\n}\n\nfunction transformSceneVector(vector, sceneTransform)\n{\n return [\n dotVector3(vector, sceneTransform.right),\n dotVector3(vector, sceneTransform.up),\n dotVector3(vector, sceneTransform.forward)\n ];\n}\n\nfunction transformMatrixScene(matrix, sceneTransform)\n{\n const\n column0 = transformSceneVector([ matrix[0], matrix[4], matrix[8] ], sceneTransform),\n column1 = transformSceneVector([ matrix[1], matrix[5], matrix[9] ], sceneTransform),\n column2 = transformSceneVector([ matrix[2], matrix[6], matrix[10] ], sceneTransform),\n translation = transformScenePoint([ matrix[3], matrix[7], matrix[11] ], sceneTransform);\n\n return cleanMatrix4([\n column0[0], column1[0], column2[0], translation[0],\n column0[1], column1[1], column2[1], translation[1],\n column0[2], column1[2], column2[2], translation[2],\n 0, 0, 0, 1\n ]);\n}\n\nfunction scaleMatrixTranslation(matrix, scale)\n{\n const output = matrix.slice();\n output[3] *= scale;\n output[7] *= scale;\n output[11] *= scale;\n return cleanMatrix4(output);\n}\n\nfunction decomposeMatrix4(matrix)\n{\n const\n scale = [\n Math.hypot(matrix[0], matrix[4], matrix[8]) || 1,\n Math.hypot(matrix[1], matrix[5], matrix[9]) || 1,\n Math.hypot(matrix[2], matrix[6], matrix[10]) || 1\n ],\n rotationMatrix = [\n matrix[0] / scale[0], matrix[1] / scale[1], matrix[2] / scale[2],\n matrix[4] / scale[0], matrix[5] / scale[1], matrix[6] / scale[2],\n matrix[8] / scale[0], matrix[9] / scale[1], matrix[10] / scale[2]\n ];\n\n return {\n position: cleanVector3([ matrix[3], matrix[7], matrix[11] ]),\n rotation: matrixToQuaternion(rotationMatrix),\n scale: cleanVector3(scale)\n };\n}\n\nfunction matrixToQuaternion(matrix)\n{\n const\n m00 = matrix[0],\n m01 = matrix[1],\n m02 = matrix[2],\n m10 = matrix[3],\n m11 = matrix[4],\n m12 = matrix[5],\n m20 = matrix[6],\n m21 = matrix[7],\n m22 = matrix[8],\n trace = m00 + m11 + m22;\n\n let x, y, z, w;\n if (trace > 0)\n {\n const s = Math.sqrt(trace + 1) * 2;\n w = 0.25 * s;\n x = (m21 - m12) / s;\n y = (m02 - m20) / s;\n z = (m10 - m01) / s;\n }\n else if (m00 > m11 && m00 > m22)\n {\n const s = Math.sqrt(1 + m00 - m11 - m22) * 2;\n w = (m21 - m12) / s;\n x = 0.25 * s;\n y = (m01 + m10) / s;\n z = (m02 + m20) / s;\n }\n else if (m11 > m22)\n {\n const s = Math.sqrt(1 + m11 - m00 - m22) * 2;\n w = (m02 - m20) / s;\n x = (m01 + m10) / s;\n y = 0.25 * s;\n z = (m12 + m21) / s;\n }\n else\n {\n const s = Math.sqrt(1 + m22 - m00 - m11) * 2;\n w = (m10 - m01) / s;\n x = (m02 + m20) / s;\n y = (m12 + m21) / s;\n z = 0.25 * s;\n }\n\n return normalizeQuaternion([ x, y, z, w ]);\n}\n\nfunction propertyVector3(properties, name, fallback)\n{\n const value = properties[name]?.value;\n if (Array.isArray(value))\n {\n return [\n finiteNumber(value[0] ?? fallback[0], name),\n finiteNumber(value[1] ?? fallback[1], name),\n finiteNumber(value[2] ?? fallback[2], name)\n ];\n }\n return fallback;\n}\n\nfunction propertyNumber(properties, name, fallback)\n{\n const value = properties[name]?.value;\n if (value === undefined || value === null || Array.isArray(value))\n {\n return fallback;\n }\n return finiteNumber(value, name);\n}\n\nfunction propertyRotationOrder(properties)\n{\n const value = propertyNumber(properties, \"RotationOrder\", null);\n if (value === null)\n {\n return DEFAULT_ROTATION_ORDER;\n }\n return FBX_ROTATION_ORDERS[value] || DEFAULT_ROTATION_ORDER;\n}\n\nfunction axisVector(axis, sign)\n{\n const vector = [ 0, 0, 0 ];\n const index = Math.max(0, Math.min(2, integerNumber(axis, \"Axis\")));\n vector[index] = sign < 0 ? -1 : 1;\n return vector;\n}\n\nfunction translationMatrix4(translation)\n{\n return [\n 1, 0, 0, translation[0],\n 0, 1, 0, translation[1],\n 0, 0, 1, translation[2],\n 0, 0, 0, 1\n ];\n}\n\nfunction scaleMatrix4(scale)\n{\n return [\n scale[0], 0, 0, 0,\n 0, scale[1], 0, 0,\n 0, 0, scale[2], 0,\n 0, 0, 0, 1\n ];\n}\n\nfunction rotationMatrix4(rotationDegrees, order)\n{\n let matrix = IDENTITY_MATRIX4;\n for (let i = order.length - 1; i >= 0; i--)\n {\n const axis = order[i];\n const radians = degreesToRadians(rotationDegrees[axisIndex(axis)]);\n matrix = multiplyMatrix4(matrix, axisRotationMatrix4(axis, radians));\n }\n return matrix;\n}\n\nfunction inverseRotationMatrix4(rotationDegrees, order)\n{\n let matrix = IDENTITY_MATRIX4;\n for (const axis of order)\n {\n const radians = degreesToRadians(-rotationDegrees[axisIndex(axis)]);\n matrix = multiplyMatrix4(matrix, axisRotationMatrix4(axis, radians));\n }\n return matrix;\n}\n\nfunction multiplyMatrix4List(matrices)\n{\n return matrices.reduce((matrix, next) => multiplyMatrix4(matrix, next), IDENTITY_MATRIX4);\n}\n\nfunction negateVector3(vector)\n{\n return [ -vector[0], -vector[1], -vector[2] ];\n}\n\nfunction multiplyVector3(a, b)\n{\n return [ a[0] * b[0], a[1] * b[1], a[2] * b[2] ];\n}\n\nfunction axisIndex(axis)\n{\n return axis === \"X\" ? 0 : axis === \"Y\" ? 1 : 2;\n}\n\nfunction axisRotationMatrix4(axis, radians)\n{\n const\n c = Math.cos(radians),\n s = Math.sin(radians);\n\n switch (axis)\n {\n case \"X\":\n return [\n 1, 0, 0, 0,\n 0, c, -s, 0,\n 0, s, c, 0,\n 0, 0, 0, 1\n ];\n case \"Y\":\n return [\n c, 0, s, 0,\n 0, 1, 0, 0,\n -s, 0, c, 0,\n 0, 0, 0, 1\n ];\n default:\n return [\n c, -s, 0, 0,\n s, c, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1\n ];\n }\n}\n\nfunction multiplyMatrix4(a, b)\n{\n const output = new Array(16).fill(0);\n for (let row = 0; row < 4; row++)\n {\n for (let column = 0; column < 4; column++)\n {\n for (let k = 0; k < 4; k++)\n {\n output[row * 4 + column] += a[row * 4 + k] * b[k * 4 + column];\n }\n }\n }\n return output;\n}\n\nfunction invertMatrix4(matrix)\n{\n const\n a = [\n matrix.slice(0, 4),\n matrix.slice(4, 8),\n matrix.slice(8, 12),\n matrix.slice(12, 16)\n ],\n inverse = [\n [ 1, 0, 0, 0 ],\n [ 0, 1, 0, 0 ],\n [ 0, 0, 1, 0 ],\n [ 0, 0, 0, 1 ]\n ];\n\n for (let column = 0; column < 4; column++)\n {\n let pivotRow = column;\n for (let row = column + 1; row < 4; row++)\n {\n if (Math.abs(a[row][column]) > Math.abs(a[pivotRow][column]))\n {\n pivotRow = row;\n }\n }\n\n const pivot = a[pivotRow][column];\n if (Math.abs(pivot) < Number.EPSILON)\n {\n throw new Error(\"fbx: transform matrix is not invertible\");\n }\n\n if (pivotRow !== column)\n {\n [ a[column], a[pivotRow] ] = [ a[pivotRow], a[column] ];\n [ inverse[column], inverse[pivotRow] ] = [ inverse[pivotRow], inverse[column] ];\n }\n\n for (let i = 0; i < 4; i++)\n {\n a[column][i] /= pivot;\n inverse[column][i] /= pivot;\n }\n\n for (let row = 0; row < 4; row++)\n {\n if (row === column)\n {\n continue;\n }\n\n const factor = a[row][column];\n for (let i = 0; i < 4; i++)\n {\n a[row][i] -= factor * a[column][i];\n inverse[row][i] -= factor * inverse[column][i];\n }\n }\n }\n\n return cleanMatrix4(inverse.flat());\n}\n\nfunction transformPointMatrix4(point, matrix)\n{\n return [\n matrix[0] * point[0] + matrix[1] * point[1] + matrix[2] * point[2] + matrix[3],\n matrix[4] * point[0] + matrix[5] * point[1] + matrix[6] * point[2] + matrix[7],\n matrix[8] * point[0] + matrix[9] * point[1] + matrix[10] * point[2] + matrix[11]\n ];\n}\n\nfunction transformVectorMatrix4(vector, matrix)\n{\n return [\n matrix[0] * vector[0] + matrix[1] * vector[1] + matrix[2] * vector[2],\n matrix[4] * vector[0] + matrix[5] * vector[1] + matrix[6] * vector[2],\n matrix[8] * vector[0] + matrix[9] * vector[1] + matrix[10] * vector[2]\n ];\n}\n\nfunction normalMatrix3(matrix)\n{\n const\n a00 = matrix[0],\n a01 = matrix[1],\n a02 = matrix[2],\n a10 = matrix[4],\n a11 = matrix[5],\n a12 = matrix[6],\n a20 = matrix[8],\n a21 = matrix[9],\n a22 = matrix[10],\n b01 = a22 * a11 - a12 * a21,\n b11 = -a22 * a10 + a12 * a20,\n b21 = a21 * a10 - a11 * a20,\n determinant = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (Math.abs(determinant) < Number.EPSILON)\n {\n throw new Error(\"fbx: model transform is not invertible\");\n }\n\n const inverseDeterminant = 1 / determinant;\n return [\n b01 * inverseDeterminant,\n (-a22 * a01 + a02 * a21) * inverseDeterminant,\n (a12 * a01 - a02 * a11) * inverseDeterminant,\n b11 * inverseDeterminant,\n (a22 * a00 - a02 * a20) * inverseDeterminant,\n (-a12 * a00 + a02 * a10) * inverseDeterminant,\n b21 * inverseDeterminant,\n (-a21 * a00 + a01 * a20) * inverseDeterminant,\n (a11 * a00 - a01 * a10) * inverseDeterminant\n ];\n}\n\nfunction transformVectorMatrix3(vector, matrix)\n{\n return [\n matrix[0] * vector[0] + matrix[3] * vector[1] + matrix[6] * vector[2],\n matrix[1] * vector[0] + matrix[4] * vector[1] + matrix[7] * vector[2],\n matrix[2] * vector[0] + matrix[5] * vector[1] + matrix[8] * vector[2]\n ];\n}\n\nfunction normalizeVector3(vector)\n{\n const length = Math.hypot(vector[0], vector[1], vector[2]);\n if (length === 0)\n {\n return [ 0, 0, 0 ];\n }\n return vector.map(value => cleanFloat(value / length));\n}\n\nfunction normalizeQuaternion(quaternion)\n{\n const length = Math.hypot(quaternion[0], quaternion[1], quaternion[2], quaternion[3]);\n if (length === 0)\n {\n return [ 0, 0, 0, 1 ];\n }\n return quaternion.map(value => cleanFloat(value / length));\n}\n\nfunction dotVector3(a, b)\n{\n return cleanFloat(a[0] * b[0] + a[1] * b[1] + a[2] * b[2]);\n}\n\nfunction degreesToRadians(value)\n{\n return value * Math.PI / 180;\n}\n\nfunction cleanFloat(value)\n{\n return Math.abs(value) < 1e-12 ? 0 : value;\n}\n\nfunction cleanVector3(vector)\n{\n return vector.map(cleanFloat);\n}\n\nfunction cleanNumericArray(values)\n{\n return Array.from(values, cleanFloat);\n}\n\nfunction hasArrayValues(values)\n{\n return (Array.isArray(values) || ArrayBuffer.isView(values)) && values.length > 0;\n}\n\nfunction cleanMatrix4(matrix)\n{\n return matrix.map(cleanFloat);\n}\n\nfunction indexObjectNodes(objectsNode)\n{\n const byId = {};\n const byType = {};\n const list = [];\n\n for (const node of objectsNode.children)\n {\n if (!node.properties.length)\n {\n continue;\n }\n\n const summary = readObjectEntry(node);\n const entry = { ...summary, node };\n list.push(entry);\n byId[entry.key] = entry;\n pushIndex(byType, entry.nodeName, entry);\n }\n\n return { list, byId, byType };\n}\n\nfunction connectedParentObjects(entry, objectIndex, connections, nodeName)\n{\n return (connections.parentsByChild[entry.key] || [])\n .map(key => objectIndex.byId[key])\n .filter(parent => parent && parent.nodeName === nodeName);\n}\n\nfunction connectedChildObjects(entry, objectIndex, connections, nodeName)\n{\n if (!entry)\n {\n return [];\n }\n\n return (connections.childrenByParent[entry.key] || [])\n .map(key => objectIndex.byId[key])\n .filter(child => child && child.nodeName === nodeName);\n}\n\nfunction requireChildArray(node, childName)\n{\n const values = readChildArray(node, childName);\n if (!values)\n {\n throw new Error(`fbx: geometry is missing ${childName}`);\n }\n return values;\n}\n\nfunction readChildArray(node, childName)\n{\n const child = findFirstNode(node.children, childName);\n return child ? readNodeArray(child, childName) : null;\n}\n\nfunction readNodeArray(node, feature)\n{\n for (const property of node.properties)\n {\n const values = arrayPropertyToNumbers(property, feature);\n if (values)\n {\n return values;\n }\n }\n\n const asciiArray = findFirstNode(node.children, \"a\");\n return asciiArray ? asciiArray.properties.map(value => finiteNumber(value, feature)) : null;\n}\n\nfunction arrayPropertyToNumbers(property, feature)\n{\n if (!property)\n {\n return null;\n }\n if (property.compressed)\n {\n const error = new Error(`fbx: GR2 output cannot read compressed ${feature} arrays yet`);\n error.code = \"CJS_FORMAT_OUTPUT_UNSUPPORTED\";\n error.sourceFormat = \"fbx\";\n error.emit = OUTPUT_GR2;\n error.feature = \"compressed-array\";\n throw error;\n }\n if (ArrayBuffer.isView(property))\n {\n return Array.from(property, value => finiteNumber(value, feature));\n }\n if (Array.isArray(property))\n {\n return property.map(value => finiteNumber(value, feature));\n }\n return null;\n}\n\nfunction decodePolygonCorners(controlPoints, polygonVertexIndex, geometry)\n{\n const\n controlPointCount = controlPoints.length / 3,\n positions = [],\n corners = [],\n polygons = [];\n\n let polygon = [];\n\n for (const rawValue of polygonVertexIndex)\n {\n const raw = integerNumber(rawValue, \"PolygonVertexIndex\");\n const end = raw < 0;\n const controlPointIndex = end ? -raw - 1 : raw;\n if (controlPointIndex < 0 || controlPointIndex >= controlPointCount)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has PolygonVertexIndex ${raw} out of range`);\n }\n\n const source = controlPointIndex * 3;\n const outputIndex = positions.length / 3;\n const polygonIndex = polygons.length;\n positions.push(\n finiteNumber(controlPoints[source], \"Vertices\"),\n finiteNumber(controlPoints[source + 1], \"Vertices\"),\n finiteNumber(controlPoints[source + 2], \"Vertices\")\n );\n corners.push({\n outputIndex,\n controlPointIndex,\n polygonIndex,\n polygonCornerIndex: polygon.length\n });\n polygon.push(outputIndex);\n\n if (end)\n {\n if (polygon.length < 3)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has a polygon with fewer than three vertices`);\n }\n polygons.push(polygon);\n polygon = [];\n }\n }\n\n if (polygon.length)\n {\n throw new Error(`fbx: geometry ${JSON.stringify(geometry.name || geometry.key)} has an unterminated polygon`);\n }\n\n return { positions, corners, polygons };\n}\n\nfunction readLayerElementChannel(geometryNode, layerName, layerIndex, valueNames, indexNames, elementSize, decoded, feature)\n{\n const layer = findLayerElementNode(geometryNode, layerName, layerIndex);\n if (!layer)\n {\n return [];\n }\n\n const values = readFirstChildArray(layer, valueNames);\n if (!values)\n {\n return [];\n }\n\n if (values.length % elementSize !== 0)\n {\n throw new Error(`fbx: ${feature} array length is not divisible by ${elementSize}`);\n }\n\n const\n indices = readFirstChildArray(layer, indexNames) || [],\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"ByPolygonVertex\"),\n reference = String(readFirstChildProperty(layer, \"ReferenceInformationType\") || \"Direct\"),\n output = [];\n\n for (const corner of decoded.corners)\n {\n const\n mappedIndex = resolveLayerMappingIndex(mapping, corner, feature),\n directIndex = resolveLayerReferenceIndex(reference, indices, mappedIndex, feature);\n\n appendLayerElement(output, values, directIndex, elementSize, feature);\n }\n\n return output;\n}\n\n/**\n * Read an FBX UV layer and apply the configured V-axis convention.\n *\n * @param {object} geometryNode Geometry node.\n * @param {number} layerIndex UV layer index.\n * @param {object} decoded Decoded polygon corner state.\n * @param {object} values Normalized reader values.\n * @returns {number[]} Expanded UV channel.\n */\nfunction readUvLayerElementChannel(geometryNode, layerIndex, decoded, values)\n{\n const texcoord = readLayerElementChannel(geometryNode, \"LayerElementUV\", layerIndex, [ \"UV\" ], [ \"UVIndex\", \"UVIndices\" ], 2, decoded, \"UV\");\n return values.flipV ? flipTexcoordV(texcoord) : texcoord;\n}\n\n/**\n * Flip the V coordinate of an expanded UV channel.\n *\n * @param {number[]} texcoord Expanded UV channel.\n * @returns {number[]} Flipped UV channel.\n */\nfunction flipTexcoordV(texcoord)\n{\n const flipped = texcoord.slice();\n for (let i = 1; i < flipped.length; i += 2)\n {\n flipped[i] = 1 - flipped[i];\n }\n return flipped;\n}\n\nfunction findLayerElementNode(geometryNode, layerName, layerIndex)\n{\n const layers = geometryNode.children.filter(child => child.name === layerName);\n return layers.find((child, index) =>\n {\n const id = child.properties.length ? Number(child.properties[0]) : index;\n return Number.isFinite(id) && id === layerIndex;\n }) || layers[layerIndex] || null;\n}\n\nfunction readFirstChildArray(node, childNames)\n{\n for (const childName of childNames)\n {\n const values = readChildArray(node, childName);\n if (values)\n {\n return values;\n }\n }\n return null;\n}\n\nfunction resolveLayerMappingIndex(mapping, corner, feature)\n{\n switch (mapping)\n {\n case \"ByPolygonVertex\":\n return corner.outputIndex;\n case \"ByControlPoint\":\n case \"ByVertice\":\n case \"ByVertex\":\n return corner.controlPointIndex;\n case \"ByPolygon\":\n return corner.polygonIndex;\n case \"AllSame\":\n return 0;\n default:\n throw new Error(`fbx: unsupported ${feature} MappingInformationType ${JSON.stringify(mapping)}`);\n }\n}\n\nfunction resolveLayerReferenceIndex(reference, indices, mappedIndex, feature)\n{\n switch (reference)\n {\n case \"Direct\":\n return mappedIndex;\n case \"IndexToDirect\":\n case \"Index\":\n {\n if (mappedIndex >= indices.length)\n {\n throw new Error(`fbx: ${feature} index array is too short`);\n }\n return integerNumber(indices[mappedIndex], feature);\n }\n default:\n throw new Error(`fbx: unsupported ${feature} ReferenceInformationType ${JSON.stringify(reference)}`);\n }\n}\n\nfunction appendLayerElement(output, values, directIndex, elementSize, feature)\n{\n const offset = directIndex * elementSize;\n if (directIndex < 0 || offset + elementSize > values.length)\n {\n throw new Error(`fbx: ${feature} direct index ${directIndex} is out of range`);\n }\n\n for (let i = 0; i < elementSize; i++)\n {\n output.push(finiteNumber(values[offset + i], feature));\n }\n}\n\nfunction buildIndexGroups(polygonTriangles, materialNames)\n{\n const groups = [];\n const groupByName = new Map();\n let maxIndex = 0;\n\n for (let polygonIndex = 0; polygonIndex < polygonTriangles.length; polygonIndex++)\n {\n const\n triangles = polygonTriangles[polygonIndex],\n name = materialNames[polygonIndex] || \"default\",\n group = getIndexGroup(groups, groupByName, name);\n\n for (const triangle of triangles)\n {\n group.faces.push(triangle[0], triangle[1], triangle[2]);\n maxIndex = Math.max(maxIndex, triangle[0], triangle[1], triangle[2]);\n }\n }\n\n const bytesPerIndex = maxIndex > 0xffff ? 4 : 2;\n for (const group of groups)\n {\n group.bytesPerIndex = bytesPerIndex;\n }\n return groups;\n}\n\nfunction triangulatePolygonList(polygons, positions)\n{\n return polygons.map(polygon => triangulatePolygon(polygon, positions));\n}\n\nfunction triangulatePolygon(polygon, positions)\n{\n if (polygon.length === 3)\n {\n return [ polygon.slice() ];\n }\n\n const projected = projectPolygonTo2D(polygon, positions);\n if (!projected)\n {\n return triangulatePolygonFan(polygon);\n }\n\n const area = signedArea2D(projected);\n if (Math.abs(area) <= TRIANGULATION_EPSILON)\n {\n return triangulatePolygonFan(polygon);\n }\n if (isConvexPolygon2D(projected, area))\n {\n return triangulatePolygonFan(polygon);\n }\n\n const\n triangles = [],\n remaining = polygon.map((value, index) => index);\n\n let guard = polygon.length * polygon.length;\n while (remaining.length > 3 && guard-- > 0)\n {\n let clipped = false;\n for (let index = 0; index < remaining.length; index++)\n {\n const\n previous = remaining[(index + remaining.length - 1) % remaining.length],\n current = remaining[index],\n next = remaining[(index + 1) % remaining.length];\n\n if (!isEar2D(previous, current, next, remaining, projected, area))\n {\n continue;\n }\n\n triangles.push([ polygon[previous], polygon[current], polygon[next] ]);\n remaining.splice(index, 1);\n clipped = true;\n break;\n }\n\n if (!clipped)\n {\n return triangulatePolygonFan(polygon);\n }\n }\n\n if (remaining.length === 3)\n {\n triangles.push([ polygon[remaining[0]], polygon[remaining[1]], polygon[remaining[2]] ]);\n }\n\n return triangles.length ? triangles : triangulatePolygonFan(polygon);\n}\n\nfunction flattenPolygonTriangles(polygonTriangles)\n{\n const faces = [];\n for (const triangles of polygonTriangles)\n {\n for (const triangle of triangles)\n {\n faces.push(triangle[0], triangle[1], triangle[2]);\n }\n }\n return faces;\n}\n\nfunction triangulatePolygonFan(polygon)\n{\n const triangles = [];\n for (let i = 1; i < polygon.length - 1; i++)\n {\n triangles.push([ polygon[0], polygon[i], polygon[i + 1] ]);\n }\n return triangles;\n}\n\nfunction projectPolygonTo2D(polygon, positions)\n{\n const normal = computePolygonNormal(polygon, positions);\n const\n absX = Math.abs(normal[0]),\n absY = Math.abs(normal[1]),\n absZ = Math.abs(normal[2]);\n\n if (Math.max(absX, absY, absZ) <= TRIANGULATION_EPSILON)\n {\n return null;\n }\n\n const dropAxis = absX > absY && absX > absZ ? 0 : absY > absZ ? 1 : 2;\n return polygon.map(index =>\n {\n const offset = index * 3;\n if (dropAxis === 0)\n {\n return [ positions[offset + 1], positions[offset + 2] ];\n }\n if (dropAxis === 1)\n {\n return [ positions[offset], positions[offset + 2] ];\n }\n return [ positions[offset], positions[offset + 1] ];\n });\n}\n\nfunction computePolygonNormal(polygon, positions)\n{\n const normal = [ 0, 0, 0 ];\n for (let i = 0; i < polygon.length; i++)\n {\n const\n current = polygon[i] * 3,\n next = polygon[(i + 1) % polygon.length] * 3,\n x0 = positions[current],\n y0 = positions[current + 1],\n z0 = positions[current + 2],\n x1 = positions[next],\n y1 = positions[next + 1],\n z1 = positions[next + 2];\n\n normal[0] += (y0 - y1) * (z0 + z1);\n normal[1] += (z0 - z1) * (x0 + x1);\n normal[2] += (x0 - x1) * (y0 + y1);\n }\n return normal;\n}\n\nfunction signedArea2D(points)\n{\n let area = 0;\n for (let i = 0; i < points.length; i++)\n {\n const\n current = points[i],\n next = points[(i + 1) % points.length];\n\n area += current[0] * next[1] - next[0] * current[1];\n }\n return area * 0.5;\n}\n\nfunction isEar2D(previous, current, next, remaining, points, area)\n{\n const cross = cross2D(points[previous], points[current], points[next]);\n if (area > 0 ? cross <= TRIANGULATION_EPSILON : cross >= -TRIANGULATION_EPSILON)\n {\n return false;\n }\n\n for (const pointIndex of remaining)\n {\n if (pointIndex === previous || pointIndex === current || pointIndex === next)\n {\n continue;\n }\n if (pointInTriangle2D(points[pointIndex], points[previous], points[current], points[next]))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction isConvexPolygon2D(points, area)\n{\n for (let i = 0; i < points.length; i++)\n {\n const cross = cross2D(points[i], points[(i + 1) % points.length], points[(i + 2) % points.length]);\n if (Math.abs(cross) <= TRIANGULATION_EPSILON)\n {\n continue;\n }\n if (area > 0 ? cross < -TRIANGULATION_EPSILON : cross > TRIANGULATION_EPSILON)\n {\n return false;\n }\n }\n return true;\n}\n\nfunction cross2D(a, b, c)\n{\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n\nfunction pointInTriangle2D(point, a, b, c)\n{\n const\n ab = cross2D(a, b, point),\n bc = cross2D(b, c, point),\n ca = cross2D(c, a, point),\n hasNegative = ab < -TRIANGULATION_EPSILON || bc < -TRIANGULATION_EPSILON || ca < -TRIANGULATION_EPSILON,\n hasPositive = ab > TRIANGULATION_EPSILON || bc > TRIANGULATION_EPSILON || ca > TRIANGULATION_EPSILON;\n\n return !(hasNegative && hasPositive);\n}\n\nfunction getIndexGroup(groups, groupByName, name)\n{\n let group = groupByName.get(name);\n if (!group)\n {\n group = { name, bytesPerIndex: 2, faces: [] };\n groupByName.set(name, group);\n groups.push(group);\n }\n return group;\n}\n\nfunction readPolygonMaterialNames(geometry, owner, objectIndex, connections, polygonCount)\n{\n const materialSlots = readMaterialSlotNames(geometry, owner, objectIndex, connections);\n if (!materialSlots.length)\n {\n return new Array(polygonCount).fill(\"default\");\n }\n\n const layer = findFirstNode(geometry.node.children, \"LayerElementMaterial\");\n if (!layer)\n {\n return new Array(polygonCount).fill(materialSlots[0] || \"default\");\n }\n\n const\n mapping = String(readFirstChildProperty(layer, \"MappingInformationType\") || \"AllSame\"),\n materials = readChildArray(layer, \"Materials\") || [],\n names = [];\n\n for (let i = 0; i < polygonCount; i++)\n {\n const slot = mapping === \"ByPolygon\"\n ? integerNumber(materials[i] ?? 0, \"Materials\")\n : integerNumber(materials[0] ?? 0, \"Materials\");\n names.push(slot >= 0 ? materialSlots[slot] || `material_${slot}` : \"default\");\n }\n\n return names;\n}\n\nfunction readMaterialSlotNames(geometry, owner, objectIndex, connections)\n{\n const materials = [\n ...connectedChildObjects(owner, objectIndex, connections, \"Material\"),\n ...connectedChildObjects(geometry, objectIndex, connections, \"Material\")\n ];\n const seen = new Set();\n const names = [];\n\n for (const material of materials)\n {\n if (seen.has(material.key))\n {\n continue;\n }\n seen.add(material.key);\n names.push(material.name || `material_${names.length}`);\n }\n\n return names;\n}\n\nfunction meshNameFromFbx(geometry, owner)\n{\n return owner?.name || geometry.name || \"fbx_mesh\";\n}\n\nfunction createGr2Vertex(position, channels = {})\n{\n return {\n position,\n blendIndice: channels.blendIndice || [],\n tangent: channels.tangent || [],\n normal: channels.normal || [],\n texcoord0: channels.texcoord0 || [],\n texcoord1: channels.texcoord1 || [],\n color0: channels.color0 || [],\n binormal: channels.binormal || [],\n blendWeight: channels.blendWeight || []\n };\n}\n\nfunction computeBounds(positions)\n{\n if (!positions.length)\n {\n return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\n }\n\n const\n minBounds = [ positions[0], positions[1], positions[2] ],\n maxBounds = [ positions[0], positions[1], positions[2] ];\n\n for (let i = 3; i < positions.length; i += 3)\n {\n for (let c = 0; c < 3; c++)\n {\n const value = positions[i + c];\n if (value < minBounds[c])\n {\n minBounds[c] = value;\n }\n if (value > maxBounds[c])\n {\n maxBounds[c] = value;\n }\n }\n }\n\n return { minBounds, maxBounds };\n}\n\nfunction hydrateGr2(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n grannyFileFormatRevision: root.grannyFileFormatRevision,\n grannyFileSource: root.grannyFileSource,\n meshes: root.meshes.map(mesh => hydrate(\"Mesh\", {\n name: mesh.name,\n morphTargets: mesh.morphTargets.map(target => hydrate(\"MorphTarget\", target, hydrationClasses)),\n minBounds: mesh.minBounds,\n maxBounds: mesh.maxBounds,\n boneBindings: mesh.boneBindings.map(binding => hydrate(\"BoneBinding\", binding, hydrationClasses)),\n vertex: mesh.vertex,\n indices: mesh.indices.map(group => hydrate(\"IndexGroup\", group, hydrationClasses))\n }, hydrationClasses)),\n models: root.models.map(model => hydrateGr2Model(model, hydrationClasses)),\n animations: root.animations\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateGr2Model(model, classes)\n{\n return hydrate(\"Model\", {\n ...model,\n skeleton: hydrateGr2Skeleton(model.skeleton, classes)\n }, classes);\n}\n\nfunction hydrateGr2Skeleton(skeleton, classes)\n{\n return hydrate(\"Skeleton\", {\n ...skeleton,\n bones: skeleton.bones.map(bone => hydrate(\"Bone\", bone, classes))\n }, classes);\n}\n\nfunction buildCmfFromShared(root)\n{\n return {\n version: 1,\n metadata: buildCmfMetadata(root),\n meshes: (root.meshes ?? []).map(mesh => buildCmfMesh(mesh)),\n skeletons: root.skeletons ?? [],\n animations: root.cmfAnimations ?? []\n };\n}\n\nfunction buildCmfMetadata(root)\n{\n const\n source = String(root.grannyFileSource || \"\"),\n entries = [];\n\n if (source && source !== \"memory\")\n {\n entries.push({ key: \"source\", value: source });\n }\n\n entries.push(\n { key: \"sourceFormat\", value: \"fbx\" },\n { key: \"generator\", value: \"CjsFbxFormat\" }\n );\n\n return { entries };\n}\n\nfunction buildCmfMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n indices = mesh.indices ?? [],\n boneBindings = (mesh.boneBindings ?? []).map(binding => buildCmfBoneBinding(binding)),\n morphTargets = buildCmfMorphTargets(mesh),\n areas = indices.map(group => buildCmfMeshArea(group, mesh, morphTargets)),\n stride = estimateVertexStride(vertex),\n vertexCount = stride === 0 ? 0 : Math.floor((vertex.position ?? []).length / 3);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildCmfDecl(vertex),\n lods: [ {\n vb: { index: 1, offset: 0, size: vertexCount * stride, stride },\n ib: { index: 2, offset: 0, size: totalIndexCount(indices) * cmfBytesPerIndex(indices), stride: cmfBytesPerIndex(indices) },\n areas: indices.map((group, index) => ({\n firstElement: firstTriangle(indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: morphTargets.lods,\n threshold: 0xffffffff,\n vertex,\n indices\n } ],\n areas,\n boneBindings,\n morphTargets: {\n decl: morphTargets.decl,\n targets: morphTargets.targets\n },\n uvDensities: [],\n bounds: cmfBounds(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: mesh.skeleton ?? null,\n vertex,\n indices\n };\n}\n\nfunction buildCmfMeshArea(group, mesh, morphTargets)\n{\n const bones = buildCmfAreaBones(group, mesh.vertex ?? {});\n return {\n name: group.name ?? \"\",\n bounds: cmfAreaBounds(group, mesh),\n bones,\n affectedByBones: bones.length > 0,\n affectedByMorphTargets: isCmfAreaAffectedByMorphTargets(group, mesh.vertex ?? {}, morphTargets.lods)\n };\n}\n\nfunction buildCmfAreaBones(group, vertex)\n{\n const\n boneIndices = vertex.blendIndice ?? [],\n boneWeights = vertex.blendWeight ?? [],\n hasWeights = hasArrayValues(boneWeights),\n bones = new Set();\n\n if (!hasArrayValues(boneIndices))\n {\n return [];\n }\n\n for (const vertexIndex of group.faces ?? [])\n {\n const offset = vertexIndex * 4;\n for (let i = 0; i < 4; i++)\n {\n const weight = hasWeights ? boneWeights[offset + i] ?? 0 : i === 0 ? 1 : 0;\n if (weight > 0)\n {\n bones.add(boneIndices[offset + i] ?? 0);\n }\n }\n }\n\n return Array.from(bones);\n}\n\nfunction isCmfAreaAffectedByMorphTargets(group, baseVertex, morphLods)\n{\n const basePositions = baseVertex.position ?? [];\n for (const lod of morphLods)\n {\n const positions = lod.vertex?.position ?? [];\n for (const vertexIndex of group.faces ?? [])\n {\n const offset = vertexIndex * 3;\n if (\n positions[offset] !== basePositions[offset] ||\n positions[offset + 1] !== basePositions[offset + 1] ||\n positions[offset + 2] !== basePositions[offset + 2]\n )\n {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction buildCmfMorphTargets(mesh)\n{\n const targets = mesh.morphTargets ?? [];\n if (!targets.length)\n {\n return { decl: [], targets: [], lods: [] };\n }\n\n const\n targetVertices = targets.map(target => target.vertex ?? {}),\n decl = buildCmfDeclFromVertices(targetVertices),\n stride = estimateStrideFromDecl(decl);\n\n return {\n decl,\n targets: targets.map(target => ({\n name: target.name ?? \"\",\n maxDisplacement: target.maxDisplacement ?? computeMaxDisplacement(mesh.vertex?.position ?? [], target.vertex?.position ?? [])\n })),\n lods: targets.map(target =>\n {\n const\n morphVertex = target.vertex ?? {},\n vertexCount = Math.floor((morphVertex.position ?? []).length / 3);\n\n return {\n vb: { index: 0, offset: 0, size: vertexCount * stride, stride },\n vertex: normalizeCmfVertexForDecl(morphVertex, decl, vertexCount)\n };\n })\n };\n}\n\nfunction buildCmfBoneBinding(binding)\n{\n return {\n name: binding.name ?? \"\",\n bounds: {\n min: binding.minBounds ?? binding.bounds?.min ?? [ 0, 0, 0 ],\n max: binding.maxBounds ?? binding.bounds?.max ?? [ 0, 0, 0 ]\n }\n };\n}\n\nfunction buildCmfDecl(vertex)\n{\n return buildCmfDeclFromVertices([ vertex ]);\n}\n\nfunction buildCmfDeclFromVertices(vertices)\n{\n const decl = [];\n let offset = 0;\n for (const channel of CMF_VERTEX_CHANNELS)\n {\n const [ name, usage, elementCount, usageIndex = 0, type = \"Float32\" ] = channel;\n if (!vertices.some(vertex => hasArrayValues(vertex[name])))\n {\n continue;\n }\n decl.push({ usage, usageIndex, type, elementCount, offset });\n offset += elementCount * cmfElementTypeSize(type);\n }\n return decl;\n}\n\nfunction normalizeCmfVertexForDecl(vertex, decl, vertexCount)\n{\n const normalized = { ...vertex };\n for (const channel of CMF_VERTEX_CHANNELS)\n {\n const [ name, usage, elementCount, usageIndex = 0 ] = channel;\n if (!decl.some(element => element.usage === usage && element.usageIndex === usageIndex))\n {\n continue;\n }\n if (!hasArrayValues(normalized[name]))\n {\n normalized[name] = new Array(vertexCount * elementCount).fill(0);\n }\n }\n return normalized;\n}\n\nfunction estimateVertexStride(vertex)\n{\n return estimateStrideFromDecl(buildCmfDecl(vertex));\n}\n\nfunction estimateStrideFromDecl(decl)\n{\n return decl.reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * cmfElementTypeSize(element.type)), 0);\n}\n\nfunction cmfElementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices)\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction cmfBytesPerIndex(indices)\n{\n return indices.some(group => group.bytesPerIndex === 4 || (group.faces ?? []).some(index => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices, areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++)\n {\n first += Math.floor((indices[i].faces ?? []).length / 3);\n }\n return first;\n}\n\nfunction cmfBounds(mesh)\n{\n return {\n min: mesh.minBounds ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? [ 0, 0, 0 ]\n };\n}\n\nfunction cmfAreaBounds(group, mesh)\n{\n const\n positions = mesh.vertex?.position ?? [],\n areaPositions = [];\n\n for (const vertexIndex of group.faces ?? [])\n {\n const offset = vertexIndex * 3;\n if (offset + 2 < positions.length)\n {\n areaPositions.push(positions[offset], positions[offset + 1], positions[offset + 2]);\n }\n }\n\n const bounds = computeBounds(areaPositions);\n return {\n min: bounds.minBounds,\n max: bounds.maxBounds\n };\n}\n\nfunction hydrateCmf(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n ...root,\n metadata: root.metadata ? hydrateCmfMetadata(root.metadata, hydrationClasses) : null,\n meshes: root.meshes.map(mesh => hydrateCmfMesh(mesh, hydrationClasses)),\n skeletons: root.skeletons.map(skeleton => hydrateCmfSkeleton(skeleton, hydrationClasses)),\n animations: root.animations.map(animation => hydrateCmfAnimation(animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateCmfMetadata(metadata, classes)\n{\n return hydrate(\"Metadata\", {\n entries: (metadata.entries ?? []).map(entry => hydrate(\"MetadataEntry\", entry, classes))\n }, classes);\n}\n\nfunction hydrateCmfMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n ...mesh,\n decl: mesh.decl.map(element => hydrate(\"VertexElement\", element, classes)),\n lods: mesh.lods.map(lod => hydrate(\"MeshLod\", {\n ...lod,\n areas: lod.areas.map(area => hydrate(\"LodMeshArea\", area, classes)),\n morphTargets: lod.morphTargets.map(target => hydrate(\"LodMorphTarget\", target, classes))\n }, classes)),\n areas: mesh.areas.map(area => hydrate(\"MeshArea\", area, classes)),\n boneBindings: mesh.boneBindings.map(binding => hydrate(\"BoneBinding\", binding, classes)),\n morphTargets: hydrate(\"MorphTargets\", {\n decl: mesh.morphTargets.decl.map(element => hydrate(\"VertexElement\", element, classes)),\n targets: mesh.morphTargets.targets.map(target => hydrate(\"MorphTarget\", target, classes))\n }, classes),\n audioOcclusionMesh: hydrate(\"AudioOcclusionMesh\", mesh.audioOcclusionMesh, classes)\n }, classes);\n}\n\nfunction hydrateCmfSkeleton(skeleton, classes)\n{\n return hydrate(\"Skeleton\", {\n ...skeleton,\n boneMasks: skeleton.boneMasks.map(mask => hydrate(\"BoneMask\", {\n ...mask,\n weights: mask.weights.map(weight => hydrate(\"BoneWeight\", weight, classes))\n }, classes))\n }, classes);\n}\n\nfunction hydrateCmfAnimation(animation, classes)\n{\n return hydrate(\"Animation\", {\n ...animation,\n channels: animation.channels.map(channel => hydrate(\"AnimationChannel\", channel, classes)),\n curves: animation.curves.map(curve => hydrate(\"AnimationCurve\", curve, classes))\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n if (!Class)\n {\n return fields;\n }\n\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return populate(new Class(), fields, options);\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsFbxFormat class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n\nfunction buildFbxRoot(nodes)\n{\n const headerNode = findFirstNode(nodes, \"FBXHeaderExtension\");\n const globalSettingsNode = findFirstNode(nodes, \"GlobalSettings\");\n const definitionsNode = findFirstNode(nodes, \"Definitions\");\n const objectsNode = findFirstNode(nodes, \"Objects\");\n const connectionsNode = findFirstNode(nodes, \"Connections\");\n\n return {\n rootNodeNames: nodes.map(node => node.name),\n header: readHeader(headerNode),\n globalSettings: readProperties70(globalSettingsNode),\n definitions: readDefinitions(definitionsNode),\n objects: readObjects(objectsNode),\n connections: readConnections(connectionsNode)\n };\n}\n\nfunction readHeader(node)\n{\n if (!node)\n {\n return {};\n }\n\n return {\n fbxHeaderVersion: readFirstChildProperty(node, \"FBXHeaderVersion\"),\n fbxVersion: readFirstChildProperty(node, \"FBXVersion\"),\n creator: readFirstChildProperty(node, \"Creator\")\n };\n}\n\nfunction readDefinitions(node)\n{\n if (!node)\n {\n return {\n version: 0,\n count: 0,\n objectTypes: []\n };\n }\n\n return {\n version: readFirstChildProperty(node, \"Version\") || 0,\n count: readFirstChildProperty(node, \"Count\") || 0,\n objectTypes: node.children\n .filter(child => child.name === \"ObjectType\")\n .map(readObjectType)\n };\n}\n\nfunction readObjectType(node)\n{\n return {\n type: node.properties[0] || \"\",\n count: readFirstChildProperty(node, \"Count\") || 0\n };\n}\n\nfunction readObjects(node)\n{\n const byId = {};\n const byType = {};\n const list = [];\n\n if (!node)\n {\n return { count: 0, list, byId, byType };\n }\n\n for (const child of node.children)\n {\n if (child.properties.length === 0)\n {\n continue;\n }\n\n const entry = readObjectEntry(child);\n list.push(entry);\n byId[entry.key] = entry;\n if (!byType[entry.nodeName])\n {\n byType[entry.nodeName] = [];\n }\n byType[entry.nodeName].push(entry.key);\n }\n\n return {\n count: list.length,\n list,\n byId,\n byType\n };\n}\n\nfunction readObjectEntry(node)\n{\n const id = node.properties[0];\n const fullName = node.properties[1] || \"\";\n const className = node.properties[2] || \"\";\n\n return {\n id,\n key: toObjectKey(id),\n nodeName: node.name,\n name: getShortObjectName(fullName),\n fullName,\n className,\n propertyCount: node.properties.length,\n childCount: node.children.length,\n attributeNames: node.children.map(child => child.name)\n };\n}\n\nfunction readConnections(node)\n{\n const list = [];\n const parentsByChild = {};\n const childrenByParent = {};\n\n if (node)\n {\n for (const child of node.children)\n {\n if (child.name !== \"C\")\n {\n continue;\n }\n\n const entry = {\n relation: child.properties[0] || \"\",\n childId: child.properties[1],\n parentId: child.properties[2],\n property: child.properties[3] || \"\"\n };\n entry.childKey = toObjectKey(entry.childId);\n entry.parentKey = toObjectKey(entry.parentId);\n list.push(entry);\n pushIndex(parentsByChild, entry.childKey, entry.parentKey);\n pushIndex(childrenByParent, entry.parentKey, entry.childKey);\n }\n }\n\n return {\n count: list.length,\n list,\n parentsByChild,\n childrenByParent\n };\n}\n\nfunction readProperties70(node)\n{\n const properties = {};\n const properties70 = node ? findFirstNode(node.children, \"Properties70\") : null;\n\n if (!properties70)\n {\n return { properties };\n }\n\n for (const child of properties70.children)\n {\n if (child.name !== \"P\" || child.properties.length === 0)\n {\n continue;\n }\n\n const key = child.properties[0];\n properties[key] = {\n type: child.properties[1] || \"\",\n label: child.properties[2] || \"\",\n flags: child.properties[3] || \"\",\n value: getProperty70Value(child.properties)\n };\n }\n\n return { properties };\n}\n\nfunction getProperty70Value(properties)\n{\n if (properties.length <= 5)\n {\n return properties[4];\n }\n return properties.slice(4);\n}\n\nfunction readFirstChildProperty(node, childName)\n{\n const child = findFirstNode(node.children, childName);\n return child ? child.properties[0] : undefined;\n}\n\nfunction findFirstNode(nodes, name)\n{\n return nodes.find(node => node.name === name) || null;\n}\n\nfunction getShortObjectName(fullName)\n{\n if (typeof fullName !== \"string\")\n {\n return \"\";\n }\n const\n fbxClassMarker = fullName.indexOf(\"\\u0000\\u0001\"),\n objectName = fbxClassMarker === -1 ? fullName : fullName.slice(0, fbxClassMarker),\n namespaceMarker = objectName.lastIndexOf(\"::\");\n\n return namespaceMarker === -1 ? objectName : objectName.slice(namespaceMarker + 2);\n}\n\nfunction pushIndex(index, key, value)\n{\n if (!index[key])\n {\n index[key] = [];\n }\n index[key].push(value);\n}\n\nfunction toObjectKey(value)\n{\n return value === undefined || value === null ? \"\" : String(value);\n}\n\nfunction parseAsciiLine(line, values)\n{\n const match = /^([A-Za-z_][\\w.]*)\\s*:\\s*(.*)$/u.exec(line);\n if (!match)\n {\n return null;\n }\n\n let body = match[2].trim();\n const opensBlock = body.endsWith(\"{\");\n if (opensBlock)\n {\n body = body.slice(0, -1).trim();\n }\n\n const properties = body ? parseAsciiProperties(body) : [];\n if (properties.length > values.maxProperties)\n {\n throw new Error(`fbx: ASCII node ${match[1]} exceeds maxProperties (${values.maxProperties})`);\n }\n\n return {\n name: match[1],\n properties,\n propertyTypes: [],\n children: [],\n opensBlock\n };\n}\n\nfunction parseAsciiProperties(body)\n{\n return splitAsciiProperties(body).map(parseAsciiValue);\n}\n\nfunction splitAsciiProperties(body)\n{\n const parts = [];\n let current = \"\";\n let quoted = false;\n let escaped = false;\n\n for (let i = 0; i < body.length; i++)\n {\n const char = body[i];\n if (escaped)\n {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\")\n {\n current += char;\n escaped = true;\n continue;\n }\n if (char === \"\\\"\")\n {\n quoted = !quoted;\n current += char;\n continue;\n }\n if (char === \",\" && !quoted)\n {\n parts.push(current.trim());\n current = \"\";\n continue;\n }\n current += char;\n }\n\n if (current.trim() || body.endsWith(\",\"))\n {\n parts.push(current.trim());\n }\n\n return parts;\n}\n\nfunction parseAsciiValue(value)\n{\n if (/^\".*\"$/u.test(value))\n {\n return value.slice(1, -1).replace(/\\\\\"/gu, \"\\\"\").replace(/\\\\\\\\/gu, \"\\\\\");\n }\n if (/^(true|false)$/iu.test(value))\n {\n return value.toLowerCase() === \"true\";\n }\n if (/^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?$/iu.test(value))\n {\n return Number(value);\n }\n return value;\n}\n\nfunction stripAsciiComment(line)\n{\n let quoted = false;\n let escaped = false;\n for (let i = 0; i < line.length; i++)\n {\n const char = line[i];\n if (escaped)\n {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\")\n {\n escaped = true;\n continue;\n }\n if (char === \"\\\"\")\n {\n quoted = !quoted;\n continue;\n }\n if (char === \";\" && !quoted)\n {\n return line.slice(0, i);\n }\n }\n return line;\n}\n\nfunction isBinaryFBX(bytes)\n{\n if (bytes.byteLength < BINARY_HEADER_SIZE)\n {\n return false;\n }\n for (let i = 0; i < BINARY_SIGNATURE.length; i++)\n {\n if (bytes[i] !== BINARY_SIGNATURE.charCodeAt(i))\n {\n return false;\n }\n }\n return true;\n}\n\nfunction isAsciiFBXText(text)\n{\n return /(^|\\n)\\s*FBXHeaderExtension\\s*:/u.test(text) ||\n /(^|\\n)\\s*Objects\\s*:/u.test(text) ||\n /;\\s*FBX\\s+\\d+\\.\\d+\\.\\d+/iu.test(text);\n}\n\nfunction countAsciiRootNodes(text)\n{\n return collectAsciiRootNames(text).length;\n}\n\nfunction collectAsciiRootNames(text)\n{\n const names = [];\n let depth = 0;\n\n for (const rawLine of text.split(/\\r?\\n/u))\n {\n const line = stripAsciiComment(rawLine).trim();\n if (!line)\n {\n continue;\n }\n if (line.startsWith(\"}\"))\n {\n depth = Math.max(depth - 1, 0);\n continue;\n }\n\n const match = /^([A-Za-z_][\\w.]*)\\s*:/u.exec(line);\n if (match && depth === 0)\n {\n names.push(match[1]);\n }\n if (line.endsWith(\"{\"))\n {\n depth++;\n }\n }\n\n return names;\n}\n\nfunction readAsciiVersion(text)\n{\n const direct = /FBXVersion\\s*:\\s*(\\d+)/u.exec(text);\n if (direct)\n {\n return Number(direct[1]);\n }\n\n const comment = /;\\s*FBX\\s+(\\d+)\\.(\\d+)\\.(\\d+)/iu.exec(text);\n if (!comment)\n {\n return 0;\n }\n return Number(`${comment[1]}${comment[2].padStart(2, \"0\")}${comment[3].padStart(2, \"0\")}`);\n}\n\nfunction decodeAsciiPrefix(bytes, length)\n{\n let text = \"\";\n const count = Math.min(bytes.byteLength, length);\n for (let i = 0; i < count; i++)\n {\n const byte = bytes[i];\n if (byte === 0)\n {\n break;\n }\n text += String.fromCharCode(byte);\n }\n return text;\n}\n\nfunction getBinaryNodeHeaderSize(version)\n{\n return version >= 7500 ? NODE_HEADER_64_SIZE : NODE_HEADER_32_SIZE;\n}\n\nfunction isNullRecord(bytes, offset, length)\n{\n if (offset + length > bytes.byteLength)\n {\n return false;\n }\n for (let i = 0; i < length; i++)\n {\n if (bytes[offset + i] !== 0)\n {\n return false;\n }\n }\n return true;\n}\n\nfunction getArrayElementSize(type)\n{\n if (type === \"d\" || type === \"l\")\n {\n return 8;\n }\n if (type === \"f\" || type === \"i\")\n {\n return 4;\n }\n return 1;\n}\n\nfunction normalizeIntegerLimit(value, fieldName, readerName)\n{\n if (!Number.isInteger(value) || value < 1)\n {\n throw new TypeError(`${readerName}: ${fieldName} must be a positive integer`);\n }\n return value;\n}\n\n/**\n * Normalize a boolean reader option.\n *\n * @param {boolean|0|1} value Option value.\n * @param {string} fieldName Option name.\n * @param {string} readerName Reader name for errors.\n * @returns {boolean} Normalized boolean.\n */\nfunction normalizeBooleanOption(value, fieldName, readerName)\n{\n if (typeof value === \"boolean\")\n {\n return value;\n }\n if (value === 0 || value === 1)\n {\n return Boolean(value);\n }\n throw new TypeError(`${readerName}: ${fieldName} must be a boolean`);\n}\n\nfunction hasOwn(value, key)\n{\n return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction normalizeClasses(classes, readerName)\n{\n if (!classes)\n {\n return {};\n }\n if (typeof classes !== \"object\" || Array.isArray(classes))\n {\n throw new TypeError(`${readerName}: classes must be an object map`);\n }\n\n const normalized = {};\n for (const [ key, Class ] of Object.entries(classes))\n {\n validateClass(key, Class, readerName);\n normalized[key] = Class;\n }\n return normalized;\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\" || Array.isArray(classes))\n {\n throw new TypeError(`${readerName}: classes must be an object map`);\n }\n\n const normalized = normalizeClasses(base, readerName);\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(key, readerName);\n delete normalized[key];\n continue;\n }\n validateClass(key, Class, readerName);\n normalized[key] = Class;\n }\n return normalized;\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some(Class => typeof Class === \"function\");\n}\n\nfunction finiteNumber(value, feature)\n{\n const number = Number(value);\n if (!Number.isFinite(number))\n {\n throw new Error(`fbx: ${feature} contains a non-finite number`);\n }\n return number;\n}\n\nfunction integerNumber(value, feature)\n{\n const number = finiteNumber(value, feature);\n if (!Number.isInteger(number))\n {\n throw new Error(`fbx: ${feature} contains a non-integer value`);\n }\n return number;\n}\n\nfunction ensureRange(bytes, offset, length, message)\n{\n if (offset + length > bytes.byteLength)\n {\n throw new Error(message);\n }\n}\n\nfunction readString(bytes, offset, length)\n{\n ensureRange(bytes, offset, length, \"fbx: string is truncated\");\n return TEXT_DECODER.decode(bytes.subarray(offset, offset + length));\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction readU32BE(bytes, offset)\n{\n return (((bytes[offset] << 24) >>> 0) | (bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]) >>> 0;\n}\n\nfunction readI16LE(bytes, offset)\n{\n const value = bytes[offset] | (bytes[offset + 1] << 8);\n return value & 0x8000 ? value - 0x10000 : value;\n}\n\nfunction readI32LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] << 24);\n}\n\nfunction readU64LEAsNumber(bytes, offset)\n{\n const low = readU32LE(bytes, offset);\n const high = readU32LE(bytes, offset + 4);\n return high * 0x100000000 + low;\n}\n\nfunction readI64LEValue(bytes, offset)\n{\n const low = readU32LE(bytes, offset);\n const highUnsigned = readU32LE(bytes, offset + 4);\n const negative = !!(highUnsigned & 0x80000000);\n let value = highUnsigned * 0x100000000 + low;\n\n if (negative)\n {\n value -= 0x10000000000000000;\n }\n\n return Number.isSafeInteger(value) ? value : String(value);\n}\n\nfunction readF32LE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getFloat32(0, true);\n}\n\nfunction readF64LE(bytes, offset)\n{\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 8).getFloat64(0, true);\n}\n"],"names":["OUTPUT_CMF","OUTPUT_GR2","OUTPUT_RAW","OUTPUT_JSON","OUTPUT_FBX_JSON","GR2_CLASS_KEYS","Object","freeze","CMF_CLASS_KEYS","CLASS_KEYS","Array","from","Set","DEFAULT_VALUES","emit","inputType","source","flipV","classes","maxBytes","maxNodes","maxDepth","maxProperties","maxArrayLength","BINARY_SIGNATURE","BINARY_HEADER_SIZE","NODE_HEADER_32_SIZE","NODE_HEADER_64_SIZE","ASCII_PREFIX_LENGTH","BASE64_ALPHABET","TEXT_DECODER","TextDecoder","OPTION_KEYS","DEFLATE_CODE_LENGTH_ORDER","DEFLATE_LENGTH_BASE","DEFLATE_LENGTH_EXTRA","DEFLATE_DISTANCE_BASE","DEFLATE_DISTANCE_EXTRA","ADLER32_MOD","TRIANGULATION_EPSILON","IDENTITY_MATRIX4","DEFAULT_ROTATION_ORDER","FBX_ROTATION_ORDERS","FBX_TICKS_PER_SECOND","CMF_VERTEX_CHANNELS","FEATURE_SCAN_ROOT_NODES","SUPPORTED_GEOMETRY_CLASSES","SUPPORTED_LAYER_ELEMENTS","SUPPORTED_LAYER_MAPPINGS","SUPPORTED_LAYER_REFERENCES","SUPPORTED_MATERIAL_MAPPINGS","fixedDeflateTables","normalizeValues","base","options","readerName","TypeError","key","keys","has","JSON","stringify","baseValues","values","String","replace","toLowerCase","normalizeEmit","normalizeIntegerLimit","normalizeBooleanOption","hasOwn","mergeClasses","normalizeClasses","hasClasses","validateClassKey","includes","Error","join","validateClass","Class","undefined","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","readWithValues","bytes","metadata","inspectWithValues","payloadType","sourceFormat","parseWithValues","readGr2WithValues","readCmfWithValues","detected","inspectBytes","mediaTypes","parseDocumentWithValues","document","parseGr2DocumentWithValues","hydrateGr2","buildGr2FromFbxNodes","nodes","hydrateCmf","buildCmfFromShared","encoding","parseBinaryDocument","parseAsciiDocument","error","code","readBinaryTargetNodes","readAsciiTargetNodes","isSupportedWithValues","recognized","diagnostics","inspectFbxFeatureSupport","warnings","errors","format","supported","confidence","preferred","reason","variants","kind","codec","message","targetNames","collectFbxFeatureSupport","objectsNode","findFirstNode","objectIndex","indexObjectNodes","connections","readConnections","collectGeometryFeatureWarnings","collectLayerElementFeatureWarnings","collectSkinFeatureWarnings","collectBlendShapeFeatureWarnings","geometry","list","filter","entry","nodeName","className","addWarning","objectLabel","node","children","layer","child","name","startsWith","collectMaterialLayerFeatureWarnings","collectVertexLayerFeatureWarnings","mapping","readFirstChildProperty","reference","skins","connectedChildObjects","isSkinDeformer","length","skin","clusters","isClusterDeformer","cluster","bone","clusterBone","indexes","readChildArray","weights","hasPositiveClusterWeight","hasControlPointInfluenceOverflow","buildSkinClusterRecords","fullName","records","controlPointInfluences","buildControlPointInfluences","influences","influence","weight","channels","isBlendShapeChannel","channel","shapes","readBlendShapeChannelShapes","isUnsupportedBlendShapeInBetween","push","isBinaryFBX","inspectBinaryBytes","text","decodeAsciiPrefix","ascii","isAsciiFBXText","version","readAsciiVersion","signature","rootNodeCount","countAsciiRootNodes","rootNodeNames","collectAsciiRootNames","isFBX","toJsonValue","value","type","constructor","isArray","map","output","entries","readU32LE","headerSize","getBinaryNodeHeaderSize","offset","isNullRecord","header","readBinaryNodeHeader","endOffset","readString","nameOffset","nameLength","nodeCount","result","readBinaryNode","count","root","buildFbxRoot","depth","propertyCount","cursor","propertiesOffset","properties","propertyTypes","i","readBinaryProperty","propertyEnd","propertyListLength","large","readU64LEAsNumber","Number","isSafeInteger","ensureRange","fromCharCode","readI16LE","readI32LE","readF32LE","readF64LE","readI64LEValue","readBinaryBlobProperty","readBinaryArrayProperty","dataOffset","subarray","readUncompressedArray","expectedByteLength","getArrayElementSize","expanded","inflateZlib","arrayType","compressed","expected","Float32Array","Float64Array","Int32Array","expectedLength","cmf","flg","expectedAdler","readU32BE","inflateDeflate","actualAdler","adler32","reader","DeflateBitReader","state","finalBlock","readBits","blockType","inflateStoredBlock","tables","getFixedDeflateTables","inflateHuffmanBlock","literalLength","distance","readDynamicDeflateTables","alignByte","readAlignedU16LE","inverseLength","writeInflatedByte","readAlignedByte","literalLengthTable","distanceTable","symbol","decode","lengthIndex","distanceSymbol","copyInflatedBytes","literalLengths","fill","DeflateHuffmanTable","literalLengthCount","distanceCount","codeLengthCount","codeLengthLengths","codeLengthTable","totalCount","lengths","repeatCodeLength","slice","a","b","byte","bitBuffer","bitCount","shift","remaining","take","Math","min","low","high","maxBits","counts","max","nextCodes","bits","reversed","reverseBits","table","stack","rawLine","split","line","stripAsciiComment","trim","pop","parseAsciiLine","opensBlock","collecting","isRoot","parent","sceneTransform","buildSceneTransform","modelWorldCache","Map","skeletonContext","buildSkeletonContext","meshes","owners","connectedParentObjects","owner","buildGr2MeshFromGeometry","grannyFileFormatRevision","grannyFileSource","models","buildGr2Models","skeletons","skeleton","cmfSkeleton","animations","cmfAnimations","readCmfAnimations","controlPoints","requireChildArray","polygonVertexIndex","decoded","decodePolygonCorners","meshTransform","buildMeshGeometryToWorld","positions","transformPoints","normal","transformDirections","readLayerElementChannel","explicitTangent","explicitBinormal","texcoord0","readUvLayerElementChannel","texcoord1","color0","polygonTriangles","triangulatePolygonList","polygons","triangleFaces","flattenPolygonTriangles","tangent","generateBaseTangents","binormal","generateBaseBinormals","materialNames","readPolygonMaterialNames","indices","buildIndexGroups","readSkinning","morphTargets","readMorphTargets","bounds","computeBounds","meshNameFromFbx","minBounds","maxBounds","boneBindings","vertex","createGr2Vertex","blendIndice","blendWeight","find","emptySkinning","clusterRecords","boneKeys","record","boneKey","outputInfluences","corners","corner","normalizeInfluences","get","controlPointIndex","buildBoneBindingsFromInfluences","findSkinSkeletonIndex","boneIndex","hasArrayValues","cleanNumericArray","generateTangents","generateBiNormals","basePositions","baseVertex","blendShapes","deformer","targets","blendShape","shape","target","buildMorphTarget","vertices","controlTargetPositions","integerNumber","targetOffset","controlOffset","finiteNumber","vertexChannels","buildMorphTargetVertexChannels","dataIsDeltas","maxDisplacement","computeMaxDisplacement","readMorphTargetCustomNormals","generateNormals","encoded","readMorphTargetCustomNormalString","decodeBase64Float32Vector3Array","propertyName","readProperties70","vertexCount","feature","decodeBase64Bytes","view","DataView","getFloat32","char","test","indexOf","targetPositions","hypot","cleanFloat","morphTargetNames","buildMorphTargetNameSet","boneTargets","buildCmfBoneTargetMap","animation","readCmfAnimation","names","mesh","add","set","bones","parents","layers","curveNodeParents","curveNodes","uniqueEntries","flatMap","curveNode","readMorphAnimationRecords","readRootPropertyMorphAnimationRecords","boneRecord","readBoneAnimationRecord","stackTimeSpan","readAnimationStackTimeSpan","curves","duration","knots","curve","ticks","tick","startTick","curveIndex","valueDimension","knot","interpolation","knotType","valueType","knotCount","packFloat32Values","targetType","start","propertyNumber","stop","Infinity","readMorphAnimationTargets","readMorphAnimationCurve","targetConnection","connection","relation","childKey","isBoneAnimationProperty","property","parentKey","isBoneModel","byId","isUserDefinedNumericProperty","size","readAnyScalarAnimationCurve","isMorphAnimationProperty","readBlendShapeChannelMorphNames","Boolean","readBlendShapeChannelFullWeights","scale","predicate","item","match","animationCurveAxis","readScalarAnimationCurve","keyValueFloat","keyValue","valueFeature","pairs","index","sort","pair","normalizeBoneAnimationProperty","vectorCurve","readVectorAnimationCurve","animationCurveNodeFallback","boneAnimationFallback","packBonePositionValues","packBoneRotationValues","propertyVector3","fallback","axes","axis","components","every","component","uniqueSortedTicks","sampleScalarAnimationCurve","amount","position","transformScenePoint","cleanVector3","matrix","composeModelTransform","translation","rotation","transformed","transformMatrixScene","decomposeMatrix4","definition","flags","seen","unique","forEach","setFloat32","boneName","best","total","reduce","sum","bindingMatrix","buildBoneBindingMatrix","bindingPositions","vertexIndex","some","transformPointMatrix4","invertMatrix4","skeletonIndex","boneToSkeletonIndex","roots","bindPoseMatrices","readBindPoseMatrices","visited","buildSkeleton","importBone","parentIndex","localMatrix","buildBoneLocalMatrix","transform","recordIndex","invBindTransforms","buildInvBindTransforms","gr2Skeleton","buildGr2Bone","restTransforms","boneMasks","buildCmfBoneMasks","masks","byName","isUserDefinedNumericPropertyDefinition","mask","clamp01","meshBindings","meshIndex","flag","orientation","scaleShear","buildModelTransformState","nodeToWorld","scaleMatrixTranslation","buildModelLocalTransform","poseMatrices","cleanMatrix4","parentInvTransform","invLocalTransform","multiplyMatrix4","matrices","pose","poseNode","nodeId","toObjectKey","globalSettingsNode","unitScaleFactor","right","axisVector","up","forward","buildModelGeometricTransform","model","cache","local","buildModelLocalState","parentState","composeInheritedModelState","unscaledNodeToWorld","unscaledMatrix","inheritScale","inheritType","multiplyVector3","composeSimpleTransform","overrides","rotationOrder","propertyRotationOrder","rotationPivot","scalingPivot","multiplyMatrix4List","translationMatrix4","rotationMatrix4","inverseRotationMatrix4","negateVector3","scaleMatrix4","rotationDegrees","point","useNormalMatrix","normalMatrix","normalMatrix3","vector","transformVectorMatrix3","normalizeVector3","transformSceneVector","dotVector3","column0","column1","column2","rotationMatrix","matrixToQuaternion","m00","m01","m02","m10","m11","m12","m20","m21","m22","trace","x","y","z","w","s","sqrt","normalizeQuaternion","sign","order","radians","degreesToRadians","axisIndex","axisRotationMatrix4","next","c","cos","sin","row","column","k","inverse","pivotRow","abs","pivot","EPSILON","factor","flat","a00","a01","a02","a10","a11","a12","a20","a21","a22","b01","b11","b21","determinant","inverseDeterminant","quaternion","PI","byType","summary","readObjectEntry","pushIndex","parentsByChild","childrenByParent","childName","readNodeArray","arrayPropertyToNumbers","asciiArray","controlPointCount","polygon","rawValue","raw","end","outputIndex","polygonIndex","polygonCornerIndex","geometryNode","layerName","layerIndex","valueNames","indexNames","elementSize","findLayerElementNode","readFirstChildArray","mappedIndex","resolveLayerMappingIndex","directIndex","resolveLayerReferenceIndex","appendLayerElement","texcoord","flipTexcoordV","flipped","id","isFinite","childNames","groups","groupByName","maxIndex","triangles","group","getIndexGroup","triangle","faces","bytesPerIndex","triangulatePolygon","projected","projectPolygonTo2D","triangulatePolygonFan","area","signedArea2D","isConvexPolygon2D","guard","clipped","previous","current","isEar2D","splice","computePolygonNormal","absX","absY","absZ","dropAxis","x0","y0","z0","x1","y1","z1","points","cross","cross2D","pointIndex","pointInTriangle2D","ab","bc","ca","hasNegative","hasPositive","polygonCount","materialSlots","readMaterialSlotNames","materials","slot","material","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","binding","hydrateGr2Model","hydrateGr2Skeleton","buildCmfMetadata","buildCmfMesh","buildCmfBoneBinding","buildCmfMorphTargets","areas","buildCmfMeshArea","stride","estimateVertexStride","floor","decl","buildCmfDecl","lods","vb","ib","totalIndexCount","cmfBytesPerIndex","firstElement","firstTriangle","elementCount","threshold","uvDensities","cmfBounds","audioOcclusionMesh","topology","buildCmfAreaBones","cmfAreaBounds","affectedByBones","affectedByMorphTargets","isCmfAreaAffectedByMorphTargets","boneIndices","boneWeights","hasWeights","morphLods","lod","targetVertices","buildCmfDeclFromVertices","estimateStrideFromDecl","morphVertex","normalizeCmfVertexForDecl","usage","usageIndex","cmfElementTypeSize","normalized","element","areaIndex","first","areaPositions","hydrateCmfMetadata","hydrateCmfMesh","hydrateCmfSkeleton","hydrateCmfAnimation","fields","__hydrationOptions","populate","instance","SetValues","skipUpdate","skipEvents","create","defineProperty","enumerable","headerNode","definitionsNode","connectionsNode","readHeader","globalSettings","definitions","readDefinitions","objects","readObjects","fbxHeaderVersion","fbxVersion","creator","objectTypes","readObjectType","getShortObjectName","childCount","attributeNames","childId","parentId","properties70","label","getProperty70Value","fbxClassMarker","objectName","namespaceMarker","lastIndexOf","exec","body","endsWith","parseAsciiProperties","splitAsciiProperties","parseAsciiValue","parts","quoted","escaped","charCodeAt","direct","comment","padStart","fieldName","isInteger","prototype","hasOwnProperty","call","number","highUnsigned","negative","getFloat64"],"mappings":";;AAMO,MAAMA,UAAU,GAAG;AACnB,MAAMC,UAAU,GAAG;AACnB,MAAMC,UAAU,GAAG;AACnB,MAAMC,WAAW,GAAG;AACpB,MAAMC,eAAe,GAAG;AAExB,MAAMC,cAAc,GAAGC,MAAM,CAACC,MAAM,CAAC,CACxC,MAAM,EACN,MAAM,EACN,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAO,EACP,UAAU,EACV,MAAM,EACN,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,OAAO,CACV;AAEM,MAAMC,cAAc,GAAGF,MAAM,CAACC,MAAM,CAAC,CACxC,MAAM,EACN,SAAS,EACT,UAAU,EACV,eAAe,EACf,MAAM,EACN,YAAY,EACZ,eAAe,EACf,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,CACnB;AAEM,MAAME,UAAU,GAAGH,MAAM,CAACC,MAAM,CAACG,KAAK,CAACC,IAAI,CAAC,IAAIC,GAAG,CAAC,CACvD,GAAGP,cAAc,EACjB,GAAGG,cAAc,CACpB,CAAC,CAAC;MAEUK,cAAc,GAAGP,MAAM,CAACC,MAAM,CAAC;AACxCO,EAAAA,IAAI,EAAEZ,UAAU;AAChBa,EAAAA,SAAS,EAAE,KAAK;AAChBC,EAAAA,MAAM,EAAE,EAAE;AACVC,EAAAA,KAAK,EAAE,IAAI;AACXC,EAAAA,OAAO,EAAEZ,MAAM,CAACC,MAAM,CAAC,EAAE,CAAC;AAC1BY,EAAAA,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;AAC3BC,EAAAA,QAAQ,EAAE,MAAM;AAChBC,EAAAA,QAAQ,EAAE,GAAG;AACbC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,cAAc,EAAE;AACpB,CAAC;AAED,MAAMC,gBAAgB,GAAG,wCAAwC;AACjE,MAAMC,kBAAkB,GAAG,EAAE;AAC7B,MAAMC,mBAAmB,GAAG,EAAE;AAC9B,MAAMC,mBAAmB,GAAG,EAAE;AAC9B,MAAMC,mBAAmB,GAAG,IAAI;AAChC,MAAMC,eAAe,GAAG,kEAAkE;AAC1F,MAAMC,YAAY,GAAG,IAAIC,WAAW,CAAC,OAAO,CAAC;AAC7C,MAAMC,WAAW,GAAG,IAAIpB,GAAG,CAAC,CACxB,MAAM,EACN,WAAW,EACX,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,CACnB,CAAC;AACF,MAAMqB,yBAAyB,GAAG3B,MAAM,CAACC,MAAM,CAAC,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC;AACrH,MAAM2B,mBAAmB,GAAG5B,MAAM,CAACC,MAAM,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAC;AAChK,MAAM4B,oBAAoB,GAAG7B,MAAM,CAACC,MAAM,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AACrI,MAAM6B,qBAAqB,GAAG9B,MAAM,CAACC,MAAM,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE,CAAC;AAC7L,MAAM8B,sBAAsB,GAAG/B,MAAM,CAACC,MAAM,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAC;AAClJ,MAAM+B,WAAW,GAAG,KAAK;AACzB,MAAMC,qBAAqB,GAAG,KAAK;AACnC,MAAMC,gBAAgB,GAAGlC,MAAM,CAACC,MAAM,CAAC,CACnC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACb,CAAC;AACF,MAAMkC,sBAAsB,GAAG,KAAK;AACpC,MAAMC,mBAAmB,GAAGpC,MAAM,CAACC,MAAM,CAAC,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE,CAAC;AACvF,MAAMoC,oBAAoB,GAAG,WAAW;AACxC,MAAMC,mBAAmB,GAAGtC,MAAM,CAACC,MAAM,CAAC,CACtC,CAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAE,EAC7B,CAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAE,EACzB,CAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAE,EAC3B,CAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAE,EAC7B,CAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAE,EACjC,CAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAE,EACjC,CAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAE,EAC3B,CAAE,aAAa,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAE,EAC/C,CAAE,aAAa,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAE,CACzC,CAAC;AACF,MAAMsC,uBAAuB,GAAGvC,MAAM,CAACC,MAAM,CAAC,CAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,CAAE,CAAC;AAC7F,MAAMuC,0BAA0B,GAAG,IAAIlC,GAAG,CAAC,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;AACnE,MAAMmC,wBAAwB,GAAG,IAAInC,GAAG,CAAC,CACrC,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,CACzB,CAAC;AACF,MAAMoC,wBAAwB,GAAG,IAAIpC,GAAG,CAAC,CAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAE,CAAC;AAClI,MAAMqC,0BAA0B,GAAG,IAAIrC,GAAG,CAAC,CAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAE,CAAC;AAClF,MAAMsC,2BAA2B,GAAG,IAAItC,GAAG,CAAC,CAAE,SAAS,EAAE,WAAW,CAAE,CAAC;AAEvE,IAAIuC,kBAAkB,GAAG,IAAI;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAACC,IAAI,GAAGxC,cAAc,EAAEyC,OAAO,GAAG,EAAE,EAAEC,UAAU,GAAG,cAAc,EAChG;AACI,EAAA,IAAI,CAACD,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAC3C;AACI,IAAA,MAAM,IAAIE,SAAS,CAAC,CAAA,EAAGD,UAAU,6BAA6B,CAAC;AACnE,EAAA;EACA,KAAK,MAAME,GAAG,IAAInD,MAAM,CAACoD,IAAI,CAACJ,OAAO,CAAC,EACtC;AACI,IAAA,IAAI,CAACtB,WAAW,CAAC2B,GAAG,CAACF,GAAG,CAAC,EACzB;AACI,MAAA,MAAM,IAAID,SAAS,CAAC,CAAA,EAAGD,UAAU,CAAA,iBAAA,EAAoBK,IAAI,CAACC,SAAS,CAACJ,GAAG,CAAC,EAAE,CAAC;AAC/E,IAAA;AACJ,EAAA;AAEA,EAAA,MAAMK,UAAU,GAAG;AAAE,IAAA,GAAGjD,cAAc;IAAE,IAAIwC,IAAI,IAAI,EAAE;GAAG;AACzD,EAAA,MAAMU,MAAM,GAAG;AAAE,IAAA,GAAGD,UAAU;IAAE,IAAIR,OAAO,IAAI,EAAE;GAAG;EACpDS,MAAM,CAAChD,SAAS,GAAGgD,MAAM,CAAChD,SAAS,GAAGiD,MAAM,CAACD,MAAM,CAAChD,SAAS,CAAC,CAACkD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACC,WAAW,EAAE,GAAG,KAAK;EACxGH,MAAM,CAACjD,IAAI,GAAGqD,aAAa,CAACJ,MAAM,CAACjD,IAAI,EAAEyC,UAAU,CAAC;AACpDQ,EAAAA,MAAM,CAAC5C,QAAQ,GAAGiD,qBAAqB,CAACL,MAAM,CAAC5C,QAAQ,EAAE,UAAU,EAAEoC,UAAU,CAAC;AAChFQ,EAAAA,MAAM,CAAC3C,QAAQ,GAAGgD,qBAAqB,CAACL,MAAM,CAAC3C,QAAQ,EAAE,UAAU,EAAEmC,UAAU,CAAC;AAChFQ,EAAAA,MAAM,CAAC1C,QAAQ,GAAG+C,qBAAqB,CAACL,MAAM,CAAC1C,QAAQ,EAAE,UAAU,EAAEkC,UAAU,CAAC;AAChFQ,EAAAA,MAAM,CAACzC,aAAa,GAAG8C,qBAAqB,CAACL,MAAM,CAACzC,aAAa,EAAE,eAAe,EAAEiC,UAAU,CAAC;AAC/FQ,EAAAA,MAAM,CAACxC,cAAc,GAAG6C,qBAAqB,CAACL,MAAM,CAACxC,cAAc,EAAE,gBAAgB,EAAEgC,UAAU,CAAC;AAClGQ,EAAAA,MAAM,CAAC9C,KAAK,GAAGoD,sBAAsB,CAACN,MAAM,CAAC9C,KAAK,EAAE,OAAO,EAAEsC,UAAU,CAAC;AACxEQ,EAAAA,MAAM,CAAC7C,OAAO,GAAGoD,MAAM,CAAChB,OAAO,EAAE,SAAS,CAAC,GACrCiB,YAAY,CAACT,UAAU,CAAC5C,OAAO,IAAI,EAAE,EAAEoC,OAAO,CAACpC,OAAO,EAAEqC,UAAU,CAAC,GACnEiB,gBAAgB,CAACV,UAAU,CAAC5C,OAAO,IAAI,EAAE,EAAEqC,UAAU,CAAC;EAC5D,IAAI,CAACQ,MAAM,CAACjD,IAAI,KAAKb,UAAU,IAAI8D,MAAM,CAACjD,IAAI,KAAKd,UAAU,KAAK,CAACyE,UAAU,CAACV,MAAM,CAAC7C,OAAO,CAAC,EAC7F;IACI,MAAM,IAAIsC,SAAS,CAAC,CAAA,EAAGD,UAAU,WAAWQ,MAAM,CAACjD,IAAI,CAAA,2BAAA,CAA6B,CAAC;AACzF,EAAA;AACA,EAAA,OAAOiD,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASW,gBAAgBA,CAACjB,GAAG,EAAEF,UAAU,GAAG,cAAc,EACjE;AACI,EAAA,IAAI,CAAC9C,UAAU,CAACkE,QAAQ,CAAClB,GAAG,CAAC,EAC7B;IACI,MAAM,IAAImB,KAAK,CAAC,CAAA,EAAGrB,UAAU,CAAA,oBAAA,EAAuBK,IAAI,CAACC,SAAS,CAACJ,GAAG,CAAC,CAAA,kBAAA,EAAqBhD,UAAU,CAACoE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACxH,EAAA;AACA,EAAA,OAAOpB,GAAG;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASqB,aAAaA,CAACrB,GAAG,EAAEsB,KAAK,EAAExB,UAAU,GAAG,cAAc,EACrE;AACImB,EAAAA,gBAAgB,CAACjB,GAAG,EAAEF,UAAU,CAAC;AACjC,EAAA,IAAI,OAAOwB,KAAK,KAAK,UAAU,EAC/B;IACI,MAAM,IAAIvB,SAAS,CAAC,CAAA,EAAGD,UAAU,CAAA,QAAA,EAAWE,GAAG,wBAAwB,CAAC;AAC5E,EAAA;AACA,EAAA,OAAOsB,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASZ,aAAaA,CAACrD,IAAI,EAAEyC,UAAU,EAC9C;AACI,EAAA,IAAIzC,IAAI,KAAKkE,SAAS,IAAIlE,IAAI,KAAK,IAAI,EACvC;AACI,IAAA,OAAOZ,UAAU;AACrB,EAAA;EACA,IAAIY,IAAI,KAAKX,WAAW,EACxB;AACI,IAAA,OAAOC,eAAe;AAC1B,EAAA;AACA,EAAA,IAAI,CAAEF,UAAU,EAAEE,eAAe,EAAEH,UAAU,EAAED,UAAU,CAAE,CAAC2E,QAAQ,CAAC7D,IAAI,CAAC,EAC1E;AACI,IAAA,OAAOA,IAAI;AACf,EAAA;AACA,EAAA,MAAM,IAAI0C,SAAS,CAAC,CAAA,EAAGD,UAAU,CAAA,qBAAA,EAAwBK,IAAI,CAACC,SAAS,CAAC/C,IAAI,CAAC,EAAE,CAAC;AACpF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASmE,OAAOA,CAACC,KAAK,EAC7B;EACI,IAAIA,KAAK,YAAYC,UAAU,EAC/B;AACI,IAAA,OAAOD,KAAK;AAChB,EAAA;EACA,IAAIA,KAAK,YAAYE,WAAW,EAChC;AACI,IAAA,OAAO,IAAID,UAAU,CAACD,KAAK,CAAC;AAChC,EAAA;AACA,EAAA,IAAIE,WAAW,CAACC,MAAM,CAACH,KAAK,CAAC,EAC7B;AACI,IAAA,OAAO,IAAIC,UAAU,CAACD,KAAK,CAACI,MAAM,EAAEJ,KAAK,CAACK,UAAU,EAAEL,KAAK,CAACM,UAAU,CAAC;AAC3E,EAAA;AACA,EAAA,MAAM,IAAIhC,SAAS,CAAC,wDAAwD,CAAC;AACjF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASiC,cAAcA,CAACP,KAAK,EAAEnB,MAAM,GAAGlD,cAAc,EAC7D;AACI,EAAA,MAAM6E,KAAK,GAAGT,OAAO,CAACC,KAAK,CAAC;AAE5B,EAAA,IAAInB,MAAM,CAACjD,IAAI,KAAKZ,UAAU,EAC9B;AACI,IAAA,MAAMyF,QAAQ,GAAGC,iBAAiB,CAACF,KAAK,EAAE3B,MAAM,CAAC;IACjD,OAAO;AACH8B,MAAAA,WAAW,EAAE,KAAK;AAClBC,MAAAA,YAAY,EAAE,KAAK;MACnBH,QAAQ;AACRD,MAAAA;KACH;AACL,EAAA;AAEA,EAAA,IAAI3B,MAAM,CAACjD,IAAI,KAAKV,eAAe,EACnC;AACI,IAAA,OAAO2F,eAAe,CAACL,KAAK,EAAE3B,MAAM,CAAC;AACzC,EAAA;AAEA,EAAA,IAAIA,MAAM,CAACjD,IAAI,KAAKb,UAAU,EAC9B;AACI,IAAA,OAAO+F,iBAAiB,CAACN,KAAK,EAAE3B,MAAM,CAAC;AAC3C,EAAA;AAEA,EAAA,OAAOkC,iBAAiB,CAACP,KAAK,EAAE3B,MAAM,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS6B,iBAAiBA,CAACV,KAAK,EAAEnB,MAAM,GAAGlD,cAAc,EAChE;AACI,EAAA,MAAM6E,KAAK,GAAGT,OAAO,CAACC,KAAK,CAAC;AAC5B,EAAA,MAAMgB,QAAQ,GAAGC,YAAY,CAACT,KAAK,CAAC;EAEpC,OAAO;AACHG,IAAAA,WAAW,EAAE,UAAU;IACvBO,UAAU,EAAE,CAAE,UAAU,CAAE;AAC1BN,IAAAA,YAAY,EAAE,KAAK;IACnBN,UAAU,EAAEE,KAAK,CAACF,UAAU;AAC5BxE,IAAAA,MAAM,EAAE+C,MAAM,CAAC/C,MAAM,IAAI,EAAE;IAC3B,GAAGkF;GACN;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASH,eAAeA,CAACb,KAAK,EAAEnB,MAAM,GAAGlD,cAAc,EAC9D;EACI,OAAO;AACH,IAAA,GAAGwF,uBAAuB,CAACnB,KAAK,EAAEnB,MAAM,CAAC;AACzC8B,IAAAA,WAAW,EAAEzF;GAChB;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4F,iBAAiBA,CAACd,KAAK,EAAEnB,MAAM,GAAGlD,cAAc,EAChE;AACI,EAAA,MAAMyF,QAAQ,GAAGC,0BAA0B,CAACrB,KAAK,EAAEnB,MAAM,CAAC;AAC1D,EAAA,OAAOyC,UAAU,CAACC,oBAAoB,CAACH,QAAQ,CAACI,KAAK,EAAE3C,MAAM,CAAC,EAAEA,MAAM,CAAC7C,OAAO,EAAE;IAAEF,MAAM,EAAE+C,MAAM,CAAC/C;AAAO,GAAC,CAAC;AAC9G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASiF,iBAAiBA,CAACf,KAAK,EAAEnB,MAAM,GAAGlD,cAAc,EAChE;AACI,EAAA,MAAMyF,QAAQ,GAAGC,0BAA0B,CAACrB,KAAK,EAAEnB,MAAM,CAAC;AAC1D,EAAA,OAAO4C,UAAU,CAACC,kBAAkB,CAACH,oBAAoB,CAACH,QAAQ,CAACI,KAAK,EAAE3C,MAAM,CAAC,CAAC,EAAEA,MAAM,CAAC7C,OAAO,EAAE;IAAEF,MAAM,EAAE+C,MAAM,CAAC/C;AAAO,GAAC,CAAC;AAClI;AAEA,SAASqF,uBAAuBA,CAACnB,KAAK,EAAEnB,MAAM,GAAGlD,cAAc,EAC/D;AACI,EAAA,MAAM6E,KAAK,GAAGT,OAAO,CAACC,KAAK,CAAC;AAC5B,EAAA,IAAIQ,KAAK,CAACF,UAAU,GAAGzB,MAAM,CAAC5C,QAAQ,EACtC;IACI,MAAM,IAAIyD,KAAK,CAAC,CAAA,6BAAA,EAAgCb,MAAM,CAAC5C,QAAQ,GAAG,CAAC;AACvE,EAAA;AACA,EAAA,MAAMwE,QAAQ,GAAGC,iBAAiB,CAACF,KAAK,EAAE3B,MAAM,CAAC;AAEjD,EAAA,IAAI4B,QAAQ,CAACkB,QAAQ,KAAK,QAAQ,EAClC;AACI,IAAA,OAAOC,mBAAmB,CAACpB,KAAK,EAAEC,QAAQ,EAAE5B,MAAM,CAAC;AACvD,EAAA;AAEA,EAAA,IAAI4B,QAAQ,CAACkB,QAAQ,KAAK,OAAO,EACjC;AACI,IAAA,OAAOE,kBAAkB,CAACrB,KAAK,EAAEC,QAAQ,EAAE5B,MAAM,CAAC;AACtD,EAAA;AAEA,EAAA,MAAMiD,KAAK,GAAG,IAAIpC,KAAK,CAAC,4BAA4B,CAAC;EACrDoC,KAAK,CAACC,IAAI,GAAG,yBAAyB;EACtCD,KAAK,CAAClB,YAAY,GAAG,KAAK;AAC1B,EAAA,MAAMkB,KAAK;AACf;AAEA,SAAST,0BAA0BA,CAACrB,KAAK,EAAEnB,MAAM,EACjD;AACI,EAAA,MAAM2B,KAAK,GAAGT,OAAO,CAACC,KAAK,CAAC;AAC5B,EAAA,IAAIQ,KAAK,CAACF,UAAU,GAAGzB,MAAM,CAAC5C,QAAQ,EACtC;IACI,MAAM,IAAIyD,KAAK,CAAC,CAAA,6BAAA,EAAgCb,MAAM,CAAC5C,QAAQ,GAAG,CAAC;AACvE,EAAA;AACA,EAAA,MAAMwE,QAAQ,GAAGC,iBAAiB,CAACF,KAAK,EAAE3B,MAAM,CAAC;AAEjD,EAAA,IAAI4B,QAAQ,CAACkB,QAAQ,KAAK,QAAQ,EAClC;IACI,OAAO;AACH,MAAA,GAAGlB,QAAQ;AACXe,MAAAA,KAAK,EAAEQ,qBAAqB,CAACxB,KAAK,EAAEC,QAAQ,EAAE5B,MAAM,EAAE,IAAInD,GAAG,CAAC,CAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,CAAE,CAAC;KAChH;AACL,EAAA;AAEA,EAAA,IAAI+E,QAAQ,CAACkB,QAAQ,KAAK,OAAO,EACjC;IACI,OAAO;AACH,MAAA,GAAGlB,QAAQ;AACXe,MAAAA,KAAK,EAAES,oBAAoB,CAACzB,KAAK,EAAE3B,MAAM,EAAE,IAAInD,GAAG,CAAC,CAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,CAAE,CAAC;KACrG;AACL,EAAA;AAEA,EAAA,MAAMoG,KAAK,GAAG,IAAIpC,KAAK,CAAC,4BAA4B,CAAC;EACrDoC,KAAK,CAACC,IAAI,GAAG,yBAAyB;EACtCD,KAAK,CAAClB,YAAY,GAAG,KAAK;AAC1B,EAAA,MAAMkB,KAAK;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,qBAAqBA,CAAClC,KAAK,EAAEnB,MAAM,GAAGlD,cAAc,EACpE;EACI,IACA;AACI,IAAA,MAAM8E,QAAQ,GAAGC,iBAAiB,CAACV,KAAK,EAAEnB,MAAM,CAAC;AACjD,IAAA,MAAMsD,UAAU,GAAG1B,QAAQ,CAACkB,QAAQ,KAAK,EAAE;AAC3C,IAAA,MAAMS,WAAW,GAAGD,UAAU,GACxBE,wBAAwB,CAACrC,KAAK,EAAEnB,MAAM,EAAE4B,QAAQ,CAAC,GACjD;AAAE6B,MAAAA,QAAQ,EAAE,EAAE;AAAEC,MAAAA,MAAM,EAAE;KAAI;IAElC,OAAO;AACHC,MAAAA,MAAM,EAAE,KAAK;AACb1G,MAAAA,MAAM,EAAE+C,MAAM,CAAC/C,MAAM,IAAI,QAAQ;AACjC2G,MAAAA,SAAS,EAAEN,UAAU,GAAG,SAAS,GAAG,MAAM;AAC1CO,MAAAA,UAAU,EAAEP,UAAU,GAAG1B,QAAQ,CAACiC,UAAU,GAAG,CAAC;AAChDC,MAAAA,SAAS,EAAER,UAAU,GAAG,KAAK,GAAG,EAAE;AAClCS,MAAAA,MAAM,EAAET,UAAU,GAAG,iLAAiL,GAAG,wBAAwB;MACjO1B,QAAQ;AACRoC,MAAAA,QAAQ,EAAE,CACN;AAAEC,QAAAA,IAAI,EAAE,UAAU;AAAEC,QAAAA,KAAK,EAAEtC,QAAQ,CAACkB,QAAQ,IAAI,SAAS;AAAEc,QAAAA,SAAS,EAAEN;AAAW,OAAC,EAClF;AAAEW,QAAAA,IAAI,EAAE,KAAK;AAAEC,QAAAA,KAAK,EAAE,cAAc;AAAEN,QAAAA,SAAS,EAAEN,UAAU;AAAES,QAAAA,MAAM,EAAET,UAAU,GAAG,kEAAkE,GAAG;AAAyB,OAAC,EACjL;AAAEW,QAAAA,IAAI,EAAE,KAAK;AAAEC,QAAAA,KAAK,EAAE,wBAAwB;AAAEN,QAAAA,SAAS,EAAEN,UAAU;AAAES,QAAAA,MAAM,EAAET,UAAU,GAAG,kGAAkG,GAAG;AAAyB,OAAC,CAC9N;MACDG,QAAQ,EAAEF,WAAW,CAACE,QAAQ;MAC9BC,MAAM,EAAEH,WAAW,CAACG;KACvB;EACL,CAAC,CACD,OAAOT,KAAK,EACZ;IACI,OAAO;AACHU,MAAAA,MAAM,EAAE,KAAK;AACb1G,MAAAA,MAAM,EAAE+C,MAAM,CAAC/C,MAAM,IAAI,QAAQ;AACjC2G,MAAAA,SAAS,EAAE,MAAM;AACjBC,MAAAA,UAAU,EAAE,CAAC;AACbC,MAAAA,SAAS,EAAE,EAAE;MACbC,MAAM,EAAEd,KAAK,CAACkB,OAAO;AACrBvC,MAAAA,QAAQ,EAAE,IAAI;AACdoC,MAAAA,QAAQ,EAAE,EAAE;AACZP,MAAAA,QAAQ,EAAE,EAAE;AACZC,MAAAA,MAAM,EAAE,CAAET,KAAK,CAACkB,OAAO;KAC1B;AACL,EAAA;AACJ;AAEA,SAASX,wBAAwBA,CAACrC,KAAK,EAAEnB,MAAM,EAAE4B,QAAQ,EACzD;EACI,IACA;AACI,IAAA,MACID,KAAK,GAAGT,OAAO,CAACC,KAAK,CAAC;AACtBiD,MAAAA,WAAW,GAAG,IAAIvH,GAAG,CAACiC,uBAAuB,CAAC;MAC9C6D,KAAK,GAAGf,QAAQ,CAACkB,QAAQ,KAAK,QAAQ,GAChCK,qBAAqB,CAACxB,KAAK,EAAEC,QAAQ,EAAE5B,MAAM,EAAEoE,WAAW,CAAC,GAC3DhB,oBAAoB,CAACzB,KAAK,EAAE3B,MAAM,EAAEoE,WAAW,CAAC;IAE1D,OAAOC,wBAAwB,CAAC1B,KAAK,CAAC;EAC1C,CAAC,CACD,OAAOM,KAAK,EACZ;IACI,OAAO;AACHQ,MAAAA,QAAQ,EAAE,EAAE;AACZC,MAAAA,MAAM,EAAE,CAAET,KAAK,CAACkB,OAAO;KAC1B;AACL,EAAA;AACJ;AAEA,SAASE,wBAAwBA,CAAC1B,KAAK,EACvC;EACI,MACIc,QAAQ,GAAG,EAAE;AACba,IAAAA,WAAW,GAAGC,aAAa,CAAC5B,KAAK,EAAE,SAAS,CAAC;EAEjD,IAAI,CAAC2B,WAAW,EAChB;IACI,OAAO;MACHb,QAAQ,EAAE,CAAE,4EAA4E,CAAE;AAC1FC,MAAAA,MAAM,EAAE;KACX;AACL,EAAA;AAEA,EAAA,MACIc,WAAW,GAAGC,gBAAgB,CAACH,WAAW,CAAC;IAC3CI,WAAW,GAAGC,eAAe,CAACJ,aAAa,CAAC5B,KAAK,EAAE,aAAa,CAAC,CAAC;AAEtEiC,EAAAA,8BAA8B,CAACJ,WAAW,EAAEf,QAAQ,CAAC;AACrDoB,EAAAA,kCAAkC,CAACL,WAAW,EAAEf,QAAQ,CAAC;AACzDqB,EAAAA,0BAA0B,CAACN,WAAW,EAAEE,WAAW,EAAEjB,QAAQ,CAAC;AAC9DsB,EAAAA,gCAAgC,CAACP,WAAW,EAAEE,WAAW,EAAEjB,QAAQ,CAAC;EAEpE,OAAO;IACHA,QAAQ;AACRC,IAAAA,MAAM,EAAE;GACX;AACL;AAEA,SAASkB,8BAA8BA,CAACJ,WAAW,EAAEf,QAAQ,EAC7D;AACI,EAAA,KAAK,MAAMuB,QAAQ,IAAIR,WAAW,CAACS,IAAI,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAK,UAAU,CAAC,EACtF;IACI,IAAI,CAACrG,0BAA0B,CAACa,GAAG,CAACoF,QAAQ,CAACK,SAAS,CAAC,EACvD;AACIC,MAAAA,UAAU,CAAC7B,QAAQ,EAAE,iBAAiB8B,WAAW,CAACP,QAAQ,CAAC,CAAA,OAAA,EAAUnF,IAAI,CAACC,SAAS,CAACkF,QAAQ,CAACK,SAAS,CAAC,qCAAqC,CAAC;AAC7I,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIL,QAAQ,CAACK,SAAS,KAAK,OAAO,EAClC;AACI,MAAA;AACJ,IAAA;IAEA,IAAI,CAACd,aAAa,CAACS,QAAQ,CAACQ,IAAI,CAACC,QAAQ,EAAE,UAAU,CAAC,EACtD;MACIH,UAAU,CAAC7B,QAAQ,EAAE,CAAA,cAAA,EAAiB8B,WAAW,CAACP,QAAQ,CAAC,CAAA,sDAAA,CAAwD,CAAC;AACxH,IAAA;IACA,IAAI,CAACT,aAAa,CAACS,QAAQ,CAACQ,IAAI,CAACC,QAAQ,EAAE,oBAAoB,CAAC,EAChE;MACIH,UAAU,CAAC7B,QAAQ,EAAE,CAAA,cAAA,EAAiB8B,WAAW,CAACP,QAAQ,CAAC,CAAA,gEAAA,CAAkE,CAAC;AAClI,IAAA;AACJ,EAAA;AACJ;AAEA,SAASH,kCAAkCA,CAACL,WAAW,EAAEf,QAAQ,EACjE;AACI,EAAA,KAAK,MAAMuB,QAAQ,IAAIR,WAAW,CAACS,IAAI,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAK,UAAU,KAAK,CAACD,KAAK,CAACE,SAAS,IAAIF,KAAK,CAACE,SAAS,KAAK,MAAM,CAAC,CAAC,EAC1I;IACI,KAAK,MAAMK,KAAK,IAAIV,QAAQ,CAACQ,IAAI,CAACC,QAAQ,CAACP,MAAM,CAACS,KAAK,IAAIA,KAAK,CAACC,IAAI,CAACC,UAAU,CAAC,cAAc,CAAC,CAAC,EACjG;MACI,IAAI,CAAC7G,wBAAwB,CAACY,GAAG,CAAC8F,KAAK,CAACE,IAAI,CAAC,EAC7C;AACIN,QAAAA,UAAU,CAAC7B,QAAQ,EAAE,CAAA,KAAA,EAAQiC,KAAK,CAACE,IAAI,CAAA,aAAA,EAAgBL,WAAW,CAACP,QAAQ,CAAC,gCAAgC,CAAC;AAC7G,QAAA;AACJ,MAAA;AAEA,MAAA,IAAIU,KAAK,CAACE,IAAI,KAAK,sBAAsB,EACzC;AACIE,QAAAA,mCAAmC,CAACd,QAAQ,EAAEU,KAAK,EAAEjC,QAAQ,CAAC;AAClE,MAAA,CAAC,MAED;AACIsC,QAAAA,iCAAiC,CAACf,QAAQ,EAAEU,KAAK,EAAEjC,QAAQ,CAAC;AAChE,MAAA;AACJ,IAAA;AACJ,EAAA;AACJ;AAEA,SAASsC,iCAAiCA,CAACf,QAAQ,EAAEU,KAAK,EAAEjC,QAAQ,EACpE;AACI,EAAA,MACIuC,OAAO,GAAG/F,MAAM,CAACgG,sBAAsB,CAACP,KAAK,EAAE,wBAAwB,CAAC,IAAI,iBAAiB,CAAC;IAC9FQ,SAAS,GAAGjG,MAAM,CAACgG,sBAAsB,CAACP,KAAK,EAAE,0BAA0B,CAAC,IAAI,QAAQ,CAAC;AAE7F,EAAA,IAAI,CAACzG,wBAAwB,CAACW,GAAG,CAACoG,OAAO,CAAC,EAC1C;IACIV,UAAU,CAAC7B,QAAQ,EAAE,CAAA,KAAA,EAAQiC,KAAK,CAACE,IAAI,gBAAgBL,WAAW,CAACP,QAAQ,CAAC,CAAA,yCAAA,EAA4CnF,IAAI,CAACC,SAAS,CAACkG,OAAO,CAAC,GAAG,CAAC;AACvJ,EAAA;AACA,EAAA,IAAI,CAAC9G,0BAA0B,CAACU,GAAG,CAACsG,SAAS,CAAC,EAC9C;IACIZ,UAAU,CAAC7B,QAAQ,EAAE,CAAA,KAAA,EAAQiC,KAAK,CAACE,IAAI,gBAAgBL,WAAW,CAACP,QAAQ,CAAC,CAAA,2CAAA,EAA8CnF,IAAI,CAACC,SAAS,CAACoG,SAAS,CAAC,GAAG,CAAC;AAC3J,EAAA;AACJ;AAEA,SAASJ,mCAAmCA,CAACd,QAAQ,EAAEU,KAAK,EAAEjC,QAAQ,EACtE;AACI,EAAA,MAAMuC,OAAO,GAAG/F,MAAM,CAACgG,sBAAsB,CAACP,KAAK,EAAE,wBAAwB,CAAC,IAAI,SAAS,CAAC;AAC5F,EAAA,IAAI,CAACvG,2BAA2B,CAACS,GAAG,CAACoG,OAAO,CAAC,EAC7C;AACIV,IAAAA,UAAU,CAAC7B,QAAQ,EAAE,CAAA,sCAAA,EAAyC8B,WAAW,CAACP,QAAQ,CAAC,CAAA,yCAAA,EAA4CnF,IAAI,CAACC,SAAS,CAACkG,OAAO,CAAC,GAAG,CAAC;AAC9J,EAAA;AACJ;AAEA,SAASlB,0BAA0BA,CAACN,WAAW,EAAEE,WAAW,EAAEjB,QAAQ,EACtE;AACI,EAAA,KAAK,MAAMuB,QAAQ,IAAIR,WAAW,CAACS,IAAI,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAK,UAAU,KAAK,CAACD,KAAK,CAACE,SAAS,IAAIF,KAAK,CAACE,SAAS,KAAK,MAAM,CAAC,CAAC,EAC1I;AACI,IAAA,MAAMc,KAAK,GAAGC,qBAAqB,CAACpB,QAAQ,EAAER,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,CAACQ,MAAM,CAACmB,cAAc,CAAC;AAC1G,IAAA,IAAIF,KAAK,CAACG,MAAM,GAAG,CAAC,EACpB;AACIhB,MAAAA,UAAU,CAAC7B,QAAQ,EAAE,CAAA,cAAA,EAAiB8B,WAAW,CAACP,QAAQ,CAAC,CAAA,KAAA,EAAQmB,KAAK,CAACG,MAAM,8DAA8D,CAAC;AAClJ,IAAA;AACJ,EAAA;EAEA,MAAMH,KAAK,GAAG3B,WAAW,CAACS,IAAI,CACzBC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAK,UAAU,IAAIiB,cAAc,CAAClB,KAAK,CAAC,CAAC;AAE5E,EAAA,KAAK,MAAMoB,IAAI,IAAIJ,KAAK,EACxB;AACI,IAAA,MAAMK,QAAQ,GAAGJ,qBAAqB,CAACG,IAAI,EAAE/B,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,CAC7EQ,MAAM,CAACuB,iBAAiB,CAAC;AAE9B,IAAA,KAAK,MAAMC,OAAO,IAAIF,QAAQ,EAC9B;MACI,MACIG,IAAI,GAAGC,WAAW,CAACF,OAAO,EAAElC,WAAW,EAAEE,WAAW,CAAC;QACrDmC,OAAO,GAAGC,cAAc,CAACJ,OAAO,CAAClB,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;QACvDuB,OAAO,GAAGD,cAAc,CAACJ,OAAO,CAAClB,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;MAE3D,IAAI,CAACmB,IAAI,EACT;QACIrB,UAAU,CAAC7B,QAAQ,EAAE,CAAA,kBAAA,EAAqB8B,WAAW,CAACmB,OAAO,CAAC,CAAA,gDAAA,CAAkD,CAAC;AACrH,MAAA,CAAC,MACI,IAAI,CAACG,OAAO,CAACP,MAAM,EACxB;QACIhB,UAAU,CAAC7B,QAAQ,EAAE,CAAA,kBAAA,EAAqB8B,WAAW,CAACmB,OAAO,CAAC,CAAA,sCAAA,CAAwC,CAAC;MAC3G,CAAC,MACI,IAAI,CAACM,wBAAwB,CAACH,OAAO,EAAEE,OAAO,CAAC,EACpD;QACIzB,UAAU,CAAC7B,QAAQ,EAAE,CAAA,kBAAA,EAAqB8B,WAAW,CAACmB,OAAO,CAAC,CAAA,+CAAA,CAAiD,CAAC;AACpH,MAAA;AACJ,IAAA;IAEA,IAAIO,gCAAgC,CAACC,uBAAuB,CAACV,QAAQ,EAAEhC,WAAW,EAAEE,WAAW,CAAC,CAAC,EACjG;MACIY,UAAU,CAAC7B,QAAQ,EAAE,CAAA,UAAA,EAAa8B,WAAW,CAACgB,IAAI,CAAC,CAAA,gIAAA,CAAkI,CAAC;AAC1L,IAAA;AACJ,EAAA;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASF,cAAcA,CAAClB,KAAK,EAC7B;AACI,EAAA,OAAOA,KAAK,EAAEE,SAAS,KAAK,MAAM,IAAIF,KAAK,EAAEgC,QAAQ,EAAEtB,UAAU,CAAC,gBAAgB,CAAC,IAAIV,KAAK,EAAES,IAAI,KAAK,MAAM;AACjH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASa,iBAAiBA,CAACtB,KAAK,EAChC;EACI,OAAOA,KAAK,EAAEE,SAAS,KAAK,SAAS,IAAIF,KAAK,EAAEgC,QAAQ,EAAEtB,UAAU,CAAC,eAAe,CAAC,IAAIV,KAAK,EAAES,IAAI,EAAEhF,QAAQ,CAAC,SAAS,CAAC;AAC7H;AAEA,SAASqG,gCAAgCA,CAACG,OAAO,EACjD;AACI,EAAA,MAAMC,sBAAsB,GAAGC,2BAA2B,CAACF,OAAO,CAAC;EACnE,KAAK,MAAMG,UAAU,IAAIF,sBAAsB,CAACrH,MAAM,EAAE,EACxD;AACI,IAAA,IAAIuH,UAAU,CAACrC,MAAM,CAACsC,SAAS,IAAIA,SAAS,CAACC,MAAM,GAAG,CAAC,CAAC,CAACnB,MAAM,GAAG,CAAC,EACnE;AACI,MAAA,OAAO,IAAI;AACf,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,KAAK;AAChB;AAEA,SAASvB,gCAAgCA,CAACP,WAAW,EAAEE,WAAW,EAAEjB,QAAQ,EAC5E;AACI,EAAA,MAAMiE,QAAQ,GAAGlD,WAAW,CAACS,IAAI,CAC5BC,MAAM,CAACC,KAAK,IAAIwC,mBAAmB,CAACxC,KAAK,CAAC,CAAC;AAEhD,EAAA,KAAK,MAAMyC,OAAO,IAAIF,QAAQ,EAC9B;IACI,MAAMG,MAAM,GAAGC,2BAA2B,CAACF,OAAO,EAAEpD,WAAW,EAAEE,WAAW,CAAC;AAC7E,IAAA,IAAIqD,gCAAgC,CAACH,OAAO,EAAEC,MAAM,CAAC,EACrD;MACIvC,UAAU,CAAC7B,QAAQ,EAAE,CAAA,uBAAA,EAA0B8B,WAAW,CAACqC,OAAO,CAAC,CAAA,sEAAA,CAAwE,CAAC;AAChJ,IAAA;AACJ,EAAA;AACJ;AAEA,SAAStC,UAAUA,CAAC7B,QAAQ,EAAEU,OAAO,EACrC;AACI,EAAA,IAAI,CAACV,QAAQ,CAAC7C,QAAQ,CAACuD,OAAO,CAAC,EAC/B;AACIV,IAAAA,QAAQ,CAACuE,IAAI,CAAC7D,OAAO,CAAC;AAC1B,EAAA;AACJ;AAEA,SAASoB,WAAWA,CAACJ,KAAK,EAC1B;AACI,EAAA,OAAOtF,IAAI,CAACC,SAAS,CAACqF,KAAK,EAAES,IAAI,IAAIT,KAAK,EAAEgC,QAAQ,IAAIhC,KAAK,EAAEzF,GAAG,IAAI,EAAE,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS0C,YAAYA,CAACT,KAAK,EAClC;AACI,EAAA,IAAIsG,WAAW,CAACtG,KAAK,CAAC,EACtB;IACI,OAAOuG,kBAAkB,CAACvG,KAAK,CAAC;AACpC,EAAA;AAEA,EAAA,MAAMwG,IAAI,GAAGC,iBAAiB,CAACzG,KAAK,EAAE9D,mBAAmB,CAAC;AAC1D,EAAA,MAAMwK,KAAK,GAAGC,cAAc,CAACH,IAAI,CAAC;EAClC,OAAO;AACHrF,IAAAA,QAAQ,EAAEuF,KAAK,GAAG,OAAO,GAAG,EAAE;IAC9BE,OAAO,EAAEF,KAAK,GAAGG,gBAAgB,CAACL,IAAI,CAAC,GAAG,CAAC;AAC3CM,IAAAA,SAAS,EAAEJ,KAAK,GAAG,WAAW,GAAG,EAAE;IACnCK,aAAa,EAAEL,KAAK,GAAGM,mBAAmB,CAACR,IAAI,CAAC,GAAG,CAAC;IACpDS,aAAa,EAAEP,KAAK,GAAGQ,qBAAqB,CAACV,IAAI,CAAC,GAAG,EAAE;AACvDtE,IAAAA,UAAU,EAAEwE,KAAK,GAAG,IAAI,GAAG;GAC9B;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,KAAKA,CAAC3H,KAAK,EAC3B;AACI,EAAA,MAAMQ,KAAK,GAAGT,OAAO,CAACC,KAAK,CAAC;AAC5B,EAAA,OAAO8G,WAAW,CAACtG,KAAK,CAAC,IAAI2G,cAAc,CAACF,iBAAiB,CAACzG,KAAK,EAAE9D,mBAAmB,CAAC,CAAC;AAC9F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASkL,WAAWA,CAACC,KAAK,EACjC;EACI,IAAIA,KAAK,YAAY5H,UAAU,EAC/B;IACI,OAAO;MAAEK,UAAU,EAAEuH,KAAK,CAACvH;KAAY;AAC3C,EAAA;AACA,EAAA,IAAIJ,WAAW,CAACC,MAAM,CAAC0H,KAAK,CAAC,EAC7B;IACI,OAAO;AAAEC,MAAAA,IAAI,EAAED,KAAK,CAACE,WAAW,CAACtD,IAAI;MAAEU,MAAM,EAAE0C,KAAK,CAAC1C;KAAQ;AACjE,EAAA;AACA,EAAA,IAAI3J,KAAK,CAACwM,OAAO,CAACH,KAAK,CAAC,EACxB;AACI,IAAA,OAAOA,KAAK,CAACI,GAAG,CAACL,WAAW,CAAC;AACjC,EAAA;AACA,EAAA,IAAIC,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EACtC;IACI,MAAMK,MAAM,GAAG,EAAE;AACjB,IAAA,KAAK,MAAM,CAAE3J,GAAG,EAAEyF,KAAK,CAAE,IAAI5I,MAAM,CAAC+M,OAAO,CAACN,KAAK,CAAC,EAClD;AACIK,MAAAA,MAAM,CAAC3J,GAAG,CAAC,GAAGqJ,WAAW,CAAC5D,KAAK,CAAC;AACpC,IAAA;AACA,IAAA,OAAOkE,MAAM;AACjB,EAAA;AACA,EAAA,OAAOL,KAAK;AAChB;AAEA,SAASd,kBAAkBA,CAACvG,KAAK,EACjC;AACI,EAAA,MAAM4G,OAAO,GAAGgB,SAAS,CAAC5H,KAAK,EAAE,EAAE,CAAC;AACpC,EAAA,MAAM6H,UAAU,GAAGC,uBAAuB,CAAClB,OAAO,CAAC;EACnD,MAAMK,aAAa,GAAG,EAAE;EACxB,IAAIF,aAAa,GAAG,CAAC;EACrB,IAAIgB,MAAM,GAAGhM,kBAAkB;AAE/B,EAAA,OAAOgM,MAAM,GAAGF,UAAU,IAAI7H,KAAK,CAACF,UAAU,IAAI,CAACkI,YAAY,CAAChI,KAAK,EAAE+H,MAAM,EAAEF,UAAU,CAAC,EAC1F;IACI,MAAMI,MAAM,GAAGC,oBAAoB,CAAClI,KAAK,EAAE+H,MAAM,EAAEnB,OAAO,CAAC;AAC3D,IAAA,IAAI,CAACqB,MAAM,IAAIA,MAAM,CAACE,SAAS,IAAIJ,MAAM,IAAIE,MAAM,CAACE,SAAS,GAAGnI,KAAK,CAACF,UAAU,EAChF;AACI,MAAA;AACJ,IAAA;AACAmH,IAAAA,aAAa,CAACZ,IAAI,CAAC+B,UAAU,CAACpI,KAAK,EAAEiI,MAAM,CAACI,UAAU,EAAEJ,MAAM,CAACK,UAAU,CAAC,CAAC;AAC3EvB,IAAAA,aAAa,EAAE;IACfgB,MAAM,GAAGE,MAAM,CAACE,SAAS;AAC7B,EAAA;EAEA,OAAO;AACHhH,IAAAA,QAAQ,EAAE,QAAQ;IAClByF,OAAO;AACPE,IAAAA,SAAS,EAAE,oBAAoB;IAC/BC,aAAa;IACbE,aAAa;AACb/E,IAAAA,UAAU,EAAE;GACf;AACL;AAEA,SAASd,mBAAmBA,CAACpB,KAAK,EAAEC,QAAQ,EAAE5B,MAAM,EACpD;EACI,MAAM2C,KAAK,GAAG,EAAE;AAChB,EAAA,MAAM6G,UAAU,GAAGC,uBAAuB,CAAC7H,QAAQ,CAAC2G,OAAO,CAAC;EAC5D,IAAImB,MAAM,GAAGhM,kBAAkB;EAC/B,IAAIwM,SAAS,GAAG,CAAC;AAEjB,EAAA,OAAOR,MAAM,GAAGF,UAAU,IAAI7H,KAAK,CAACF,UAAU,EAC9C;IACI,IAAIkI,YAAY,CAAChI,KAAK,EAAE+H,MAAM,EAAEF,UAAU,CAAC,EAC3C;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMW,MAAM,GAAGC,cAAc,CAACzI,KAAK,EAAE+H,MAAM,EAAE9H,QAAQ,CAAC2G,OAAO,EAAEvI,MAAM,EAAE,CAAC,CAAC;AACzE2C,IAAAA,KAAK,CAACqF,IAAI,CAACmC,MAAM,CAAC3E,IAAI,CAAC;IACvB0E,SAAS,IAAIC,MAAM,CAACE,KAAK;AACzB,IAAA,IAAIH,SAAS,GAAGlK,MAAM,CAAC3C,QAAQ,EAC/B;MACI,MAAM,IAAIwD,KAAK,CAAC,CAAA,kCAAA,EAAqCb,MAAM,CAAC3C,QAAQ,GAAG,CAAC;AAC5E,IAAA;IACAqM,MAAM,GAAGS,MAAM,CAACT,MAAM;AAC1B,EAAA;AAEA,EAAA,MAAMnH,QAAQ,GAAG;AACb,IAAA,GAAGX,QAAQ;AACXE,IAAAA,WAAW,EAAEzF,eAAe;IAC5BsG,KAAK;IACLuH,SAAS;IACTxB,aAAa,EAAE/F,KAAK,CAAC2D,MAAM;IAC3BsC,aAAa,EAAEjG,KAAK,CAACyG,GAAG,CAAC5D,IAAI,IAAIA,IAAI,CAACI,IAAI;GAC7C;EACDrD,QAAQ,CAAC+H,IAAI,GAAGC,YAAY,CAAChI,QAAQ,CAACI,KAAK,CAAC;AAC5C,EAAA,OAAOJ,QAAQ;AACnB;AAEA,SAAS6H,cAAcA,CAACzI,KAAK,EAAE+H,MAAM,EAAEnB,OAAO,EAAEvI,MAAM,EAAEwK,KAAK,EAC7D;AACI,EAAA,IAAIA,KAAK,GAAGxK,MAAM,CAAC1C,QAAQ,EAC3B;IACI,MAAM,IAAIuD,KAAK,CAAC,CAAA,kCAAA,EAAqCb,MAAM,CAAC1C,QAAQ,GAAG,CAAC;AAC5E,EAAA;EAEA,MAAMsM,MAAM,GAAGC,oBAAoB,CAAClI,KAAK,EAAE+H,MAAM,EAAEnB,OAAO,CAAC;EAC3D,IAAI,CAACqB,MAAM,EACX;AACI,IAAA,MAAM,IAAI/I,KAAK,CAAC,CAAA,mCAAA,EAAsC6I,MAAM,EAAE,CAAC;AACnE,EAAA;AACA,EAAA,IAAIE,MAAM,CAACE,SAAS,GAAGnI,KAAK,CAACF,UAAU,EACvC;IACI,MAAM,IAAIZ,KAAK,CAAC,CAAA,UAAA,EAAa+I,MAAM,CAAChE,IAAI,6BAA6B,CAAC;AAC1E,EAAA;AACA,EAAA,IAAIgE,MAAM,CAACa,aAAa,GAAGzK,MAAM,CAACzC,aAAa,EAC/C;AACI,IAAA,MAAM,IAAIsD,KAAK,CAAC,CAAA,UAAA,EAAa+I,MAAM,CAAChE,IAAI,CAAA,wBAAA,EAA2B5F,MAAM,CAACzC,aAAa,CAAA,CAAA,CAAG,CAAC;AAC/F,EAAA;AAEA,EAAA,IAAImN,MAAM,GAAGd,MAAM,CAACe,gBAAgB;EACpC,MAAMC,UAAU,GAAG,EAAE;EACrB,MAAMC,aAAa,GAAG,EAAE;AAExB,EAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlB,MAAM,CAACa,aAAa,EAAEK,CAAC,EAAE,EAC7C;IACI,MAAMX,MAAM,GAAGY,kBAAkB,CAACpJ,KAAK,EAAE+I,MAAM,EAAE1K,MAAM,CAAC;AACxD4K,IAAAA,UAAU,CAAC5C,IAAI,CAACmC,MAAM,CAACnB,KAAK,CAAC;AAC7B6B,IAAAA,aAAa,CAAC7C,IAAI,CAACmC,MAAM,CAAClB,IAAI,CAAC;IAC/ByB,MAAM,GAAGP,MAAM,CAACT,MAAM;AAC1B,EAAA;EAEA,MAAMsB,WAAW,GAAGpB,MAAM,CAACe,gBAAgB,GAAGf,MAAM,CAACqB,kBAAkB;EACvE,IAAIP,MAAM,GAAGM,WAAW,EACxB;IACI,MAAM,IAAInK,KAAK,CAAC,CAAA,4BAAA,EAA+B+I,MAAM,CAAChE,IAAI,aAAa,CAAC;AAC5E,EAAA;AACA8E,EAAAA,MAAM,GAAGM,WAAW;EAEpB,MAAMvF,QAAQ,GAAG,EAAE;EACnB,IAAI4E,KAAK,GAAG,CAAC;AACb,EAAA,MAAMb,UAAU,GAAGC,uBAAuB,CAAClB,OAAO,CAAC;AAEnD,EAAA,OAAOmC,MAAM,GAAGlB,UAAU,IAAII,MAAM,CAACE,SAAS,EAC9C;IACI,IAAIH,YAAY,CAAChI,KAAK,EAAE+I,MAAM,EAAElB,UAAU,CAAC,EAC3C;AACIkB,MAAAA,MAAM,IAAIlB,UAAU;AACpB,MAAA;AACJ,IAAA;AACA,IAAA,IAAIkB,MAAM,IAAId,MAAM,CAACE,SAAS,EAC9B;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMnE,KAAK,GAAGyE,cAAc,CAACzI,KAAK,EAAE+I,MAAM,EAAEnC,OAAO,EAAEvI,MAAM,EAAEwK,KAAK,GAAG,CAAC,CAAC;AACvE,IAAA,IAAI7E,KAAK,CAAC+D,MAAM,GAAGE,MAAM,CAACE,SAAS,EACnC;MACI,MAAM,IAAIjJ,KAAK,CAAC,CAAA,oBAAA,EAAuB+I,MAAM,CAAChE,IAAI,aAAa,CAAC;AACpE,IAAA;AACAH,IAAAA,QAAQ,CAACuC,IAAI,CAACrC,KAAK,CAACH,IAAI,CAAC;IACzB6E,KAAK,IAAI1E,KAAK,CAAC0E,KAAK;IACpBK,MAAM,GAAG/E,KAAK,CAAC+D,MAAM;AACzB,EAAA;EAEA,OAAO;IACHA,MAAM,EAAEE,MAAM,CAACE,SAAS;IACxBO,KAAK;AACL7E,IAAAA,IAAI,EAAE;MACFI,IAAI,EAAEgE,MAAM,CAAChE,IAAI;MACjBgF,UAAU;MACVC,aAAa;AACbpF,MAAAA;AACJ;GACH;AACL;AAEA,SAASoE,oBAAoBA,CAAClI,KAAK,EAAE+H,MAAM,EAAEnB,OAAO,EACpD;AACI,EAAA,MAAM2C,KAAK,GAAG3C,OAAO,IAAI,IAAI;AAC7B,EAAA,MAAMiB,UAAU,GAAGC,uBAAuB,CAAClB,OAAO,CAAC;AACnD,EAAA,IAAImB,MAAM,GAAGF,UAAU,GAAG7H,KAAK,CAACF,UAAU,EAC1C;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,IAAIiJ,MAAM,GAAGhB,MAAM;AACnB,EAAA,MAAMI,SAAS,GAAGoB,KAAK,GAAGC,iBAAiB,CAACxJ,KAAK,EAAE+I,MAAM,CAAC,GAAGnB,SAAS,CAAC5H,KAAK,EAAE+I,MAAM,CAAC;AACrFA,EAAAA,MAAM,IAAIQ,KAAK,GAAG,CAAC,GAAG,CAAC;AACvB,EAAA,MAAMT,aAAa,GAAGS,KAAK,GAAGC,iBAAiB,CAACxJ,KAAK,EAAE+I,MAAM,CAAC,GAAGnB,SAAS,CAAC5H,KAAK,EAAE+I,MAAM,CAAC;AACzFA,EAAAA,MAAM,IAAIQ,KAAK,GAAG,CAAC,GAAG,CAAC;AACvB,EAAA,MAAMD,kBAAkB,GAAGC,KAAK,GAAGC,iBAAiB,CAACxJ,KAAK,EAAE+I,MAAM,CAAC,GAAGnB,SAAS,CAAC5H,KAAK,EAAE+I,MAAM,CAAC;AAC9FA,EAAAA,MAAM,IAAIQ,KAAK,GAAG,CAAC,GAAG,CAAC;AACvB,EAAA,MAAMjB,UAAU,GAAGtI,KAAK,CAAC+I,MAAM,EAAE,CAAC;EAClC,MAAMV,UAAU,GAAGU,MAAM;AAEzB,EAAA,IAAIZ,SAAS,KAAK,CAAC,IAAIW,aAAa,KAAK,CAAC,IAAIQ,kBAAkB,KAAK,CAAC,IAAIhB,UAAU,KAAK,CAAC,EAC1F;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EACA,IAAI,CAACmB,MAAM,CAACC,aAAa,CAACvB,SAAS,CAAC,IAAI,CAACsB,MAAM,CAACC,aAAa,CAACZ,aAAa,CAAC,IAAI,CAACW,MAAM,CAACC,aAAa,CAACJ,kBAAkB,CAAC,EACzH;AACI,IAAA,MAAM,IAAIpK,KAAK,CAAC,+DAA+D,CAAC;AACpF,EAAA;AACA,EAAA,IAAImJ,UAAU,GAAGC,UAAU,GAAGtI,KAAK,CAACF,UAAU,EAC9C;AACI,IAAA,MAAM,IAAIZ,KAAK,CAAC,CAAA,yBAAA,EAA4B6I,MAAM,eAAe,CAAC;AACtE,EAAA;EAEA,OAAO;IACHI,SAAS;IACTW,aAAa;IACbQ,kBAAkB;IAClBhB,UAAU;IACVD,UAAU;IACVpE,IAAI,EAAEmE,UAAU,CAACpI,KAAK,EAAEqI,UAAU,EAAEC,UAAU,CAAC;IAC/CU,gBAAgB,EAAEX,UAAU,GAAGC;GAClC;AACL;AAEA,SAASc,kBAAkBA,CAACpJ,KAAK,EAAE+H,MAAM,EAAE1J,MAAM,EACjD;EACIsL,WAAW,CAAC3J,KAAK,EAAE+H,MAAM,EAAE,CAAC,EAAE,iCAAiC,CAAC;EAChE,MAAMT,IAAI,GAAGhJ,MAAM,CAACsL,YAAY,CAAC5J,KAAK,CAAC+H,MAAM,CAAC,CAAC;AAC/C,EAAA,IAAIgB,MAAM,GAAGhB,MAAM,GAAG,CAAC;AAEvB,EAAA,QAAQT,IAAI;AAEZ,IAAA,KAAK,GAAG;MACJqC,WAAW,CAAC3J,KAAK,EAAE+I,MAAM,EAAE,CAAC,EAAE,kCAAkC,CAAC;MACjE,OAAO;QAAEzB,IAAI;AAAED,QAAAA,KAAK,EAAEwC,SAAS,CAAC7J,KAAK,EAAE+I,MAAM,CAAC;QAAEhB,MAAM,EAAEgB,MAAM,GAAG;OAAG;AACxE,IAAA,KAAK,GAAG;MACJY,WAAW,CAAC3J,KAAK,EAAE+I,MAAM,EAAE,CAAC,EAAE,iCAAiC,CAAC;MAChE,OAAO;QAAEzB,IAAI;AAAED,QAAAA,KAAK,EAAErH,KAAK,CAAC+I,MAAM,CAAC,KAAK,CAAC;QAAEhB,MAAM,EAAEgB,MAAM,GAAG;OAAG;AACnE,IAAA,KAAK,GAAG;MACJY,WAAW,CAAC3J,KAAK,EAAE+I,MAAM,EAAE,CAAC,EAAE,kCAAkC,CAAC;MACjE,OAAO;QAAEzB,IAAI;AAAED,QAAAA,KAAK,EAAEyC,SAAS,CAAC9J,KAAK,EAAE+I,MAAM,CAAC;QAAEhB,MAAM,EAAEgB,MAAM,GAAG;OAAG;AACxE,IAAA,KAAK,GAAG;MACJY,WAAW,CAAC3J,KAAK,EAAE+I,MAAM,EAAE,CAAC,EAAE,oCAAoC,CAAC;MACnE,OAAO;QAAEzB,IAAI;AAAED,QAAAA,KAAK,EAAE0C,SAAS,CAAC/J,KAAK,EAAE+I,MAAM,CAAC;QAAEhB,MAAM,EAAEgB,MAAM,GAAG;OAAG;AACxE,IAAA,KAAK,GAAG;MACJY,WAAW,CAAC3J,KAAK,EAAE+I,MAAM,EAAE,CAAC,EAAE,oCAAoC,CAAC;MACnE,OAAO;QAAEzB,IAAI;AAAED,QAAAA,KAAK,EAAE2C,SAAS,CAAChK,KAAK,EAAE+I,MAAM,CAAC;QAAEhB,MAAM,EAAEgB,MAAM,GAAG;OAAG;AACxE,IAAA,KAAK,GAAG;MACJY,WAAW,CAAC3J,KAAK,EAAE+I,MAAM,EAAE,CAAC,EAAE,kCAAkC,CAAC;MACjE,OAAO;QAAEzB,IAAI;AAAED,QAAAA,KAAK,EAAE4C,cAAc,CAACjK,KAAK,EAAE+I,MAAM,CAAC;QAAEhB,MAAM,EAAEgB,MAAM,GAAG;OAAG;AAC7E,IAAA,KAAK,GAAG;MACJ,OAAOmB,sBAAsB,CAAClK,KAAK,EAAE+I,MAAM,EAAEzB,IAAI,EAAE,OAAO,CAAC;AAC/D,IAAA,KAAK,GAAG;MACJ,OAAO4C,sBAAsB,CAAClK,KAAK,EAAE+I,MAAM,EAAEzB,IAAI,EAAE,QAAQ,CAAC;AAChE,IAAA,KAAK,GAAG;AACR,IAAA,KAAK,GAAG;AACR,IAAA,KAAK,GAAG;AACR,IAAA,KAAK,GAAG;AACR,IAAA,KAAK,GAAG;AACR,IAAA,KAAK,GAAG;MACJ,OAAO6C,uBAAuB,CAACnK,KAAK,EAAE+I,MAAM,EAAEzB,IAAI,EAAEjJ,MAAM,CAAC;AAC/D,IAAA;AACI,MAAA,MAAM,IAAIa,KAAK,CAAC,CAAA,+BAAA,EAAkChB,IAAI,CAACC,SAAS,CAACmJ,IAAI,CAAC,CAAA,WAAA,EAAcS,MAAM,EAAE,CAAC;AACjG;AACJ;AAEA,SAASmC,sBAAsBA,CAAClK,KAAK,EAAE+H,MAAM,EAAET,IAAI,EAAEhF,IAAI,EACzD;EACIqH,WAAW,CAAC3J,KAAK,EAAE+H,MAAM,EAAE,CAAC,EAAE,CAAA,KAAA,EAAQzF,IAAI,CAAA,6BAAA,CAA+B,CAAC;AAC1E,EAAA,MAAMqC,MAAM,GAAGiD,SAAS,CAAC5H,KAAK,EAAE+H,MAAM,CAAC;AACvC,EAAA,MAAMqC,UAAU,GAAGrC,MAAM,GAAG,CAAC;AAC7B,EAAA,MAAMI,SAAS,GAAGiC,UAAU,GAAGzF,MAAM;EACrCgF,WAAW,CAAC3J,KAAK,EAAEoK,UAAU,EAAEzF,MAAM,EAAE,CAAA,KAAA,EAAQrC,IAAI,CAAA,sBAAA,CAAwB,CAAC;EAE5E,OAAO;IACHgF,IAAI;IACJD,KAAK,EAAE/E,IAAI,KAAK,QAAQ,GAAG8F,UAAU,CAACpI,KAAK,EAAEoK,UAAU,EAAEzF,MAAM,CAAC,GAAG3E,KAAK,CAACqK,QAAQ,CAACD,UAAU,EAAEjC,SAAS,CAAC;AACxGJ,IAAAA,MAAM,EAAEI;GACX;AACL;AAEA,SAASgC,uBAAuBA,CAACnK,KAAK,EAAE+H,MAAM,EAAET,IAAI,EAAEjJ,MAAM,EAC5D;EACIsL,WAAW,CAAC3J,KAAK,EAAE+H,MAAM,EAAE,EAAE,EAAE,yCAAyC,CAAC;AACzE,EAAA,MAAMpD,MAAM,GAAGiD,SAAS,CAAC5H,KAAK,EAAE+H,MAAM,CAAC;EACvC,MAAM5G,QAAQ,GAAGyG,SAAS,CAAC5H,KAAK,EAAE+H,MAAM,GAAG,CAAC,CAAC;EAC7C,MAAMjI,UAAU,GAAG8H,SAAS,CAAC5H,KAAK,EAAE+H,MAAM,GAAG,CAAC,CAAC;AAC/C,EAAA,MAAMqC,UAAU,GAAGrC,MAAM,GAAG,EAAE;AAC9B,EAAA,MAAMI,SAAS,GAAGiC,UAAU,GAAGtK,UAAU;EACzC6J,WAAW,CAAC3J,KAAK,EAAEoK,UAAU,EAAEtK,UAAU,EAAE,kCAAkC,CAAC;AAC9E,EAAA,IAAI6E,MAAM,GAAGtG,MAAM,CAACxC,cAAc,EAClC;IACI,MAAM,IAAIqD,KAAK,CAAC,CAAA,4CAAA,EAA+Cb,MAAM,CAACxC,cAAc,GAAG,CAAC;AAC5F,EAAA;EAEA,IAAIsF,QAAQ,KAAK,CAAC,EAClB;IACI,OAAO;MACHmG,IAAI;AACJD,MAAAA,KAAK,EAAEiD,qBAAqB,CAACtK,KAAK,EAAEoK,UAAU,EAAE9C,IAAI,EAAE3C,MAAM,EAAE7E,UAAU,CAAC;AACzEiI,MAAAA,MAAM,EAAEI;KACX;AACL,EAAA;EAEA,IAAIhH,QAAQ,KAAK,CAAC,EAClB;AACI,IAAA,MAAMoJ,kBAAkB,GAAGC,mBAAmB,CAAClD,IAAI,CAAC,GAAG3C,MAAM;AAC7D,IAAA,MAAM8F,QAAQ,GAAGC,WAAW,CAAC1K,KAAK,CAACqK,QAAQ,CAACD,UAAU,EAAEjC,SAAS,CAAC,EAAEoC,kBAAkB,CAAC;IACvF,OAAO;MACHjD,IAAI;AACJD,MAAAA,KAAK,EAAEiD,qBAAqB,CAACG,QAAQ,EAAE,CAAC,EAAEnD,IAAI,EAAE3C,MAAM,EAAE4F,kBAAkB,CAAC;AAC3ExC,MAAAA,MAAM,EAAEI;KACX;AACL,EAAA;EAEA,OAAO;IACHb,IAAI;AACJD,IAAAA,KAAK,EAAE;AACHsD,MAAAA,SAAS,EAAErD,IAAI;MACf3C,MAAM;MACNxD,QAAQ;AACRtB,MAAAA,UAAU,EAAEuK,UAAU;MACtBtK,UAAU;AACV8K,MAAAA,UAAU,EAAE;KACf;AACD7C,IAAAA,MAAM,EAAEI;GACX;AACL;AAEA,SAASmC,qBAAqBA,CAACtK,KAAK,EAAE+H,MAAM,EAAET,IAAI,EAAE3C,MAAM,EAAE7E,UAAU,EACtE;AACI,EAAA,MAAM+K,QAAQ,GAAGL,mBAAmB,CAAClD,IAAI,CAAC,GAAG3C,MAAM;EACnD,IAAI7E,UAAU,GAAG+K,QAAQ,EACzB;AACI,IAAA,MAAM,IAAI3L,KAAK,CAAC,CAAA,oBAAA,EAAuBoI,IAAI,eAAe,CAAC;AAC/D,EAAA;EAEA,IAAIA,IAAI,KAAK,GAAG,EAChB;AACI,IAAA,MAAMD,KAAK,GAAG,IAAIyD,YAAY,CAACnG,MAAM,CAAC;IACtC,KAAK,IAAIwE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;AACI9B,MAAAA,KAAK,CAAC8B,CAAC,CAAC,GAAGY,SAAS,CAAC/J,KAAK,EAAE+H,MAAM,GAAGoB,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA;AACA,IAAA,OAAO9B,KAAK;AAChB,EAAA;EACA,IAAIC,IAAI,KAAK,GAAG,EAChB;AACI,IAAA,MAAMD,KAAK,GAAG,IAAI0D,YAAY,CAACpG,MAAM,CAAC;IACtC,KAAK,IAAIwE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;AACI9B,MAAAA,KAAK,CAAC8B,CAAC,CAAC,GAAGa,SAAS,CAAChK,KAAK,EAAE+H,MAAM,GAAGoB,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA;AACA,IAAA,OAAO9B,KAAK;AAChB,EAAA;EACA,IAAIC,IAAI,KAAK,GAAG,EAChB;AACI,IAAA,MAAMD,KAAK,GAAG,IAAI2D,UAAU,CAACrG,MAAM,CAAC;IACpC,KAAK,IAAIwE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;AACI9B,MAAAA,KAAK,CAAC8B,CAAC,CAAC,GAAGW,SAAS,CAAC9J,KAAK,EAAE+H,MAAM,GAAGoB,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA;AACA,IAAA,OAAO9B,KAAK;AAChB,EAAA;EACA,IAAIC,IAAI,KAAK,GAAG,EAChB;IACI,MAAMD,KAAK,GAAG,EAAE;IAChB,KAAK,IAAI8B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;AACI9B,MAAAA,KAAK,CAAChB,IAAI,CAAC4D,cAAc,CAACjK,KAAK,EAAE+H,MAAM,GAAGoB,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,IAAA;AACA,IAAA,OAAO9B,KAAK;AAChB,EAAA;EAEA,MAAMA,KAAK,GAAG,EAAE;EAChB,KAAK,IAAI8B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;IACI9B,KAAK,CAAChB,IAAI,CAACrG,KAAK,CAAC+H,MAAM,GAAGoB,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,EAAA;AACA,EAAA,OAAO9B,KAAK;AAChB;AAEA,SAASqD,WAAWA,CAACpP,MAAM,EAAE2P,cAAc,EAC3C;AACI,EAAA,IAAI3P,MAAM,CAACwE,UAAU,GAAG,CAAC,EACzB;AACI,IAAA,MAAM,IAAIZ,KAAK,CAAC,gDAAgD,CAAC;AACrE,EAAA;AAEA,EAAA,MACIgM,GAAG,GAAG5P,MAAM,CAAC,CAAC,CAAC;AACf6P,IAAAA,GAAG,GAAG7P,MAAM,CAAC,CAAC,CAAC;EAEnB,IAAI,CAAC4P,GAAG,GAAG,IAAI,MAAM,CAAC,IAAKA,GAAG,IAAI,CAAC,GAAI,CAAC,IAAI,CAAC,CAACA,GAAG,IAAI,CAAC,IAAIC,GAAG,IAAI,EAAE,KAAK,CAAC,EACzE;AACI,IAAA,MAAM,IAAIjM,KAAK,CAAC,+CAA+C,CAAC;AACpE,EAAA;EACA,IAAIiM,GAAG,GAAG,IAAI,EACd;AACI,IAAA,MAAM,IAAIjM,KAAK,CAAC,qDAAqD,CAAC;AAC1E,EAAA;EAEA,MACIkM,aAAa,GAAGC,SAAS,CAAC/P,MAAM,EAAEA,MAAM,CAACwE,UAAU,GAAG,CAAC,CAAC;AACxD4H,IAAAA,MAAM,GAAG4D,cAAc,CAAChQ,MAAM,CAAC+O,QAAQ,CAAC,CAAC,EAAE/O,MAAM,CAACwE,UAAU,GAAG,CAAC,CAAC,EAAEmL,cAAc,CAAC;AAClFM,IAAAA,WAAW,GAAGC,OAAO,CAAC9D,MAAM,CAAC;EAEjC,IAAI6D,WAAW,KAAKH,aAAa,EACjC;AACI,IAAA,MAAM,IAAIlM,KAAK,CAAC,8CAA8C,CAAC;AACnE,EAAA;AAEA,EAAA,OAAOwI,MAAM;AACjB;AAEA,SAAS4D,cAAcA,CAAChQ,MAAM,EAAE2P,cAAc,EAC9C;AACI,EAAA,MACIQ,MAAM,GAAG,IAAIC,gBAAgB,CAACpQ,MAAM,CAAC;AACrCqQ,IAAAA,KAAK,GAAG;AACJjE,MAAAA,MAAM,EAAE,IAAIjI,UAAU,CAACwL,cAAc,CAAC;AACtClD,MAAAA,MAAM,EAAE;KACX;EAEL,IAAI6D,UAAU,GAAG,KAAK;EACtB,OAAO,CAACA,UAAU,EAClB;IACIA,UAAU,GAAGH,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,IAAA,MAAMC,SAAS,GAAGL,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC;IACpC,IAAIC,SAAS,KAAK,CAAC,EACnB;AACIC,MAAAA,kBAAkB,CAACN,MAAM,EAAEE,KAAK,CAAC;AACrC,IAAA,CAAC,MACI,IAAIG,SAAS,KAAK,CAAC,EACxB;AACI,MAAA,MAAME,MAAM,GAAGC,qBAAqB,EAAE;AACtCC,MAAAA,mBAAmB,CAACT,MAAM,EAAEE,KAAK,EAAEK,MAAM,CAACG,aAAa,EAAEH,MAAM,CAACI,QAAQ,CAAC;AAC7E,IAAA,CAAC,MACI,IAAIN,SAAS,KAAK,CAAC,EACxB;AACI,MAAA,MAAME,MAAM,GAAGK,wBAAwB,CAACZ,MAAM,CAAC;AAC/CS,MAAAA,mBAAmB,CAACT,MAAM,EAAEE,KAAK,EAAEK,MAAM,CAACG,aAAa,EAAEH,MAAM,CAACI,QAAQ,CAAC;AAC7E,IAAA,CAAC,MAED;AACI,MAAA,MAAM,IAAIlN,KAAK,CAAC,wDAAwD,CAAC;AAC7E,IAAA;AACJ,EAAA;AAEA,EAAA,IAAIyM,KAAK,CAAC5D,MAAM,KAAKkD,cAAc,EACnC;AACI,IAAA,MAAM,IAAI/L,KAAK,CAAC,oDAAoD,CAAC;AACzE,EAAA;EAEA,OAAOyM,KAAK,CAACjE,MAAM;AACvB;AAEA,SAASqE,kBAAkBA,CAACN,MAAM,EAAEE,KAAK,EACzC;EACIF,MAAM,CAACa,SAAS,EAAE;AAClB,EAAA,MACI3H,MAAM,GAAG8G,MAAM,CAACc,gBAAgB,EAAE;AAClCC,IAAAA,aAAa,GAAGf,MAAM,CAACc,gBAAgB,EAAE;EAE7C,IAAI,CAAC,CAAC5H,MAAM,GAAG,MAAM,IAAI,MAAM,MAAM6H,aAAa,EAClD;AACI,IAAA,MAAM,IAAItN,KAAK,CAAC,oDAAoD,CAAC;AACzE,EAAA;EAEA,KAAK,IAAIiK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;IACIsD,iBAAiB,CAACd,KAAK,EAAEF,MAAM,CAACiB,eAAe,EAAE,CAAC;AACtD,EAAA;AACJ;AAEA,SAASR,mBAAmBA,CAACT,MAAM,EAAEE,KAAK,EAAEgB,kBAAkB,EAAEC,aAAa,EAC7E;EACI,SACA;AACI,IAAA,MAAMC,MAAM,GAAGF,kBAAkB,CAACG,MAAM,CAACrB,MAAM,CAAC;IAChD,IAAIoB,MAAM,GAAG,GAAG,EAChB;AACIJ,MAAAA,iBAAiB,CAACd,KAAK,EAAEkB,MAAM,CAAC;AAChC,MAAA;AACJ,IAAA;IACA,IAAIA,MAAM,KAAK,GAAG,EAClB;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAME,WAAW,GAAGF,MAAM,GAAG,GAAG;IAChC,IAAIE,WAAW,GAAG,CAAC,IAAIA,WAAW,IAAIvQ,mBAAmB,CAACmI,MAAM,EAChE;AACI,MAAA,MAAM,IAAIzF,KAAK,CAAC,yDAAyD,CAAC;AAC9E,IAAA;AAEA,IAAA,MACIyF,MAAM,GAAGnI,mBAAmB,CAACuQ,WAAW,CAAC,GAAGtB,MAAM,CAACI,QAAQ,CAACpP,oBAAoB,CAACsQ,WAAW,CAAC,CAAC;AAC9FC,MAAAA,cAAc,GAAGJ,aAAa,CAACE,MAAM,CAACrB,MAAM,CAAC;IAEjD,IAAIuB,cAAc,GAAG,CAAC,IAAIA,cAAc,IAAItQ,qBAAqB,CAACiI,MAAM,EACxE;AACI,MAAA,MAAM,IAAIzF,KAAK,CAAC,2DAA2D,CAAC;AAChF,IAAA;AAEA,IAAA,MAAMkN,QAAQ,GAAG1P,qBAAqB,CAACsQ,cAAc,CAAC,GAAGvB,MAAM,CAACI,QAAQ,CAAClP,sBAAsB,CAACqQ,cAAc,CAAC,CAAC;AAChHC,IAAAA,iBAAiB,CAACtB,KAAK,EAAES,QAAQ,EAAEzH,MAAM,CAAC;AAC9C,EAAA;AACJ;AAEA,SAASsH,qBAAqBA,GAC9B;EACI,IAAI,CAACxO,kBAAkB,EACvB;IACI,MAAMyP,cAAc,GAAG,IAAIlS,KAAK,CAAC,GAAG,CAAC,CAACmS,IAAI,CAAC,CAAC,CAAC;IAC7C,KAAK,IAAIN,MAAM,GAAG,CAAC,EAAEA,MAAM,IAAI,GAAG,EAAEA,MAAM,EAAE,EAC5C;AACIK,MAAAA,cAAc,CAACL,MAAM,CAAC,GAAG,CAAC;AAC9B,IAAA;IACA,KAAK,IAAIA,MAAM,GAAG,GAAG,EAAEA,MAAM,IAAI,GAAG,EAAEA,MAAM,EAAE,EAC9C;AACIK,MAAAA,cAAc,CAACL,MAAM,CAAC,GAAG,CAAC;AAC9B,IAAA;IACA,KAAK,IAAIA,MAAM,GAAG,GAAG,EAAEA,MAAM,IAAI,GAAG,EAAEA,MAAM,EAAE,EAC9C;AACIK,MAAAA,cAAc,CAACL,MAAM,CAAC,GAAG,CAAC;AAC9B,IAAA;IACA,KAAK,IAAIA,MAAM,GAAG,GAAG,EAAEA,MAAM,IAAI,GAAG,EAAEA,MAAM,EAAE,EAC9C;AACIK,MAAAA,cAAc,CAACL,MAAM,CAAC,GAAG,CAAC;AAC9B,IAAA;AAEApP,IAAAA,kBAAkB,GAAG;AACjB0O,MAAAA,aAAa,EAAE,IAAIiB,mBAAmB,CAACF,cAAc,CAAC;AACtDd,MAAAA,QAAQ,EAAE,IAAIgB,mBAAmB,CAAC,IAAIpS,KAAK,CAAC,EAAE,CAAC,CAACmS,IAAI,CAAC,CAAC,CAAC;KAC1D;AACL,EAAA;AACA,EAAA,OAAO1P,kBAAkB;AAC7B;AAEA,SAAS4O,wBAAwBA,CAACZ,MAAM,EACxC;EACI,MACI4B,kBAAkB,GAAG5B,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG;IAC7CyB,aAAa,GAAG7B,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC0B,eAAe,GAAG9B,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IACxC2B,iBAAiB,GAAG,IAAIxS,KAAK,CAAC,EAAE,CAAC,CAACmS,IAAI,CAAC,CAAC,CAAC;EAE7C,KAAK,IAAIhE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoE,eAAe,EAAEpE,CAAC,EAAE,EACxC;AACIqE,IAAAA,iBAAiB,CAACjR,yBAAyB,CAAC4M,CAAC,CAAC,CAAC,GAAGsC,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC;AACxE,EAAA;AAEA,EAAA,MACI4B,eAAe,GAAG,IAAIL,mBAAmB,CAACI,iBAAiB,CAAC;IAC5DE,UAAU,GAAGL,kBAAkB,GAAGC,aAAa;AAC/CK,IAAAA,OAAO,GAAG,EAAE;AAEhB,EAAA,OAAOA,OAAO,CAAChJ,MAAM,GAAG+I,UAAU,EAClC;AACI,IAAA,MAAMb,MAAM,GAAGY,eAAe,CAACX,MAAM,CAACrB,MAAM,CAAC;IAC7C,IAAIoB,MAAM,IAAI,EAAE,EAChB;AACIc,MAAAA,OAAO,CAACtH,IAAI,CAACwG,MAAM,CAAC;AACxB,IAAA,CAAC,MACI,IAAIA,MAAM,KAAK,EAAE,EACtB;AACI,MAAA,IAAI,CAACc,OAAO,CAAChJ,MAAM,EACnB;AACI,QAAA,MAAM,IAAIzF,KAAK,CAAC,2DAA2D,CAAC;AAChF,MAAA;MACA0O,gBAAgB,CAACD,OAAO,EAAEA,OAAO,CAACA,OAAO,CAAChJ,MAAM,GAAG,CAAC,CAAC,EAAE8G,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE6B,UAAU,CAAC;AAC9F,IAAA,CAAC,MACI,IAAIb,MAAM,KAAK,EAAE,EACtB;AACIe,MAAAA,gBAAgB,CAACD,OAAO,EAAE,CAAC,EAAElC,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE6B,UAAU,CAAC;AACpE,IAAA,CAAC,MACI,IAAIb,MAAM,KAAK,EAAE,EACtB;AACIe,MAAAA,gBAAgB,CAACD,OAAO,EAAE,CAAC,EAAElC,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE6B,UAAU,CAAC;AACrE,IAAA,CAAC,MAED;AACI,MAAA,MAAM,IAAIxO,KAAK,CAAC,sDAAsD,CAAC;AAC3E,IAAA;AACJ,EAAA;EAEA,OAAO;AACHiN,IAAAA,aAAa,EAAE,IAAIiB,mBAAmB,CAACO,OAAO,CAACE,KAAK,CAAC,CAAC,EAAER,kBAAkB,CAAC,CAAC;IAC5EjB,QAAQ,EAAE,IAAIgB,mBAAmB,CAACO,OAAO,CAACE,KAAK,CAACR,kBAAkB,CAAC;GACtE;AACL;AAEA,SAASO,gBAAgBA,CAACD,OAAO,EAAEtG,KAAK,EAAEqB,KAAK,EAAEgF,UAAU,EAC3D;AACI,EAAA,IAAIC,OAAO,CAAChJ,MAAM,GAAG+D,KAAK,GAAGgF,UAAU,EACvC;AACI,IAAA,MAAM,IAAIxO,KAAK,CAAC,6CAA6C,CAAC;AAClE,EAAA;EACA,KAAK,IAAIiK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,KAAK,EAAES,CAAC,EAAE,EAC9B;AACIwE,IAAAA,OAAO,CAACtH,IAAI,CAACgB,KAAK,CAAC;AACvB,EAAA;AACJ;AAEA,SAASoF,iBAAiBA,CAACd,KAAK,EAAEtE,KAAK,EACvC;EACI,IAAIsE,KAAK,CAAC5D,MAAM,IAAI4D,KAAK,CAACjE,MAAM,CAAC5H,UAAU,EAC3C;AACI,IAAA,MAAM,IAAIZ,KAAK,CAAC,oDAAoD,CAAC;AACzE,EAAA;EACAyM,KAAK,CAACjE,MAAM,CAACiE,KAAK,CAAC5D,MAAM,EAAE,CAAC,GAAGV,KAAK,GAAG,IAAI;AAC/C;AAEA,SAAS4F,iBAAiBA,CAACtB,KAAK,EAAES,QAAQ,EAAEzH,MAAM,EAClD;EACI,IAAIyH,QAAQ,IAAI,CAAC,IAAIA,QAAQ,GAAGT,KAAK,CAAC5D,MAAM,EAC5C;AACI,IAAA,MAAM,IAAI7I,KAAK,CAAC,oDAAoD,CAAC;AACzE,EAAA;EACA,KAAK,IAAIiK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;AACIsD,IAAAA,iBAAiB,CAACd,KAAK,EAAEA,KAAK,CAACjE,MAAM,CAACiE,KAAK,CAAC5D,MAAM,GAAGqE,QAAQ,CAAC,CAAC;AACnE,EAAA;AACJ;AAEA,SAASZ,OAAOA,CAACxL,KAAK,EACtB;EACI,IACI8N,CAAC,GAAG,CAAC;AACLC,IAAAA,CAAC,GAAG,CAAC;AAET,EAAA,KAAK,MAAMC,IAAI,IAAIhO,KAAK,EACxB;AACI8N,IAAAA,CAAC,IAAIE,IAAI;AACTD,IAAAA,CAAC,IAAID,CAAC;AACNA,IAAAA,CAAC,IAAIlR,WAAW;AAChBmR,IAAAA,CAAC,IAAInR,WAAW;AACpB,EAAA;EAEA,OAAO,CAAGmR,CAAC,IAAI,EAAE,KAAM,CAAC,GAAID,CAAC,MAAM,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA,MAAMpC,gBAAgB,CACtB;EACInE,WAAWA,CAACvH,KAAK,EACjB;IACI,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACH,UAAU,GAAG,CAAC;IACnB,IAAI,CAACoO,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,QAAQ,GAAG,CAAC;AACrB,EAAA;EAEArC,QAAQA,CAACnD,KAAK,EACd;IACI,IACIrB,KAAK,GAAG,CAAC;AACT8G,MAAAA,KAAK,GAAG,CAAC;AACTC,MAAAA,SAAS,GAAG1F,KAAK;IAErB,OAAO0F,SAAS,GAAG,CAAC,EACpB;AACI,MAAA,IAAI,IAAI,CAACF,QAAQ,KAAK,CAAC,EACvB;QACI,IAAI,IAAI,CAACrO,UAAU,IAAI,IAAI,CAACG,KAAK,CAACF,UAAU,EAC5C;AACI,UAAA,MAAM,IAAIZ,KAAK,CAAC,mDAAmD,CAAC;AACxE,QAAA;QACA,IAAI,CAAC+O,SAAS,GAAG,IAAI,CAACjO,KAAK,CAAC,IAAI,CAACH,UAAU,EAAE,CAAC;QAC9C,IAAI,CAACqO,QAAQ,GAAG,CAAC;AACrB,MAAA;MAEA,MAAMG,IAAI,GAAGC,IAAI,CAACC,GAAG,CAACH,SAAS,EAAE,IAAI,CAACF,QAAQ,CAAC;AAC/C7G,MAAAA,KAAK,IAAI,CAAC,IAAI,CAAC4G,SAAS,GAAI,CAAC,CAAC,IAAII,IAAI,IAAI,CAAE,KAAKF,KAAK;MACtD,IAAI,CAACF,SAAS,MAAMI,IAAI;MACxB,IAAI,CAACH,QAAQ,IAAIG,IAAI;AACrBF,MAAAA,KAAK,IAAIE,IAAI;AACbD,MAAAA,SAAS,IAAIC,IAAI;AACrB,IAAA;AAEA,IAAA,OAAOhH,KAAK;AAChB,EAAA;AAEAiF,EAAAA,SAASA,GACT;IACI,IAAI,CAAC2B,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,QAAQ,GAAG,CAAC;AACrB,EAAA;AAEAxB,EAAAA,eAAeA,GACf;IACI,IAAI,IAAI,CAAC7M,UAAU,IAAI,IAAI,CAACG,KAAK,CAACF,UAAU,EAC5C;AACI,MAAA,MAAM,IAAIZ,KAAK,CAAC,iDAAiD,CAAC;AACtE,IAAA;IACA,OAAO,IAAI,CAACc,KAAK,CAAC,IAAI,CAACH,UAAU,EAAE,CAAC;AACxC,EAAA;AAEA0M,EAAAA,gBAAgBA,GAChB;AACI,IAAA,MACIiC,GAAG,GAAG,IAAI,CAAC9B,eAAe,EAAE;AAC5B+B,MAAAA,IAAI,GAAG,IAAI,CAAC/B,eAAe,EAAE;AACjC,IAAA,OAAO8B,GAAG,GAAIC,IAAI,IAAI,CAAE;AAC5B,EAAA;AACJ;;AAEA;AACA;AACA;AACA;AACA,MAAMrB,mBAAmB,CACzB;EACI7F,WAAWA,CAACoG,OAAO,EACnB;IACI,IAAI,CAAC3B,MAAM,GAAG,EAAE;IAChB,IAAI,CAAC0C,OAAO,GAAG,CAAC;IAEhB,MAAMC,MAAM,GAAG,IAAI3T,KAAK,CAAC,EAAE,CAAC,CAACmS,IAAI,CAAC,CAAC,CAAC;AACpC,IAAA,KAAK,MAAMxI,MAAM,IAAIgJ,OAAO,EAC5B;AACI,MAAA,IAAIhJ,MAAM,GAAG,CAAC,IAAIA,MAAM,GAAG,EAAE,EAC7B;AACI,QAAA,MAAM,IAAIzF,KAAK,CAAC,uDAAuD,CAAC;AAC5E,MAAA;AACA,MAAA,IAAIyF,MAAM,EACV;QACIgK,MAAM,CAAChK,MAAM,CAAC,EAAE;AAChB,QAAA,IAAI,CAAC+J,OAAO,GAAGJ,IAAI,CAACM,GAAG,CAAC,IAAI,CAACF,OAAO,EAAE/J,MAAM,CAAC;AACjD,MAAA;AACJ,IAAA;IAEA,IAAIpD,IAAI,GAAG,CAAC;IACZ,MAAMsN,SAAS,GAAG,IAAI7T,KAAK,CAAC,EAAE,CAAC,CAACmS,IAAI,CAAC,CAAC,CAAC;IACvC,KAAK,IAAI2B,IAAI,GAAG,CAAC,EAAEA,IAAI,IAAI,EAAE,EAAEA,IAAI,EAAE,EACrC;MACIvN,IAAI,GAAIA,IAAI,GAAGoN,MAAM,CAACG,IAAI,GAAG,CAAC,CAAC,IAAK,CAAC;AACrCD,MAAAA,SAAS,CAACC,IAAI,CAAC,GAAGvN,IAAI;AAC1B,IAAA;AAEA,IAAA,KAAK,IAAIsL,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAGc,OAAO,CAAChJ,MAAM,EAAEkI,MAAM,EAAE,EACtD;AACI,MAAA,MAAMlI,MAAM,GAAGgJ,OAAO,CAACd,MAAM,CAAC;MAC9B,IAAI,CAAClI,MAAM,EACX;AACI,QAAA;AACJ,MAAA;MAEA,MAAMoK,QAAQ,GAAGC,WAAW,CAACH,SAAS,CAAClK,MAAM,CAAC,EAAEA,MAAM,CAAC;MACvDkK,SAAS,CAAClK,MAAM,CAAC,EAAE;AACnB,MAAA,IAAI,CAAC,IAAI,CAACqH,MAAM,CAACrH,MAAM,CAAC,EACxB;AACI,QAAA,IAAI,CAACqH,MAAM,CAACrH,MAAM,CAAC,GAAG,EAAE;AAC5B,MAAA;MACA,IAAI,CAACqH,MAAM,CAACrH,MAAM,CAAC,CAACoK,QAAQ,CAAC,GAAGlC,MAAM;AAC1C,IAAA;AACJ,EAAA;EAEAC,MAAMA,CAACrB,MAAM,EACb;IACI,IAAIlK,IAAI,GAAG,CAAC;AACZ,IAAA,KAAK,IAAIoD,MAAM,GAAG,CAAC,EAAEA,MAAM,IAAI,IAAI,CAAC+J,OAAO,EAAE/J,MAAM,EAAE,EACrD;MACIpD,IAAI,IAAIkK,MAAM,CAACI,QAAQ,CAAC,CAAC,CAAC,IAAKlH,MAAM,GAAG,CAAE;AAC1C,MAAA,MAAMsK,KAAK,GAAG,IAAI,CAACjD,MAAM,CAACrH,MAAM,CAAC;MACjC,IAAIsK,KAAK,IAAIA,KAAK,CAAC1N,IAAI,CAAC,KAAKjC,SAAS,EACtC;QACI,OAAO2P,KAAK,CAAC1N,IAAI,CAAC;AACtB,MAAA;AACJ,IAAA;AAEA,IAAA,MAAM,IAAIrC,KAAK,CAAC,gDAAgD,CAAC;AACrE,EAAA;AACJ;AAEA,SAAS8P,WAAWA,CAAC3H,KAAK,EAAE1C,MAAM,EAClC;EACI,IAAIoK,QAAQ,GAAG,CAAC;EAChB,KAAK,IAAI5F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;AACI4F,IAAAA,QAAQ,GAAIA,QAAQ,IAAI,CAAC,GAAK1H,KAAK,GAAG,CAAE;AACxCA,IAAAA,KAAK,MAAM,CAAC;AAChB,EAAA;AACA,EAAA,OAAO0H,QAAQ;AACnB;AAEA,SAAS1N,kBAAkBA,CAACrB,KAAK,EAAEC,QAAQ,EAAE5B,MAAM,EACnD;AACI,EAAA,MAAMmI,IAAI,GAAGpK,YAAY,CAAC0Q,MAAM,CAAC9M,KAAK,CAAC;EACvC,MAAMgB,KAAK,GAAG,EAAE;EAChB,MAAMkO,KAAK,GAAG,CAAE;AAAEpL,IAAAA,QAAQ,EAAE9C;AAAM,GAAC,CAAE;EACrC,IAAIuH,SAAS,GAAG,CAAC;EAEjB,KAAK,MAAM4G,OAAO,IAAI3I,IAAI,CAAC4I,KAAK,CAAC,QAAQ,CAAC,EAC1C;IACI,MAAMC,IAAI,GAAGC,iBAAiB,CAACH,OAAO,CAAC,CAACI,IAAI,EAAE;IAC9C,IAAI,CAACF,IAAI,EACT;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIA,IAAI,CAACnL,UAAU,CAAC,GAAG,CAAC,EACxB;AACI,MAAA,IAAIgL,KAAK,CAACvK,MAAM,GAAG,CAAC,EACpB;QACIuK,KAAK,CAACM,GAAG,EAAE;AACf,MAAA;AACA,MAAA;AACJ,IAAA;AAEA,IAAA,MAAM3L,IAAI,GAAG4L,cAAc,CAACJ,IAAI,EAAEhR,MAAM,CAAC;IACzC,IAAI,CAACwF,IAAI,EACT;AACI,MAAA;AACJ,IAAA;AAEAqL,IAAAA,KAAK,CAACA,KAAK,CAACvK,MAAM,GAAG,CAAC,CAAC,CAACb,QAAQ,CAACuC,IAAI,CAACxC,IAAI,CAAC;AAC3C0E,IAAAA,SAAS,EAAE;AACX,IAAA,IAAIA,SAAS,GAAGlK,MAAM,CAAC3C,QAAQ,EAC/B;MACI,MAAM,IAAIwD,KAAK,CAAC,CAAA,kCAAA,EAAqCb,MAAM,CAAC3C,QAAQ,GAAG,CAAC;AAC5E,IAAA;IACA,IAAImI,IAAI,CAAC6L,UAAU,EACnB;AACI,MAAA,IAAIR,KAAK,CAACvK,MAAM,IAAItG,MAAM,CAAC1C,QAAQ,EACnC;QACI,MAAM,IAAIuD,KAAK,CAAC,CAAA,kCAAA,EAAqCb,MAAM,CAAC1C,QAAQ,GAAG,CAAC;AAC5E,MAAA;MACA,OAAOkI,IAAI,CAAC6L,UAAU;AACtBR,MAAAA,KAAK,CAAC7I,IAAI,CAACxC,IAAI,CAAC;AACpB,IAAA,CAAC,MAED;MACI,OAAOA,IAAI,CAAC6L,UAAU;AAC1B,IAAA;AACJ,EAAA;AAEA,EAAA,MAAM9O,QAAQ,GAAG;AACb,IAAA,GAAGX,QAAQ;AACXE,IAAAA,WAAW,EAAEzF,eAAe;IAC5BsG,KAAK;IACLuH,SAAS;IACTxB,aAAa,EAAE/F,KAAK,CAAC2D,MAAM;IAC3BsC,aAAa,EAAEjG,KAAK,CAACyG,GAAG,CAAC5D,IAAI,IAAIA,IAAI,CAACI,IAAI;GAC7C;EACDrD,QAAQ,CAAC+H,IAAI,GAAGC,YAAY,CAAChI,QAAQ,CAACI,KAAK,CAAC;AAC5C,EAAA,OAAOJ,QAAQ;AACnB;AAEA,SAASY,qBAAqBA,CAACxB,KAAK,EAAEC,QAAQ,EAAE5B,MAAM,EAAEoE,WAAW,EACnE;EACI,MAAMzB,KAAK,GAAG,EAAE;AAChB,EAAA,MAAM6G,UAAU,GAAGC,uBAAuB,CAAC7H,QAAQ,CAAC2G,OAAO,CAAC;EAC5D,IAAImB,MAAM,GAAGhM,kBAAkB;EAC/B,IAAIwM,SAAS,GAAG,CAAC;AAEjB,EAAA,OAAOR,MAAM,GAAGF,UAAU,IAAI7H,KAAK,CAACF,UAAU,EAC9C;IACI,IAAIkI,YAAY,CAAChI,KAAK,EAAE+H,MAAM,EAAEF,UAAU,CAAC,EAC3C;AACI,MAAA;AACJ,IAAA;IAEA,MAAMI,MAAM,GAAGC,oBAAoB,CAAClI,KAAK,EAAE+H,MAAM,EAAE9H,QAAQ,CAAC2G,OAAO,CAAC;IACpE,IAAI,CAACqB,MAAM,EACX;AACI,MAAA,MAAM,IAAI/I,KAAK,CAAC,CAAA,wCAAA,EAA2C6I,MAAM,EAAE,CAAC;AACxE,IAAA;AACA,IAAA,IAAIE,MAAM,CAACE,SAAS,IAAIJ,MAAM,IAAIE,MAAM,CAACE,SAAS,GAAGnI,KAAK,CAACF,UAAU,EACrE;MACI,MAAM,IAAIZ,KAAK,CAAC,CAAA,uBAAA,EAA0B+I,MAAM,CAAChE,IAAI,EAAE,CAAC;AAC5D,IAAA;IAEA,IAAIxB,WAAW,CAACxE,GAAG,CAACgK,MAAM,CAAChE,IAAI,CAAC,EAChC;AACI,MAAA,MAAMuE,MAAM,GAAGC,cAAc,CAACzI,KAAK,EAAE+H,MAAM,EAAE9H,QAAQ,CAAC2G,OAAO,EAAEvI,MAAM,EAAE,CAAC,CAAC;AACzE2C,MAAAA,KAAK,CAACqF,IAAI,CAACmC,MAAM,CAAC3E,IAAI,CAAC;MACvB0E,SAAS,IAAIC,MAAM,CAACE,KAAK;AACzB,MAAA,IAAIH,SAAS,GAAGlK,MAAM,CAAC3C,QAAQ,EAC/B;QACI,MAAM,IAAIwD,KAAK,CAAC,CAAA,kCAAA,EAAqCb,MAAM,CAAC3C,QAAQ,GAAG,CAAC;AAC5E,MAAA;AACJ,IAAA;IAEAqM,MAAM,GAAGE,MAAM,CAACE,SAAS;AAC7B,EAAA;AAEA,EAAA,OAAOnH,KAAK;AAChB;AAEA,SAASS,oBAAoBA,CAACzB,KAAK,EAAE3B,MAAM,EAAEoE,WAAW,EACxD;AACI,EAAA,MAAM+D,IAAI,GAAGpK,YAAY,CAAC0Q,MAAM,CAAC9M,KAAK,CAAC;EACvC,MAAMgB,KAAK,GAAG,EAAE;EAChB,MAAMkO,KAAK,GAAG,CAAE;AAAEpL,IAAAA,QAAQ,EAAE9C,KAAK;AAAE2O,IAAAA,UAAU,EAAE;AAAK,GAAC,CAAE;EACvD,IAAIpH,SAAS,GAAG,CAAC;EAEjB,KAAK,MAAM4G,OAAO,IAAI3I,IAAI,CAAC4I,KAAK,CAAC,QAAQ,CAAC,EAC1C;IACI,MAAMC,IAAI,GAAGC,iBAAiB,CAACH,OAAO,CAAC,CAACI,IAAI,EAAE;IAC9C,IAAI,CAACF,IAAI,EACT;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIA,IAAI,CAACnL,UAAU,CAAC,GAAG,CAAC,EACxB;AACI,MAAA,IAAIgL,KAAK,CAACvK,MAAM,GAAG,CAAC,EACpB;QACIuK,KAAK,CAACM,GAAG,EAAE;AACf,MAAA;AACA,MAAA;AACJ,IAAA;AAEA,IAAA,MAAM3L,IAAI,GAAG4L,cAAc,CAACJ,IAAI,EAAEhR,MAAM,CAAC;IACzC,IAAI,CAACwF,IAAI,EACT;AACI,MAAA;AACJ,IAAA;AAEA0E,IAAAA,SAAS,EAAE;AACX,IAAA,IAAIA,SAAS,GAAGlK,MAAM,CAAC3C,QAAQ,EAC/B;MACI,MAAM,IAAIwD,KAAK,CAAC,CAAA,kCAAA,EAAqCb,MAAM,CAAC3C,QAAQ,GAAG,CAAC;AAC5E,IAAA;AAEA,IAAA,MAAMkU,MAAM,GAAGV,KAAK,CAACvK,MAAM,KAAK,CAAC;IACjC,MAAMkL,MAAM,GAAGX,KAAK,CAACA,KAAK,CAACvK,MAAM,GAAG,CAAC,CAAC;AACtC,IAAA,MAAMgL,UAAU,GAAGC,MAAM,GAAGnN,WAAW,CAACxE,GAAG,CAAC4F,IAAI,CAACI,IAAI,CAAC,GAAG4L,MAAM,CAACF,UAAU;AAE1E,IAAA,IAAIA,UAAU,EACd;AACIE,MAAAA,MAAM,CAAC/L,QAAQ,CAACuC,IAAI,CAACxC,IAAI,CAAC;AAC9B,IAAA;IAEA,IAAIA,IAAI,CAAC6L,UAAU,EACnB;AACI,MAAA,IAAIR,KAAK,CAACvK,MAAM,IAAItG,MAAM,CAAC1C,QAAQ,EACnC;QACI,MAAM,IAAIuD,KAAK,CAAC,CAAA,kCAAA,EAAqCb,MAAM,CAAC1C,QAAQ,GAAG,CAAC;AAC5E,MAAA;MACA,OAAOkI,IAAI,CAAC6L,UAAU;AACtBR,MAAAA,KAAK,CAAC7I,IAAI,CAACsJ,UAAU,GAAG;QAAE7L,QAAQ,EAAED,IAAI,CAACC,QAAQ;AAAE6L,QAAAA,UAAU,EAAE;AAAK,OAAC,GAAG;AAAE7L,QAAAA,QAAQ,EAAE,EAAE;AAAE6L,QAAAA,UAAU,EAAE;AAAM,OAAC,CAAC;AAChH,IAAA,CAAC,MAED;MACI,OAAO9L,IAAI,CAAC6L,UAAU;AAC1B,IAAA;AACJ,EAAA;AAEA,EAAA,OAAO1O,KAAK;AAChB;AAEA,SAASD,oBAAoBA,CAACC,KAAK,EAAE3C,MAAM,EAC3C;AACI,EAAA,MAAMsE,WAAW,GAAGC,aAAa,CAAC5B,KAAK,EAAE,SAAS,CAAC;EACnD,IAAI,CAAC2B,WAAW,EAChB;AACI,IAAA,MAAM,IAAIzD,KAAK,CAAC,0CAA0C,CAAC;AAC/D,EAAA;AAEA,EAAA,MACI2D,WAAW,GAAGC,gBAAgB,CAACH,WAAW,CAAC;IAC3CI,WAAW,GAAGC,eAAe,CAACJ,aAAa,CAAC5B,KAAK,EAAE,aAAa,CAAC,CAAC;IAClE8O,cAAc,GAAGC,mBAAmB,CAACnN,aAAa,CAAC5B,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC5EgP,IAAAA,eAAe,GAAG,IAAIC,GAAG,EAAE;IAC3BC,eAAe,GAAGC,oBAAoB,CAACtN,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,CAAC;AACjGI,IAAAA,MAAM,GAAG,EAAE;AAEf,EAAA,KAAK,MAAM/M,QAAQ,IAAIR,WAAW,CAACS,IAAI,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAK,UAAU,KAAK,CAACD,KAAK,CAACE,SAAS,IAAIF,KAAK,CAACE,SAAS,KAAK,MAAM,CAAC,CAAC,EAC1I;IACI,MAAM2M,MAAM,GAAGC,sBAAsB,CAACjN,QAAQ,EAAER,WAAW,EAAEE,WAAW,EAAE,OAAO,CAAC;AAClF,IAAA,KAAK,MAAMwN,KAAK,IAAIF,MAAM,CAAC1L,MAAM,GAAG0L,MAAM,GAAG,CAAE,IAAI,CAAE,EACrD;MACID,MAAM,CAAC/J,IAAI,CAACmK,wBAAwB,CAACnN,QAAQ,EAAEkN,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,EAAEE,eAAe,EAAE7R,MAAM,CAAC,CAAC;AAC9I,IAAA;AACJ,EAAA;AAEA,EAAA,IAAI,CAAC+R,MAAM,CAACzL,MAAM,EAClB;AACI,IAAA,MAAM,IAAIzF,KAAK,CAAC,6CAA6C,CAAC;AAClE,EAAA;EAEA,OAAO;AACHuR,IAAAA,wBAAwB,EAAE,CAAC;AAC3BC,IAAAA,gBAAgB,EAAErS,MAAM,CAAC/C,MAAM,IAAI,QAAQ;IAC3C8U,MAAM;IACNO,MAAM,EAAEC,cAAc,CAACV,eAAe,CAACW,SAAS,EAAET,MAAM,CAAC;AACzDS,IAAAA,SAAS,EAAEX,eAAe,CAACW,SAAS,CAACpJ,GAAG,CAACqJ,QAAQ,IAAIA,QAAQ,CAACC,WAAW,CAAC;AAC1EC,IAAAA,UAAU,EAAE,EAAE;IACdC,aAAa,EAAEC,iBAAiB,CAACrO,WAAW,EAAEE,WAAW,EAAEqN,MAAM,EAAEF,eAAe,EAAEJ,cAAc;GACrG;AACL;AAEA,SAASU,wBAAwBA,CAACnN,QAAQ,EAAEkN,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,EAAEE,eAAe,EAAE7R,MAAM,EACrI;EACI,MACI8S,aAAa,GAAGC,iBAAiB,CAAC/N,QAAQ,CAACQ,IAAI,EAAE,UAAU,CAAC;IAC5DwN,kBAAkB,GAAGD,iBAAiB,CAAC/N,QAAQ,CAACQ,IAAI,EAAE,oBAAoB,CAAC;AAE/E,EAAA,IAAIsN,aAAa,CAACxM,MAAM,GAAG,CAAC,KAAK,CAAC,EAClC;AACI,IAAA,MAAM,IAAIzF,KAAK,CAAC,CAAA,cAAA,EAAiBhB,IAAI,CAACC,SAAS,CAACkF,QAAQ,CAACY,IAAI,IAAIZ,QAAQ,CAACtF,GAAG,CAAC,8BAA8B,CAAC;AACjH,EAAA;EAEA,MACIuT,OAAO,GAAGC,oBAAoB,CAACJ,aAAa,EAAEE,kBAAkB,EAAEhO,QAAQ,CAAC;IAC3EmO,aAAa,GAAGC,wBAAwB,CAAClB,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAEiN,eAAe,CAAC;IAC1F0B,SAAS,GAAGC,eAAe,CAACL,OAAO,CAACI,SAAS,EAAEF,aAAa,EAAE1B,cAAc,CAAC;AAC7E8B,IAAAA,MAAM,GAAGC,mBAAmB,CAACC,uBAAuB,CAACzO,QAAQ,CAACQ,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAE,SAAS,CAAE,EAAE,CAAE,cAAc,EAAE,aAAa,CAAE,EAAE,CAAC,EAAEyN,OAAO,EAAE,SAAS,CAAC,EAAEE,aAAa,EAAE1B,cAAoB,CAAC;AAC3MiC,IAAAA,eAAe,GAAGF,mBAAmB,CAACC,uBAAuB,CAACzO,QAAQ,CAACQ,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAE,UAAU,CAAE,EAAE,CAAE,eAAe,EAAE,cAAc,CAAE,EAAE,CAAC,EAAEyN,OAAO,EAAE,UAAU,CAAC,EAAEE,aAAa,EAAE1B,cAAoB,CAAC;AACzNkC,IAAAA,gBAAgB,GAAGH,mBAAmB,CAACC,uBAAuB,CAACzO,QAAQ,CAACQ,IAAI,EAAE,sBAAsB,EAAE,CAAC,EAAE,CAAE,WAAW,CAAE,EAAE,CAAE,gBAAgB,EAAE,eAAe,CAAE,EAAE,CAAC,EAAEyN,OAAO,EAAE,WAAW,CAAC,EAAEE,aAAa,EAAE1B,cAAoB,CAAC;AAC/NmC,IAAAA,SAAS,GAAGC,yBAAyB,CAAC7O,QAAQ,CAACQ,IAAI,EAAE,CAAC,EAAEyN,OAAO,EAAEjT,MAAM,CAAC;AACxE8T,IAAAA,SAAS,GAAGD,yBAAyB,CAAC7O,QAAQ,CAACQ,IAAI,EAAE,CAAC,EAAEyN,OAAO,EAAEjT,MAAM,CAAC;AACxE+T,IAAAA,MAAM,GAAGN,uBAAuB,CAACzO,QAAQ,CAACQ,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAE,QAAQ,CAAE,EAAE,CAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAE,EAAE,CAAC,EAAEyN,OAAO,EAAE,QAAQ,CAAC;IAC5Je,gBAAgB,GAAGC,sBAAsB,CAAChB,OAAO,CAACiB,QAAQ,EAAEjB,OAAO,CAACI,SAAS,CAAC;AAC9Ec,IAAAA,aAAa,GAAGC,uBAAuB,CAACJ,gBAAgB,CAAC;AACzDK,IAAAA,OAAO,GAAGX,eAAe,CAACpN,MAAM,GAAGoN,eAAe,GAAGY,oBAAoB,CAACjB,SAAS,EAAEE,MAAM,EAAEK,SAAS,EAAEO,aAAa,CAAC;AACtHI,IAAAA,QAAQ,GAAGZ,gBAAgB,CAACrN,MAAM,GAAGqN,gBAAgB,GAAGa,qBAAqB,CAACjB,MAAM,EAAEc,OAAO,CAAC;AAC9FI,IAAAA,aAAa,GAAGC,wBAAwB,CAAC1P,QAAQ,EAAEkN,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAEuO,OAAO,CAACiB,QAAQ,CAAC5N,MAAM,CAAC;AAC5GqO,IAAAA,OAAO,GAAGC,gBAAgB,CAACZ,gBAAgB,EAAES,aAAa,CAAC;AAC3DlO,IAAAA,IAAI,GAAGsO,YAAY,CAAC7P,QAAQ,EAAER,WAAW,EAAEE,WAAW,EAAEuO,OAAO,EAAEI,SAAS,EAAE5B,cAAc,EAAEE,eAAe,EAAEE,eAAe,CAAC;IAC7HiD,YAAY,GAAGC,gBAAgB,CAC3B/P,QAAQ,EACRkN,KAAK,EACL1N,WAAW,EACXE,WAAW,EACXuO,OAAO,EACPH,aAAa,EACbK,aAAa,EACb1B,cAAc,EACd4B,SAAS,EACTc,aAAa,EACb;MAAEZ,MAAM;MAAEc,OAAO;MAAEE,QAAQ;AAAEX,MAAAA;AAAU,KAC3C,CAAC;AACDoB,IAAAA,MAAM,GAAGC,aAAa,CAAC5B,SAAS,CAAC;EAErC,OAAO;AACHzN,IAAAA,IAAI,EAAEsP,eAAe,CAAClQ,QAAQ,EAAEkN,KAAK,CAAC;IACtC4C,YAAY;IACZK,SAAS,EAAEH,MAAM,CAACG,SAAS;IAC3BC,SAAS,EAAEJ,MAAM,CAACI,SAAS;IAC3BC,YAAY,EAAE9O,IAAI,CAAC8O,YAAY;AAC/BC,IAAAA,MAAM,EAAEC,eAAe,CAAClC,SAAS,EAAE;MAAEgB,OAAO;MAAEd,MAAM;MAAEK,SAAS;MAAEE,SAAS;MAAES,QAAQ;MAAER,MAAM;MAAEyB,WAAW,EAAEjP,IAAI,CAACiP,WAAW;MAAEC,WAAW,EAAElP,IAAI,CAACkP;AAAY,KAAC,CAAC;IAC7Jd,OAAO;IACPlC,QAAQ,EAAElM,IAAI,CAACkM;GAClB;AACL;AAEA,SAASoC,YAAYA,CAAC7P,QAAQ,EAAER,WAAW,EAAEE,WAAW,EAAEuO,OAAO,EAAEI,SAAS,EAAE5B,cAAc,EAAEE,eAAe,EAAEE,eAAe,EAC9H;AACI,EAAA,MAAMtL,IAAI,GAAGH,qBAAqB,CAACpB,QAAQ,EAAER,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,CAC7EgR,IAAI,CAACrP,cAAc,CAAC;EAEzB,IAAI,CAACE,IAAI,EACT;IACI,OAAOoP,aAAa,EAAE;AAC1B,EAAA;AAEA,EAAA,MAAMnP,QAAQ,GAAGJ,qBAAqB,CAACG,IAAI,EAAE/B,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,CAC7EQ,MAAM,CAACuB,iBAAiB,CAAC;EAE9B,MAAMmP,cAAc,GAAG1O,uBAAuB,CAACV,QAAQ,EAAEhC,WAAW,EAAEE,WAAW,CAAC;AAClF,EAAA,IAAI,CAACkR,cAAc,CAACtP,MAAM,EAC1B;IACI,OAAOqP,aAAa,EAAE;AAC1B,EAAA;EAEA,MACIE,QAAQ,GAAGD,cAAc,CAACxM,GAAG,CAAC0M,MAAM,IAAIA,MAAM,CAACC,OAAO,CAAC;AACvD1O,IAAAA,sBAAsB,GAAGC,2BAA2B,CAACsO,cAAc,CAAC;IACpEI,gBAAgB,GAAG/C,OAAO,CAACgD,OAAO,CAAC7M,GAAG,CAAC8M,MAAM,IAAIC,mBAAmB,CAAC9O,sBAAsB,CAAC+O,GAAG,CAACF,MAAM,CAACG,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACjIb,IAAAA,WAAW,GAAG,EAAE;AAChBC,IAAAA,WAAW,GAAG,EAAE;AAChBJ,IAAAA,YAAY,GAAGiB,+BAA+B,CAACV,cAAc,EAAEI,gBAAgB,EAAE3C,SAAS,EAAE7O,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,CAAC;AACtJc,IAAAA,QAAQ,GAAG8D,qBAAqB,CAACV,QAAQ,EAAEhE,eAAe,CAAC;AAE/D,EAAA,KAAK,MAAMtK,UAAU,IAAIyO,gBAAgB,EACzC;IACI,KAAK,IAAIlL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;MACI0K,WAAW,CAACxN,IAAI,CAACT,UAAU,CAACuD,CAAC,CAAC,EAAE0L,SAAS,IAAI,CAAC,CAAC;AACnD,IAAA;IACA,KAAK,IAAI1L,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;MACI2K,WAAW,CAACzN,IAAI,CAACT,UAAU,CAACuD,CAAC,CAAC,EAAErD,MAAM,IAAI,CAAC,CAAC;AAChD,IAAA;AACJ,EAAA;EAEA,OAAO;IAAE4N,YAAY;IAAEG,WAAW;IAAEC,WAAW;IAAEI,QAAQ;AAAEpD,IAAAA;GAAU;AACzE;AAEA,SAASkD,aAAaA,GACtB;EACI,OAAO;AAAEN,IAAAA,YAAY,EAAE,EAAE;AAAEG,IAAAA,WAAW,EAAE,EAAE;AAAEC,IAAAA,WAAW,EAAE,EAAE;AAAEI,IAAAA,QAAQ,EAAE,EAAE;AAAEpD,IAAAA,QAAQ,EAAE;GAAM;AAC/F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS6B,oBAAoBA,CAACjB,SAAS,EAAEE,MAAM,EAAEK,SAAS,EAAEO,aAAa,EACzE;EACI,IAAI,CAACsC,cAAc,CAAClD,MAAM,CAAC,IAAI,CAACkD,cAAc,CAAC7C,SAAS,CAAC,EACzD;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AACA,EAAA,OAAO8C,iBAAiB,CAACC,gBAAgB,CAACtD,SAAS,EAAEE,MAAM,EAAEK,SAAS,EAAEO,aAAa,CAAC,CAAC;AAC3F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,qBAAqBA,CAACjB,MAAM,EAAEc,OAAO,EAC9C;EACI,IAAI,CAACoC,cAAc,CAAClD,MAAM,CAAC,IAAI,CAACkD,cAAc,CAACpC,OAAO,CAAC,EACvD;AACI,IAAA,OAAO,EAAE;AACb,EAAA;EACA,OAAOqC,iBAAiB,CAACE,iBAAiB,CAACrD,MAAM,EAAEc,OAAO,CAAC,CAAC;AAChE;AAEA,SAASU,gBAAgBA,CAAC/P,QAAQ,EAAEkN,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAEuO,OAAO,EAAEH,aAAa,EAAEK,aAAa,EAAE1B,cAAc,EAAEoF,aAAa,EAAE1C,aAAa,EAAE2C,UAAU,EACpK;AACI,EAAA,MAAMC,WAAW,GAAG3Q,qBAAqB,CAACpB,QAAQ,EAAER,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,CACpFQ,MAAM,CAAC8R,QAAQ,IAAIA,QAAQ,CAAC3R,SAAS,KAAK,YAAY,IAAI2R,QAAQ,CAAC7P,QAAQ,CAACtB,UAAU,CAAC,sBAAsB,CAAC,IAAImR,QAAQ,CAACpR,IAAI,CAAChF,QAAQ,CAAC,YAAY,CAAC,CAAC;EAE5J,MAAMqW,OAAO,GAAG,EAAE;AAClB,EAAA,KAAK,MAAMC,UAAU,IAAIH,WAAW,EACpC;AACI,IAAA,MAAMrP,QAAQ,GAAGtB,qBAAqB,CAAC8Q,UAAU,EAAE1S,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,CACnFQ,MAAM,CAAC8R,QAAQ,IAAIA,QAAQ,CAAC3R,SAAS,KAAK,mBAAmB,IAAI2R,QAAQ,CAAC7P,QAAQ,CAACtB,UAAU,CAAC,eAAe,CAAC,IAAImR,QAAQ,CAACpR,IAAI,CAAChF,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAEnK,IAAA,KAAK,MAAMgH,OAAO,IAAIF,QAAQ,EAC9B;MACI,MAAMG,MAAM,GAAGC,2BAA2B,CAACF,OAAO,EAAEpD,WAAW,EAAEE,WAAW,CAAC;AAC7E,MAAA,IAAIqD,gCAAgC,CAACH,OAAO,EAAEC,MAAM,CAAC,EACrD;AACI,QAAA;AACJ,MAAA;AAEA,MAAA,KAAK,MAAMsP,KAAK,IAAItP,MAAM,EAC1B;QACI,MAAMuP,MAAM,GAAGC,gBAAgB,CAACF,KAAK,EAAEvP,OAAO,EAAE5C,QAAQ,EAAEkN,KAAK,EAAEe,OAAO,EAAEH,aAAa,EAAEK,aAAa,EAAE1B,cAAc,EAAEoF,aAAa,EAAE1C,aAAa,EAAE2C,UAAU,CAAC;AACjK,QAAA,IAAIM,MAAM,EACV;AACIH,UAAAA,OAAO,CAACjP,IAAI,CAACoP,MAAM,CAAC;AACxB,QAAA;AACJ,MAAA;AACJ,IAAA;AACJ,EAAA;AACA,EAAA,OAAOH,OAAO;AAClB;AAEA,SAASI,gBAAgBA,CAACF,KAAK,EAAEvP,OAAO,EAAE5C,QAAQ,EAAEkN,KAAK,EAAEe,OAAO,EAAEH,aAAa,EAAEK,aAAa,EAAE1B,cAAc,EAAEoF,aAAa,EAAE1C,aAAa,EAAE2C,UAAU,EAC1J;EACI,MACIjQ,OAAO,GAAGC,cAAc,CAACqQ,KAAK,CAAC3R,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;IACrD8R,QAAQ,GAAGxQ,cAAc,CAACqQ,KAAK,CAAC3R,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE;EAE3D,IAAI,CAACqB,OAAO,CAACP,MAAM,IAAI,CAACgR,QAAQ,CAAChR,MAAM,EACvC;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AACA,EAAA,IAAIgR,QAAQ,CAAChR,MAAM,GAAG,CAAC,KAAK,CAAC,EAC7B;AACI,IAAA,MAAM,IAAIzF,KAAK,CAAC,CAAA,kBAAA,EAAqBhB,IAAI,CAACC,SAAS,CAACqX,KAAK,CAACvR,IAAI,IAAIuR,KAAK,CAACzX,GAAG,CAAC,8BAA8B,CAAC;AAC/G,EAAA;EACA,IAAI4X,QAAQ,CAAChR,MAAM,GAAG,CAAC,GAAGO,OAAO,CAACP,MAAM,EACxC;AACI,IAAA,MAAM,IAAIzF,KAAK,CAAC,CAAA,kBAAA,EAAqBhB,IAAI,CAACC,SAAS,CAACqX,KAAK,CAACvR,IAAI,IAAIuR,KAAK,CAACzX,GAAG,CAAC,kCAAkC,CAAC;AACnH,EAAA;AAEA,EAAA,MAAM6X,sBAAsB,GAAGzE,aAAa,CAACtD,KAAK,EAAE;AACpD,EAAA,KAAK,IAAI1E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjE,OAAO,CAACP,MAAM,EAAEwE,CAAC,EAAE,EACvC;IACI,MACIuL,iBAAiB,GAAGmB,aAAa,CAAC3Q,OAAO,CAACiE,CAAC,CAAC,EAAE,SAAS,CAAC;MACxD2M,YAAY,GAAG3M,CAAC,GAAG,CAAC;MACpB4M,aAAa,GAAGrB,iBAAiB,GAAG,CAAC;IAEzC,IAAIqB,aAAa,GAAG,CAAC,IAAIA,aAAa,GAAG,CAAC,IAAIH,sBAAsB,CAACjR,MAAM,EAC3E;AACI,MAAA,MAAM,IAAIzF,KAAK,CAAC,CAAA,kBAAA,EAAqBhB,IAAI,CAACC,SAAS,CAACqX,KAAK,CAACvR,IAAI,IAAIuR,KAAK,CAACzX,GAAG,CAAC,iCAAiC,CAAC;AAClH,IAAA;IAEA6X,sBAAsB,CAACG,aAAa,CAAC,GAAGC,YAAY,CAAC7E,aAAa,CAAC4E,aAAa,CAAC,EAAE,UAAU,CAAC,GAAGC,YAAY,CAACL,QAAQ,CAACG,YAAY,CAAC,EAAE,UAAU,CAAC;AACjJF,IAAAA,sBAAsB,CAACG,aAAa,GAAG,CAAC,CAAC,GAAGC,YAAY,CAAC7E,aAAa,CAAC4E,aAAa,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAGC,YAAY,CAACL,QAAQ,CAACG,YAAY,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;AAC7JF,IAAAA,sBAAsB,CAACG,aAAa,GAAG,CAAC,CAAC,GAAGC,YAAY,CAAC7E,aAAa,CAAC4E,aAAa,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAGC,YAAY,CAACL,QAAQ,CAACG,YAAY,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;AACjK,EAAA;EAEA,MAAMrL,QAAQ,GAAG,EAAE;AACnB,EAAA,KAAK,MAAM8J,MAAM,IAAIjD,OAAO,CAACgD,OAAO,EACpC;AACI,IAAA,MAAMhZ,MAAM,GAAGiZ,MAAM,CAACG,iBAAiB,GAAG,CAAC;IAC3CjK,QAAQ,CAACpE,IAAI,CACTuP,sBAAsB,CAACta,MAAM,CAAC,EAC9Bsa,sBAAsB,CAACta,MAAM,GAAG,CAAC,CAAC,EAClCsa,sBAAsB,CAACta,MAAM,GAAG,CAAC,CACrC,CAAC;AACL,EAAA;EAEA,MACIoW,SAAS,GAAGC,eAAe,CAAClH,QAAQ,EAAE+G,aAAa,EAAE1B,cAAc,CAAC;IACpE7L,IAAI,GAAGuR,KAAK,CAACvR,IAAI,IAAIgC,OAAO,CAAChC,IAAI,IAAI,cAAc;IACnDgS,cAAc,GAAGC,8BAA8B,CAACjS,IAAI,EAAEZ,QAAQ,EAAEkN,KAAK,EAAEe,OAAO,EAAEE,aAAa,EAAE1B,cAAc,EAAE4B,SAAS,EAAEc,aAAa,EAAE2C,UAAU,CAAC;EAExJ,OAAO;IACHlR,IAAI;AACJkS,IAAAA,YAAY,EAAE,KAAK;AACnBC,IAAAA,eAAe,EAAEC,sBAAsB,CAACnB,aAAa,EAAExD,SAAS,CAAC;AACjEiC,IAAAA,MAAM,EAAEC,eAAe,CAAClC,SAAS,EAAEuE,cAAc;GACpD;AACL;AAEA,SAASC,8BAA8BA,CAACjS,IAAI,EAAEZ,QAAQ,EAAEkN,KAAK,EAAEe,OAAO,EAAEE,aAAa,EAAE1B,cAAc,EAAE4B,SAAS,EAAEc,aAAa,EAAE2C,UAAU,EAC3I;AACI,EAAA,IAAIvD,MAAM,GAAG0E,4BAA4B,CAACrS,IAAI,EAAEZ,QAAQ,EAAEkN,KAAK,EAAEe,OAAO,EAAEE,aAAa,EAAE1B,cAAc,CAAC;EACxG,IAAI,CAAC8B,MAAM,CAACjN,MAAM,IAAImQ,cAAc,CAACK,UAAU,CAACvD,MAAM,CAAC,EACvD;IACIA,MAAM,GAAGmD,iBAAiB,CAACwB,eAAe,CAAC7E,SAAS,EAAEc,aAAa,CAAC,CAAC;AACzE,EAAA;AAEA,EAAA,MAAME,OAAO,GAAGd,MAAM,CAACjN,MAAM,IAAImQ,cAAc,CAACK,UAAU,CAACzC,OAAO,CAAC,IAAIoC,cAAc,CAACK,UAAU,CAAClD,SAAS,CAAC,GACrG8C,iBAAiB,CAACC,gBAAgB,CAACtD,SAAS,EAAEE,MAAM,EAAEuD,UAAU,CAAClD,SAAS,EAAEO,aAAa,CAAC,CAAC,GAC3F,EAAE;EACR,MAAMI,QAAQ,GAAGhB,MAAM,CAACjN,MAAM,IAAI+N,OAAO,CAAC/N,MAAM,IAAImQ,cAAc,CAACK,UAAU,CAACvC,QAAQ,CAAC,GACjFmC,iBAAiB,CAACE,iBAAiB,CAACrD,MAAM,EAAEc,OAAO,CAAC,CAAC,GACrD,EAAE;EAER,OAAO;IAAEd,MAAM;IAAEc,OAAO;AAAEE,IAAAA;GAAU;AACxC;AAEA,SAAS0D,4BAA4BA,CAACrS,IAAI,EAAEZ,QAAQ,EAAEkN,KAAK,EAAEe,OAAO,EAAEE,aAAa,EAAE1B,cAAc,EACnG;EACI,MAAM0G,OAAO,GAAGC,iCAAiC,CAACxS,IAAI,EAAEsM,KAAK,EAAElN,QAAQ,CAAC;EACxE,IAAI,CAACmT,OAAO,EACZ;AACI,IAAA,OAAO,EAAE;AACb,EAAA;EAEA,OAAO3E,mBAAmB,CACtB6E,+BAA+B,CAACF,OAAO,EAAElF,OAAO,CAACgD,OAAO,CAAC3P,MAAM,EAAE,CAAA,4BAAA,EAA+BzG,IAAI,CAACC,SAAS,CAAC8F,IAAI,CAAC,CAAA,CAAE,CAAC,EACvHuN,aAAa,EACb1B,cAEJ,CAAC;AACL;AAEA,SAAS2G,iCAAiCA,CAACxS,IAAI,EAAEsM,KAAK,EAAElN,QAAQ,EAChE;AACI,EAAA,MAAMsT,YAAY,GAAG,CAAA,UAAA,EAAa1S,IAAI,CAAA,CAAE;EACxC,KAAK,MAAMT,KAAK,IAAI,CAAE+M,KAAK,EAAElN,QAAQ,CAAE,EACvC;AACI,IAAA,MAAMgE,KAAK,GAAGuP,gBAAgB,CAACpT,KAAK,EAAEK,IAAI,CAAC,CAACoF,UAAU,CAAC0N,YAAY,CAAC,EAAEtP,KAAK;AAC3E,IAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAC7B;AACI,MAAA,OAAOA,KAAK;AAChB,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,EAAE;AACb;AAEA,SAASqP,+BAA+BA,CAACF,OAAO,EAAEK,WAAW,EAAEC,OAAO,EACtE;AACI,EAAA,MACI9W,KAAK,GAAG+W,iBAAiB,CAACP,OAAO,EAAEM,OAAO,CAAC;AAC3CvM,IAAAA,kBAAkB,GAAGsM,WAAW,GAAG,CAAC,GAAG,CAAC;AAE5C,EAAA,IAAI7W,KAAK,CAACF,UAAU,KAAKyK,kBAAkB,EAC3C;AACI,IAAA,MAAM,IAAIrL,KAAK,CAAC,CAAA,KAAA,EAAQ4X,OAAO,CAAA,aAAA,EAAgB9W,KAAK,CAACF,UAAU,CAAA,yBAAA,EAA4ByK,kBAAkB,CAAA,CAAE,CAAC;AACpH,EAAA;AAEA,EAAA,MACIyM,IAAI,GAAG,IAAIC,QAAQ,CAACjX,KAAK,CAACJ,MAAM,EAAEI,KAAK,CAACH,UAAU,EAAEG,KAAK,CAACF,UAAU,CAAC;AACrEzB,IAAAA,MAAM,GAAG,EAAE;AAEf,EAAA,KAAK,IAAI0J,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAG/H,KAAK,CAACF,UAAU,EAAEiI,MAAM,IAAI,CAAC,EAC3D;AACI1J,IAAAA,MAAM,CAACgI,IAAI,CAAC2P,YAAY,CAACgB,IAAI,CAACE,UAAU,CAACnP,MAAM,EAAE,IAAI,CAAC,EAAE+O,OAAO,CAAC,CAAC;AACrE,EAAA;AACA,EAAA,OAAOzY,MAAM;AACjB;AAEA,SAAS0Y,iBAAiBA,CAACP,OAAO,EAAEM,OAAO,EAC3C;EACI,MAAM9W,KAAK,GAAG,EAAE;EAChB,IAAIJ,MAAM,GAAG,CAAC;AAAEkP,IAAAA,IAAI,GAAG,CAAC;AAExB,EAAA,KAAK,MAAMqI,IAAI,IAAI7Y,MAAM,CAACkY,OAAO,CAAC,EAClC;AACI,IAAA,IAAI,KAAK,CAACY,IAAI,CAACD,IAAI,CAAC,EACpB;AACI,MAAA;AACJ,IAAA;IACA,IAAIA,IAAI,KAAK,GAAG,EAChB;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAM9P,KAAK,GAAGlL,eAAe,CAACkb,OAAO,CAACF,IAAI,CAAC;AAC3C,IAAA,IAAI9P,KAAK,KAAK,EAAE,EAChB;AACI,MAAA,MAAM,IAAInI,KAAK,CAAC,CAAA,KAAA,EAAQ4X,OAAO,+BAA+B,CAAC;AACnE,IAAA;AAEAlX,IAAAA,MAAM,GAAIA,MAAM,IAAI,CAAC,GAAIyH,KAAK;AAC9ByH,IAAAA,IAAI,IAAI,CAAC;IACT,IAAIA,IAAI,IAAI,CAAC,EACb;AACIA,MAAAA,IAAI,IAAI,CAAC;MACT9O,KAAK,CAACqG,IAAI,CAAEzG,MAAM,IAAIkP,IAAI,GAAI,IAAI,CAAC;AACvC,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOrP,UAAU,CAACxE,IAAI,CAAC+E,KAAK,CAAC;AACjC;AAEA,SAASqW,sBAAsBA,CAACnB,aAAa,EAAEoC,eAAe,EAC9D;EACI,IAAIlB,eAAe,GAAG,CAAC;EACvB,KAAK,IAAIjN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmF,IAAI,CAACC,GAAG,CAAC2G,aAAa,CAACvQ,MAAM,EAAE2S,eAAe,CAAC3S,MAAM,CAAC,EAAEwE,CAAC,IAAI,CAAC,EAClF;IACIiN,eAAe,GAAG9H,IAAI,CAACM,GAAG,CAACwH,eAAe,EAAE9H,IAAI,CAACiJ,KAAK,CAClDD,eAAe,CAACnO,CAAC,CAAC,GAAG+L,aAAa,CAAC/L,CAAC,CAAC,EACrCmO,eAAe,CAACnO,CAAC,GAAG,CAAC,CAAC,GAAG+L,aAAa,CAAC/L,CAAC,GAAG,CAAC,CAAC,EAC7CmO,eAAe,CAACnO,CAAC,GAAG,CAAC,CAAC,GAAG+L,aAAa,CAAC/L,CAAC,GAAG,CAAC,CAChD,CAAC,CAAC;AACN,EAAA;EACA,OAAOqO,UAAU,CAACpB,eAAe,CAAC;AACtC;AAEA,SAASlF,iBAAiBA,CAACrO,WAAW,EAAEE,WAAW,EAAEqN,MAAM,EAAEF,eAAe,EAAEJ,cAAc,EAC5F;AACI,EAAA,MACI2H,gBAAgB,GAAGC,uBAAuB,CAACtH,MAAM,CAAC;AAClDuH,IAAAA,WAAW,GAAGC,qBAAqB,CAAC1H,eAAe,CAAC;EAExD,MAAMc,UAAU,GAAG,EAAE;AACrB,EAAA,KAAK,MAAM9B,KAAK,IAAIrM,WAAW,CAACS,IAAI,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAK,gBAAgB,CAAC,EACzF;AACI,IAAA,MAAMoU,SAAS,GAAGC,gBAAgB,CAAC5I,KAAK,EAAErM,WAAW,EAAEE,WAAW,EAAE0U,gBAAgB,EAAEE,WAAW,EAAE7H,cAAc,CAAC;AAClH,IAAA,IAAI+H,SAAS,EACb;AACI7G,MAAAA,UAAU,CAAC3K,IAAI,CAACwR,SAAS,CAAC;AAC9B,IAAA;AACJ,EAAA;AACA,EAAA,OAAO7G,UAAU;AACrB;AAEA,SAAS0G,uBAAuBA,CAACtH,MAAM,EACvC;AACI,EAAA,MAAM2H,KAAK,GAAG,IAAI7c,GAAG,EAAE;AACvB,EAAA,KAAK,MAAM8c,IAAI,IAAI5H,MAAM,EACzB;IACI,KAAK,MAAMqF,MAAM,IAAIuC,IAAI,CAAC7E,YAAY,IAAI,EAAE,EAC5C;MACI,IAAIsC,MAAM,CAACxR,IAAI,EACf;AACI8T,QAAAA,KAAK,CAACE,GAAG,CAACxC,MAAM,CAACxR,IAAI,CAAC;AAC1B,MAAA;AACJ,IAAA;AACJ,EAAA;AACA,EAAA,OAAO8T,KAAK;AAChB;AAEA,SAASH,qBAAqBA,CAAC1H,eAAe,EAC9C;AACI,EAAA,MAAMoF,OAAO,GAAG,IAAIrF,GAAG,EAAE;AACzB,EAAA,KAAK,MAAMa,QAAQ,IAAIZ,eAAe,CAACW,SAAS,EAChD;AACI,IAAA,KAAK,IAAI1H,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2H,QAAQ,CAACoD,QAAQ,CAACvP,MAAM,EAAEwE,CAAC,EAAE,EACjD;MACImM,OAAO,CAAC4C,GAAG,CAACpH,QAAQ,CAACoD,QAAQ,CAAC/K,CAAC,CAAC,EAAE;AAC9BlF,QAAAA,IAAI,EAAE6M,QAAQ,CAACC,WAAW,CAACoH,KAAK,CAAChP,CAAC,CAAC,IAAI,CAAA,KAAA,EAAQA,CAAC,CAAA,CAAE;QAClDyG,MAAM,EAAEkB,QAAQ,CAACC,WAAW,CAACqH,OAAO,CAACjP,CAAC,CAAC,KAAK;AAChD,OAAC,CAAC;AACN,IAAA;AACJ,EAAA;AACA,EAAA,OAAOmM,OAAO;AAClB;AAEA,SAASwC,gBAAgBA,CAAC5I,KAAK,EAAErM,WAAW,EAAEE,WAAW,EAAE0U,gBAAgB,EAAEE,WAAW,EAAE7H,cAAc,EACxG;EACI,MACIuI,MAAM,GAAG5T,qBAAqB,CAACyK,KAAK,EAAErM,WAAW,EAAEE,WAAW,EAAE,gBAAgB,CAAC;IACjFuV,gBAAgB,GAAGD,MAAM,CAAC1T,MAAM,GAAG0T,MAAM,GAAG,CAAEnJ,KAAK,CAAE;IACrDqJ,UAAU,GAAGC,aAAa,CAACF,gBAAgB,CAACG,OAAO,CAAC5I,MAAM,IAAIpL,qBAAqB,CAACoL,MAAM,EAAEhN,WAAW,EAAEE,WAAW,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC7I0C,IAAAA,OAAO,GAAG,EAAE;AAEhB,EAAA,KAAK,MAAMiT,SAAS,IAAIH,UAAU,EAClC;AACI9S,IAAAA,OAAO,CAACY,IAAI,CAAC,GAAGsS,yBAAyB,CAACD,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE0U,gBAAgB,CAAC,CAAC;AACjGhS,IAAAA,OAAO,CAACY,IAAI,CAAC,GAAGuS,qCAAqC,CAACF,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE0U,gBAAgB,EAAEE,WAAW,CAAC,CAAC;AAE1H,IAAA,MAAMkB,UAAU,GAAGC,uBAAuB,CAACJ,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE4U,WAAW,EAAE7H,cAAc,CAAC;AAC5G,IAAA,IAAI+I,UAAU,EACd;AACIpT,MAAAA,OAAO,CAACY,IAAI,CAACwS,UAAU,CAAC;AAC5B,IAAA;AACJ,EAAA;AAEA,EAAA,IAAI,CAACpT,OAAO,CAACd,MAAM,EACnB;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AAEA,EAAA,MAAMoU,aAAa,GAAGC,0BAA0B,CAAC9J,KAAK,EAAEzJ,OAAO,CAAC;EAEhE,MACIM,QAAQ,GAAG,EAAE;AACbkT,IAAAA,MAAM,GAAG,EAAE;EACf,IAAIC,QAAQ,GAAG,CAAC;AAEhB,EAAA,KAAK,MAAM/E,MAAM,IAAI1O,OAAO,EAC5B;IACI,MACI0T,KAAK,GAAGhF,MAAM,CAACiF,KAAK,CAACC,KAAK,CAAC5R,GAAG,CAAC6R,IAAI,IAAI9B,UAAU,CAAC,CAAC8B,IAAI,GAAGP,aAAa,CAACQ,SAAS,IAAItc,oBAAoB,CAAC,CAAC;MAC3GoB,MAAM,GAAG8V,MAAM,CAACiF,KAAK,CAAC/a,MAAM,CAACoJ,GAAG,CAAC+P,UAAU,CAAC;MAC5CgC,UAAU,GAAGP,MAAM,CAACtU,MAAM;IAE9B,IAAItG,MAAM,CAACsG,MAAM,KAAKwU,KAAK,CAACxU,MAAM,GAAGwP,MAAM,CAACsF,cAAc,EAC1D;AACI,MAAA,MAAM,IAAIva,KAAK,CAAC,CAAA,yBAAA,EAA4BhB,IAAI,CAACC,SAAS,CAACgW,MAAM,CAACsB,MAAM,CAAC,iCAAiC,CAAC;AAC/G,IAAA;AAEA,IAAA,KAAK,MAAMiE,IAAI,IAAIP,KAAK,EACxB;MACID,QAAQ,GAAG5K,IAAI,CAACM,GAAG,CAACsK,QAAQ,EAAEQ,IAAI,CAAC;AACvC,IAAA;IACAT,MAAM,CAAC5S,IAAI,CAAC;MACRoT,cAAc,EAAEtF,MAAM,CAACsF,cAAc;AACrCE,MAAAA,aAAa,EAAE,QAAQ;AACvBC,MAAAA,QAAQ,EAAE,SAAS;AACnBC,MAAAA,SAAS,EAAE,SAAS;MACpBC,SAAS,EAAEX,KAAK,CAACxU,MAAM;AACvBwU,MAAAA,KAAK,EAAEY,iBAAiB,CAACZ,KAAK,CAAC;MAC/B9a,MAAM,EAAE0b,iBAAiB,CAAC1b,MAAM;AACpC,KAAC,CAAC;IACF0H,QAAQ,CAACM,IAAI,CAAC;MACVoP,MAAM,EAAEtB,MAAM,CAACsB,MAAM;MACrBuE,UAAU,EAAE7F,MAAM,CAAC6F,UAAU;AAC7BR,MAAAA;AACJ,KAAC,CAAC;AACN,EAAA;EAEA,OAAO;AACHvV,IAAAA,IAAI,EAAEiL,KAAK,CAACjL,IAAI,IAAI,eAAe;IACnC8B,QAAQ;IACRkT,MAAM;AACNC,IAAAA,QAAQ,EAAE1B,UAAU,CAACuB,aAAa,CAACG,QAAQ,IAAIA,QAAQ;GAC1D;AACL;AAEA,SAASF,0BAA0BA,CAAC9J,KAAK,EAAEzJ,OAAO,EAClD;EACI,MACIwD,UAAU,GAAG2N,gBAAgB,CAAC1H,KAAK,CAACrL,IAAI,CAAC,CAACoF,UAAU;AACpDgR,IAAAA,KAAK,GAAGC,cAAc,CAACjR,UAAU,EAAE,YAAY,EAAEiR,cAAc,CAACjR,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACpGkR,IAAAA,IAAI,GAAGD,cAAc,CAACjR,UAAU,EAAE,WAAW,EAAEiR,cAAc,CAACjR,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;EAErG,IAAIgR,KAAK,KAAK,IAAI,IAAIE,IAAI,KAAK,IAAI,IAAIA,IAAI,IAAIF,KAAK,EACpD;IACI,OAAO;AACHV,MAAAA,SAAS,EAAEU,KAAK;AAChBf,MAAAA,QAAQ,EAAE,CAACiB,IAAI,GAAGF,KAAK,IAAIhd;KAC9B;AACL,EAAA;EAEA,IAAIsc,SAAS,GAAGa,QAAQ;AACxB,EAAA,KAAK,MAAMjG,MAAM,IAAI1O,OAAO,EAC5B;IACI,KAAK,MAAM6T,IAAI,IAAInF,MAAM,CAACiF,KAAK,CAACC,KAAK,EACrC;MACIE,SAAS,GAAGjL,IAAI,CAACC,GAAG,CAACgL,SAAS,EAAED,IAAI,CAAC;AACzC,IAAA;AACJ,EAAA;EACA,OAAO;IACHC,SAAS;AACTL,IAAAA,QAAQ,EAAE;GACb;AACL;AAEA,SAASP,yBAAyBA,CAACD,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE0U,gBAAgB,EACxF;EACI,MACInC,OAAO,GAAG+E,yBAAyB,CAAC3B,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE0U,gBAAgB,CAAC;IAC1F2B,KAAK,GAAGkB,uBAAuB,CAAC5B,SAAS,EAAE7V,WAAW,EAAEE,WAAW,CAAC;AAExE,EAAA,IAAI,CAACuS,OAAO,CAAC3Q,MAAM,IAAI,CAACyU,KAAK,EAC7B;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AAEA,EAAA,OAAO9D,OAAO,CAAC7N,GAAG,CAACgO,MAAM,KAAK;IAC1BA,MAAM;AACNuE,IAAAA,UAAU,EAAE,aAAa;AACzBP,IAAAA,cAAc,EAAE,CAAC;AACjBL,IAAAA;AACJ,GAAC,CAAC,CAAC;AACP;AAEA,SAASR,qCAAqCA,CAACF,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE0U,gBAAgB,EAAEE,WAAW,EACjH;AACI,EAAA,MAAM4C,gBAAgB,GAAGxX,WAAW,CAACO,IAAI,CAACyQ,IAAI,CAACyG,UAAU,IACrDA,UAAU,CAACC,QAAQ,KAAK,IAAI,IAC5BD,UAAU,CAACE,QAAQ,KAAKhC,SAAS,CAAC3a,GAAG,IACrC,CAAC4c,uBAAuB,CAACH,UAAU,CAACI,QAAQ,CAAC,IAC7CjD,WAAW,CAAClD,GAAG,CAAC+F,UAAU,CAACK,SAAS,CAAC,EAAEjL,MAAM,IAC7CkL,WAAW,CAACjY,WAAW,CAACkY,IAAI,CAACP,UAAU,CAACK,SAAS,CAAC,CAAC,IACnDG,4BAA4B,CAACnY,WAAW,CAACkY,IAAI,CAACP,UAAU,CAACK,SAAS,CAAC,EAAEL,UAAU,CAACI,QAAQ,CAC5F,CAAC;EAED,IAAI,CAACL,gBAAgB,EACrB;AACI,IAAA,OAAO,EAAE;AACb,EAAA;EAEA,MAAM9E,MAAM,GAAGnX,MAAM,CAACic,gBAAgB,CAACK,QAAQ,IAAI,EAAE,CAAC;AACtD,EAAA,IAAI,CAACnF,MAAM,IAAKgC,gBAAgB,CAACwD,IAAI,IAAI,CAACxD,gBAAgB,CAACxZ,GAAG,CAACwX,MAAM,CAAE,EACvE;AACI,IAAA,OAAO,EAAE;AACb,EAAA;EAEA,MAAM2D,KAAK,GAAG8B,2BAA2B,CAACxC,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE,CAAC,CAAC;EACjF,OAAOqW,KAAK,GACN,CAAE;IACA3D,MAAM;AACNuE,IAAAA,UAAU,EAAE,aAAa;AACzBP,IAAAA,cAAc,EAAE,CAAC;AACjBL,IAAAA;GACH,CAAE,GACD,EAAE;AACZ;AAEA,SAASiB,yBAAyBA,CAAC3B,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE0U,gBAAgB,EACxF;EACI,MAAMnC,OAAO,GAAG,EAAE;AAClB,EAAA,KAAK,MAAMkF,UAAU,IAAIzX,WAAW,CAACO,IAAI,EACzC;IACI,IAAIkX,UAAU,CAACC,QAAQ,KAAK,IAAI,IAAID,UAAU,CAACE,QAAQ,KAAKhC,SAAS,CAAC3a,GAAG,IAAI,CAACod,wBAAwB,CAACX,UAAU,CAACI,QAAQ,CAAC,EAC3H;AACI,MAAA;AACJ,IAAA;IAEA,MAAMnF,MAAM,GAAG5S,WAAW,CAACkY,IAAI,CAACP,UAAU,CAACK,SAAS,CAAC;AACrD,IAAA,IAAI,CAAC7U,mBAAmB,CAACyP,MAAM,CAAC,EAChC;AACI,MAAA;AACJ,IAAA;IAEA,KAAK,MAAMxR,IAAI,IAAImX,+BAA+B,CAAC3F,MAAM,EAAE5S,WAAW,EAAEE,WAAW,CAAC,EACpF;MACI,IAAI,CAAC0U,gBAAgB,CAACwD,IAAI,IAAIxD,gBAAgB,CAACxZ,GAAG,CAACgG,IAAI,CAAC,EACxD;AACIqR,QAAAA,OAAO,CAACjP,IAAI,CAACpC,IAAI,CAAC;AACtB,MAAA;AACJ,IAAA;AACJ,EAAA;EACA,OAAOjJ,KAAK,CAACC,IAAI,CAAC,IAAIC,GAAG,CAACoa,OAAO,CAAC,CAAC;AACvC;AAEA,SAAS8F,+BAA+BA,CAACnV,OAAO,EAAEpD,WAAW,EAAEE,WAAW,EAC1E;EACI,MAAMmD,MAAM,GAAGC,2BAA2B,CAACF,OAAO,EAAEpD,WAAW,EAAEE,WAAW,CAAC;AAC7E,EAAA,IAAIqD,gCAAgC,CAACH,OAAO,EAAEC,MAAM,CAAC,EACrD;AACI,IAAA,OAAO,EAAE;AACb,EAAA;EAEA,MAAM6R,KAAK,GAAG7R,MAAM,CACfuB,GAAG,CAAC+N,KAAK,IAAIA,KAAK,CAACvR,IAAI,IAAIgC,OAAO,CAAChC,IAAI,CAAC,CACxCV,MAAM,CAAC8X,OAAO,CAAC;AAEpB,EAAA,OAAOtD,KAAK,CAACpT,MAAM,GAAGoT,KAAK,GAAG,CAAE9R,OAAO,CAAChC,IAAI,IAAI,cAAc,CAAE;AACpE;AAEA,SAASkC,2BAA2BA,CAACF,OAAO,EAAEpD,WAAW,EAAEE,WAAW,EACtE;AACI,EAAA,OAAO0B,qBAAqB,CAACwB,OAAO,EAAEpD,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,CACtEQ,MAAM,CAACiS,KAAK,IAAIA,KAAK,CAAC9R,SAAS,KAAK,OAAO,IAAI8R,KAAK,CAAChQ,QAAQ,CAACtB,UAAU,CAAC,iBAAiB,CAAC,IAAIsR,KAAK,CAACvR,IAAI,CAAC;AACnH;AAEA,SAASqX,gCAAgCA,CAACrV,OAAO,EACjD;EACI,OAAOd,cAAc,CAACc,OAAO,CAACpC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE;AAC5D;AAEA,SAASuC,gCAAgCA,CAACH,OAAO,EAAEC,MAAM,EACzD;AACI;AACA,EAAA,OAAOA,MAAM,CAACvB,MAAM,GAAG,CAAC,IAAI2W,gCAAgC,CAACrV,OAAO,CAAC,CAACtB,MAAM,GAAG,CAAC;AACpF;AAEA,SAAS2V,uBAAuBA,CAAC5B,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EACpE;EACI,OAAOmY,2BAA2B,CAACxC,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE,IAAI,EAAEoY,wBAAwB,CAAC;AAC3G;AAEA,SAASD,2BAA2BA,CAACxC,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAEwY,KAAK,EAAEC,SAAS,GAAG,IAAI,EACjG;EACI,MAAMvC,MAAM,GAAGlW,WAAW,CAACO,IAAI,CAC1BC,MAAM,CAACiX,UAAU,IAAIA,UAAU,CAACK,SAAS,KAAKnC,SAAS,CAAC3a,GAAG,CAAC,CAC5D0J,GAAG,CAAC+S,UAAU,KAAK;IAAEA,UAAU;AAAEpB,IAAAA,KAAK,EAAEvW,WAAW,CAACkY,IAAI,CAACP,UAAU,CAACE,QAAQ;AAAE,GAAC,CAAC,CAAC,CACjFnX,MAAM,CAACkY,IAAI,IAAIA,IAAI,CAACrC,KAAK,EAAE3V,QAAQ,KAAK,gBAAgB,CAAC;EAE9D,MAAMiY,KAAK,GAAGF,SAAS,GACjBvC,MAAM,CAAClF,IAAI,CAAC0H,IAAI,IAAID,SAAS,CAACC,IAAI,CAACjB,UAAU,CAACI,QAAQ,CAAC,CAAC,IAAI3B,MAAM,CAAC,CAAC,CAAC,GACrEA,MAAM,CAAClF,IAAI,CAAC0H,IAAI,IAAIE,kBAAkB,CAACF,IAAI,CAACjB,UAAU,CAACI,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI3B,MAAM,CAAC,CAAC,CAAC;EAC1F,OAAOyC,KAAK,GAAGE,wBAAwB,CAACF,KAAK,CAACtC,KAAK,EAAEmC,KAAK,CAAC,GAAG,IAAI;AACtE;AAEA,SAASK,wBAAwBA,CAACxC,KAAK,EAAEmC,KAAK,EAC9C;EACI,MACIlC,KAAK,GAAGlU,cAAc,CAACiU,KAAK,CAACvV,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;IACnDgY,aAAa,GAAG1W,cAAc,CAACiU,KAAK,CAACvV,IAAI,EAAE,eAAe,CAAC;IAC3DiY,QAAQ,GAAG3W,cAAc,CAACiU,KAAK,CAACvV,IAAI,EAAE,UAAU,CAAC;IACjDkY,YAAY,GAAGjH,cAAc,CAAC+G,aAAa,CAAC,GAAG,eAAe,GAAG,UAAU;AAC3Exd,IAAAA,MAAM,GAAGyW,cAAc,CAAC+G,aAAa,CAAC,GAAGA,aAAa,GAAG/G,cAAc,CAACgH,QAAQ,CAAC,GAAGA,QAAQ,GAAG,EAAE;EAErG,IAAI,CAACzC,KAAK,CAAC1U,MAAM,IAAI,CAACtG,MAAM,CAACsG,MAAM,EACnC;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AACA,EAAA,IAAI0U,KAAK,CAAC1U,MAAM,KAAKtG,MAAM,CAACsG,MAAM,EAClC;AACI,IAAA,MAAM,IAAIzF,KAAK,CAAC,wBAAwBhB,IAAI,CAACC,SAAS,CAACib,KAAK,CAACnV,IAAI,IAAImV,KAAK,CAACrb,GAAG,CAAC,CAAA,4BAAA,EAA+Bge,YAAY,UAAU,CAAC;AACzI,EAAA;EAEA,MAAMC,KAAK,GAAG3C,KAAK,CAAC5R,GAAG,CAAC,CAAC6R,IAAI,EAAE2C,KAAK,MAAM;AACtC3C,IAAAA,IAAI,EAAEtD,YAAY,CAACsD,IAAI,EAAE,SAAS,CAAC;IACnCjS,KAAK,EAAE2O,YAAY,CAAC3X,MAAM,CAAC4d,KAAK,CAAC,EAAEF,YAAY,CAAC,GAAGR;AACvD,GAAC,CAAC,CAAC,CAACW,IAAI,CAAC,CAACpO,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACwL,IAAI,GAAGvL,CAAC,CAACuL,IAAI,CAAC;EAEnC,OAAO;IACHD,KAAK,EAAE2C,KAAK,CAACvU,GAAG,CAAC0U,IAAI,IAAIA,IAAI,CAAC7C,IAAI,CAAC;IACnCjb,MAAM,EAAE2d,KAAK,CAACvU,GAAG,CAAC0U,IAAI,IAAIA,IAAI,CAAC9U,KAAK;GACvC;AACL;AAEA,SAASyR,uBAAuBA,CAACJ,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE4U,WAAW,EAAE7H,cAAc,EACjG;EACI,MAAMyK,gBAAgB,GAAGxX,WAAW,CAACO,IAAI,CAACyQ,IAAI,CAACyG,UAAU,IACrDA,UAAU,CAACC,QAAQ,KAAK,IAAI,IAC5BD,UAAU,CAACE,QAAQ,KAAKhC,SAAS,CAAC3a,GAAG,IACrC4c,uBAAuB,CAACH,UAAU,CAACI,QAAQ,CAAC,IAC5CjD,WAAW,CAAC1Z,GAAG,CAACuc,UAAU,CAACK,SAAS,CAAC,IACrCC,WAAW,CAACjY,WAAW,CAACkY,IAAI,CAACP,UAAU,CAACK,SAAS,CAAC,CACtD,CAAC;EAED,IAAI,CAACN,gBAAgB,EACrB;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,MACIvV,IAAI,GAAGnC,WAAW,CAACkY,IAAI,CAACR,gBAAgB,CAACM,SAAS,CAAC;IACnDpF,MAAM,GAAGkC,WAAW,CAAClD,GAAG,CAACzP,IAAI,CAACjH,GAAG,CAAC;IAClCkL,UAAU,GAAG2N,gBAAgB,CAAC5R,IAAI,CAACnB,IAAI,CAAC,CAACoF,UAAU;AACnD2R,IAAAA,QAAQ,GAAGwB,8BAA8B,CAAC7B,gBAAgB,CAACK,QAAQ,CAAC;EAExE,IAAI,CAACA,QAAQ,EACb;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,MAAMyB,WAAW,GAAGC,wBAAwB,CACxC5D,SAAS,EACT7V,WAAW,EACXE,WAAW,EACXwZ,0BAA0B,CAAC7D,SAAS,EAAE8D,qBAAqB,CAACvT,UAAU,EAAE2R,QAAQ,CAAC,CACrF,CAAC;EACD,IAAI,CAACyB,WAAW,EAChB;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,IAAIzB,QAAQ,KAAK,UAAU,EAC3B;IACI,OAAO;MACHnF,MAAM,EAAEA,MAAM,CAACxR,IAAI;AACnB+V,MAAAA,UAAU,EAAE,cAAc;AAC1BP,MAAAA,cAAc,EAAE,CAAC;AACjBL,MAAAA,KAAK,EAAE;QACHC,KAAK,EAAEgD,WAAW,CAAChD,KAAK;QACxBhb,MAAM,EAAEoe,sBAAsB,CAACJ,WAAW,CAAChe,MAAM,EAAEyR,cAAc,EAAE2F,MAAM,CAAC7F,MAAM;AACpF;KACH;AACL,EAAA;EAEA,IAAIgL,QAAQ,KAAK,UAAU,EAC3B;IACI,OAAO;MACHnF,MAAM,EAAEA,MAAM,CAACxR,IAAI;AACnB+V,MAAAA,UAAU,EAAE,cAAc;AAC1BP,MAAAA,cAAc,EAAE,CAAC;AACjBL,MAAAA,KAAK,EAAE;QACHC,KAAK,EAAEgD,WAAW,CAAChD,KAAK;AACxBhb,QAAAA,MAAM,EAAEqe,sBAAsB,CAAC1X,IAAI,EAAEqX,WAAW,CAAChe,MAAM,EAAEyR,cAAc,EAAE2F,MAAM,CAAC7F,MAAM;AAC1F;KACH;AACL,EAAA;EAEA,OAAO;IACH6F,MAAM,EAAEA,MAAM,CAACxR,IAAI;AACnB+V,IAAAA,UAAU,EAAE,WAAW;AACvBP,IAAAA,cAAc,EAAE,CAAC;AACjBL,IAAAA,KAAK,EAAE;MACHC,KAAK,EAAEgD,WAAW,CAAChD,KAAK;AACxBhb,MAAAA,MAAM,EAAEge,WAAW,CAAChe,MAAM,CAACoJ,GAAG,CAAC+P,UAAU;AAC7C;GACH;AACL;AAEA,SAASmD,uBAAuBA,CAACC,QAAQ,EACzC;AACI,EAAA,OAAO,CAAC,CAACwB,8BAA8B,CAACxB,QAAQ,CAAC;AACrD;AAEA,SAASwB,8BAA8BA,CAACxB,QAAQ,EAChD;AACI,EAAA,MAAMpU,IAAI,GAAGlI,MAAM,CAACsc,QAAQ,IAAI,EAAE,CAAC,CAACrc,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAACC,WAAW,EAAE;EACtE,IAAIgI,IAAI,CAACvH,QAAQ,CAAC,aAAa,CAAC,IAAIuH,IAAI,KAAK,GAAG,EAChD;AACI,IAAA,OAAO,UAAU;AACrB,EAAA;EACA,IAAIA,IAAI,CAACvH,QAAQ,CAAC,UAAU,CAAC,IAAIuH,IAAI,KAAK,GAAG,EAC7C;AACI,IAAA,OAAO,UAAU;AACrB,EAAA;AACA,EAAA,IAAIA,IAAI,CAACvH,QAAQ,CAAC,SAAS,CAAC,IAAIuH,IAAI,CAACvH,QAAQ,CAAC,OAAO,CAAC,IAAIuH,IAAI,KAAK,GAAG,EACtE;AACI,IAAA,OAAO,OAAO;AAClB,EAAA;AACA,EAAA,OAAO,EAAE;AACb;AAEA,SAASgW,qBAAqBA,CAACvT,UAAU,EAAE2R,QAAQ,EACnD;EACI,IAAIA,QAAQ,KAAK,UAAU,EAC3B;AACI,IAAA,OAAO+B,eAAe,CAAC1T,UAAU,EAAE,iBAAiB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AACtE,EAAA;EACA,IAAI2R,QAAQ,KAAK,UAAU,EAC3B;AACI,IAAA,OAAO+B,eAAe,CAAC1T,UAAU,EAAE,cAAc,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AACnE,EAAA;AACA,EAAA,OAAO0T,eAAe,CAAC1T,UAAU,EAAE,aAAa,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AAClE;AAEA,SAASsT,0BAA0BA,CAAC7D,SAAS,EAAEkE,QAAQ,EACvD;EACI,MACI3T,UAAU,GAAG2N,gBAAgB,CAAC8B,SAAS,CAAC7U,IAAI,CAAC,CAACoF,UAAU;AACxD4T,IAAAA,IAAI,GAAG,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE;EAElC,OAAOA,IAAI,CAACpV,GAAG,CAAC,CAACqV,IAAI,EAAEb,KAAK,KAAK/B,cAAc,CAACjR,UAAU,EAAE6T,IAAI,EAAEF,QAAQ,CAACX,KAAK,CAAC,CAAC,CAAC;AACvF;AAEA,SAASK,wBAAwBA,CAAC5D,SAAS,EAAE7V,WAAW,EAAEE,WAAW,EAAE6Z,QAAQ,EAC/E;EACI,MAAMG,UAAU,GAAG,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAE;AACvC,EAAA,KAAK,MAAMvC,UAAU,IAAIzX,WAAW,CAACO,IAAI,CAACC,MAAM,CAACkY,IAAI,IAAIA,IAAI,CAACZ,SAAS,KAAKnC,SAAS,CAAC3a,GAAG,CAAC,EAC1F;IACI,MACIqb,KAAK,GAAGvW,WAAW,CAACkY,IAAI,CAACP,UAAU,CAACE,QAAQ,CAAC;AAC7CoC,MAAAA,IAAI,GAAGnB,kBAAkB,CAACnB,UAAU,CAACI,QAAQ,CAAC,IAAIe,kBAAkB,CAACvC,KAAK,EAAEnV,IAAI,CAAC;IAErF,IAAImV,KAAK,EAAE3V,QAAQ,KAAK,gBAAgB,IAAIqZ,IAAI,KAAK,IAAI,EACzD;AACI,MAAA;AACJ,IAAA;IACAC,UAAU,CAACD,IAAI,CAAC,GAAGlB,wBAAwB,CAACxC,KAAK,EAAE,CAAC,CAAC;AACzD,EAAA;EAEA,IAAI2D,UAAU,CAACC,KAAK,CAACC,SAAS,IAAI,CAACA,SAAS,CAAC,EAC7C;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AAEA,EAAA,MAAM5D,KAAK,GAAG6D,iBAAiB,CAACH,UAAU,CAAC;EAC3C,MAAM1e,MAAM,GAAG,EAAE;AACjB,EAAA,KAAK,MAAMib,IAAI,IAAID,KAAK,EACxB;IACI,KAAK,IAAIyD,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EACnC;AACIze,MAAAA,MAAM,CAACgI,IAAI,CAAC8W,0BAA0B,CAACJ,UAAU,CAACD,IAAI,CAAC,EAAExD,IAAI,EAAEsD,QAAQ,CAACE,IAAI,CAAC,CAAC,CAAC;AACnF,IAAA;AACJ,EAAA;EACA,OAAO;IAAEzD,KAAK;AAAEhb,IAAAA;GAAQ;AAC5B;AAEA,SAASsd,kBAAkBA,CAACf,QAAQ,EACpC;AACI,EAAA,MAAMpU,IAAI,GAAGlI,MAAM,CAACsc,QAAQ,IAAI,EAAE,CAAC,CAACrL,IAAI,EAAE,CAAC/Q,WAAW,EAAE;AACxD,EAAA,IAAI,cAAc,CAAC4Y,IAAI,CAAC5Q,IAAI,CAAC,EAC7B;AACI,IAAA,OAAO,CAAC;AACZ,EAAA;AACA,EAAA,IAAI,cAAc,CAAC4Q,IAAI,CAAC5Q,IAAI,CAAC,EAC7B;AACI,IAAA,OAAO,CAAC;AACZ,EAAA;AACA,EAAA,IAAI,cAAc,CAAC4Q,IAAI,CAAC5Q,IAAI,CAAC,EAC7B;AACI,IAAA,OAAO,CAAC;AACZ,EAAA;AACA,EAAA,OAAO,IAAI;AACf;AAEA,SAAS0W,iBAAiBA,CAACH,UAAU,EACrC;AACI,EAAA,MAAM1D,KAAK,GAAG,IAAIne,GAAG,EAAE;AACvB,EAAA,KAAK,MAAM+hB,SAAS,IAAIF,UAAU,EAClC;IACI,KAAK,MAAMzD,IAAI,IAAI2D,SAAS,EAAE5D,KAAK,IAAI,EAAE,EACzC;AACIA,MAAAA,KAAK,CAACpB,GAAG,CAACqB,IAAI,CAAC;AACnB,IAAA;AACJ,EAAA;AACA,EAAA,OAAOte,KAAK,CAACC,IAAI,CAACoe,KAAK,CAAC,CAAC6C,IAAI,CAAC,CAACpO,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;AAClD;AAEA,SAASoP,0BAA0BA,CAAC/D,KAAK,EAAEE,IAAI,EAAEsD,QAAQ,EACzD;EACI,IAAI,CAACxD,KAAK,EACV;AACI,IAAA,OAAOwD,QAAQ;AACnB,EAAA;EAEA,MAAM;IAAEvD,KAAK;AAAEhb,IAAAA;AAAO,GAAC,GAAG+a,KAAK;AAC/B,EAAA,IAAIE,IAAI,IAAID,KAAK,CAAC,CAAC,CAAC,EACpB;IACI,OAAOhb,MAAM,CAAC,CAAC,CAAC;AACpB,EAAA;EACA,IAAIib,IAAI,IAAID,KAAK,CAACA,KAAK,CAAC1U,MAAM,GAAG,CAAC,CAAC,EACnC;AACI,IAAA,OAAOtG,MAAM,CAACA,MAAM,CAACsG,MAAM,GAAG,CAAC,CAAC;AACpC,EAAA;AAEA,EAAA,KAAK,IAAIwE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkQ,KAAK,CAAC1U,MAAM,EAAEwE,CAAC,EAAE,EACrC;AACI,IAAA,IAAImQ,IAAI,GAAGD,KAAK,CAAClQ,CAAC,CAAC,EACnB;AACI,MAAA;AACJ,IAAA;AACA,IAAA,IAAImQ,IAAI,KAAKD,KAAK,CAAClQ,CAAC,CAAC,EACrB;MACI,OAAO9K,MAAM,CAAC8K,CAAC,CAAC;AACpB,IAAA;IAEA,MAAMiU,MAAM,GAAG,CAAC9D,IAAI,GAAGD,KAAK,CAAClQ,CAAC,GAAG,CAAC,CAAC,KAAKkQ,KAAK,CAAClQ,CAAC,CAAC,GAAGkQ,KAAK,CAAClQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC9K,MAAM,CAAC8K,CAAC,CAAC,GAAG9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,IAAIiU,MAAM;AAC/D,EAAA;AACA,EAAA,OAAOR,QAAQ;AACnB;AAEA,SAASH,sBAAsBA,CAACpe,MAAM,EAAEyR,cAAc,EAAEF,MAAM,EAC9D;EACI,MAAMlI,MAAM,GAAG,EAAE;AACjB,EAAA,KAAK,IAAIyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9K,MAAM,CAACsG,MAAM,EAAEwE,CAAC,IAAI,CAAC,EACzC;AACI,IAAA,MAAMkU,QAAQ,GAAGzN,MAAM,GACjB0N,mBAAmB,CAAC,CAAEjf,MAAM,CAAC8K,CAAC,CAAC,EAAE9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,EAAE9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE2G,cAAc,CAAC,GAChF,CAAEzR,MAAM,CAAC8K,CAAC,CAAC,GAAG2G,cAAc,CAACyL,KAAK,EAAEld,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,GAAG2G,cAAc,CAACyL,KAAK,EAAEld,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,GAAG2G,cAAc,CAACyL,KAAK,CAAE;IACtH7T,MAAM,CAACrB,IAAI,CAAC,GAAGkX,YAAY,CAACF,QAAQ,CAAC,CAAC;AAC1C,EAAA;AACA,EAAA,OAAO3V,MAAM;AACjB;AAEA,SAASgV,sBAAsBA,CAAC1X,IAAI,EAAE3G,MAAM,EAAEyR,cAAc,EAAEF,MAAM,EACpE;EACI,MACI3G,UAAU,GAAG2N,gBAAgB,CAAC5R,IAAI,CAACnB,IAAI,CAAC,CAACoF,UAAU;AACnDvB,IAAAA,MAAM,GAAG,EAAE;AAEf,EAAA,KAAK,IAAIyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9K,MAAM,CAACsG,MAAM,EAAEwE,CAAC,IAAI,CAAC,EACzC;AACI,IAAA,MACIqU,MAAM,GAAGC,qBAAqB,CAACxU,UAAU,EAAE;AACvCyU,QAAAA,WAAW,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;QACxBC,QAAQ,EAAE,CAAEtf,MAAM,CAAC8K,CAAC,CAAC,EAAE9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,EAAE9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,CAAE;AACrDoS,QAAAA,KAAK,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,OAAC,CAAC;MACFqC,WAAW,GAAGhO,MAAM,GAAGiO,oBAAoB,CAACL,MAAM,EAAE1N,cAAc,CAAC,GAAG0N,MAAM;AAC5EG,MAAAA,QAAQ,GAAGG,gBAAgB,CAACF,WAAW,CAAC,CAACD,QAAQ;AAErDjW,IAAAA,MAAM,CAACrB,IAAI,CAAC,GAAGsX,QAAQ,CAAC;AAC5B,EAAA;AACA,EAAA,OAAOjW,MAAM;AACjB;AAEA,SAAS1B,mBAAmBA,CAACxC,KAAK,EAClC;AACI,EAAA,OAAO,CAAC,CAACA,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAK,UAAU,KAC3CD,KAAK,CAACE,SAAS,KAAK,mBAAmB,IACvCF,KAAK,CAACgC,QAAQ,CAACtB,UAAU,CAAC,eAAe,CAAC,IAC1CV,KAAK,CAACS,IAAI,CAAChF,QAAQ,CAAC,mBAAmB,CAAC,CAC3C;AACL;AAEA,SAASkc,wBAAwBA,CAACP,QAAQ,EAC1C;AACI,EAAA,OAAOtc,MAAM,CAACsc,QAAQ,IAAI,EAAE,CAAC,CAACpc,WAAW,EAAE,CAACS,QAAQ,CAAC,eAAe,CAAC;AACzE;AAEA,SAAS+b,4BAA4BA,CAACxX,KAAK,EAAEoX,QAAQ,EACrD;AACI,EAAA,IAAI,CAACpX,KAAK,IAAI,CAACoX,QAAQ,EACvB;AACI,IAAA,OAAO,KAAK;AAChB,EAAA;AAEA,EAAA,MAAMmD,UAAU,GAAGnH,gBAAgB,CAACpT,KAAK,CAACK,IAAI,CAAC,CAACoF,UAAU,CAAC2R,QAAQ,CAAC;AACpE,EAAA,IAAI,CAACmD,UAAU,IAAI,CAACzf,MAAM,CAACyf,UAAU,CAACC,KAAK,IAAI,EAAE,CAAC,CAAC/e,QAAQ,CAAC,GAAG,CAAC,EAChE;AACI,IAAA,OAAO,KAAK;AAChB,EAAA;AACA,EAAA,OAAO,OAAO8e,UAAU,CAAC1W,KAAK,KAAK,QAAQ;AAC/C;AAEA,SAASmR,aAAaA,CAAC7Q,OAAO,EAC9B;AACI,EAAA,MACIsW,IAAI,GAAG,IAAI/iB,GAAG,EAAE;AAChBgjB,IAAAA,MAAM,GAAG,EAAE;AAEf,EAAA,KAAK,MAAM1a,KAAK,IAAImE,OAAO,EAC3B;IACI,IAAI,CAACnE,KAAK,IAAIya,IAAI,CAAChgB,GAAG,CAACuF,KAAK,CAACzF,GAAG,CAAC,EACjC;AACI,MAAA;AACJ,IAAA;AACAkgB,IAAAA,IAAI,CAAChG,GAAG,CAACzU,KAAK,CAACzF,GAAG,CAAC;AACnBmgB,IAAAA,MAAM,CAAC7X,IAAI,CAAC7C,KAAK,CAAC;AACtB,EAAA;AACA,EAAA,OAAO0a,MAAM;AACjB;AAEA,SAASnE,iBAAiBA,CAAC1b,MAAM,EACjC;EACI,MACI2B,KAAK,GAAG,IAAIP,UAAU,CAACpB,MAAM,CAACsG,MAAM,GAAG,CAAC,CAAC;AACzCqS,IAAAA,IAAI,GAAG,IAAIC,QAAQ,CAACjX,KAAK,CAACJ,MAAM,CAAC;EAErCvB,MAAM,CAAC8f,OAAO,CAAC,CAAC9W,KAAK,EAAE4U,KAAK,KAAKjF,IAAI,CAACoH,UAAU,CAACnC,KAAK,GAAG,CAAC,EAAE5U,KAAK,EAAE,IAAI,CAAC,CAAC;AACzE,EAAA,OAAOrM,KAAK,CAACC,IAAI,CAAC+E,KAAK,CAAC;AAC5B;AAEA,SAASuF,uBAAuBA,CAACV,QAAQ,EAAEhC,WAAW,EAAEE,WAAW,EACnE;EACI,MAAM0C,OAAO,GAAG,EAAE;AAClB,EAAA,KAAK,MAAMV,OAAO,IAAIF,QAAQ,EAC9B;IACI,MACIG,IAAI,GAAGC,WAAW,CAACF,OAAO,EAAElC,WAAW,EAAEE,WAAW,CAAC;MACrDmC,OAAO,GAAGC,cAAc,CAACJ,OAAO,CAAClB,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;MACvDuB,OAAO,GAAGD,cAAc,CAACJ,OAAO,CAAClB,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;AAE3D,IAAA,IAAI,CAACmB,IAAI,IAAI,CAACE,OAAO,CAACP,MAAM,IAAI,CAACU,wBAAwB,CAACH,OAAO,EAAEE,OAAO,CAAC,EAC3E;AACI,MAAA;AACJ,IAAA;IAEAK,OAAO,CAACY,IAAI,CAAC;MACTtB,OAAO;MACPC,IAAI;MACJoP,OAAO,EAAEpP,IAAI,CAACjH,GAAG;AACjBsgB,MAAAA,QAAQ,EAAErZ,IAAI,CAACf,IAAI,IAAIc,OAAO,CAACd,IAAI,IAAI,CAAA,KAAA,EAAQwB,OAAO,CAACd,MAAM,CAAA,CAAE;MAC/DO,OAAO;AACPE,MAAAA;AACJ,KAAC,CAAC;AACN,EAAA;AACA,EAAA,OAAOK,OAAO;AAClB;AAEA,SAASJ,wBAAwBA,CAACH,OAAO,EAAEE,OAAO,EAClD;AACI,EAAA,KAAK,IAAI+D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjE,OAAO,CAACP,MAAM,EAAEwE,CAAC,EAAE,EACvC;AACI,IAAA,IAAI6M,YAAY,CAAC5Q,OAAO,CAAC+D,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAChD;AACI,MAAA,OAAO,IAAI;AACf,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,KAAK;AAChB;AAEA,SAASxD,2BAA2BA,CAACF,OAAO,EAC5C;AACI,EAAA,MAAMC,sBAAsB,GAAG,IAAIuK,GAAG,EAAE;AAExCxK,EAAAA,OAAO,CAAC0Y,OAAO,CAAC,CAAChK,MAAM,EAAEU,SAAS,KAClC;AACI,IAAA,MACI3P,OAAO,GAAGiP,MAAM,CAACjP,OAAO;MACxBE,OAAO,GAAG+O,MAAM,CAAC/O,OAAO;AAE5B,IAAA,KAAK,IAAI+D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjE,OAAO,CAACP,MAAM,EAAEwE,CAAC,EAAE,EACvC;MACI,MACIuL,iBAAiB,GAAGmB,aAAa,CAAC3Q,OAAO,CAACiE,CAAC,CAAC,EAAE,SAAS,CAAC;AACxDrD,QAAAA,MAAM,GAAGwI,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEoH,YAAY,CAAC5Q,OAAO,CAAC+D,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9D7F,IAAI,GAAGoC,sBAAsB,CAAC+O,GAAG,CAACC,iBAAiB,CAAC,IAAI,EAAE;MAE9D,IAAI5O,MAAM,IAAI,CAAC,EACf;AACI,QAAA;AACJ,MAAA;MAEAxC,IAAI,CAAC+C,IAAI,CAAC;QAAEwO,SAAS;QAAET,OAAO,EAAED,MAAM,CAACC,OAAO;QAAEiK,QAAQ,EAAElK,MAAM,CAACkK,QAAQ;AAAEvY,QAAAA;AAAO,OAAC,CAAC;AACpFJ,MAAAA,sBAAsB,CAACwS,GAAG,CAACxD,iBAAiB,EAAEpR,IAAI,CAAC;AACvD,IAAA;AACJ,EAAA,CAAC,CAAC;AAEF,EAAA,OAAOoC,sBAAsB;AACjC;AAEA,SAAS8O,mBAAmBA,CAAC5O,UAAU,EACvC;AACI,EAAA,MAAM0Y,IAAI,GAAG1Y,UAAU,CAClBrC,MAAM,CAACsC,SAAS,IAAIA,SAAS,CAACC,MAAM,GAAG,CAAC,CAAC,CACzCoW,IAAI,CAAC,CAACpO,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAACjI,MAAM,GAAGgI,CAAC,CAAChI,MAAM,CAAC,CACnC+H,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAEhB,EAAA,MAAM0Q,KAAK,GAAGD,IAAI,CAACE,MAAM,CAAC,CAACC,GAAG,EAAE5Y,SAAS,KAAK4Y,GAAG,GAAG5Y,SAAS,CAACC,MAAM,EAAE,CAAC,CAAC;EACxE,IAAIyY,KAAK,IAAI,CAAC,EACd;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AAEA,EAAA,OAAOD,IAAI,CAAC7W,GAAG,CAAC5B,SAAS,KAAK;AAC1B,IAAA,GAAGA,SAAS;AACZC,IAAAA,MAAM,EAAE0R,UAAU,CAAC3R,SAAS,CAACC,MAAM,GAAGyY,KAAK;AAC/C,GAAC,CAAC,CAAC;AACP;AAEA,SAAS5J,+BAA+BA,CAAClP,OAAO,EAAE4O,gBAAgB,EAAE3C,SAAS,EAAE7O,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,EACxI;EACI,OAAOvK,OAAO,CAACgC,GAAG,CAAC,CAAC0M,MAAM,EAAEU,SAAS,KACrC;IACI,MACI5Q,IAAI,GAAGkQ,MAAM,CAACkK,QAAQ,IAAI,CAAA,KAAA,EAAQxJ,SAAS,CAAA,CAAE;AAC7C6J,MAAAA,aAAa,GAAGC,sBAAsB,CAACxK,MAAM,EAAEtR,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,CAAC;AACzG4O,MAAAA,gBAAgB,GAAG,EAAE;AAEzB,IAAA,KAAK,IAAIC,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAGxK,gBAAgB,CAAC1P,MAAM,EAAEka,WAAW,EAAE,EAC9E;MACI,IAAI,CAACxK,gBAAgB,CAACwK,WAAW,CAAC,CAACC,IAAI,CAACjZ,SAAS,IAAIA,SAAS,CAACgP,SAAS,KAAKA,SAAS,IAAIhP,SAAS,CAACC,MAAM,GAAG,CAAC,CAAC,EAC/G;AACI,QAAA;AACJ,MAAA;AAEA,MAAA,MAAMiC,MAAM,GAAG8W,WAAW,GAAG,CAAC;AAC9BD,MAAAA,gBAAgB,CAACvY,IAAI,CAAC,GAAG0Y,qBAAqB,CAAC,CAAErN,SAAS,CAAC3J,MAAM,CAAC,EAAE2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,EAAE2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,CAAE,EAAE2W,aAAa,CAAC,CAAC;AACvI,IAAA;AAEA,IAAA,MAAMrL,MAAM,GAAGC,aAAa,CAACsL,gBAAgB,CAAC;IAC9C,OAAO;MACH3a,IAAI;MACJuP,SAAS,EAAEH,MAAM,CAACG,SAAS;MAC3BC,SAAS,EAAEJ,MAAM,CAACI;KACrB;AACL,EAAA,CAAC,CAAC;AACN;AAEA,SAASkL,sBAAsBA,CAACxK,MAAM,EAAEtR,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,EACjG;AACI,EAAA,OAAOgP,aAAa,CAACnB,oBAAoB,CACrCpM,wBAAwB,CAAC0C,MAAM,CAACnP,IAAI,EAAEnC,WAAW,EAAEE,WAAW,EAAEiN,eAAe,CAAC,EAChFF,cACJ,CAAC,CAAC;AACN;AAEA,SAAS7K,WAAWA,CAACF,OAAO,EAAElC,WAAW,EAAEE,WAAW,EACtD;AACI,EAAA,OAAO0B,qBAAqB,CAACM,OAAO,EAAElC,WAAW,EAAEE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AACvF;AAEA,SAAS6R,qBAAqBA,CAACV,QAAQ,EAAEhE,eAAe,EACxD;EACI,IAAI,CAACA,eAAe,EACpB;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,IAAI+O,aAAa,GAAG,IAAI;AACxB,EAAA,KAAK,MAAMlhB,GAAG,IAAImW,QAAQ,EAC1B;IACI,IAAI,CAACnW,GAAG,EACR;AACI,MAAA,OAAO,IAAI;AACf,IAAA;IAEA,MAAMke,KAAK,GAAG/L,eAAe,CAACgP,mBAAmB,CAACzK,GAAG,CAAC1W,GAAG,CAAC;IAC1D,IAAIke,KAAK,KAAK3c,SAAS,EACvB;AACI,MAAA,OAAO,IAAI;AACf,IAAA;IACA,IAAI2f,aAAa,KAAK,IAAI,EAC1B;AACIA,MAAAA,aAAa,GAAGhD,KAAK;AACzB,IAAA,CAAC,MACI,IAAIgD,aAAa,KAAKhD,KAAK,EAChC;AACI,MAAA,OAAO,IAAI;AACf,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOgD,aAAa;AACxB;AAEA,SAAS9O,oBAAoBA,CAACtN,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,EACvF;AACI,EAAA,MACImP,KAAK,GAAGtc,WAAW,CAACS,IAAI,CACnBC,MAAM,CAACuX,WAAW,CAAC,CACnBvX,MAAM,CAACyB,IAAI,IAAI,CAACsL,sBAAsB,CAACtL,IAAI,EAAEnC,WAAW,EAAEE,WAAW,EAAE,OAAO,CAAC,CAAC+b,IAAI,CAAChE,WAAW,CAAC,CAAC;AACvGsE,IAAAA,gBAAgB,GAAGC,oBAAoB,CAACxc,WAAW,EAAEiN,cAAc,CAAC;AACpEe,IAAAA,SAAS,GAAG,EAAE;AACdqO,IAAAA,mBAAmB,GAAG,IAAIjP,GAAG,EAAE;AAC/BqP,IAAAA,OAAO,GAAG,IAAIpkB,GAAG,EAAE;AAEvB,EAAA,KAAK,MAAMyN,IAAI,IAAIwW,KAAK,EACxB;IACI,IAAIG,OAAO,CAACrhB,GAAG,CAAC0K,IAAI,CAAC5K,GAAG,CAAC,EACzB;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAM+S,QAAQ,GAAGyO,aAAa,CAAC5W,IAAI,EAAE9F,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,EAAEoP,gBAAgB,EAAEE,OAAO,CAAC;IAC1H,IAAI,CAACxO,QAAQ,CAACC,WAAW,CAACoH,KAAK,CAACxT,MAAM,EACtC;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMsa,aAAa,GAAGpO,SAAS,CAAClM,MAAM;AACtCkM,IAAAA,SAAS,CAACxK,IAAI,CAACyK,QAAQ,CAAC;AACxB,IAAA,KAAK,MAAM/S,GAAG,IAAI+S,QAAQ,CAACoD,QAAQ,EACnC;AACIgL,MAAAA,mBAAmB,CAAChH,GAAG,CAACna,GAAG,EAAEkhB,aAAa,CAAC;AAC/C,IAAA;AACJ,EAAA;EAEA,OAAO;IAAEpO,SAAS;AAAEqO,IAAAA;GAAqB;AAC7C;AAEA,SAASK,aAAaA,CAAC5W,IAAI,EAAE9F,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,EAAEoP,gBAAgB,EAAEE,OAAO,EACjH;EACI,MAAM7Z,OAAO,GAAG,EAAE;AAElB,EAAA,MAAM+Z,UAAU,GAAGA,CAACxa,IAAI,EAAEya,WAAW,KACrC;IACI,IAAI,CAACza,IAAI,IAAIsa,OAAO,CAACrhB,GAAG,CAAC+G,IAAI,CAACjH,GAAG,CAAC,EAClC;AACI,MAAA;AACJ,IAAA;AAEAuhB,IAAAA,OAAO,CAACrH,GAAG,CAACjT,IAAI,CAACjH,GAAG,CAAC;AACrB,IAAA,MACI2hB,WAAW,GAAGC,oBAAoB,CAAC3a,IAAI,EAAEya,WAAW,EAAE5c,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,CAAC;AAChH4P,MAAAA,SAAS,GAAG9B,gBAAgB,CAAC4B,WAAW,CAAC;MACzCG,WAAW,GAAGpa,OAAO,CAACd,MAAM;IAEhCc,OAAO,CAACY,IAAI,CAAC;MAAErB,IAAI;MAAEya,WAAW;MAAEC,WAAW;AAAEE,MAAAA;AAAU,KAAC,CAAC;AAE3D,IAAA,KAAK,MAAM5b,KAAK,IAAIS,qBAAqB,CAACO,IAAI,EAAEnC,WAAW,EAAEE,WAAW,EAAE,OAAO,CAAC,CAACQ,MAAM,CAACuX,WAAW,CAAC,EACtG;AACI0E,MAAAA,UAAU,CAACxb,KAAK,EAAE6b,WAAW,CAAC;AAClC,IAAA;EACJ,CAAC;AAEDL,EAAAA,UAAU,CAAC7W,IAAI,EAAE,EAAE,CAAC;AAEpB,EAAA,MACI1E,IAAI,GAAG0E,IAAI,CAAC1E,IAAI,IAAI,cAAc;AAClC6b,IAAAA,iBAAiB,GAAGC,sBAAsB,CAACta,OAAO,EAAE2Z,gBAAgB,CAAC;EAEzE,OAAO;IACHnb,IAAI;AACJiQ,IAAAA,QAAQ,EAAEzO,OAAO,CAACgC,GAAG,CAAC0M,MAAM,IAAIA,MAAM,CAACnP,IAAI,CAACjH,GAAG,CAAC;AAChDiiB,IAAAA,WAAW,EAAE;MACT/b,IAAI;MACJkU,KAAK,EAAE1S,OAAO,CAACgC,GAAG,CAAC0M,MAAM,IAAI8L,YAAY,CAAC9L,MAAM,CAAC;KACpD;AACDpD,IAAAA,WAAW,EAAE;MACT9M,IAAI;AACJkU,MAAAA,KAAK,EAAE1S,OAAO,CAACgC,GAAG,CAAC0M,MAAM,IAAIA,MAAM,CAACnP,IAAI,CAACf,IAAI,IAAI,MAAM,CAAC;AACxDmU,MAAAA,OAAO,EAAE3S,OAAO,CAACgC,GAAG,CAAC0M,MAAM,IAAIA,MAAM,CAACsL,WAAW,KAAK,EAAE,GAAG,UAAU,GAAGtL,MAAM,CAACsL,WAAW,CAAC;AAC3FS,MAAAA,cAAc,EAAEza,OAAO,CAACgC,GAAG,CAAC0M,MAAM,KAAK;AACnCkJ,QAAAA,QAAQ,EAAElJ,MAAM,CAACyL,SAAS,CAACvC,QAAQ;AACnCM,QAAAA,QAAQ,EAAExJ,MAAM,CAACyL,SAAS,CAACjC,QAAQ;AACnCpC,QAAAA,KAAK,EAAEpH,MAAM,CAACyL,SAAS,CAACrE;AAC5B,OAAC,CAAC,CAAC;MACHuE,iBAAiB;MACjBK,SAAS,EAAEC,iBAAiB,CAAC3a,OAAO;AACxC;GACH;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2a,iBAAiBA,CAAC3a,OAAO,EAClC;EACI,MACI4a,KAAK,GAAG,EAAE;AACVC,IAAAA,MAAM,GAAG,IAAIrQ,GAAG,EAAE;AAEtBxK,EAAAA,OAAO,CAAC0Y,OAAO,CAAC,CAAChK,MAAM,EAAE8H,KAAK,KAC9B;IACI,MAAMhT,UAAU,GAAG2N,gBAAgB,CAACzC,MAAM,CAACnP,IAAI,CAACnB,IAAI,CAAC,CAACoF,UAAU;AAChE,IAAA,KAAK,MAAM,CAAEhF,IAAI,EAAE8Z,UAAU,CAAE,IAAInjB,MAAM,CAAC+M,OAAO,CAACsB,UAAU,CAAC,EAC7D;AACI,MAAA,IAAI,CAACsX,sCAAsC,CAACxC,UAAU,CAAC,EACvD;AACI,QAAA;AACJ,MAAA;AAEA,MAAA,IAAIyC,IAAI,GAAGF,MAAM,CAAC7L,GAAG,CAACxQ,IAAI,CAAC;MAC3B,IAAI,CAACuc,IAAI,EACT;AACIA,QAAAA,IAAI,GAAG;UAAEvc,IAAI;AAAEmB,UAAAA,OAAO,EAAE;SAAI;AAC5Bkb,QAAAA,MAAM,CAACpI,GAAG,CAACjU,IAAI,EAAEuc,IAAI,CAAC;AACtBH,QAAAA,KAAK,CAACha,IAAI,CAACma,IAAI,CAAC;AACpB,MAAA;AACAA,MAAAA,IAAI,CAACpb,OAAO,CAACiB,IAAI,CAAC;QAAE4V,KAAK;QAAEnW,MAAM,EAAE0R,UAAU,CAACiJ,OAAO,CAAC1C,UAAU,CAAC1W,KAAK,CAAC;AAAE,OAAC,CAAC;AAC/E,IAAA;AACJ,EAAA,CAAC,CAAC;AAEF,EAAA,OAAOgZ,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,sCAAsCA,CAACxC,UAAU,EAC1D;EACI,OAAO,CAAC,CAACA,UAAU,IAAIzf,MAAM,CAACyf,UAAU,CAACC,KAAK,IAAI,EAAE,CAAC,CAAC/e,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO8e,UAAU,CAAC1W,KAAK,KAAK,QAAQ;AAC/G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASoZ,OAAOA,CAACpZ,KAAK,EACtB;AACI,EAAA,OAAOiH,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEoH,YAAY,CAAC3O,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAC5E;AAEA,SAASuJ,cAAcA,CAACC,SAAS,EAAET,MAAM,EACzC;EACI,OAAOS,SAAS,CAACpJ,GAAG,CAAC,CAACqJ,QAAQ,EAAEmO,aAAa,MAAM;IAC/Chb,IAAI,EAAE6M,QAAQ,CAAC7M,IAAI;IACnB6M,QAAQ,EAAEA,QAAQ,CAACkP,WAAW;AAC9BU,IAAAA,YAAY,EAAEtQ,MAAM,CACf3I,GAAG,CAAC,CAACuQ,IAAI,EAAE2I,SAAS,KAAK3I,IAAI,CAAClH,QAAQ,KAAKmO,aAAa,GAAG0B,SAAS,GAAG,EAAE,CAAC,CAC1Epd,MAAM,CAACod,SAAS,IAAIA,SAAS,KAAK,EAAE;AAC7C,GAAC,CAAC,CAAC;AACP;AAEA,SAASV,YAAYA,CAAC9L,MAAM,EAC5B;AACI,EAAA,MAAMyL,SAAS,GAAGzL,MAAM,CAACyL,SAAS;EAClC,OAAO;AACH3b,IAAAA,IAAI,EAAEkQ,MAAM,CAACnP,IAAI,CAACf,IAAI,IAAI,MAAM;IAChCwb,WAAW,EAAEtL,MAAM,CAACsL,WAAW;AAC/BmB,IAAAA,IAAI,EAAE,CAAC;IACPvD,QAAQ,EAAEuC,SAAS,CAACvC,QAAQ;IAC5BwD,WAAW,EAAEjB,SAAS,CAACjC,QAAQ;AAC/BmD,IAAAA,UAAU,EAAE,CACRlB,SAAS,CAACrE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACxB,CAAC,EAAEqE,SAAS,CAACrE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EACxB,CAAC,EAAE,CAAC,EAAEqE,SAAS,CAACrE,KAAK,CAAC,CAAC,CAAC;GAE/B;AACL;AAEA,SAASoE,oBAAoBA,CAAC3a,IAAI,EAAEya,WAAW,EAAE5c,WAAW,EAAEE,WAAW,EAAE+M,cAAc,EAAEE,eAAe,EAC1G;AACI,EAAA,IAAIyP,WAAW,KAAK,EAAE,EACtB;AACI,IAAA,OAAO5B,oBAAoB,CACvBkD,wBAAwB,CAAC/b,IAAI,EAAEnC,WAAW,EAAEE,WAAW,EAAEiN,eAAe,CAAC,CAACgR,WAAW,EACrFlR,cACJ,CAAC;AACL,EAAA;EAEA,OAAOmR,sBAAsB,CAACC,wBAAwB,CAAClc,IAAI,CAAC,EAAE8K,cAAc,CAACyL,KAAK,CAAC;AACvF;AAEA,SAASwE,sBAAsBA,CAACta,OAAO,EAAE2Z,gBAAgB,EACzD;AACI,EAAA,MAAM+B,YAAY,GAAG1b,OAAO,CAACgC,GAAG,CAAC0M,MAAM,IAAIiL,gBAAgB,CAAC3K,GAAG,CAACN,MAAM,CAACnP,IAAI,CAACjH,GAAG,CAAC,CAAC;AACjF,EAAA,IAAIojB,YAAY,CAACnE,KAAK,CAAC3B,OAAO,CAAC,EAC/B;AACI,IAAA,OAAO8F,YAAY,CAAC1Z,GAAG,CAAC+V,MAAM,IAAI4D,YAAY,CAACpC,aAAa,CAACxB,MAAM,CAAC,CAAC,CAAC;AAC1E,EAAA;EAEA,MAAMsC,iBAAiB,GAAG,EAAE;AAC5B,EAAA,KAAK,MAAM3L,MAAM,IAAI1O,OAAO,EAC5B;AACI,IAAA,MACI4b,kBAAkB,GAAGlN,MAAM,CAACsL,WAAW,KAAK,EAAE,GAAG3iB,gBAAgB,GAAGgjB,iBAAiB,CAAC3L,MAAM,CAACsL,WAAW,CAAC;AACzG6B,MAAAA,iBAAiB,GAAGtC,aAAa,CAAC7K,MAAM,CAACuL,WAAW,CAAC;AAEzDI,IAAAA,iBAAiB,CAACzZ,IAAI,CAAC+a,YAAY,CAACG,eAAe,CAACF,kBAAkB,EAAEC,iBAAiB,CAAC,CAAC,CAAC;AAChG,EAAA;AACA,EAAA,OAAOxB,iBAAiB;AAC5B;AAEA,SAAST,oBAAoBA,CAACxc,WAAW,EAAEiN,cAAc,EACzD;AACI,EAAA,MAAM0R,QAAQ,GAAG,IAAIvR,GAAG,EAAE;AAC1B,EAAA,KAAK,MAAMwR,IAAI,IAAI5e,WAAW,CAACS,IAAI,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAK,MAAM,CAAC,EAC9E;IACI,MAAM6D,IAAI,GAAGhJ,MAAM,CAACgG,sBAAsB,CAACmd,IAAI,CAAC5d,IAAI,EAAE,MAAM,CAAC,IAAI4d,IAAI,CAAC/d,SAAS,IAAI+d,IAAI,CAACxd,IAAI,IAAI,EAAE,CAAC;AACnG,IAAA,IAAI,CAAC,YAAY,CAACmT,IAAI,CAAC9P,IAAI,CAAC,EAC5B;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,KAAK,MAAMoa,QAAQ,IAAID,IAAI,CAAC5d,IAAI,CAACC,QAAQ,CAACP,MAAM,CAACS,KAAK,IAAIA,KAAK,CAACC,IAAI,KAAK,UAAU,CAAC,EACpF;AACI,MAAA,MACI0d,MAAM,GAAGrd,sBAAsB,CAACod,QAAQ,EAAE,MAAM,CAAC;AACjDlE,QAAAA,MAAM,GAAGrY,cAAc,CAACuc,QAAQ,EAAE,QAAQ,CAAC;AAE/C,MAAA,IAAIC,MAAM,KAAKriB,SAAS,IAAI,CAACtE,KAAK,CAACwM,OAAO,CAACgW,MAAM,CAAC,IAAIA,MAAM,CAAC7Y,MAAM,KAAK,EAAE,EAC1E;AACI,QAAA;AACJ,MAAA;AAEA6c,MAAAA,QAAQ,CAACtJ,GAAG,CAAC0J,WAAW,CAACD,MAAM,CAAC,EAAE9D,oBAAoB,CAACL,MAAM,EAAE1N,cAAc,CAAC,CAAC;AACnF,IAAA;AACJ,EAAA;AACA,EAAA,OAAO0R,QAAQ;AACnB;AAEA,SAAS1G,WAAWA,CAACtX,KAAK,EAC1B;EACI,OAAOA,KAAK,EAAEC,QAAQ,KAAK,OAAO,KAAKD,KAAK,CAACE,SAAS,KAAK,UAAU,IAAI,YAAY,CAAC0T,IAAI,CAAC5T,KAAK,CAACgC,QAAQ,CAAC,CAAC;AAC/G;AAEA,SAASuK,mBAAmBA,CAAC8R,kBAAkB,EAC/C;AACI,EAAA,MAAM5Y,UAAU,GAAG2N,gBAAgB,CAACiL,kBAAkB,CAAC,CAAC5Y,UAAU;EAClE,MAAM6Y,eAAe,GAAG5H,cAAc,CAACjR,UAAU,EAAE,iBAAiB,EAAE,IAAI,CAAC;EAC3E,OAAO;IACHsS,KAAK,EAAEuG,eAAe,KAAK,IAAI,GAAG,CAAC,GAAGA,eAAe,GAAG,IAAI;IAC5DC,KAAK,EAAEC,UAAU,CACb9H,cAAc,CAACjR,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,EAC1CiR,cAAc,CAACjR,UAAU,EAAE,eAAe,EAAE,CAAC,CACjD,CAAC;IACDgZ,EAAE,EAAED,UAAU,CACV9H,cAAc,CAACjR,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,EACvCiR,cAAc,CAACjR,UAAU,EAAE,YAAY,EAAE,CAAC,CAC9C,CAAC;AACDiZ,IAAAA,OAAO,EAAEF,UAAU,CACf9H,cAAc,CAACjR,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,EAC1CiR,cAAc,CAACjR,UAAU,EAAE,eAAe,EAAE,CAAC,CACjD;GACH;AACL;AAEA,SAASwI,wBAAwBA,CAAClB,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAEiN,eAAe,EAClF;EACI,IAAI,CAACO,KAAK,EACV;AACI,IAAA,OAAOzT,gBAAgB;AAC3B,EAAA;AAEA,EAAA,OAAOykB,eAAe,CAClBR,wBAAwB,CAACxQ,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAEiN,eAAe,CAAC,CAACgR,WAAW,EACtFmB,4BAA4B,CAAC5R,KAAK,CACtC,CAAC;AACL;AAEA,SAASwQ,wBAAwBA,CAACqB,KAAK,EAAEvf,WAAW,EAAEE,WAAW,EAAEsf,KAAK,EACxE;EACI,IAAIA,KAAK,CAACpkB,GAAG,CAACmkB,KAAK,CAACrkB,GAAG,CAAC,EACxB;AACI,IAAA,OAAOskB,KAAK,CAAC5N,GAAG,CAAC2N,KAAK,CAACrkB,GAAG,CAAC;AAC/B,EAAA;AAEA,EAAA,MACIukB,KAAK,GAAGC,oBAAoB,CAACH,KAAK,CAAC;IACnChK,OAAO,GAAG9H,sBAAsB,CAAC8R,KAAK,EAAEvf,WAAW,EAAEE,WAAW,EAAE,OAAO,CAAC;AAC1E8M,IAAAA,MAAM,GAAGuI,OAAO,CAAC,CAAC,CAAC;AACnBoK,IAAAA,WAAW,GAAG3S,MAAM,GAAGkR,wBAAwB,CAAClR,MAAM,EAAEhN,WAAW,EAAEE,WAAW,EAAEsf,KAAK,CAAC,GAAG,IAAI;IAC/F1W,KAAK,GAAG6W,WAAW,GACbC,0BAA0B,CAACH,KAAK,EAAEE,WAAW,CAAC,GAC9C;MACExB,WAAW,EAAEsB,KAAK,CAAC9E,MAAM;MACzBkF,mBAAmB,EAAEJ,KAAK,CAACK,cAAc;MACzCC,YAAY,EAAEN,KAAK,CAAC/G;KACvB;EAET8G,KAAK,CAACnK,GAAG,CAACkK,KAAK,CAACrkB,GAAG,EAAE4N,KAAK,CAAC;AAC3B,EAAA,OAAOA,KAAK;AAChB;AAEA,SAASuV,wBAAwBA,CAACkB,KAAK,EACvC;EACI,MAAMnZ,UAAU,GAAG2N,gBAAgB,CAACwL,KAAK,CAACve,IAAI,CAAC,CAACoF,UAAU;EAC1D,OAAOwU,qBAAqB,CAACxU,UAAU,CAAC;AAC5C;AAEA,SAASsZ,oBAAoBA,CAACH,KAAK,EACnC;EACI,MACInZ,UAAU,GAAG2N,gBAAgB,CAACwL,KAAK,CAACve,IAAI,CAAC,CAACoF,UAAU;AACpDyU,IAAAA,WAAW,GAAGf,eAAe,CAAC1T,UAAU,EAAE,iBAAiB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AACzEsS,IAAAA,KAAK,GAAGoB,eAAe,CAAC1T,UAAU,EAAE,aAAa,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;EAEnE,OAAO;IACHA,UAAU;IACVyU,WAAW;IACXnC,KAAK;IACLsH,WAAW,EAAE3I,cAAc,CAACjR,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;AACzDuU,IAAAA,MAAM,EAAEC,qBAAqB,CAACxU,UAAU,EAAE;MAAEyU,WAAW;AAAEnC,MAAAA;AAAM,KAAC,CAAC;AACjEoH,IAAAA,cAAc,EAAElF,qBAAqB,CAACxU,UAAU,EAAE;MAAEyU,WAAW;AAAEnC,MAAAA,KAAK,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KAAI;GACxF;AACL;AAEA,SAASkH,0BAA0BA,CAACH,KAAK,EAAEE,WAAW,EACtD;EACI,MAAMK,WAAW,GAAGhN,aAAa,CAACyM,KAAK,CAACO,WAAW,EAAE,aAAa,CAAC;AAEnE,EAAA,IAAIA,WAAW,KAAK,CAAC,IAAIA,WAAW,KAAK,CAAC,EAC1C;IACI,MACInF,WAAW,GAAGoF,eAAe,CAACR,KAAK,CAAC5E,WAAW,EAAE8E,WAAW,CAACI,YAAY,CAAC;AAC1ErH,MAAAA,KAAK,GAAGsH,WAAW,KAAK,CAAC,GAAGC,eAAe,CAACR,KAAK,CAAC/G,KAAK,EAAEiH,WAAW,CAACI,YAAY,CAAC,GAAGN,KAAK,CAAC/G,KAAK;AAChGiC,MAAAA,MAAM,GAAGC,qBAAqB,CAAC6E,KAAK,CAACrZ,UAAU,EAAE;QAAEyU,WAAW;AAAEnC,QAAAA;AAAM,OAAC,CAAC;AACxEoH,MAAAA,cAAc,GAAGlF,qBAAqB,CAAC6E,KAAK,CAACrZ,UAAU,EAAE;QAAEyU,WAAW;AAAEnC,QAAAA,KAAK,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAG,OAAC,CAAC;IAEjG,OAAO;MACHyF,WAAW,EAAEO,eAAe,CAACiB,WAAW,CAACE,mBAAmB,EAAElF,MAAM,CAAC;MACrEkF,mBAAmB,EAAEnB,eAAe,CAACiB,WAAW,CAACE,mBAAmB,EAAEC,cAAc,CAAC;AACrFC,MAAAA,YAAY,EAAErH;KACjB;AACL,EAAA;EAEA,OAAO;IACHyF,WAAW,EAAEO,eAAe,CAACiB,WAAW,CAACxB,WAAW,EAAEsB,KAAK,CAAC9E,MAAM,CAAC;IACnEkF,mBAAmB,EAAEnB,eAAe,CAACiB,WAAW,CAACE,mBAAmB,EAAEJ,KAAK,CAACK,cAAc,CAAC;IAC3FC,YAAY,EAAEE,eAAe,CAACN,WAAW,CAACI,YAAY,EAAEN,KAAK,CAAC/G,KAAK;GACtE;AACL;AAEA,SAAS4G,4BAA4BA,CAACC,KAAK,EAC3C;EACI,MAAMnZ,UAAU,GAAG2N,gBAAgB,CAACwL,KAAK,CAACve,IAAI,CAAC,CAACoF,UAAU;EAC1D,OAAO8Z,sBAAsB,CACzBpG,eAAe,CAAC1T,UAAU,EAAE,sBAAsB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,EAChE0T,eAAe,CAAC1T,UAAU,EAAE,mBAAmB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,EAC7D0T,eAAe,CAAC1T,UAAU,EAAE,kBAAkB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,EAC5DlM,sBACJ,CAAC;AACL;AAEA,SAAS0gB,qBAAqBA,CAACxU,UAAU,EAAE+Z,SAAS,GAAG,EAAE,EACzD;AACI,EAAA,MACIC,aAAa,GAAGC,qBAAqB,CAACja,UAAU,CAAC;AACjDka,IAAAA,aAAa,GAAGxG,eAAe,CAAC1T,UAAU,EAAE,eAAe,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AACzEma,IAAAA,YAAY,GAAGzG,eAAe,CAAC1T,UAAU,EAAE,cAAc,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AAE3E,EAAA,OAAOoa,mBAAmB,CAAC,CACvBC,kBAAkB,CAACN,SAAS,CAACtF,WAAW,IAAIf,eAAe,CAAC1T,UAAU,EAAE,iBAAiB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,EACxGqa,kBAAkB,CAAC3G,eAAe,CAAC1T,UAAU,EAAE,gBAAgB,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,EAC9Eqa,kBAAkB,CAACH,aAAa,CAAC,EACjCI,eAAe,CAAC5G,eAAe,CAAC1T,UAAU,EAAE,aAAa,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,EAAEga,aAAa,CAAC,EACvFM,eAAe,CAACP,SAAS,CAACrF,QAAQ,IAAIhB,eAAe,CAAC1T,UAAU,EAAE,cAAc,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,EAAEga,aAAa,CAAC,EAC9GO,sBAAsB,CAAC7G,eAAe,CAAC1T,UAAU,EAAE,cAAc,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,EAAEga,aAAa,CAAC,EAC/FK,kBAAkB,CAACG,aAAa,CAACN,aAAa,CAAC,CAAC,EAChDG,kBAAkB,CAAC3G,eAAe,CAAC1T,UAAU,EAAE,eAAe,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,EAC7Eqa,kBAAkB,CAACF,YAAY,CAAC,EAChCM,YAAY,CAACV,SAAS,CAACzH,KAAK,IAAIoB,eAAe,CAAC1T,UAAU,EAAE,aAAa,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,EACxFqa,kBAAkB,CAACG,aAAa,CAACL,YAAY,CAAC,CAAC,CAClD,CAAC;AACN;AAEA,SAASL,sBAAsBA,CAACrF,WAAW,EAAEiG,eAAe,EAAEpI,KAAK,EAAE0H,aAAa,EAClF;EACI,OAAO1B,eAAe,CAClB+B,kBAAkB,CAAC5F,WAAW,CAAC,EAC/B6D,eAAe,CAACgC,eAAe,CAACI,eAAe,EAAEV,aAAa,CAAC,EAAES,YAAY,CAACnI,KAAK,CAAC,CACxF,CAAC;AACL;AAEA,SAAS5J,eAAeA,CAACtT,MAAM,EAAEmf,MAAM,EAAE1N,cAAc,EACvD;EACI,MAAMpI,MAAM,GAAG,EAAE;AACjB,EAAA,KAAK,IAAIyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9K,MAAM,CAACsG,MAAM,EAAEwE,CAAC,IAAI,CAAC,EACzC;IACI,MAAMya,KAAK,GAAG7E,qBAAqB,CAAC,CAAE1gB,MAAM,CAAC8K,CAAC,CAAC,EAAE9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,EAAE9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,CAAE,EAAEqU,MAAM,CAAC;IACxF9V,MAAM,CAACrB,IAAI,CAAC,GAAGiX,mBAAmB,CAACsG,KAAK,EAAE9T,cAAc,CAAC,CAAC;AAC9D,EAAA;AACA,EAAA,OAAOpI,MAAM;AACjB;AAEA,SAASmK,mBAAmBA,CAACxT,MAAM,EAAEmf,MAAM,EAAE1N,cAAc,EAAE+T,eAAe,EAC5E;AACI,EAAA,IAAI,CAACxlB,MAAM,CAACsG,MAAM,EAClB;AACI,IAAA,OAAOtG,MAAM;AACjB,EAAA;EAEA,MACIylB,YAAY,GAAqBC,aAAa,CAACvG,MAAM,CAAC,CAAO;AAC7D9V,IAAAA,MAAM,GAAG,EAAE;AAEf,EAAA,KAAK,IAAIyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9K,MAAM,CAACsG,MAAM,EAAEwE,CAAC,IAAI,CAAC,EACzC;IACI,MAAM6a,MAAM,GACNC,sBAAsB,CAAC,CAAE5lB,MAAM,CAAC8K,CAAC,CAAC,EAAE9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,EAAE9K,MAAM,CAAC8K,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE2a,YAAY,CAAC,CACN;AACjFpc,IAAAA,MAAM,CAACrB,IAAI,CAAC,GAAG6d,gBAAgB,CAACC,oBAAoB,CAACH,MAAM,EAAElU,cAAc,CAAC,CAAC,CAAC;AAClF,EAAA;AAEA,EAAA,OAAOpI,MAAM;AACjB;AAEA,SAAS4V,mBAAmBA,CAACsG,KAAK,EAAE9T,cAAc,EAClD;AACI,EAAA,MAAMkU,MAAM,GAAGG,oBAAoB,CAACP,KAAK,EAAE9T,cAAc,CAAC;EAC1D,OAAOkU,MAAM,CAACvc,GAAG,CAACJ,KAAK,IAAIA,KAAK,GAAGyI,cAAc,CAACyL,KAAK,CAAC;AAC5D;AAEA,SAAS4I,oBAAoBA,CAACH,MAAM,EAAElU,cAAc,EACpD;EACI,OAAO,CACHsU,UAAU,CAACJ,MAAM,EAAElU,cAAc,CAACiS,KAAK,CAAC,EACxCqC,UAAU,CAACJ,MAAM,EAAElU,cAAc,CAACmS,EAAE,CAAC,EACrCmC,UAAU,CAACJ,MAAM,EAAElU,cAAc,CAACoS,OAAO,CAAC,CAC7C;AACL;AAEA,SAASrE,oBAAoBA,CAACL,MAAM,EAAE1N,cAAc,EACpD;EACI,MACIuU,OAAO,GAAGF,oBAAoB,CAAC,CAAE3G,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAE,EAAE1N,cAAc,CAAC;IACnFwU,OAAO,GAAGH,oBAAoB,CAAC,CAAE3G,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAE,EAAE1N,cAAc,CAAC;IACnFyU,OAAO,GAAGJ,oBAAoB,CAAC,CAAE3G,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,EAAE,CAAC,CAAE,EAAE1N,cAAc,CAAC;IACpF4N,WAAW,GAAGJ,mBAAmB,CAAC,CAAEE,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,EAAE,CAAC,CAAE,EAAE1N,cAAc,CAAC;AAE3F,EAAA,OAAOsR,YAAY,CAAC,CAChBiD,OAAO,CAAC,CAAC,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,EAAE7G,WAAW,CAAC,CAAC,CAAC,EAClD2G,OAAO,CAAC,CAAC,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,EAAE7G,WAAW,CAAC,CAAC,CAAC,EAClD2G,OAAO,CAAC,CAAC,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,EAAE7G,WAAW,CAAC,CAAC,CAAC,EAClD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACb,CAAC;AACN;AAEA,SAASuD,sBAAsBA,CAACzD,MAAM,EAAEjC,KAAK,EAC7C;AACI,EAAA,MAAM7T,MAAM,GAAG8V,MAAM,CAAC3P,KAAK,EAAE;AAC7BnG,EAAAA,MAAM,CAAC,CAAC,CAAC,IAAI6T,KAAK;AAClB7T,EAAAA,MAAM,CAAC,CAAC,CAAC,IAAI6T,KAAK;AAClB7T,EAAAA,MAAM,CAAC,EAAE,CAAC,IAAI6T,KAAK;EACnB,OAAO6F,YAAY,CAAC1Z,MAAM,CAAC;AAC/B;AAEA,SAASoW,gBAAgBA,CAACN,MAAM,EAChC;AACI,EAAA,MACIjC,KAAK,GAAG,CACJjN,IAAI,CAACiJ,KAAK,CAACiG,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAChDlP,IAAI,CAACiJ,KAAK,CAACiG,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAChDlP,IAAI,CAACiJ,KAAK,CAACiG,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CACpD;AACDgH,IAAAA,cAAc,GAAG,CACbhH,MAAM,CAAC,CAAC,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,EAAEiC,MAAM,CAAC,CAAC,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,EAAEiC,MAAM,CAAC,CAAC,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,EAChEiC,MAAM,CAAC,CAAC,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,EAAEiC,MAAM,CAAC,CAAC,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,EAAEiC,MAAM,CAAC,CAAC,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,EAChEiC,MAAM,CAAC,CAAC,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,EAAEiC,MAAM,CAAC,CAAC,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,EAAEiC,MAAM,CAAC,EAAE,CAAC,GAAGjC,KAAK,CAAC,CAAC,CAAC,CACpE;EAEL,OAAO;AACH8B,IAAAA,QAAQ,EAAEE,YAAY,CAAC,CAAEC,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,EAAE,CAAC,CAAE,CAAC;AAC5DG,IAAAA,QAAQ,EAAE8G,kBAAkB,CAACD,cAAc,CAAC;IAC5CjJ,KAAK,EAAEgC,YAAY,CAAChC,KAAK;GAC5B;AACL;AAEA,SAASkJ,kBAAkBA,CAACjH,MAAM,EAClC;AACI,EAAA,MACIkH,GAAG,GAAGlH,MAAM,CAAC,CAAC,CAAC;AACfmH,IAAAA,GAAG,GAAGnH,MAAM,CAAC,CAAC,CAAC;AACfoH,IAAAA,GAAG,GAAGpH,MAAM,CAAC,CAAC,CAAC;AACfqH,IAAAA,GAAG,GAAGrH,MAAM,CAAC,CAAC,CAAC;AACfsH,IAAAA,GAAG,GAAGtH,MAAM,CAAC,CAAC,CAAC;AACfuH,IAAAA,GAAG,GAAGvH,MAAM,CAAC,CAAC,CAAC;AACfwH,IAAAA,GAAG,GAAGxH,MAAM,CAAC,CAAC,CAAC;AACfyH,IAAAA,GAAG,GAAGzH,MAAM,CAAC,CAAC,CAAC;AACf0H,IAAAA,GAAG,GAAG1H,MAAM,CAAC,CAAC,CAAC;AACf2H,IAAAA,KAAK,GAAGT,GAAG,GAAGI,GAAG,GAAGI,GAAG;AAE3B,EAAA,IAAIE,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC;EACd,IAAIJ,KAAK,GAAG,CAAC,EACb;IACI,MAAMK,CAAC,GAAGlX,IAAI,CAACmX,IAAI,CAACN,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;IAClCI,CAAC,GAAG,IAAI,GAAGC,CAAC;AACZJ,IAAAA,CAAC,GAAG,CAACH,GAAG,GAAGF,GAAG,IAAIS,CAAC;AACnBH,IAAAA,CAAC,GAAG,CAACT,GAAG,GAAGI,GAAG,IAAIQ,CAAC;AACnBF,IAAAA,CAAC,GAAG,CAACT,GAAG,GAAGF,GAAG,IAAIa,CAAC;EACvB,CAAC,MACI,IAAId,GAAG,GAAGI,GAAG,IAAIJ,GAAG,GAAGQ,GAAG,EAC/B;AACI,IAAA,MAAMM,CAAC,GAAGlX,IAAI,CAACmX,IAAI,CAAC,CAAC,GAAGf,GAAG,GAAGI,GAAG,GAAGI,GAAG,CAAC,GAAG,CAAC;AAC5CK,IAAAA,CAAC,GAAG,CAACN,GAAG,GAAGF,GAAG,IAAIS,CAAC;IACnBJ,CAAC,GAAG,IAAI,GAAGI,CAAC;AACZH,IAAAA,CAAC,GAAG,CAACV,GAAG,GAAGE,GAAG,IAAIW,CAAC;AACnBF,IAAAA,CAAC,GAAG,CAACV,GAAG,GAAGI,GAAG,IAAIQ,CAAC;AACvB,EAAA,CAAC,MACI,IAAIV,GAAG,GAAGI,GAAG,EAClB;AACI,IAAA,MAAMM,CAAC,GAAGlX,IAAI,CAACmX,IAAI,CAAC,CAAC,GAAGX,GAAG,GAAGJ,GAAG,GAAGQ,GAAG,CAAC,GAAG,CAAC;AAC5CK,IAAAA,CAAC,GAAG,CAACX,GAAG,GAAGI,GAAG,IAAIQ,CAAC;AACnBJ,IAAAA,CAAC,GAAG,CAACT,GAAG,GAAGE,GAAG,IAAIW,CAAC;IACnBH,CAAC,GAAG,IAAI,GAAGG,CAAC;AACZF,IAAAA,CAAC,GAAG,CAACP,GAAG,GAAGE,GAAG,IAAIO,CAAC;AACvB,EAAA,CAAC,MAED;AACI,IAAA,MAAMA,CAAC,GAAGlX,IAAI,CAACmX,IAAI,CAAC,CAAC,GAAGP,GAAG,GAAGR,GAAG,GAAGI,GAAG,CAAC,GAAG,CAAC;AAC5CS,IAAAA,CAAC,GAAG,CAACV,GAAG,GAAGF,GAAG,IAAIa,CAAC;AACnBJ,IAAAA,CAAC,GAAG,CAACR,GAAG,GAAGI,GAAG,IAAIQ,CAAC;AACnBH,IAAAA,CAAC,GAAG,CAACN,GAAG,GAAGE,GAAG,IAAIO,CAAC;IACnBF,CAAC,GAAG,IAAI,GAAGE,CAAC;AAChB,EAAA;EAEA,OAAOE,mBAAmB,CAAC,CAAEN,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAE,CAAC;AAC9C;AAEA,SAAS5I,eAAeA,CAAC1T,UAAU,EAAEhF,IAAI,EAAE2Y,QAAQ,EACnD;AACI,EAAA,MAAMvV,KAAK,GAAG4B,UAAU,CAAChF,IAAI,CAAC,EAAEoD,KAAK;AACrC,EAAA,IAAIrM,KAAK,CAACwM,OAAO,CAACH,KAAK,CAAC,EACxB;IACI,OAAO,CACH2O,YAAY,CAAC3O,KAAK,CAAC,CAAC,CAAC,IAAIuV,QAAQ,CAAC,CAAC,CAAC,EAAE3Y,IAAI,CAAC,EAC3C+R,YAAY,CAAC3O,KAAK,CAAC,CAAC,CAAC,IAAIuV,QAAQ,CAAC,CAAC,CAAC,EAAE3Y,IAAI,CAAC,EAC3C+R,YAAY,CAAC3O,KAAK,CAAC,CAAC,CAAC,IAAIuV,QAAQ,CAAC,CAAC,CAAC,EAAE3Y,IAAI,CAAC,CAC9C;AACL,EAAA;AACA,EAAA,OAAO2Y,QAAQ;AACnB;AAEA,SAAS1C,cAAcA,CAACjR,UAAU,EAAEhF,IAAI,EAAE2Y,QAAQ,EAClD;AACI,EAAA,MAAMvV,KAAK,GAAG4B,UAAU,CAAChF,IAAI,CAAC,EAAEoD,KAAK;AACrC,EAAA,IAAIA,KAAK,KAAK/H,SAAS,IAAI+H,KAAK,KAAK,IAAI,IAAIrM,KAAK,CAACwM,OAAO,CAACH,KAAK,CAAC,EACjE;AACI,IAAA,OAAOuV,QAAQ;AACnB,EAAA;AACA,EAAA,OAAO5G,YAAY,CAAC3O,KAAK,EAAEpD,IAAI,CAAC;AACpC;AAEA,SAASif,qBAAqBA,CAACja,UAAU,EACzC;EACI,MAAM5B,KAAK,GAAG6S,cAAc,CAACjR,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC;EAC/D,IAAI5B,KAAK,KAAK,IAAI,EAClB;AACI,IAAA,OAAOtK,sBAAsB;AACjC,EAAA;AACA,EAAA,OAAOC,mBAAmB,CAACqK,KAAK,CAAC,IAAItK,sBAAsB;AAC/D;AAEA,SAASilB,UAAUA,CAAClF,IAAI,EAAE6I,IAAI,EAC9B;EACI,MAAM3B,MAAM,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;EAC1B,MAAM/H,KAAK,GAAG3N,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEN,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEsH,aAAa,CAACiH,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;EACnEkH,MAAM,CAAC/H,KAAK,CAAC,GAAG0J,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,EAAA,OAAO3B,MAAM;AACjB;AAEA,SAASV,kBAAkBA,CAAC5F,WAAW,EACvC;AACI,EAAA,OAAO,CACH,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,WAAW,CAAC,CAAC,CAAC,EACvB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,WAAW,CAAC,CAAC,CAAC,EACvB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,WAAW,CAAC,CAAC,CAAC,EACvB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACb;AACL;AAEA,SAASgG,YAAYA,CAACnI,KAAK,EAC3B;AACI,EAAA,OAAO,CACHA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACjB,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACjB,CAAC,EAAE,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EACjB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACb;AACL;AAEA,SAASgI,eAAeA,CAACI,eAAe,EAAEiC,KAAK,EAC/C;EACI,IAAIpI,MAAM,GAAG1gB,gBAAgB;AAC7B,EAAA,KAAK,IAAIqM,CAAC,GAAGyc,KAAK,CAACjhB,MAAM,GAAG,CAAC,EAAEwE,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAC1C;AACI,IAAA,MAAM2T,IAAI,GAAG8I,KAAK,CAACzc,CAAC,CAAC;IACrB,MAAM0c,OAAO,GAAGC,gBAAgB,CAACnC,eAAe,CAACoC,SAAS,CAACjJ,IAAI,CAAC,CAAC,CAAC;IAClEU,MAAM,GAAG+D,eAAe,CAAC/D,MAAM,EAAEwI,mBAAmB,CAAClJ,IAAI,EAAE+I,OAAO,CAAC,CAAC;AACxE,EAAA;AACA,EAAA,OAAOrI,MAAM;AACjB;AAEA,SAASgG,sBAAsBA,CAACG,eAAe,EAAEiC,KAAK,EACtD;EACI,IAAIpI,MAAM,GAAG1gB,gBAAgB;AAC7B,EAAA,KAAK,MAAMggB,IAAI,IAAI8I,KAAK,EACxB;AACI,IAAA,MAAMC,OAAO,GAAGC,gBAAgB,CAAC,CAACnC,eAAe,CAACoC,SAAS,CAACjJ,IAAI,CAAC,CAAC,CAAC;IACnEU,MAAM,GAAG+D,eAAe,CAAC/D,MAAM,EAAEwI,mBAAmB,CAAClJ,IAAI,EAAE+I,OAAO,CAAC,CAAC;AACxE,EAAA;AACA,EAAA,OAAOrI,MAAM;AACjB;AAEA,SAAS6F,mBAAmBA,CAAC7B,QAAQ,EACrC;AACI,EAAA,OAAOA,QAAQ,CAAChD,MAAM,CAAC,CAAChB,MAAM,EAAEyI,IAAI,KAAK1E,eAAe,CAAC/D,MAAM,EAAEyI,IAAI,CAAC,EAAEnpB,gBAAgB,CAAC;AAC7F;AAEA,SAAS2mB,aAAaA,CAACO,MAAM,EAC7B;AACI,EAAA,OAAO,CAAE,CAACA,MAAM,CAAC,CAAC,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC,CAAC,CAAE;AACjD;AAEA,SAASlB,eAAeA,CAAChV,CAAC,EAAEC,CAAC,EAC7B;AACI,EAAA,OAAO,CAAED,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,EAAED,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAE;AACpD;AAEA,SAASgY,SAASA,CAACjJ,IAAI,EACvB;AACI,EAAA,OAAOA,IAAI,KAAK,GAAG,GAAG,CAAC,GAAGA,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AAClD;AAEA,SAASkJ,mBAAmBA,CAAClJ,IAAI,EAAE+I,OAAO,EAC1C;AACI,EAAA,MACIK,CAAC,GAAG5X,IAAI,CAAC6X,GAAG,CAACN,OAAO,CAAC;AACrBL,IAAAA,CAAC,GAAGlX,IAAI,CAAC8X,GAAG,CAACP,OAAO,CAAC;AAEzB,EAAA,QAAQ/I,IAAI;AAEZ,IAAA,KAAK,GAAG;AACJ,MAAA,OAAO,CACH,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAEoJ,CAAC,EAAE,CAACV,CAAC,EAAE,CAAC,EACX,CAAC,EAAEA,CAAC,EAAEU,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACb;AACL,IAAA,KAAK,GAAG;AACJ,MAAA,OAAO,CACHA,CAAC,EAAE,CAAC,EAAEV,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAACA,CAAC,EAAE,CAAC,EAAEU,CAAC,EAAE,CAAC,EACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACb;AACL,IAAA;AACI,MAAA,OAAO,CACHA,CAAC,EAAE,CAACV,CAAC,EAAE,CAAC,EAAE,CAAC,EACXA,CAAC,EAAEU,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACb;AACL;AACJ;AAEA,SAAS3E,eAAeA,CAACzT,CAAC,EAAEC,CAAC,EAC7B;EACI,MAAMrG,MAAM,GAAG,IAAI1M,KAAK,CAAC,EAAE,CAAC,CAACmS,IAAI,CAAC,CAAC,CAAC;EACpC,KAAK,IAAIkZ,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,CAAC,EAAEA,GAAG,EAAE,EAChC;IACI,KAAK,IAAIC,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAG,CAAC,EAAEA,MAAM,EAAE,EACzC;MACI,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;QACI7e,MAAM,CAAC2e,GAAG,GAAG,CAAC,GAAGC,MAAM,CAAC,IAAIxY,CAAC,CAACuY,GAAG,GAAG,CAAC,GAAGE,CAAC,CAAC,GAAGxY,CAAC,CAACwY,CAAC,GAAG,CAAC,GAAGD,MAAM,CAAC;AAClE,MAAA;AACJ,IAAA;AACJ,EAAA;AACA,EAAA,OAAO5e,MAAM;AACjB;AAEA,SAASsX,aAAaA,CAACxB,MAAM,EAC7B;AACI,EAAA,MACI1P,CAAC,GAAG,CACA0P,MAAM,CAAC3P,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAClB2P,MAAM,CAAC3P,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAClB2P,MAAM,CAAC3P,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EACnB2P,MAAM,CAAC3P,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CACvB;AACD2Y,IAAAA,OAAO,GAAG,CACN,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACd,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACd,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,EACd,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CACjB;EAEL,KAAK,IAAIF,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAG,CAAC,EAAEA,MAAM,EAAE,EACzC;IACI,IAAIG,QAAQ,GAAGH,MAAM;AACrB,IAAA,KAAK,IAAID,GAAG,GAAGC,MAAM,GAAG,CAAC,EAAED,GAAG,GAAG,CAAC,EAAEA,GAAG,EAAE,EACzC;MACI,IAAI/X,IAAI,CAACoY,GAAG,CAAC5Y,CAAC,CAACuY,GAAG,CAAC,CAACC,MAAM,CAAC,CAAC,GAAGhY,IAAI,CAACoY,GAAG,CAAC5Y,CAAC,CAAC2Y,QAAQ,CAAC,CAACH,MAAM,CAAC,CAAC,EAC5D;AACIG,QAAAA,QAAQ,GAAGJ,GAAG;AAClB,MAAA;AACJ,IAAA;IAEA,MAAMM,KAAK,GAAG7Y,CAAC,CAAC2Y,QAAQ,CAAC,CAACH,MAAM,CAAC;IACjC,IAAIhY,IAAI,CAACoY,GAAG,CAACC,KAAK,CAAC,GAAGld,MAAM,CAACmd,OAAO,EACpC;AACI,MAAA,MAAM,IAAI1nB,KAAK,CAAC,yCAAyC,CAAC;AAC9D,IAAA;IAEA,IAAIunB,QAAQ,KAAKH,MAAM,EACvB;MACI,CAAExY,CAAC,CAACwY,MAAM,CAAC,EAAExY,CAAC,CAAC2Y,QAAQ,CAAC,CAAE,GAAG,CAAE3Y,CAAC,CAAC2Y,QAAQ,CAAC,EAAE3Y,CAAC,CAACwY,MAAM,CAAC,CAAE;MACvD,CAAEE,OAAO,CAACF,MAAM,CAAC,EAAEE,OAAO,CAACC,QAAQ,CAAC,CAAE,GAAG,CAAED,OAAO,CAACC,QAAQ,CAAC,EAAED,OAAO,CAACF,MAAM,CAAC,CAAE;AACnF,IAAA;IAEA,KAAK,IAAInd,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;AACI2E,MAAAA,CAAC,CAACwY,MAAM,CAAC,CAACnd,CAAC,CAAC,IAAIwd,KAAK;AACrBH,MAAAA,OAAO,CAACF,MAAM,CAAC,CAACnd,CAAC,CAAC,IAAIwd,KAAK;AAC/B,IAAA;IAEA,KAAK,IAAIN,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,CAAC,EAAEA,GAAG,EAAE,EAChC;MACI,IAAIA,GAAG,KAAKC,MAAM,EAClB;AACI,QAAA;AACJ,MAAA;MAEA,MAAMO,MAAM,GAAG/Y,CAAC,CAACuY,GAAG,CAAC,CAACC,MAAM,CAAC;MAC7B,KAAK,IAAInd,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;AACI2E,QAAAA,CAAC,CAACuY,GAAG,CAAC,CAACld,CAAC,CAAC,IAAI0d,MAAM,GAAG/Y,CAAC,CAACwY,MAAM,CAAC,CAACnd,CAAC,CAAC;AAClCqd,QAAAA,OAAO,CAACH,GAAG,CAAC,CAACld,CAAC,CAAC,IAAI0d,MAAM,GAAGL,OAAO,CAACF,MAAM,CAAC,CAACnd,CAAC,CAAC;AAClD,MAAA;AACJ,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOiY,YAAY,CAACoF,OAAO,CAACM,IAAI,EAAE,CAAC;AACvC;AAEA,SAAS/H,qBAAqBA,CAAC6E,KAAK,EAAEpG,MAAM,EAC5C;EACI,OAAO,CACHA,MAAM,CAAC,CAAC,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,CAAC,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,CAAC,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,CAAC,CAAC,EAC9EA,MAAM,CAAC,CAAC,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,CAAC,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,CAAC,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,CAAC,CAAC,EAC9EA,MAAM,CAAC,CAAC,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,CAAC,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,EAAE,CAAC,GAAGoG,KAAK,CAAC,CAAC,CAAC,GAAGpG,MAAM,CAAC,EAAE,CAAC,CACnF;AACL;AAWA,SAASuG,aAAaA,CAACvG,MAAM,EAC7B;AACI,EAAA,MACIuJ,GAAG,GAAGvJ,MAAM,CAAC,CAAC,CAAC;AACfwJ,IAAAA,GAAG,GAAGxJ,MAAM,CAAC,CAAC,CAAC;AACfyJ,IAAAA,GAAG,GAAGzJ,MAAM,CAAC,CAAC,CAAC;AACf0J,IAAAA,GAAG,GAAG1J,MAAM,CAAC,CAAC,CAAC;AACf2J,IAAAA,GAAG,GAAG3J,MAAM,CAAC,CAAC,CAAC;AACf4J,IAAAA,GAAG,GAAG5J,MAAM,CAAC,CAAC,CAAC;AACf6J,IAAAA,GAAG,GAAG7J,MAAM,CAAC,CAAC,CAAC;AACf8J,IAAAA,GAAG,GAAG9J,MAAM,CAAC,CAAC,CAAC;AACf+J,IAAAA,GAAG,GAAG/J,MAAM,CAAC,EAAE,CAAC;AAChBgK,IAAAA,GAAG,GAAGD,GAAG,GAAGJ,GAAG,GAAGC,GAAG,GAAGE,GAAG;IAC3BG,GAAG,GAAG,CAACF,GAAG,GAAGL,GAAG,GAAGE,GAAG,GAAGC,GAAG;AAC5BK,IAAAA,GAAG,GAAGJ,GAAG,GAAGJ,GAAG,GAAGC,GAAG,GAAGE,GAAG;IAC3BM,WAAW,GAAGZ,GAAG,GAAGS,GAAG,GAAGR,GAAG,GAAGS,GAAG,GAAGR,GAAG,GAAGS,GAAG;EAEnD,IAAIpZ,IAAI,CAACoY,GAAG,CAACiB,WAAW,CAAC,GAAGle,MAAM,CAACmd,OAAO,EAC1C;AACI,IAAA,MAAM,IAAI1nB,KAAK,CAAC,wCAAwC,CAAC;AAC7D,EAAA;AAEA,EAAA,MAAM0oB,kBAAkB,GAAG,CAAC,GAAGD,WAAW;AAC1C,EAAA,OAAO,CACHH,GAAG,GAAGI,kBAAkB,EACxB,CAAC,CAACL,GAAG,GAAGP,GAAG,GAAGC,GAAG,GAAGK,GAAG,IAAIM,kBAAkB,EAC7C,CAACR,GAAG,GAAGJ,GAAG,GAAGC,GAAG,GAAGE,GAAG,IAAIS,kBAAkB,EAC5CH,GAAG,GAAGG,kBAAkB,EACxB,CAACL,GAAG,GAAGR,GAAG,GAAGE,GAAG,GAAGI,GAAG,IAAIO,kBAAkB,EAC5C,CAAC,CAACR,GAAG,GAAGL,GAAG,GAAGE,GAAG,GAAGC,GAAG,IAAIU,kBAAkB,EAC7CF,GAAG,GAAGE,kBAAkB,EACxB,CAAC,CAACN,GAAG,GAAGP,GAAG,GAAGC,GAAG,GAAGK,GAAG,IAAIO,kBAAkB,EAC7C,CAACT,GAAG,GAAGJ,GAAG,GAAGC,GAAG,GAAGE,GAAG,IAAIU,kBAAkB,CAC/C;AACL;AAEA,SAAS3D,sBAAsBA,CAACD,MAAM,EAAExG,MAAM,EAC9C;AACI,EAAA,OAAO,CACHA,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,GAAGxG,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,GAAGxG,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,EACrExG,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,GAAGxG,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,GAAGxG,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,EACrExG,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,GAAGxG,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,GAAGxG,MAAM,CAAC,CAAC,CAAC,GAAGwG,MAAM,CAAC,CAAC,CAAC,CACxE;AACL;AAEA,SAASE,gBAAgBA,CAACF,MAAM,EAChC;EACI,MAAMrf,MAAM,GAAG2J,IAAI,CAACiJ,KAAK,CAACyM,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;EAC1D,IAAIrf,MAAM,KAAK,CAAC,EAChB;AACI,IAAA,OAAO,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AACtB,EAAA;AACA,EAAA,OAAOqf,MAAM,CAACvc,GAAG,CAACJ,KAAK,IAAImQ,UAAU,CAACnQ,KAAK,GAAG1C,MAAM,CAAC,CAAC;AAC1D;AAEA,SAAS+gB,mBAAmBA,CAACmC,UAAU,EACvC;EACI,MAAMljB,MAAM,GAAG2J,IAAI,CAACiJ,KAAK,CAACsQ,UAAU,CAAC,CAAC,CAAC,EAAEA,UAAU,CAAC,CAAC,CAAC,EAAEA,UAAU,CAAC,CAAC,CAAC,EAAEA,UAAU,CAAC,CAAC,CAAC,CAAC;EACrF,IAAIljB,MAAM,KAAK,CAAC,EAChB;IACI,OAAO,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AACzB,EAAA;AACA,EAAA,OAAOkjB,UAAU,CAACpgB,GAAG,CAACJ,KAAK,IAAImQ,UAAU,CAACnQ,KAAK,GAAG1C,MAAM,CAAC,CAAC;AAC9D;AAEA,SAASyf,UAAUA,CAACtW,CAAC,EAAEC,CAAC,EACxB;AACI,EAAA,OAAOyJ,UAAU,CAAC1J,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,GAAGD,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,GAAGD,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D;AAEA,SAAS+X,gBAAgBA,CAACze,KAAK,EAC/B;AACI,EAAA,OAAOA,KAAK,GAAGiH,IAAI,CAACwZ,EAAE,GAAG,GAAG;AAChC;AAEA,SAAStQ,UAAUA,CAACnQ,KAAK,EACzB;EACI,OAAOiH,IAAI,CAACoY,GAAG,CAACrf,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,GAAGA,KAAK;AAC9C;AAEA,SAASkW,YAAYA,CAACyG,MAAM,EAC5B;AACI,EAAA,OAAOA,MAAM,CAACvc,GAAG,CAAC+P,UAAU,CAAC;AACjC;AAEA,SAASzC,iBAAiBA,CAAC1W,MAAM,EACjC;AACI,EAAA,OAAOrD,KAAK,CAACC,IAAI,CAACoD,MAAM,EAAEmZ,UAAU,CAAC;AACzC;AAEA,SAAS1C,cAAcA,CAACzW,MAAM,EAC9B;AACI,EAAA,OAAO,CAACrD,KAAK,CAACwM,OAAO,CAACnJ,MAAM,CAAC,IAAIqB,WAAW,CAACC,MAAM,CAACtB,MAAM,CAAC,KAAKA,MAAM,CAACsG,MAAM,GAAG,CAAC;AACrF;AAEA,SAASyc,YAAYA,CAAC5D,MAAM,EAC5B;AACI,EAAA,OAAOA,MAAM,CAAC/V,GAAG,CAAC+P,UAAU,CAAC;AACjC;AAEA,SAAS1U,gBAAgBA,CAACH,WAAW,EACrC;EACI,MAAMoY,IAAI,GAAG,EAAE;EACf,MAAMgN,MAAM,GAAG,EAAE;EACjB,MAAMzkB,IAAI,GAAG,EAAE;AAEf,EAAA,KAAK,MAAMO,IAAI,IAAIlB,WAAW,CAACmB,QAAQ,EACvC;AACI,IAAA,IAAI,CAACD,IAAI,CAACoF,UAAU,CAACtE,MAAM,EAC3B;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMqjB,OAAO,GAAGC,eAAe,CAACpkB,IAAI,CAAC;AACrC,IAAA,MAAML,KAAK,GAAG;AAAE,MAAA,GAAGwkB,OAAO;AAAEnkB,MAAAA;KAAM;AAClCP,IAAAA,IAAI,CAAC+C,IAAI,CAAC7C,KAAK,CAAC;AAChBuX,IAAAA,IAAI,CAACvX,KAAK,CAACzF,GAAG,CAAC,GAAGyF,KAAK;IACvB0kB,SAAS,CAACH,MAAM,EAAEvkB,KAAK,CAACC,QAAQ,EAAED,KAAK,CAAC;AAC5C,EAAA;EAEA,OAAO;IAAEF,IAAI;IAAEyX,IAAI;AAAEgN,IAAAA;GAAQ;AACjC;AAEA,SAASzX,sBAAsBA,CAAC9M,KAAK,EAAEX,WAAW,EAAEE,WAAW,EAAEU,QAAQ,EACzE;AACI,EAAA,OAAO,CAACV,WAAW,CAAColB,cAAc,CAAC3kB,KAAK,CAACzF,GAAG,CAAC,IAAI,EAAE,EAC9C0J,GAAG,CAAC1J,GAAG,IAAI8E,WAAW,CAACkY,IAAI,CAAChd,GAAG,CAAC,CAAC,CACjCwF,MAAM,CAACsM,MAAM,IAAIA,MAAM,IAAIA,MAAM,CAACpM,QAAQ,KAAKA,QAAQ,CAAC;AACjE;AAEA,SAASgB,qBAAqBA,CAACjB,KAAK,EAAEX,WAAW,EAAEE,WAAW,EAAEU,QAAQ,EACxE;EACI,IAAI,CAACD,KAAK,EACV;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AAEA,EAAA,OAAO,CAACT,WAAW,CAACqlB,gBAAgB,CAAC5kB,KAAK,CAACzF,GAAG,CAAC,IAAI,EAAE,EAChD0J,GAAG,CAAC1J,GAAG,IAAI8E,WAAW,CAACkY,IAAI,CAAChd,GAAG,CAAC,CAAC,CACjCwF,MAAM,CAACS,KAAK,IAAIA,KAAK,IAAIA,KAAK,CAACP,QAAQ,KAAKA,QAAQ,CAAC;AAC9D;AAEA,SAAS2N,iBAAiBA,CAACvN,IAAI,EAAEwkB,SAAS,EAC1C;AACI,EAAA,MAAMhqB,MAAM,GAAG8G,cAAc,CAACtB,IAAI,EAAEwkB,SAAS,CAAC;EAC9C,IAAI,CAAChqB,MAAM,EACX;AACI,IAAA,MAAM,IAAIa,KAAK,CAAC,CAAA,yBAAA,EAA4BmpB,SAAS,EAAE,CAAC;AAC5D,EAAA;AACA,EAAA,OAAOhqB,MAAM;AACjB;AAEA,SAAS8G,cAAcA,CAACtB,IAAI,EAAEwkB,SAAS,EACvC;EACI,MAAMrkB,KAAK,GAAGpB,aAAa,CAACiB,IAAI,CAACC,QAAQ,EAAEukB,SAAS,CAAC;EACrD,OAAOrkB,KAAK,GAAGskB,aAAa,CAACtkB,KAAK,EAAEqkB,SAAS,CAAC,GAAG,IAAI;AACzD;AAEA,SAASC,aAAaA,CAACzkB,IAAI,EAAEiT,OAAO,EACpC;AACI,EAAA,KAAK,MAAM8D,QAAQ,IAAI/W,IAAI,CAACoF,UAAU,EACtC;AACI,IAAA,MAAM5K,MAAM,GAAGkqB,sBAAsB,CAAC3N,QAAQ,EAAE9D,OAAO,CAAC;AACxD,IAAA,IAAIzY,MAAM,EACV;AACI,MAAA,OAAOA,MAAM;AACjB,IAAA;AACJ,EAAA;EAEA,MAAMmqB,UAAU,GAAG5lB,aAAa,CAACiB,IAAI,CAACC,QAAQ,EAAE,GAAG,CAAC;AACpD,EAAA,OAAO0kB,UAAU,GAAGA,UAAU,CAACvf,UAAU,CAACxB,GAAG,CAACJ,KAAK,IAAI2O,YAAY,CAAC3O,KAAK,EAAEyP,OAAO,CAAC,CAAC,GAAG,IAAI;AAC/F;AAEA,SAASyR,sBAAsBA,CAAC3N,QAAQ,EAAE9D,OAAO,EACjD;EACI,IAAI,CAAC8D,QAAQ,EACb;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EACA,IAAIA,QAAQ,CAAChQ,UAAU,EACvB;IACI,MAAMtJ,KAAK,GAAG,IAAIpC,KAAK,CAAC,CAAA,uCAAA,EAA0C4X,OAAO,aAAa,CAAC;IACvFxV,KAAK,CAACC,IAAI,GAAG,+BAA+B;IAC5CD,KAAK,CAAClB,YAAY,GAAG,KAAK;IAC1BkB,KAAK,CAAClG,IAAI,GAAGb,UAAU;IACvB+G,KAAK,CAACwV,OAAO,GAAG,kBAAkB;AAClC,IAAA,MAAMxV,KAAK;AACf,EAAA;AACA,EAAA,IAAI5B,WAAW,CAACC,MAAM,CAACib,QAAQ,CAAC,EAChC;AACI,IAAA,OAAO5f,KAAK,CAACC,IAAI,CAAC2f,QAAQ,EAAEvT,KAAK,IAAI2O,YAAY,CAAC3O,KAAK,EAAEyP,OAAO,CAAC,CAAC;AACtE,EAAA;AACA,EAAA,IAAI9b,KAAK,CAACwM,OAAO,CAACoT,QAAQ,CAAC,EAC3B;AACI,IAAA,OAAOA,QAAQ,CAACnT,GAAG,CAACJ,KAAK,IAAI2O,YAAY,CAAC3O,KAAK,EAAEyP,OAAO,CAAC,CAAC;AAC9D,EAAA;AACA,EAAA,OAAO,IAAI;AACf;AAEA,SAASvF,oBAAoBA,CAACJ,aAAa,EAAEE,kBAAkB,EAAEhO,QAAQ,EACzE;AACI,EAAA,MACIolB,iBAAiB,GAAGtX,aAAa,CAACxM,MAAM,GAAG,CAAC;AAC5C+M,IAAAA,SAAS,GAAG,EAAE;AACd4C,IAAAA,OAAO,GAAG,EAAE;AACZ/B,IAAAA,QAAQ,GAAG,EAAE;EAEjB,IAAImW,OAAO,GAAG,EAAE;AAEhB,EAAA,KAAK,MAAMC,QAAQ,IAAItX,kBAAkB,EACzC;AACI,IAAA,MAAMuX,GAAG,GAAG/S,aAAa,CAAC8S,QAAQ,EAAE,oBAAoB,CAAC;AACzD,IAAA,MAAME,GAAG,GAAGD,GAAG,GAAG,CAAC;IACnB,MAAMlU,iBAAiB,GAAGmU,GAAG,GAAG,CAACD,GAAG,GAAG,CAAC,GAAGA,GAAG;AAC9C,IAAA,IAAIlU,iBAAiB,GAAG,CAAC,IAAIA,iBAAiB,IAAI+T,iBAAiB,EACnE;AACI,MAAA,MAAM,IAAIvpB,KAAK,CAAC,iBAAiBhB,IAAI,CAACC,SAAS,CAACkF,QAAQ,CAACY,IAAI,IAAIZ,QAAQ,CAACtF,GAAG,CAAC,CAAA,wBAAA,EAA2B6qB,GAAG,eAAe,CAAC;AAChI,IAAA;AAEA,IAAA,MAAMttB,MAAM,GAAGoZ,iBAAiB,GAAG,CAAC;AACpC,IAAA,MAAMoU,WAAW,GAAGpX,SAAS,CAAC/M,MAAM,GAAG,CAAC;AACxC,IAAA,MAAMokB,YAAY,GAAGxW,QAAQ,CAAC5N,MAAM;AACpC+M,IAAAA,SAAS,CAACrL,IAAI,CACV2P,YAAY,CAAC7E,aAAa,CAAC7V,MAAM,CAAC,EAAE,UAAU,CAAC,EAC/C0a,YAAY,CAAC7E,aAAa,CAAC7V,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,EACnD0a,YAAY,CAAC7E,aAAa,CAAC7V,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,CACtD,CAAC;IACDgZ,OAAO,CAACjO,IAAI,CAAC;MACTyiB,WAAW;MACXpU,iBAAiB;MACjBqU,YAAY;MACZC,kBAAkB,EAAEN,OAAO,CAAC/jB;AAChC,KAAC,CAAC;AACF+jB,IAAAA,OAAO,CAACriB,IAAI,CAACyiB,WAAW,CAAC;AAEzB,IAAA,IAAID,GAAG,EACP;AACI,MAAA,IAAIH,OAAO,CAAC/jB,MAAM,GAAG,CAAC,EACtB;AACI,QAAA,MAAM,IAAIzF,KAAK,CAAC,CAAA,cAAA,EAAiBhB,IAAI,CAACC,SAAS,CAACkF,QAAQ,CAACY,IAAI,IAAIZ,QAAQ,CAACtF,GAAG,CAAC,+CAA+C,CAAC;AAClI,MAAA;AACAwU,MAAAA,QAAQ,CAAClM,IAAI,CAACqiB,OAAO,CAAC;AACtBA,MAAAA,OAAO,GAAG,EAAE;AAChB,IAAA;AACJ,EAAA;EAEA,IAAIA,OAAO,CAAC/jB,MAAM,EAClB;AACI,IAAA,MAAM,IAAIzF,KAAK,CAAC,CAAA,cAAA,EAAiBhB,IAAI,CAACC,SAAS,CAACkF,QAAQ,CAACY,IAAI,IAAIZ,QAAQ,CAACtF,GAAG,CAAC,8BAA8B,CAAC;AACjH,EAAA;EAEA,OAAO;IAAE2T,SAAS;IAAE4C,OAAO;AAAE/B,IAAAA;GAAU;AAC3C;AAEA,SAAST,uBAAuBA,CAACmX,YAAY,EAAEC,SAAS,EAAEC,UAAU,EAAEC,UAAU,EAAEC,UAAU,EAAEC,WAAW,EAAEhY,OAAO,EAAEwF,OAAO,EAC3H;EACI,MAAM/S,KAAK,GAAGwlB,oBAAoB,CAACN,YAAY,EAAEC,SAAS,EAAEC,UAAU,CAAC;EACvE,IAAI,CAACplB,KAAK,EACV;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AAEA,EAAA,MAAM1F,MAAM,GAAGmrB,mBAAmB,CAACzlB,KAAK,EAAEqlB,UAAU,CAAC;EACrD,IAAI,CAAC/qB,MAAM,EACX;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AAEA,EAAA,IAAIA,MAAM,CAACsG,MAAM,GAAG2kB,WAAW,KAAK,CAAC,EACrC;IACI,MAAM,IAAIpqB,KAAK,CAAC,CAAA,KAAA,EAAQ4X,OAAO,CAAA,kCAAA,EAAqCwS,WAAW,EAAE,CAAC;AACtF,EAAA;EAEA,MACItW,OAAO,GAAGwW,mBAAmB,CAACzlB,KAAK,EAAEslB,UAAU,CAAC,IAAI,EAAE;IACtDhlB,OAAO,GAAG/F,MAAM,CAACgG,sBAAsB,CAACP,KAAK,EAAE,wBAAwB,CAAC,IAAI,iBAAiB,CAAC;IAC9FQ,SAAS,GAAGjG,MAAM,CAACgG,sBAAsB,CAACP,KAAK,EAAE,0BAA0B,CAAC,IAAI,QAAQ,CAAC;AACzF2D,IAAAA,MAAM,GAAG,EAAE;AAEf,EAAA,KAAK,MAAM6M,MAAM,IAAIjD,OAAO,CAACgD,OAAO,EACpC;IACI,MACImV,WAAW,GAAGC,wBAAwB,CAACrlB,OAAO,EAAEkQ,MAAM,EAAEuC,OAAO,CAAC;MAChE6S,WAAW,GAAGC,0BAA0B,CAACrlB,SAAS,EAAEyO,OAAO,EAAEyW,WAAW,EAAE3S,OAAO,CAAC;IAEtF+S,kBAAkB,CAACniB,MAAM,EAAErJ,MAAM,EAAEsrB,WAAW,EAAEL,WAAW,EAAExS,OAAO,CAAC;AACzE,EAAA;AAEA,EAAA,OAAOpP,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASwK,yBAAyBA,CAAC+W,YAAY,EAAEE,UAAU,EAAE7X,OAAO,EAAEjT,MAAM,EAC5E;EACI,MAAMyrB,QAAQ,GAAGhY,uBAAuB,CAACmX,YAAY,EAAE,gBAAgB,EAAEE,UAAU,EAAE,CAAE,IAAI,CAAE,EAAE,CAAE,SAAS,EAAE,WAAW,CAAE,EAAE,CAAC,EAAE7X,OAAO,EAAE,IAAI,CAAC;EAC5I,OAAOjT,MAAM,CAAC9C,KAAK,GAAGwuB,aAAa,CAACD,QAAQ,CAAC,GAAGA,QAAQ;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CAACD,QAAQ,EAC/B;AACI,EAAA,MAAME,OAAO,GAAGF,QAAQ,CAACjc,KAAK,EAAE;AAChC,EAAA,KAAK,IAAI1E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6gB,OAAO,CAACrlB,MAAM,EAAEwE,CAAC,IAAI,CAAC,EAC1C;IACI6gB,OAAO,CAAC7gB,CAAC,CAAC,GAAG,CAAC,GAAG6gB,OAAO,CAAC7gB,CAAC,CAAC;AAC/B,EAAA;AACA,EAAA,OAAO6gB,OAAO;AAClB;AAEA,SAAST,oBAAoBA,CAACN,YAAY,EAAEC,SAAS,EAAEC,UAAU,EACjE;AACI,EAAA,MAAM9Q,MAAM,GAAG4Q,YAAY,CAACnlB,QAAQ,CAACP,MAAM,CAACS,KAAK,IAAIA,KAAK,CAACC,IAAI,KAAKilB,SAAS,CAAC;EAC9E,OAAO7Q,MAAM,CAACtE,IAAI,CAAC,CAAC/P,KAAK,EAAEiY,KAAK,KAChC;AACI,IAAA,MAAMgO,EAAE,GAAGjmB,KAAK,CAACiF,UAAU,CAACtE,MAAM,GAAG8E,MAAM,CAACzF,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC,CAAC,GAAGgT,KAAK;IACxE,OAAOxS,MAAM,CAACygB,QAAQ,CAACD,EAAE,CAAC,IAAIA,EAAE,KAAKd,UAAU;AACnD,EAAA,CAAC,CAAC,IAAI9Q,MAAM,CAAC8Q,UAAU,CAAC,IAAI,IAAI;AACpC;AAEA,SAASK,mBAAmBA,CAAC3lB,IAAI,EAAEsmB,UAAU,EAC7C;AACI,EAAA,KAAK,MAAM9B,SAAS,IAAI8B,UAAU,EAClC;AACI,IAAA,MAAM9rB,MAAM,GAAG8G,cAAc,CAACtB,IAAI,EAAEwkB,SAAS,CAAC;AAC9C,IAAA,IAAIhqB,MAAM,EACV;AACI,MAAA,OAAOA,MAAM;AACjB,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,IAAI;AACf;AAEA,SAASqrB,wBAAwBA,CAACrlB,OAAO,EAAEkQ,MAAM,EAAEuC,OAAO,EAC1D;AACI,EAAA,QAAQzS,OAAO;AAEf,IAAA,KAAK,iBAAiB;MAClB,OAAOkQ,MAAM,CAACuU,WAAW;AAC7B,IAAA,KAAK,gBAAgB;AACrB,IAAA,KAAK,WAAW;AAChB,IAAA,KAAK,UAAU;MACX,OAAOvU,MAAM,CAACG,iBAAiB;AACnC,IAAA,KAAK,WAAW;MACZ,OAAOH,MAAM,CAACwU,YAAY;AAC9B,IAAA,KAAK,SAAS;AACV,MAAA,OAAO,CAAC;AACZ,IAAA;AACI,MAAA,MAAM,IAAI7pB,KAAK,CAAC,CAAA,iBAAA,EAAoB4X,OAAO,CAAA,wBAAA,EAA2B5Y,IAAI,CAACC,SAAS,CAACkG,OAAO,CAAC,EAAE,CAAC;AACpG;AACJ;AAEA,SAASulB,0BAA0BA,CAACrlB,SAAS,EAAEyO,OAAO,EAAEyW,WAAW,EAAE3S,OAAO,EAC5E;AACI,EAAA,QAAQvS,SAAS;AAEjB,IAAA,KAAK,QAAQ;AACT,MAAA,OAAOklB,WAAW;AACtB,IAAA,KAAK,eAAe;AACpB,IAAA,KAAK,OAAO;AACZ,MAAA;AACI,QAAA,IAAIA,WAAW,IAAIzW,OAAO,CAACrO,MAAM,EACjC;AACI,UAAA,MAAM,IAAIzF,KAAK,CAAC,CAAA,KAAA,EAAQ4X,OAAO,2BAA2B,CAAC;AAC/D,QAAA;QACA,OAAOjB,aAAa,CAAC7C,OAAO,CAACyW,WAAW,CAAC,EAAE3S,OAAO,CAAC;AACvD,MAAA;AACA,IAAA;AACI,MAAA,MAAM,IAAI5X,KAAK,CAAC,CAAA,iBAAA,EAAoB4X,OAAO,CAAA,0BAAA,EAA6B5Y,IAAI,CAACC,SAAS,CAACoG,SAAS,CAAC,EAAE,CAAC;AACxG;AACJ;AAEA,SAASslB,kBAAkBA,CAACniB,MAAM,EAAErJ,MAAM,EAAEsrB,WAAW,EAAEL,WAAW,EAAExS,OAAO,EAC7E;AACI,EAAA,MAAM/O,MAAM,GAAG4hB,WAAW,GAAGL,WAAW;EACxC,IAAIK,WAAW,GAAG,CAAC,IAAI5hB,MAAM,GAAGuhB,WAAW,GAAGjrB,MAAM,CAACsG,MAAM,EAC3D;IACI,MAAM,IAAIzF,KAAK,CAAC,CAAA,KAAA,EAAQ4X,OAAO,CAAA,cAAA,EAAiB6S,WAAW,kBAAkB,CAAC;AAClF,EAAA;EAEA,KAAK,IAAIxgB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmgB,WAAW,EAAEngB,CAAC,EAAE,EACpC;AACIzB,IAAAA,MAAM,CAACrB,IAAI,CAAC2P,YAAY,CAAC3X,MAAM,CAAC0J,MAAM,GAAGoB,CAAC,CAAC,EAAE2N,OAAO,CAAC,CAAC;AAC1D,EAAA;AACJ;AAEA,SAAS7D,gBAAgBA,CAACZ,gBAAgB,EAAES,aAAa,EACzD;EACI,MAAMsX,MAAM,GAAG,EAAE;AACjB,EAAA,MAAMC,WAAW,GAAG,IAAIpa,GAAG,EAAE;EAC7B,IAAIqa,QAAQ,GAAG,CAAC;AAEhB,EAAA,KAAK,IAAIvB,YAAY,GAAG,CAAC,EAAEA,YAAY,GAAG1W,gBAAgB,CAAC1N,MAAM,EAAEokB,YAAY,EAAE,EACjF;AACI,IAAA,MACIwB,SAAS,GAAGlY,gBAAgB,CAAC0W,YAAY,CAAC;AAC1C9kB,MAAAA,IAAI,GAAG6O,aAAa,CAACiW,YAAY,CAAC,IAAI,SAAS;MAC/CyB,KAAK,GAAGC,aAAa,CAACL,MAAM,EAAEC,WAAW,EAAEpmB,IAAI,CAAC;AAEpD,IAAA,KAAK,MAAMymB,QAAQ,IAAIH,SAAS,EAChC;AACIC,MAAAA,KAAK,CAACG,KAAK,CAACtkB,IAAI,CAACqkB,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC;MACvDJ,QAAQ,GAAGhc,IAAI,CAACM,GAAG,CAAC0b,QAAQ,EAAEI,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxE,IAAA;AACJ,EAAA;EAEA,MAAME,aAAa,GAAGN,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAC/C,EAAA,KAAK,MAAME,KAAK,IAAIJ,MAAM,EAC1B;IACII,KAAK,CAACI,aAAa,GAAGA,aAAa;AACvC,EAAA;AACA,EAAA,OAAOR,MAAM;AACjB;AAEA,SAAS9X,sBAAsBA,CAACC,QAAQ,EAAEb,SAAS,EACnD;AACI,EAAA,OAAOa,QAAQ,CAAC9K,GAAG,CAACihB,OAAO,IAAImC,kBAAkB,CAACnC,OAAO,EAAEhX,SAAS,CAAC,CAAC;AAC1E;AAEA,SAASmZ,kBAAkBA,CAACnC,OAAO,EAAEhX,SAAS,EAC9C;AACI,EAAA,IAAIgX,OAAO,CAAC/jB,MAAM,KAAK,CAAC,EACxB;AACI,IAAA,OAAO,CAAE+jB,OAAO,CAAC7a,KAAK,EAAE,CAAE;AAC9B,EAAA;AAEA,EAAA,MAAMid,SAAS,GAAGC,kBAAkB,CAACrC,OAAO,EAAEhX,SAAS,CAAC;EACxD,IAAI,CAACoZ,SAAS,EACd;IACI,OAAOE,qBAAqB,CAACtC,OAAO,CAAC;AACzC,EAAA;AAEA,EAAA,MAAMuC,IAAI,GAAGC,YAAY,CAACJ,SAAS,CAAC;EACpC,IAAIxc,IAAI,CAACoY,GAAG,CAACuE,IAAI,CAAC,IAAIpuB,qBAAqB,EAC3C;IACI,OAAOmuB,qBAAqB,CAACtC,OAAO,CAAC;AACzC,EAAA;AACA,EAAA,IAAIyC,iBAAiB,CAACL,SAAS,EAAEG,IAAI,CAAC,EACtC;IACI,OAAOD,qBAAqB,CAACtC,OAAO,CAAC;AACzC,EAAA;EAEA,MACI6B,SAAS,GAAG,EAAE;IACdnc,SAAS,GAAGsa,OAAO,CAACjhB,GAAG,CAAC,CAACJ,KAAK,EAAE4U,KAAK,KAAKA,KAAK,CAAC;EAEpD,IAAImP,KAAK,GAAG1C,OAAO,CAAC/jB,MAAM,GAAG+jB,OAAO,CAAC/jB,MAAM;EAC3C,OAAOyJ,SAAS,CAACzJ,MAAM,GAAG,CAAC,IAAIymB,KAAK,EAAE,GAAG,CAAC,EAC1C;IACI,IAAIC,OAAO,GAAG,KAAK;AACnB,IAAA,KAAK,IAAIpP,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG7N,SAAS,CAACzJ,MAAM,EAAEsX,KAAK,EAAE,EACrD;AACI,MAAA,MACIqP,QAAQ,GAAGld,SAAS,CAAC,CAAC6N,KAAK,GAAG7N,SAAS,CAACzJ,MAAM,GAAG,CAAC,IAAIyJ,SAAS,CAACzJ,MAAM,CAAC;AACvE4mB,QAAAA,OAAO,GAAGnd,SAAS,CAAC6N,KAAK,CAAC;QAC1BgK,IAAI,GAAG7X,SAAS,CAAC,CAAC6N,KAAK,GAAG,CAAC,IAAI7N,SAAS,CAACzJ,MAAM,CAAC;AAEpD,MAAA,IAAI,CAAC6mB,OAAO,CAACF,QAAQ,EAAEC,OAAO,EAAEtF,IAAI,EAAE7X,SAAS,EAAE0c,SAAS,EAAEG,IAAI,CAAC,EACjE;AACI,QAAA;AACJ,MAAA;AAEAV,MAAAA,SAAS,CAAClkB,IAAI,CAAC,CAAEqiB,OAAO,CAAC4C,QAAQ,CAAC,EAAE5C,OAAO,CAAC6C,OAAO,CAAC,EAAE7C,OAAO,CAACzC,IAAI,CAAC,CAAE,CAAC;AACtE7X,MAAAA,SAAS,CAACqd,MAAM,CAACxP,KAAK,EAAE,CAAC,CAAC;AAC1BoP,MAAAA,OAAO,GAAG,IAAI;AACd,MAAA;AACJ,IAAA;IAEA,IAAI,CAACA,OAAO,EACZ;MACI,OAAOL,qBAAqB,CAACtC,OAAO,CAAC;AACzC,IAAA;AACJ,EAAA;AAEA,EAAA,IAAIta,SAAS,CAACzJ,MAAM,KAAK,CAAC,EAC1B;AACI4lB,IAAAA,SAAS,CAAClkB,IAAI,CAAC,CAAEqiB,OAAO,CAACta,SAAS,CAAC,CAAC,CAAC,CAAC,EAAEsa,OAAO,CAACta,SAAS,CAAC,CAAC,CAAC,CAAC,EAAEsa,OAAO,CAACta,SAAS,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;AAC3F,EAAA;EAEA,OAAOmc,SAAS,CAAC5lB,MAAM,GAAG4lB,SAAS,GAAGS,qBAAqB,CAACtC,OAAO,CAAC;AACxE;AAEA,SAASjW,uBAAuBA,CAACJ,gBAAgB,EACjD;EACI,MAAMsY,KAAK,GAAG,EAAE;AAChB,EAAA,KAAK,MAAMJ,SAAS,IAAIlY,gBAAgB,EACxC;AACI,IAAA,KAAK,MAAMqY,QAAQ,IAAIH,SAAS,EAChC;AACII,MAAAA,KAAK,CAACtkB,IAAI,CAACqkB,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrD,IAAA;AACJ,EAAA;AACA,EAAA,OAAOC,KAAK;AAChB;AAEA,SAASK,qBAAqBA,CAACtC,OAAO,EACtC;EACI,MAAM6B,SAAS,GAAG,EAAE;AACpB,EAAA,KAAK,IAAIphB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuf,OAAO,CAAC/jB,MAAM,GAAG,CAAC,EAAEwE,CAAC,EAAE,EAC3C;IACIohB,SAAS,CAAClkB,IAAI,CAAC,CAAEqiB,OAAO,CAAC,CAAC,CAAC,EAAEA,OAAO,CAACvf,CAAC,CAAC,EAAEuf,OAAO,CAACvf,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;AAC9D,EAAA;AACA,EAAA,OAAOohB,SAAS;AACpB;AAEA,SAASQ,kBAAkBA,CAACrC,OAAO,EAAEhX,SAAS,EAC9C;AACI,EAAA,MAAME,MAAM,GAAG8Z,oBAAoB,CAAChD,OAAO,EAAEhX,SAAS,CAAC;EACvD,MACIia,IAAI,GAAGrd,IAAI,CAACoY,GAAG,CAAC9U,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1Bga,IAAI,GAAGtd,IAAI,CAACoY,GAAG,CAAC9U,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1Bia,IAAI,GAAGvd,IAAI,CAACoY,GAAG,CAAC9U,MAAM,CAAC,CAAC,CAAC,CAAC;AAE9B,EAAA,IAAItD,IAAI,CAACM,GAAG,CAAC+c,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC,IAAIhvB,qBAAqB,EACvD;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AAEA,EAAA,MAAMivB,QAAQ,GAAGH,IAAI,GAAGC,IAAI,IAAID,IAAI,GAAGE,IAAI,GAAG,CAAC,GAAGD,IAAI,GAAGC,IAAI,GAAG,CAAC,GAAG,CAAC;AACrE,EAAA,OAAOnD,OAAO,CAACjhB,GAAG,CAACwU,KAAK,IACxB;AACI,IAAA,MAAMlU,MAAM,GAAGkU,KAAK,GAAG,CAAC;IACxB,IAAI6P,QAAQ,KAAK,CAAC,EAClB;AACI,MAAA,OAAO,CAAEpa,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,EAAE2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,CAAE;AAC3D,IAAA;IACA,IAAI+jB,QAAQ,KAAK,CAAC,EAClB;AACI,MAAA,OAAO,CAAEpa,SAAS,CAAC3J,MAAM,CAAC,EAAE2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,CAAE;AACvD,IAAA;AACA,IAAA,OAAO,CAAE2J,SAAS,CAAC3J,MAAM,CAAC,EAAE2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,CAAE;AACvD,EAAA,CAAC,CAAC;AACN;AAEA,SAAS2jB,oBAAoBA,CAAChD,OAAO,EAAEhX,SAAS,EAChD;EACI,MAAME,MAAM,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAC1B,EAAA,KAAK,IAAIzI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuf,OAAO,CAAC/jB,MAAM,EAAEwE,CAAC,EAAE,EACvC;AACI,IAAA,MACIoiB,OAAO,GAAG7C,OAAO,CAACvf,CAAC,CAAC,GAAG,CAAC;AACxB8c,MAAAA,IAAI,GAAGyC,OAAO,CAAC,CAACvf,CAAC,GAAG,CAAC,IAAIuf,OAAO,CAAC/jB,MAAM,CAAC,GAAG,CAAC;AAC5ConB,MAAAA,EAAE,GAAGra,SAAS,CAAC6Z,OAAO,CAAC;AACvBS,MAAAA,EAAE,GAAGta,SAAS,CAAC6Z,OAAO,GAAG,CAAC,CAAC;AAC3BU,MAAAA,EAAE,GAAGva,SAAS,CAAC6Z,OAAO,GAAG,CAAC,CAAC;AAC3BW,MAAAA,EAAE,GAAGxa,SAAS,CAACuU,IAAI,CAAC;AACpBkG,MAAAA,EAAE,GAAGza,SAAS,CAACuU,IAAI,GAAG,CAAC,CAAC;AACxBmG,MAAAA,EAAE,GAAG1a,SAAS,CAACuU,IAAI,GAAG,CAAC,CAAC;AAE5BrU,IAAAA,MAAM,CAAC,CAAC,CAAC,IAAI,CAACoa,EAAE,GAAGG,EAAE,KAAKF,EAAE,GAAGG,EAAE,CAAC;AAClCxa,IAAAA,MAAM,CAAC,CAAC,CAAC,IAAI,CAACqa,EAAE,GAAGG,EAAE,KAAKL,EAAE,GAAGG,EAAE,CAAC;AAClCta,IAAAA,MAAM,CAAC,CAAC,CAAC,IAAI,CAACma,EAAE,GAAGG,EAAE,KAAKF,EAAE,GAAGG,EAAE,CAAC;AACtC,EAAA;AACA,EAAA,OAAOva,MAAM;AACjB;AAEA,SAASsZ,YAAYA,CAACmB,MAAM,EAC5B;EACI,IAAIpB,IAAI,GAAG,CAAC;AACZ,EAAA,KAAK,IAAI9hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkjB,MAAM,CAAC1nB,MAAM,EAAEwE,CAAC,EAAE,EACtC;AACI,IAAA,MACIoiB,OAAO,GAAGc,MAAM,CAACljB,CAAC,CAAC;MACnB8c,IAAI,GAAGoG,MAAM,CAAC,CAACljB,CAAC,GAAG,CAAC,IAAIkjB,MAAM,CAAC1nB,MAAM,CAAC;AAE1CsmB,IAAAA,IAAI,IAAIM,OAAO,CAAC,CAAC,CAAC,GAAGtF,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAGsF,OAAO,CAAC,CAAC,CAAC;AACvD,EAAA;EACA,OAAON,IAAI,GAAG,GAAG;AACrB;AAEA,SAASO,OAAOA,CAACF,QAAQ,EAAEC,OAAO,EAAEtF,IAAI,EAAE7X,SAAS,EAAEie,MAAM,EAAEpB,IAAI,EACjE;AACI,EAAA,MAAMqB,KAAK,GAAGC,OAAO,CAACF,MAAM,CAACf,QAAQ,CAAC,EAAEe,MAAM,CAACd,OAAO,CAAC,EAAEc,MAAM,CAACpG,IAAI,CAAC,CAAC;AACtE,EAAA,IAAIgF,IAAI,GAAG,CAAC,GAAGqB,KAAK,IAAIzvB,qBAAqB,GAAGyvB,KAAK,IAAI,CAACzvB,qBAAqB,EAC/E;AACI,IAAA,OAAO,KAAK;AAChB,EAAA;AAEA,EAAA,KAAK,MAAM2vB,UAAU,IAAIpe,SAAS,EAClC;IACI,IAAIoe,UAAU,KAAKlB,QAAQ,IAAIkB,UAAU,KAAKjB,OAAO,IAAIiB,UAAU,KAAKvG,IAAI,EAC5E;AACI,MAAA;AACJ,IAAA;IACA,IAAIwG,iBAAiB,CAACJ,MAAM,CAACG,UAAU,CAAC,EAAEH,MAAM,CAACf,QAAQ,CAAC,EAAEe,MAAM,CAACd,OAAO,CAAC,EAAEc,MAAM,CAACpG,IAAI,CAAC,CAAC,EAC1F;AACI,MAAA,OAAO,KAAK;AAChB,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,IAAI;AACf;AAEA,SAASkF,iBAAiBA,CAACkB,MAAM,EAAEpB,IAAI,EACvC;AACI,EAAA,KAAK,IAAI9hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkjB,MAAM,CAAC1nB,MAAM,EAAEwE,CAAC,EAAE,EACtC;AACI,IAAA,MAAMmjB,KAAK,GAAGC,OAAO,CAACF,MAAM,CAACljB,CAAC,CAAC,EAAEkjB,MAAM,CAAC,CAACljB,CAAC,GAAG,CAAC,IAAIkjB,MAAM,CAAC1nB,MAAM,CAAC,EAAE0nB,MAAM,CAAC,CAACljB,CAAC,GAAG,CAAC,IAAIkjB,MAAM,CAAC1nB,MAAM,CAAC,CAAC;IAClG,IAAI2J,IAAI,CAACoY,GAAG,CAAC4F,KAAK,CAAC,IAAIzvB,qBAAqB,EAC5C;AACI,MAAA;AACJ,IAAA;AACA,IAAA,IAAIouB,IAAI,GAAG,CAAC,GAAGqB,KAAK,GAAG,CAACzvB,qBAAqB,GAAGyvB,KAAK,GAAGzvB,qBAAqB,EAC7E;AACI,MAAA,OAAO,KAAK;AAChB,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,IAAI;AACf;AAEA,SAAS0vB,OAAOA,CAACze,CAAC,EAAEC,CAAC,EAAEmY,CAAC,EACxB;AACI,EAAA,OAAO,CAACnY,CAAC,CAAC,CAAC,CAAC,GAAGD,CAAC,CAAC,CAAC,CAAC,KAAKoY,CAAC,CAAC,CAAC,CAAC,GAAGpY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAACC,CAAC,CAAC,CAAC,CAAC,GAAGD,CAAC,CAAC,CAAC,CAAC,KAAKoY,CAAC,CAAC,CAAC,CAAC,GAAGpY,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE;AAEA,SAAS2e,iBAAiBA,CAAC7I,KAAK,EAAE9V,CAAC,EAAEC,CAAC,EAAEmY,CAAC,EACzC;EACI,MACIwG,EAAE,GAAGH,OAAO,CAACze,CAAC,EAAEC,CAAC,EAAE6V,KAAK,CAAC;IACzB+I,EAAE,GAAGJ,OAAO,CAACxe,CAAC,EAAEmY,CAAC,EAAEtC,KAAK,CAAC;IACzBgJ,EAAE,GAAGL,OAAO,CAACrG,CAAC,EAAEpY,CAAC,EAAE8V,KAAK,CAAC;AACzBiJ,IAAAA,WAAW,GAAGH,EAAE,GAAG,CAAC7vB,qBAAqB,IAAI8vB,EAAE,GAAG,CAAC9vB,qBAAqB,IAAI+vB,EAAE,GAAG,CAAC/vB,qBAAqB;IACvGiwB,WAAW,GAAGJ,EAAE,GAAG7vB,qBAAqB,IAAI8vB,EAAE,GAAG9vB,qBAAqB,IAAI+vB,EAAE,GAAG/vB,qBAAqB;AAExG,EAAA,OAAO,EAAEgwB,WAAW,IAAIC,WAAW,CAAC;AACxC;AAEA,SAASrC,aAAaA,CAACL,MAAM,EAAEC,WAAW,EAAEpmB,IAAI,EAChD;AACI,EAAA,IAAIumB,KAAK,GAAGH,WAAW,CAAC5V,GAAG,CAACxQ,IAAI,CAAC;EACjC,IAAI,CAACumB,KAAK,EACV;AACIA,IAAAA,KAAK,GAAG;MAAEvmB,IAAI;AAAE2mB,MAAAA,aAAa,EAAE,CAAC;AAAED,MAAAA,KAAK,EAAE;KAAI;AAC7CN,IAAAA,WAAW,CAACnS,GAAG,CAACjU,IAAI,EAAEumB,KAAK,CAAC;AAC5BJ,IAAAA,MAAM,CAAC/jB,IAAI,CAACmkB,KAAK,CAAC;AACtB,EAAA;AACA,EAAA,OAAOA,KAAK;AAChB;AAEA,SAASzX,wBAAwBA,CAAC1P,QAAQ,EAAEkN,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAEgqB,YAAY,EACzF;EACI,MAAMC,aAAa,GAAGC,qBAAqB,CAAC5pB,QAAQ,EAAEkN,KAAK,EAAE1N,WAAW,EAAEE,WAAW,CAAC;AACtF,EAAA,IAAI,CAACiqB,aAAa,CAACroB,MAAM,EACzB;IACI,OAAO,IAAI3J,KAAK,CAAC+xB,YAAY,CAAC,CAAC5f,IAAI,CAAC,SAAS,CAAC;AAClD,EAAA;EAEA,MAAMpJ,KAAK,GAAGnB,aAAa,CAACS,QAAQ,CAACQ,IAAI,CAACC,QAAQ,EAAE,sBAAsB,CAAC;EAC3E,IAAI,CAACC,KAAK,EACV;AACI,IAAA,OAAO,IAAI/I,KAAK,CAAC+xB,YAAY,CAAC,CAAC5f,IAAI,CAAC6f,aAAa,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AACtE,EAAA;AAEA,EAAA,MACI3oB,OAAO,GAAG/F,MAAM,CAACgG,sBAAsB,CAACP,KAAK,EAAE,wBAAwB,CAAC,IAAI,SAAS,CAAC;IACtFmpB,SAAS,GAAG/nB,cAAc,CAACpB,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE;AACpDgU,IAAAA,KAAK,GAAG,EAAE;EAEd,KAAK,IAAI5O,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4jB,YAAY,EAAE5jB,CAAC,EAAE,EACrC;AACI,IAAA,MAAMgkB,IAAI,GAAG9oB,OAAO,KAAK,WAAW,GAC9BwR,aAAa,CAACqX,SAAS,CAAC/jB,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,GAC7C0M,aAAa,CAACqX,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;AACnDnV,IAAAA,KAAK,CAAC1R,IAAI,CAAC8mB,IAAI,IAAI,CAAC,GAAGH,aAAa,CAACG,IAAI,CAAC,IAAI,CAAA,SAAA,EAAYA,IAAI,CAAA,CAAE,GAAG,SAAS,CAAC;AACjF,EAAA;AAEA,EAAA,OAAOpV,KAAK;AAChB;AAEA,SAASkV,qBAAqBA,CAAC5pB,QAAQ,EAAEkN,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EACxE;EACI,MAAMmqB,SAAS,GAAG,CACd,GAAGzoB,qBAAqB,CAAC8L,KAAK,EAAE1N,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,EACrE,GAAG0B,qBAAqB,CAACpB,QAAQ,EAAER,WAAW,EAAEE,WAAW,EAAE,UAAU,CAAC,CAC3E;AACD,EAAA,MAAMkb,IAAI,GAAG,IAAI/iB,GAAG,EAAE;EACtB,MAAM6c,KAAK,GAAG,EAAE;AAEhB,EAAA,KAAK,MAAMqV,QAAQ,IAAIF,SAAS,EAChC;IACI,IAAIjP,IAAI,CAAChgB,GAAG,CAACmvB,QAAQ,CAACrvB,GAAG,CAAC,EAC1B;AACI,MAAA;AACJ,IAAA;AACAkgB,IAAAA,IAAI,CAAChG,GAAG,CAACmV,QAAQ,CAACrvB,GAAG,CAAC;AACtBga,IAAAA,KAAK,CAAC1R,IAAI,CAAC+mB,QAAQ,CAACnpB,IAAI,IAAI,CAAA,SAAA,EAAY8T,KAAK,CAACpT,MAAM,CAAA,CAAE,CAAC;AAC3D,EAAA;AAEA,EAAA,OAAOoT,KAAK;AAChB;AAEA,SAASxE,eAAeA,CAAClQ,QAAQ,EAAEkN,KAAK,EACxC;EACI,OAAOA,KAAK,EAAEtM,IAAI,IAAIZ,QAAQ,CAACY,IAAI,IAAI,UAAU;AACrD;AAEA,SAAS2P,eAAeA,CAACyJ,QAAQ,EAAEtX,QAAQ,GAAG,EAAE,EAChD;EACI,OAAO;IACHsX,QAAQ;AACRxJ,IAAAA,WAAW,EAAE9N,QAAQ,CAAC8N,WAAW,IAAI,EAAE;AACvCnB,IAAAA,OAAO,EAAE3M,QAAQ,CAAC2M,OAAO,IAAI,EAAE;AAC/Bd,IAAAA,MAAM,EAAE7L,QAAQ,CAAC6L,MAAM,IAAI,EAAE;AAC7BK,IAAAA,SAAS,EAAElM,QAAQ,CAACkM,SAAS,IAAI,EAAE;AACnCE,IAAAA,SAAS,EAAEpM,QAAQ,CAACoM,SAAS,IAAI,EAAE;AACnCC,IAAAA,MAAM,EAAErM,QAAQ,CAACqM,MAAM,IAAI,EAAE;AAC7BQ,IAAAA,QAAQ,EAAE7M,QAAQ,CAAC6M,QAAQ,IAAI,EAAE;AACjCkB,IAAAA,WAAW,EAAE/N,QAAQ,CAAC+N,WAAW,IAAI;GACxC;AACL;AAEA,SAASR,aAAaA,CAAC5B,SAAS,EAChC;AACI,EAAA,IAAI,CAACA,SAAS,CAAC/M,MAAM,EACrB;IACI,OAAO;AAAE6O,MAAAA,SAAS,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAAEC,MAAAA,SAAS,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KAAI;AAC7D,EAAA;AAEA,EAAA,MACID,SAAS,GAAG,CAAE9B,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAE;AACxD+B,IAAAA,SAAS,GAAG,CAAE/B,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAE;AAE5D,EAAA,KAAK,IAAIvI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuI,SAAS,CAAC/M,MAAM,EAAEwE,CAAC,IAAI,CAAC,EAC5C;IACI,KAAK,IAAI+c,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;AACI,MAAA,MAAM7e,KAAK,GAAGqK,SAAS,CAACvI,CAAC,GAAG+c,CAAC,CAAC;AAC9B,MAAA,IAAI7e,KAAK,GAAGmM,SAAS,CAAC0S,CAAC,CAAC,EACxB;AACI1S,QAAAA,SAAS,CAAC0S,CAAC,CAAC,GAAG7e,KAAK;AACxB,MAAA;AACA,MAAA,IAAIA,KAAK,GAAGoM,SAAS,CAACyS,CAAC,CAAC,EACxB;AACIzS,QAAAA,SAAS,CAACyS,CAAC,CAAC,GAAG7e,KAAK;AACxB,MAAA;AACJ,IAAA;AACJ,EAAA;EAEA,OAAO;IAAEmM,SAAS;AAAEC,IAAAA;GAAW;AACnC;AAEA,SAAS3S,UAAUA,CAAC6H,IAAI,EAAEnN,OAAO,EAAE6xB,gBAAgB,GAAG,EAAE,EACxD;AACI,EAAA,MAAMC,gBAAgB,GAAGC,sBAAsB,CAAC/xB,OAAO,EAAE6xB,gBAAgB,CAAC;EAC1E,OAAOG,OAAO,CAAC,MAAM,EAAE;IACnB/c,wBAAwB,EAAE9H,IAAI,CAAC8H,wBAAwB;IACvDC,gBAAgB,EAAE/H,IAAI,CAAC+H,gBAAgB;AACvCN,IAAAA,MAAM,EAAEzH,IAAI,CAACyH,MAAM,CAAC3I,GAAG,CAACuQ,IAAI,IAAIwV,OAAO,CAAC,MAAM,EAAE;MAC5CvpB,IAAI,EAAE+T,IAAI,CAAC/T,IAAI;AACfkP,MAAAA,YAAY,EAAE6E,IAAI,CAAC7E,YAAY,CAAC1L,GAAG,CAACgO,MAAM,IAAI+X,OAAO,CAAC,aAAa,EAAE/X,MAAM,EAAE6X,gBAAgB,CAAC,CAAC;MAC/F9Z,SAAS,EAAEwE,IAAI,CAACxE,SAAS;MACzBC,SAAS,EAAEuE,IAAI,CAACvE,SAAS;AACzBC,MAAAA,YAAY,EAAEsE,IAAI,CAACtE,YAAY,CAACjM,GAAG,CAACgmB,OAAO,IAAID,OAAO,CAAC,aAAa,EAAEC,OAAO,EAAEH,gBAAgB,CAAC,CAAC;MACjG3Z,MAAM,EAAEqE,IAAI,CAACrE,MAAM;AACnBX,MAAAA,OAAO,EAAEgF,IAAI,CAAChF,OAAO,CAACvL,GAAG,CAAC+iB,KAAK,IAAIgD,OAAO,CAAC,YAAY,EAAEhD,KAAK,EAAE8C,gBAAgB,CAAC;KACpF,EAAEA,gBAAgB,CAAC,CAAC;AACrB3c,IAAAA,MAAM,EAAEhI,IAAI,CAACgI,MAAM,CAAClJ,GAAG,CAAC2a,KAAK,IAAIsL,eAAe,CAACtL,KAAK,EAAEkL,gBAAgB,CAAC,CAAC;IAC1Etc,UAAU,EAAErI,IAAI,CAACqI;AACrB,GAAC,EAAEsc,gBAAgB,EAAED,gBAAgB,CAAC;AAC1C;AAEA,SAASK,eAAeA,CAACtL,KAAK,EAAE5mB,OAAO,EACvC;EACI,OAAOgyB,OAAO,CAAC,OAAO,EAAE;AACpB,IAAA,GAAGpL,KAAK;AACRtR,IAAAA,QAAQ,EAAE6c,kBAAkB,CAACvL,KAAK,CAACtR,QAAQ,EAAEtV,OAAO;GACvD,EAAEA,OAAO,CAAC;AACf;AAEA,SAASmyB,kBAAkBA,CAAC7c,QAAQ,EAAEtV,OAAO,EAC7C;EACI,OAAOgyB,OAAO,CAAC,UAAU,EAAE;AACvB,IAAA,GAAG1c,QAAQ;AACXqH,IAAAA,KAAK,EAAErH,QAAQ,CAACqH,KAAK,CAAC1Q,GAAG,CAACzC,IAAI,IAAIwoB,OAAO,CAAC,MAAM,EAAExoB,IAAI,EAAExJ,OAAO,CAAC;GACnE,EAAEA,OAAO,CAAC;AACf;AAEA,SAAS0F,kBAAkBA,CAACyH,IAAI,EAChC;EACI,OAAO;AACH/B,IAAAA,OAAO,EAAE,CAAC;AACV3G,IAAAA,QAAQ,EAAE2tB,gBAAgB,CAACjlB,IAAI,CAAC;AAChCyH,IAAAA,MAAM,EAAE,CAACzH,IAAI,CAACyH,MAAM,IAAI,EAAE,EAAE3I,GAAG,CAACuQ,IAAI,IAAI6V,YAAY,CAAC7V,IAAI,CAAC,CAAC;AAC3DnH,IAAAA,SAAS,EAAElI,IAAI,CAACkI,SAAS,IAAI,EAAE;AAC/BG,IAAAA,UAAU,EAAErI,IAAI,CAACsI,aAAa,IAAI;GACrC;AACL;AAEA,SAAS2c,gBAAgBA,CAACjlB,IAAI,EAC9B;EACI,MACIrN,MAAM,GAAGgD,MAAM,CAACqK,IAAI,CAAC+H,gBAAgB,IAAI,EAAE,CAAC;AAC5C/I,IAAAA,OAAO,GAAG,EAAE;AAEhB,EAAA,IAAIrM,MAAM,IAAIA,MAAM,KAAK,QAAQ,EACjC;IACIqM,OAAO,CAACtB,IAAI,CAAC;AAAEtI,MAAAA,GAAG,EAAE,QAAQ;AAAEsJ,MAAAA,KAAK,EAAE/L;AAAO,KAAC,CAAC;AAClD,EAAA;EAEAqM,OAAO,CAACtB,IAAI,CACR;AAAEtI,IAAAA,GAAG,EAAE,cAAc;AAAEsJ,IAAAA,KAAK,EAAE;AAAM,GAAC,EACrC;AAAEtJ,IAAAA,GAAG,EAAE,WAAW;AAAEsJ,IAAAA,KAAK,EAAE;AAAe,GAC9C,CAAC;EAED,OAAO;AAAEM,IAAAA;GAAS;AACtB;AAEA,SAASkmB,YAAYA,CAAC7V,IAAI,EAC1B;AACI,EAAA,MACIrE,MAAM,GAAGqE,IAAI,CAACrE,MAAM,IAAI,EAAE;AAC1BX,IAAAA,OAAO,GAAGgF,IAAI,CAAChF,OAAO,IAAI,EAAE;AAC5BU,IAAAA,YAAY,GAAG,CAACsE,IAAI,CAACtE,YAAY,IAAI,EAAE,EAAEjM,GAAG,CAACgmB,OAAO,IAAIK,mBAAmB,CAACL,OAAO,CAAC,CAAC;AACrFta,IAAAA,YAAY,GAAG4a,oBAAoB,CAAC/V,IAAI,CAAC;AACzCgW,IAAAA,KAAK,GAAGhb,OAAO,CAACvL,GAAG,CAAC+iB,KAAK,IAAIyD,gBAAgB,CAACzD,KAAK,EAAExS,IAAI,EAAE7E,YAAY,CAAC,CAAC;AACzE+a,IAAAA,MAAM,GAAGC,oBAAoB,CAACxa,MAAM,CAAC;IACrCkD,WAAW,GAAGqX,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG5f,IAAI,CAAC8f,KAAK,CAAC,CAACza,MAAM,CAAC0J,QAAQ,IAAI,EAAE,EAAE1Y,MAAM,GAAG,CAAC,CAAC;EAEnF,OAAO;AACHV,IAAAA,IAAI,EAAE+T,IAAI,CAAC/T,IAAI,IAAI,EAAE;AACrBoqB,IAAAA,IAAI,EAAEC,YAAY,CAAC3a,MAAM,CAAC;AAC1B4a,IAAAA,IAAI,EAAE,CAAE;AACJC,MAAAA,EAAE,EAAE;AAAEvS,QAAAA,KAAK,EAAE,CAAC;AAAElU,QAAAA,MAAM,EAAE,CAAC;QAAEkT,IAAI,EAAEpE,WAAW,GAAGqX,MAAM;AAAEA,QAAAA;OAAQ;AAC/DO,MAAAA,EAAE,EAAE;AAAExS,QAAAA,KAAK,EAAE,CAAC;AAAElU,QAAAA,MAAM,EAAE,CAAC;QAAEkT,IAAI,EAAEyT,eAAe,CAAC1b,OAAO,CAAC,GAAG2b,gBAAgB,CAAC3b,OAAO,CAAC;QAAEkb,MAAM,EAAES,gBAAgB,CAAC3b,OAAO;OAAG;MAC1Hgb,KAAK,EAAEhb,OAAO,CAACvL,GAAG,CAAC,CAAC+iB,KAAK,EAAEvO,KAAK,MAAM;AAClC2S,QAAAA,YAAY,EAAEC,aAAa,CAAC7b,OAAO,EAAEiJ,KAAK,CAAC;AAC3C6S,QAAAA,YAAY,EAAExgB,IAAI,CAAC8f,KAAK,CAAC,CAAC5D,KAAK,CAACG,KAAK,IAAI,EAAE,EAAEhmB,MAAM,GAAG,CAAC;AAC3D,OAAC,CAAC,CAAC;MACHwO,YAAY,EAAEA,YAAY,CAACob,IAAI;AAC/BQ,MAAAA,SAAS,EAAE,UAAU;MACrBpb,MAAM;AACNX,MAAAA;AACJ,KAAC,CAAE;IACHgb,KAAK;IACLta,YAAY;AACZP,IAAAA,YAAY,EAAE;MACVkb,IAAI,EAAElb,YAAY,CAACkb,IAAI;MACvB/Y,OAAO,EAAEnC,YAAY,CAACmC;KACzB;AACD0Z,IAAAA,WAAW,EAAE,EAAE;AACf3b,IAAAA,MAAM,EAAE4b,SAAS,CAACjX,IAAI,CAAC;AACvBkX,IAAAA,kBAAkB,EAAE;AAChBvZ,MAAAA,QAAQ,EAAE,EAAE;AACZ3C,MAAAA,OAAO,EAAE,EAAE;AACXK,MAAAA,MAAM,EAAE;AAAE9E,QAAAA,GAAG,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAAEK,QAAAA,GAAG,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAAG;KAChD;AACDugB,IAAAA,QAAQ,EAAE,cAAc;AACxBre,IAAAA,QAAQ,EAAEkH,IAAI,CAAClH,QAAQ,IAAI,IAAI;IAC/B6C,MAAM;AACNX,IAAAA;GACH;AACL;AAEA,SAASib,gBAAgBA,CAACzD,KAAK,EAAExS,IAAI,EAAE7E,YAAY,EACnD;AACI,EAAA,MAAMgF,KAAK,GAAGiX,iBAAiB,CAAC5E,KAAK,EAAExS,IAAI,CAACrE,MAAM,IAAI,EAAE,CAAC;EACzD,OAAO;AACH1P,IAAAA,IAAI,EAAEumB,KAAK,CAACvmB,IAAI,IAAI,EAAE;AACtBoP,IAAAA,MAAM,EAAEgc,aAAa,CAAC7E,KAAK,EAAExS,IAAI,CAAC;IAClCG,KAAK;AACLmX,IAAAA,eAAe,EAAEnX,KAAK,CAACxT,MAAM,GAAG,CAAC;AACjC4qB,IAAAA,sBAAsB,EAAEC,+BAA+B,CAAChF,KAAK,EAAExS,IAAI,CAACrE,MAAM,IAAI,EAAE,EAAER,YAAY,CAACob,IAAI;GACtG;AACL;AAEA,SAASa,iBAAiBA,CAAC5E,KAAK,EAAE7W,MAAM,EACxC;AACI,EAAA,MACI8b,WAAW,GAAG9b,MAAM,CAACE,WAAW,IAAI,EAAE;AACtC6b,IAAAA,WAAW,GAAG/b,MAAM,CAACG,WAAW,IAAI,EAAE;AACtC6b,IAAAA,UAAU,GAAG7a,cAAc,CAAC4a,WAAW,CAAC;AACxCvX,IAAAA,KAAK,GAAG,IAAIjd,GAAG,EAAE;AAErB,EAAA,IAAI,CAAC4Z,cAAc,CAAC2a,WAAW,CAAC,EAChC;AACI,IAAA,OAAO,EAAE;AACb,EAAA;EAEA,KAAK,MAAM5Q,WAAW,IAAI2L,KAAK,CAACG,KAAK,IAAI,EAAE,EAC3C;AACI,IAAA,MAAM5iB,MAAM,GAAG8W,WAAW,GAAG,CAAC;IAC9B,KAAK,IAAI1V,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAC1B;AACI,MAAA,MAAMrD,MAAM,GAAG6pB,UAAU,GAAGD,WAAW,CAAC3nB,MAAM,GAAGoB,CAAC,CAAC,IAAI,CAAC,GAAGA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;MAC1E,IAAIrD,MAAM,GAAG,CAAC,EACd;QACIqS,KAAK,CAACF,GAAG,CAACwX,WAAW,CAAC1nB,MAAM,GAAGoB,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,MAAA;AACJ,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOnO,KAAK,CAACC,IAAI,CAACkd,KAAK,CAAC;AAC5B;AAEA,SAASqX,+BAA+BA,CAAChF,KAAK,EAAErV,UAAU,EAAEya,SAAS,EACrE;AACI,EAAA,MAAM1a,aAAa,GAAGC,UAAU,CAACkI,QAAQ,IAAI,EAAE;AAC/C,EAAA,KAAK,MAAMwS,GAAG,IAAID,SAAS,EAC3B;IACI,MAAMle,SAAS,GAAGme,GAAG,CAAClc,MAAM,EAAE0J,QAAQ,IAAI,EAAE;IAC5C,KAAK,MAAMwB,WAAW,IAAI2L,KAAK,CAACG,KAAK,IAAI,EAAE,EAC3C;AACI,MAAA,MAAM5iB,MAAM,GAAG8W,WAAW,GAAG,CAAC;AAC9B,MAAA,IACInN,SAAS,CAAC3J,MAAM,CAAC,KAAKmN,aAAa,CAACnN,MAAM,CAAC,IAC3C2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,KAAKmN,aAAa,CAACnN,MAAM,GAAG,CAAC,CAAC,IACnD2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,KAAKmN,aAAa,CAACnN,MAAM,GAAG,CAAC,CAAC,EAEvD;AACI,QAAA,OAAO,IAAI;AACf,MAAA;AACJ,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,KAAK;AAChB;AAEA,SAASgmB,oBAAoBA,CAAC/V,IAAI,EAClC;AACI,EAAA,MAAM1C,OAAO,GAAG0C,IAAI,CAAC7E,YAAY,IAAI,EAAE;AACvC,EAAA,IAAI,CAACmC,OAAO,CAAC3Q,MAAM,EACnB;IACI,OAAO;AAAE0pB,MAAAA,IAAI,EAAE,EAAE;AAAE/Y,MAAAA,OAAO,EAAE,EAAE;AAAEiZ,MAAAA,IAAI,EAAE;KAAI;AAC9C,EAAA;AAEA,EAAA,MACIuB,cAAc,GAAGxa,OAAO,CAAC7N,GAAG,CAACgO,MAAM,IAAIA,MAAM,CAAC9B,MAAM,IAAI,EAAE,CAAC;AAC3D0a,IAAAA,IAAI,GAAG0B,wBAAwB,CAACD,cAAc,CAAC;AAC/C5B,IAAAA,MAAM,GAAG8B,sBAAsB,CAAC3B,IAAI,CAAC;EAEzC,OAAO;IACHA,IAAI;AACJ/Y,IAAAA,OAAO,EAAEA,OAAO,CAAC7N,GAAG,CAACgO,MAAM,KAAK;AAC5BxR,MAAAA,IAAI,EAAEwR,MAAM,CAACxR,IAAI,IAAI,EAAE;MACvBmS,eAAe,EAAEX,MAAM,CAACW,eAAe,IAAIC,sBAAsB,CAAC2B,IAAI,CAACrE,MAAM,EAAE0J,QAAQ,IAAI,EAAE,EAAE5H,MAAM,CAAC9B,MAAM,EAAE0J,QAAQ,IAAI,EAAE;AAChI,KAAC,CAAC,CAAC;AACHkR,IAAAA,IAAI,EAAEjZ,OAAO,CAAC7N,GAAG,CAACgO,MAAM,IACxB;AACI,MAAA,MACIwa,WAAW,GAAGxa,MAAM,CAAC9B,MAAM,IAAI,EAAE;AACjCkD,QAAAA,WAAW,GAAGvI,IAAI,CAAC8f,KAAK,CAAC,CAAC6B,WAAW,CAAC5S,QAAQ,IAAI,EAAE,EAAE1Y,MAAM,GAAG,CAAC,CAAC;MAErE,OAAO;AACH6pB,QAAAA,EAAE,EAAE;AAAEvS,UAAAA,KAAK,EAAE,CAAC;AAAElU,UAAAA,MAAM,EAAE,CAAC;UAAEkT,IAAI,EAAEpE,WAAW,GAAGqX,MAAM;AAAEA,UAAAA;SAAQ;AAC/Dva,QAAAA,MAAM,EAAEuc,yBAAyB,CAACD,WAAW,EAAE5B,IAAI,EAAExX,WAAW;OACnE;IACL,CAAC;GACJ;AACL;AAEA,SAASiX,mBAAmBA,CAACL,OAAO,EACpC;EACI,OAAO;AACHxpB,IAAAA,IAAI,EAAEwpB,OAAO,CAACxpB,IAAI,IAAI,EAAE;AACxBoP,IAAAA,MAAM,EAAE;AACJ9E,MAAAA,GAAG,EAAEkf,OAAO,CAACja,SAAS,IAAIia,OAAO,CAACpa,MAAM,EAAE9E,GAAG,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAC5DK,MAAAA,GAAG,EAAE6e,OAAO,CAACha,SAAS,IAAIga,OAAO,CAACpa,MAAM,EAAEzE,GAAG,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9D;GACH;AACL;AAEA,SAAS0f,YAAYA,CAAC3a,MAAM,EAC5B;AACI,EAAA,OAAOoc,wBAAwB,CAAC,CAAEpc,MAAM,CAAE,CAAC;AAC/C;AAEA,SAASoc,wBAAwBA,CAACpa,QAAQ,EAC1C;EACI,MAAM0Y,IAAI,GAAG,EAAE;EACf,IAAItmB,MAAM,GAAG,CAAC;AACd,EAAA,KAAK,MAAM9B,OAAO,IAAI/I,mBAAmB,EACzC;AACI,IAAA,MAAM,CAAE+G,IAAI,EAAEksB,KAAK,EAAErB,YAAY,EAAEsB,UAAU,GAAG,CAAC,EAAE9oB,IAAI,GAAG,SAAS,CAAE,GAAGrB,OAAO;AAC/E,IAAA,IAAI,CAAC0P,QAAQ,CAACmJ,IAAI,CAACnL,MAAM,IAAImB,cAAc,CAACnB,MAAM,CAAC1P,IAAI,CAAC,CAAC,CAAC,EAC1D;AACI,MAAA;AACJ,IAAA;IACAoqB,IAAI,CAAChoB,IAAI,CAAC;MAAE8pB,KAAK;MAAEC,UAAU;MAAE9oB,IAAI;MAAEwnB,YAAY;AAAE/mB,MAAAA;AAAO,KAAC,CAAC;AAC5DA,IAAAA,MAAM,IAAI+mB,YAAY,GAAGuB,kBAAkB,CAAC/oB,IAAI,CAAC;AACrD,EAAA;AACA,EAAA,OAAO+mB,IAAI;AACf;AAEA,SAAS6B,yBAAyBA,CAACvc,MAAM,EAAE0a,IAAI,EAAExX,WAAW,EAC5D;AACI,EAAA,MAAMyZ,UAAU,GAAG;IAAE,GAAG3c;GAAQ;AAChC,EAAA,KAAK,MAAM1N,OAAO,IAAI/I,mBAAmB,EACzC;AACI,IAAA,MAAM,CAAE+G,IAAI,EAAEksB,KAAK,EAAErB,YAAY,EAAEsB,UAAU,GAAG,CAAC,CAAE,GAAGnqB,OAAO;AAC7D,IAAA,IAAI,CAACooB,IAAI,CAACvP,IAAI,CAACyR,OAAO,IAAIA,OAAO,CAACJ,KAAK,KAAKA,KAAK,IAAII,OAAO,CAACH,UAAU,KAAKA,UAAU,CAAC,EACvF;AACI,MAAA;AACJ,IAAA;IACA,IAAI,CAACtb,cAAc,CAACwb,UAAU,CAACrsB,IAAI,CAAC,CAAC,EACrC;AACIqsB,MAAAA,UAAU,CAACrsB,IAAI,CAAC,GAAG,IAAIjJ,KAAK,CAAC6b,WAAW,GAAGiY,YAAY,CAAC,CAAC3hB,IAAI,CAAC,CAAC,CAAC;AACpE,IAAA;AACJ,EAAA;AACA,EAAA,OAAOmjB,UAAU;AACrB;AAEA,SAASnC,oBAAoBA,CAACxa,MAAM,EACpC;AACI,EAAA,OAAOqc,sBAAsB,CAAC1B,YAAY,CAAC3a,MAAM,CAAC,CAAC;AACvD;AAEA,SAASqc,sBAAsBA,CAAC3B,IAAI,EACpC;AACI,EAAA,OAAOA,IAAI,CAAC7P,MAAM,CAAC,CAAC0P,MAAM,EAAEqC,OAAO,KAAKjiB,IAAI,CAACM,GAAG,CAACsf,MAAM,EAAEqC,OAAO,CAACxoB,MAAM,GAAGwoB,OAAO,CAACzB,YAAY,GAAGuB,kBAAkB,CAACE,OAAO,CAACjpB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1I;AAEA,SAAS+oB,kBAAkBA,CAAC/oB,IAAI,EAChC;AACI,EAAA,OAAOA,IAAI,KAAK,SAAS,GAAG,CAAC,GAAGA,IAAI,CAACrI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/D;AAEA,SAASyvB,eAAeA,CAAC1b,OAAO,EAChC;EACI,OAAOA,OAAO,CAACwL,MAAM,CAAC,CAACD,KAAK,EAAEiM,KAAK,KAAKjM,KAAK,IAAIiM,KAAK,CAACG,KAAK,EAAEhmB,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAClF;AAEA,SAASgqB,gBAAgBA,CAAC3b,OAAO,EACjC;AACI,EAAA,OAAOA,OAAO,CAAC8L,IAAI,CAAC0L,KAAK,IAAIA,KAAK,CAACI,aAAa,KAAK,CAAC,IAAI,CAACJ,KAAK,CAACG,KAAK,IAAI,EAAE,EAAE7L,IAAI,CAAC7C,KAAK,IAAIA,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACxH;AAEA,SAAS4S,aAAaA,CAAC7b,OAAO,EAAEwd,SAAS,EACzC;EACI,IAAIC,KAAK,GAAG,CAAC;EACb,KAAK,IAAItnB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqnB,SAAS,EAAErnB,CAAC,EAAE,EAClC;AACIsnB,IAAAA,KAAK,IAAIniB,IAAI,CAAC8f,KAAK,CAAC,CAACpb,OAAO,CAAC7J,CAAC,CAAC,CAACwhB,KAAK,IAAI,EAAE,EAAEhmB,MAAM,GAAG,CAAC,CAAC;AAC5D,EAAA;AACA,EAAA,OAAO8rB,KAAK;AAChB;AAEA,SAASxB,SAASA,CAACjX,IAAI,EACvB;EACI,OAAO;IACHzJ,GAAG,EAAEyJ,IAAI,CAACxE,SAAS,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;IAClC5E,GAAG,EAAEoJ,IAAI,CAACvE,SAAS,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC;GACnC;AACL;AAEA,SAAS4b,aAAaA,CAAC7E,KAAK,EAAExS,IAAI,EAClC;EACI,MACItG,SAAS,GAAGsG,IAAI,CAACrE,MAAM,EAAE0J,QAAQ,IAAI,EAAE;AACvCqT,IAAAA,aAAa,GAAG,EAAE;EAEtB,KAAK,MAAM7R,WAAW,IAAI2L,KAAK,CAACG,KAAK,IAAI,EAAE,EAC3C;AACI,IAAA,MAAM5iB,MAAM,GAAG8W,WAAW,GAAG,CAAC;AAC9B,IAAA,IAAI9W,MAAM,GAAG,CAAC,GAAG2J,SAAS,CAAC/M,MAAM,EACjC;MACI+rB,aAAa,CAACrqB,IAAI,CAACqL,SAAS,CAAC3J,MAAM,CAAC,EAAE2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,EAAE2J,SAAS,CAAC3J,MAAM,GAAG,CAAC,CAAC,CAAC;AACvF,IAAA;AACJ,EAAA;AAEA,EAAA,MAAMsL,MAAM,GAAGC,aAAa,CAACod,aAAa,CAAC;EAC3C,OAAO;IACHniB,GAAG,EAAE8E,MAAM,CAACG,SAAS;IACrB5E,GAAG,EAAEyE,MAAM,CAACI;GACf;AACL;AAEA,SAASxS,UAAUA,CAAC0H,IAAI,EAAEnN,OAAO,EAAE6xB,gBAAgB,GAAG,EAAE,EACxD;AACI,EAAA,MAAMC,gBAAgB,GAAGC,sBAAsB,CAAC/xB,OAAO,EAAE6xB,gBAAgB,CAAC;EAC1E,OAAOG,OAAO,CAAC,MAAM,EAAE;AACnB,IAAA,GAAG7kB,IAAI;AACP1I,IAAAA,QAAQ,EAAE0I,IAAI,CAAC1I,QAAQ,GAAG0wB,kBAAkB,CAAChoB,IAAI,CAAC1I,QAAQ,EAAEqtB,gBAAgB,CAAC,GAAG,IAAI;AACpFld,IAAAA,MAAM,EAAEzH,IAAI,CAACyH,MAAM,CAAC3I,GAAG,CAACuQ,IAAI,IAAI4Y,cAAc,CAAC5Y,IAAI,EAAEsV,gBAAgB,CAAC,CAAC;AACvEzc,IAAAA,SAAS,EAAElI,IAAI,CAACkI,SAAS,CAACpJ,GAAG,CAACqJ,QAAQ,IAAI+f,kBAAkB,CAAC/f,QAAQ,EAAEwc,gBAAgB,CAAC,CAAC;AACzFtc,IAAAA,UAAU,EAAErI,IAAI,CAACqI,UAAU,CAACvJ,GAAG,CAACoQ,SAAS,IAAIiZ,mBAAmB,CAACjZ,SAAS,EAAEyV,gBAAgB,CAAC;AACjG,GAAC,EAAEA,gBAAgB,EAAED,gBAAgB,CAAC;AAC1C;AAEA,SAASsD,kBAAkBA,CAAC1wB,QAAQ,EAAEzE,OAAO,EAC7C;EACI,OAAOgyB,OAAO,CAAC,UAAU,EAAE;AACvB7lB,IAAAA,OAAO,EAAE,CAAC1H,QAAQ,CAAC0H,OAAO,IAAI,EAAE,EAAEF,GAAG,CAACjE,KAAK,IAAIgqB,OAAO,CAAC,eAAe,EAAEhqB,KAAK,EAAEhI,OAAO,CAAC;GAC1F,EAAEA,OAAO,CAAC;AACf;AAEA,SAASo1B,cAAcA,CAAC5Y,IAAI,EAAExc,OAAO,EACrC;EACI,OAAOgyB,OAAO,CAAC,MAAM,EAAE;AACnB,IAAA,GAAGxV,IAAI;AACPqW,IAAAA,IAAI,EAAErW,IAAI,CAACqW,IAAI,CAAC5mB,GAAG,CAAC8oB,OAAO,IAAI/C,OAAO,CAAC,eAAe,EAAE+C,OAAO,EAAE/0B,OAAO,CAAC,CAAC;AAC1E+yB,IAAAA,IAAI,EAAEvW,IAAI,CAACuW,IAAI,CAAC9mB,GAAG,CAACooB,GAAG,IAAIrC,OAAO,CAAC,SAAS,EAAE;AAC1C,MAAA,GAAGqC,GAAG;AACN7B,MAAAA,KAAK,EAAE6B,GAAG,CAAC7B,KAAK,CAACvmB,GAAG,CAACwjB,IAAI,IAAIuC,OAAO,CAAC,aAAa,EAAEvC,IAAI,EAAEzvB,OAAO,CAAC,CAAC;AACnE2X,MAAAA,YAAY,EAAE0c,GAAG,CAAC1c,YAAY,CAAC1L,GAAG,CAACgO,MAAM,IAAI+X,OAAO,CAAC,gBAAgB,EAAE/X,MAAM,EAAEja,OAAO,CAAC;KAC1F,EAAEA,OAAO,CAAC,CAAC;AACZwyB,IAAAA,KAAK,EAAEhW,IAAI,CAACgW,KAAK,CAACvmB,GAAG,CAACwjB,IAAI,IAAIuC,OAAO,CAAC,UAAU,EAAEvC,IAAI,EAAEzvB,OAAO,CAAC,CAAC;AACjEkY,IAAAA,YAAY,EAAEsE,IAAI,CAACtE,YAAY,CAACjM,GAAG,CAACgmB,OAAO,IAAID,OAAO,CAAC,aAAa,EAAEC,OAAO,EAAEjyB,OAAO,CAAC,CAAC;AACxF2X,IAAAA,YAAY,EAAEqa,OAAO,CAAC,cAAc,EAAE;AAClCa,MAAAA,IAAI,EAAErW,IAAI,CAAC7E,YAAY,CAACkb,IAAI,CAAC5mB,GAAG,CAAC8oB,OAAO,IAAI/C,OAAO,CAAC,eAAe,EAAE+C,OAAO,EAAE/0B,OAAO,CAAC,CAAC;AACvF8Z,MAAAA,OAAO,EAAE0C,IAAI,CAAC7E,YAAY,CAACmC,OAAO,CAAC7N,GAAG,CAACgO,MAAM,IAAI+X,OAAO,CAAC,aAAa,EAAE/X,MAAM,EAAEja,OAAO,CAAC;KAC3F,EAAEA,OAAO,CAAC;IACX0zB,kBAAkB,EAAE1B,OAAO,CAAC,oBAAoB,EAAExV,IAAI,CAACkX,kBAAkB,EAAE1zB,OAAO;GACrF,EAAEA,OAAO,CAAC;AACf;AAEA,SAASq1B,kBAAkBA,CAAC/f,QAAQ,EAAEtV,OAAO,EAC7C;EACI,OAAOgyB,OAAO,CAAC,UAAU,EAAE;AACvB,IAAA,GAAG1c,QAAQ;AACXqP,IAAAA,SAAS,EAAErP,QAAQ,CAACqP,SAAS,CAAC1Y,GAAG,CAAC+Y,IAAI,IAAIgN,OAAO,CAAC,UAAU,EAAE;AAC1D,MAAA,GAAGhN,IAAI;AACPpb,MAAAA,OAAO,EAAEob,IAAI,CAACpb,OAAO,CAACqC,GAAG,CAAC3B,MAAM,IAAI0nB,OAAO,CAAC,YAAY,EAAE1nB,MAAM,EAAEtK,OAAO,CAAC;KAC7E,EAAEA,OAAO,CAAC;GACd,EAAEA,OAAO,CAAC;AACf;AAEA,SAASs1B,mBAAmBA,CAACjZ,SAAS,EAAErc,OAAO,EAC/C;EACI,OAAOgyB,OAAO,CAAC,WAAW,EAAE;AACxB,IAAA,GAAG3V,SAAS;AACZ9R,IAAAA,QAAQ,EAAE8R,SAAS,CAAC9R,QAAQ,CAAC0B,GAAG,CAACxB,OAAO,IAAIunB,OAAO,CAAC,kBAAkB,EAAEvnB,OAAO,EAAEzK,OAAO,CAAC,CAAC;AAC1Fyd,IAAAA,MAAM,EAAEpB,SAAS,CAACoB,MAAM,CAACxR,GAAG,CAAC2R,KAAK,IAAIoU,OAAO,CAAC,gBAAgB,EAAEpU,KAAK,EAAE5d,OAAO,CAAC;GAClF,EAAEA,OAAO,CAAC;AACf;AAEA,SAASgyB,OAAOA,CAAClmB,IAAI,EAAEypB,MAAM,EAAEv1B,OAAO,EAAE6xB,gBAAgB,GAAG,EAAE,EAC7D;AACI,EAAA,MAAMhuB,KAAK,GAAG7D,OAAO,GAAG8L,IAAI,CAAC;EAC7B,IAAI,CAACjI,KAAK,EACV;AACI,IAAA,OAAO0xB,MAAM;AACjB,EAAA;EAEA,MAAMnzB,OAAO,GAAGhD,MAAM,CAACoD,IAAI,CAACqvB,gBAAgB,CAAC,CAAC1oB,MAAM,GAAG,CAAC,GAAG0oB,gBAAgB,GAAG7xB,OAAO,EAAEw1B,kBAAkB,IAAI,EAAE;EAC/G,OAAOC,QAAQ,CAAC,IAAI5xB,KAAK,EAAE,EAAE0xB,MAAM,EAAEnzB,OAAO,CAAC;AACjD;AAEA,SAASqzB,QAAQA,CAACC,QAAQ,EAAEH,MAAM,EAAE1D,gBAAgB,GAAG,EAAE,EACzD;EACI,IAAI,CAAC6D,QAAQ,IAAI,OAAOA,QAAQ,CAACC,SAAS,KAAK,UAAU,EACzD;AACI,IAAA,MAAM,IAAIrzB,SAAS,CAAC,+EAA+E,CAAC;AACxG,EAAA;AACAozB,EAAAA,QAAQ,CAACC,SAAS,CAACJ,MAAM,EAAE;AAAE,IAAA,GAAG1D,gBAAgB;AAAE+D,IAAAA,UAAU,EAAE,IAAI;AAAEC,IAAAA,UAAU,EAAE;AAAK,GAAC,CAAC;AACvF,EAAA,OAAOH,QAAQ;AACnB;AAEA,SAAS3D,sBAAsBA,CAAC/xB,OAAO,EAAE6xB,gBAAgB,EACzD;EACI,MAAM5lB,GAAG,GAAG7M,MAAM,CAAC02B,MAAM,CAAC91B,OAAO,IAAI,IAAI,CAAC;AAC1CZ,EAAAA,MAAM,CAAC22B,cAAc,CAAC9pB,GAAG,EAAE,oBAAoB,EAAE;AAAEJ,IAAAA,KAAK,EAAEgmB,gBAAgB;AAAEmE,IAAAA,UAAU,EAAE;AAAM,GAAC,CAAC;AAChG,EAAA,OAAO/pB,GAAG;AACd;AAEA,SAASmB,YAAYA,CAAC5H,KAAK,EAC3B;AACI,EAAA,MAAMywB,UAAU,GAAG7uB,aAAa,CAAC5B,KAAK,EAAE,oBAAoB,CAAC;AAC7D,EAAA,MAAM6gB,kBAAkB,GAAGjf,aAAa,CAAC5B,KAAK,EAAE,gBAAgB,CAAC;AACjE,EAAA,MAAM0wB,eAAe,GAAG9uB,aAAa,CAAC5B,KAAK,EAAE,aAAa,CAAC;AAC3D,EAAA,MAAM2B,WAAW,GAAGC,aAAa,CAAC5B,KAAK,EAAE,SAAS,CAAC;AACnD,EAAA,MAAM2wB,eAAe,GAAG/uB,aAAa,CAAC5B,KAAK,EAAE,aAAa,CAAC;EAE3D,OAAO;IACHiG,aAAa,EAAEjG,KAAK,CAACyG,GAAG,CAAC5D,IAAI,IAAIA,IAAI,CAACI,IAAI,CAAC;AAC3CgE,IAAAA,MAAM,EAAE2pB,UAAU,CAACH,UAAU,CAAC;AAC9BI,IAAAA,cAAc,EAAEjb,gBAAgB,CAACiL,kBAAkB,CAAC;AACpDiQ,IAAAA,WAAW,EAAEC,eAAe,CAACL,eAAe,CAAC;AAC7CM,IAAAA,OAAO,EAAEC,WAAW,CAACtvB,WAAW,CAAC;IACjCI,WAAW,EAAEC,eAAe,CAAC2uB,eAAe;GAC/C;AACL;AAEA,SAASC,UAAUA,CAAC/tB,IAAI,EACxB;EACI,IAAI,CAACA,IAAI,EACT;AACI,IAAA,OAAO,EAAE;AACb,EAAA;EAEA,OAAO;AACHquB,IAAAA,gBAAgB,EAAE5tB,sBAAsB,CAACT,IAAI,EAAE,kBAAkB,CAAC;AAClEsuB,IAAAA,UAAU,EAAE7tB,sBAAsB,CAACT,IAAI,EAAE,YAAY,CAAC;AACtDuuB,IAAAA,OAAO,EAAE9tB,sBAAsB,CAACT,IAAI,EAAE,SAAS;GAClD;AACL;AAEA,SAASkuB,eAAeA,CAACluB,IAAI,EAC7B;EACI,IAAI,CAACA,IAAI,EACT;IACI,OAAO;AACH+C,MAAAA,OAAO,EAAE,CAAC;AACV8B,MAAAA,KAAK,EAAE,CAAC;AACR2pB,MAAAA,WAAW,EAAE;KAChB;AACL,EAAA;EAEA,OAAO;IACHzrB,OAAO,EAAEtC,sBAAsB,CAACT,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;IACrD6E,KAAK,EAAEpE,sBAAsB,CAACT,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;AACjDwuB,IAAAA,WAAW,EAAExuB,IAAI,CAACC,QAAQ,CACrBP,MAAM,CAACS,KAAK,IAAIA,KAAK,CAACC,IAAI,KAAK,YAAY,CAAC,CAC5CwD,GAAG,CAAC6qB,cAAc;GAC1B;AACL;AAEA,SAASA,cAAcA,CAACzuB,IAAI,EAC5B;EACI,OAAO;IACHyD,IAAI,EAAEzD,IAAI,CAACoF,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9BP,IAAAA,KAAK,EAAEpE,sBAAsB,CAACT,IAAI,EAAE,OAAO,CAAC,IAAI;GACnD;AACL;AAEA,SAASouB,WAAWA,CAACpuB,IAAI,EACzB;EACI,MAAMkX,IAAI,GAAG,EAAE;EACf,MAAMgN,MAAM,GAAG,EAAE;EACjB,MAAMzkB,IAAI,GAAG,EAAE;EAEf,IAAI,CAACO,IAAI,EACT;IACI,OAAO;AAAE6E,MAAAA,KAAK,EAAE,CAAC;MAAEpF,IAAI;MAAEyX,IAAI;AAAEgN,MAAAA;KAAQ;AAC3C,EAAA;AAEA,EAAA,KAAK,MAAM/jB,KAAK,IAAIH,IAAI,CAACC,QAAQ,EACjC;AACI,IAAA,IAAIE,KAAK,CAACiF,UAAU,CAACtE,MAAM,KAAK,CAAC,EACjC;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMnB,KAAK,GAAGykB,eAAe,CAACjkB,KAAK,CAAC;AACpCV,IAAAA,IAAI,CAAC+C,IAAI,CAAC7C,KAAK,CAAC;AAChBuX,IAAAA,IAAI,CAACvX,KAAK,CAACzF,GAAG,CAAC,GAAGyF,KAAK;AACvB,IAAA,IAAI,CAACukB,MAAM,CAACvkB,KAAK,CAACC,QAAQ,CAAC,EAC3B;AACIskB,MAAAA,MAAM,CAACvkB,KAAK,CAACC,QAAQ,CAAC,GAAG,EAAE;AAC/B,IAAA;IACAskB,MAAM,CAACvkB,KAAK,CAACC,QAAQ,CAAC,CAAC4C,IAAI,CAAC7C,KAAK,CAACzF,GAAG,CAAC;AAC1C,EAAA;EAEA,OAAO;IACH2K,KAAK,EAAEpF,IAAI,CAACqB,MAAM;IAClBrB,IAAI;IACJyX,IAAI;AACJgN,IAAAA;GACH;AACL;AAEA,SAASE,eAAeA,CAACpkB,IAAI,EAC7B;AACI,EAAA,MAAMomB,EAAE,GAAGpmB,IAAI,CAACoF,UAAU,CAAC,CAAC,CAAC;EAC7B,MAAMzD,QAAQ,GAAG3B,IAAI,CAACoF,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;EACzC,MAAMvF,SAAS,GAAGG,IAAI,CAACoF,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;EAE1C,OAAO;IACHghB,EAAE;AACFlsB,IAAAA,GAAG,EAAE6jB,WAAW,CAACqI,EAAE,CAAC;IACpBxmB,QAAQ,EAAEI,IAAI,CAACI,IAAI;AACnBA,IAAAA,IAAI,EAAEsuB,kBAAkB,CAAC/sB,QAAQ,CAAC;IAClCA,QAAQ;IACR9B,SAAS;AACToF,IAAAA,aAAa,EAAEjF,IAAI,CAACoF,UAAU,CAACtE,MAAM;AACrC6tB,IAAAA,UAAU,EAAE3uB,IAAI,CAACC,QAAQ,CAACa,MAAM;IAChC8tB,cAAc,EAAE5uB,IAAI,CAACC,QAAQ,CAAC2D,GAAG,CAACzD,KAAK,IAAIA,KAAK,CAACC,IAAI;GACxD;AACL;AAEA,SAASjB,eAAeA,CAACa,IAAI,EAC7B;EACI,MAAMP,IAAI,GAAG,EAAE;EACf,MAAM6kB,cAAc,GAAG,EAAE;EACzB,MAAMC,gBAAgB,GAAG,EAAE;AAE3B,EAAA,IAAIvkB,IAAI,EACR;AACI,IAAA,KAAK,MAAMG,KAAK,IAAIH,IAAI,CAACC,QAAQ,EACjC;AACI,MAAA,IAAIE,KAAK,CAACC,IAAI,KAAK,GAAG,EACtB;AACI,QAAA;AACJ,MAAA;AAEA,MAAA,MAAMT,KAAK,GAAG;QACViX,QAAQ,EAAEzW,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;AACnCypB,QAAAA,OAAO,EAAE1uB,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC;AAC5B0pB,QAAAA,QAAQ,EAAE3uB,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC;AAC7B2R,QAAAA,QAAQ,EAAE5W,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC,IAAI;OACpC;MACDzF,KAAK,CAACkX,QAAQ,GAAGkH,WAAW,CAACpe,KAAK,CAACkvB,OAAO,CAAC;MAC3ClvB,KAAK,CAACqX,SAAS,GAAG+G,WAAW,CAACpe,KAAK,CAACmvB,QAAQ,CAAC;AAC7CrvB,MAAAA,IAAI,CAAC+C,IAAI,CAAC7C,KAAK,CAAC;MAChB0kB,SAAS,CAACC,cAAc,EAAE3kB,KAAK,CAACkX,QAAQ,EAAElX,KAAK,CAACqX,SAAS,CAAC;MAC1DqN,SAAS,CAACE,gBAAgB,EAAE5kB,KAAK,CAACqX,SAAS,EAAErX,KAAK,CAACkX,QAAQ,CAAC;AAChE,IAAA;AACJ,EAAA;EAEA,OAAO;IACHhS,KAAK,EAAEpF,IAAI,CAACqB,MAAM;IAClBrB,IAAI;IACJ6kB,cAAc;AACdC,IAAAA;GACH;AACL;AAEA,SAASxR,gBAAgBA,CAAC/S,IAAI,EAC9B;EACI,MAAMoF,UAAU,GAAG,EAAE;AACrB,EAAA,MAAM2pB,YAAY,GAAG/uB,IAAI,GAAGjB,aAAa,CAACiB,IAAI,CAACC,QAAQ,EAAE,cAAc,CAAC,GAAG,IAAI;EAE/E,IAAI,CAAC8uB,YAAY,EACjB;IACI,OAAO;AAAE3pB,MAAAA;KAAY;AACzB,EAAA;AAEA,EAAA,KAAK,MAAMjF,KAAK,IAAI4uB,YAAY,CAAC9uB,QAAQ,EACzC;AACI,IAAA,IAAIE,KAAK,CAACC,IAAI,KAAK,GAAG,IAAID,KAAK,CAACiF,UAAU,CAACtE,MAAM,KAAK,CAAC,EACvD;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAM5G,GAAG,GAAGiG,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC;IAC/BA,UAAU,CAAClL,GAAG,CAAC,GAAG;MACduJ,IAAI,EAAEtD,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;MAC/B4pB,KAAK,EAAE7uB,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;MAChC+U,KAAK,EAAEha,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;AAChC5B,MAAAA,KAAK,EAAEyrB,kBAAkB,CAAC9uB,KAAK,CAACiF,UAAU;KAC7C;AACL,EAAA;EAEA,OAAO;AAAEA,IAAAA;GAAY;AACzB;AAEA,SAAS6pB,kBAAkBA,CAAC7pB,UAAU,EACtC;AACI,EAAA,IAAIA,UAAU,CAACtE,MAAM,IAAI,CAAC,EAC1B;IACI,OAAOsE,UAAU,CAAC,CAAC,CAAC;AACxB,EAAA;AACA,EAAA,OAAOA,UAAU,CAAC4E,KAAK,CAAC,CAAC,CAAC;AAC9B;AAEA,SAASvJ,sBAAsBA,CAACT,IAAI,EAAEwkB,SAAS,EAC/C;EACI,MAAMrkB,KAAK,GAAGpB,aAAa,CAACiB,IAAI,CAACC,QAAQ,EAAEukB,SAAS,CAAC;EACrD,OAAOrkB,KAAK,GAAGA,KAAK,CAACiF,UAAU,CAAC,CAAC,CAAC,GAAG3J,SAAS;AAClD;AAEA,SAASsD,aAAaA,CAAC5B,KAAK,EAAEiD,IAAI,EAClC;AACI,EAAA,OAAOjD,KAAK,CAAC+S,IAAI,CAAClQ,IAAI,IAAIA,IAAI,CAACI,IAAI,KAAKA,IAAI,CAAC,IAAI,IAAI;AACzD;AAEA,SAASsuB,kBAAkBA,CAAC/sB,QAAQ,EACpC;AACI,EAAA,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAChC;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AACA,EAAA,MACIutB,cAAc,GAAGvtB,QAAQ,CAAC6R,OAAO,CAAC,cAAc,CAAC;AACjD2b,IAAAA,UAAU,GAAGD,cAAc,KAAK,EAAE,GAAGvtB,QAAQ,GAAGA,QAAQ,CAACqI,KAAK,CAAC,CAAC,EAAEklB,cAAc,CAAC;AACjFE,IAAAA,eAAe,GAAGD,UAAU,CAACE,WAAW,CAAC,IAAI,CAAC;AAElD,EAAA,OAAOD,eAAe,KAAK,EAAE,GAAGD,UAAU,GAAGA,UAAU,CAACnlB,KAAK,CAAColB,eAAe,GAAG,CAAC,CAAC;AACtF;AAEA,SAAS/K,SAASA,CAACjM,KAAK,EAAEle,GAAG,EAAEsJ,KAAK,EACpC;AACI,EAAA,IAAI,CAAC4U,KAAK,CAACle,GAAG,CAAC,EACf;AACIke,IAAAA,KAAK,CAACle,GAAG,CAAC,GAAG,EAAE;AACnB,EAAA;AACAke,EAAAA,KAAK,CAACle,GAAG,CAAC,CAACsI,IAAI,CAACgB,KAAK,CAAC;AAC1B;AAEA,SAASua,WAAWA,CAACva,KAAK,EAC1B;AACI,EAAA,OAAOA,KAAK,KAAK/H,SAAS,IAAI+H,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG/I,MAAM,CAAC+I,KAAK,CAAC;AACrE;AAEA,SAASoI,cAAcA,CAACJ,IAAI,EAAEhR,MAAM,EACpC;AACI,EAAA,MAAMqd,KAAK,GAAG,iCAAiC,CAACyX,IAAI,CAAC9jB,IAAI,CAAC;EAC1D,IAAI,CAACqM,KAAK,EACV;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,IAAI0X,IAAI,GAAG1X,KAAK,CAAC,CAAC,CAAC,CAACnM,IAAI,EAAE;AAC1B,EAAA,MAAMG,UAAU,GAAG0jB,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC;AACrC,EAAA,IAAI3jB,UAAU,EACd;AACI0jB,IAAAA,IAAI,GAAGA,IAAI,CAACvlB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC0B,IAAI,EAAE;AACnC,EAAA;EAEA,MAAMtG,UAAU,GAAGmqB,IAAI,GAAGE,oBAAoB,CAACF,IAAI,CAAC,GAAG,EAAE;AACzD,EAAA,IAAInqB,UAAU,CAACtE,MAAM,GAAGtG,MAAM,CAACzC,aAAa,EAC5C;AACI,IAAA,MAAM,IAAIsD,KAAK,CAAC,CAAA,gBAAA,EAAmBwc,KAAK,CAAC,CAAC,CAAC,CAAA,wBAAA,EAA2Brd,MAAM,CAACzC,aAAa,GAAG,CAAC;AAClG,EAAA;EAEA,OAAO;AACHqI,IAAAA,IAAI,EAAEyX,KAAK,CAAC,CAAC,CAAC;IACdzS,UAAU;AACVC,IAAAA,aAAa,EAAE,EAAE;AACjBpF,IAAAA,QAAQ,EAAE,EAAE;AACZ4L,IAAAA;GACH;AACL;AAEA,SAAS4jB,oBAAoBA,CAACF,IAAI,EAClC;EACI,OAAOG,oBAAoB,CAACH,IAAI,CAAC,CAAC3rB,GAAG,CAAC+rB,eAAe,CAAC;AAC1D;AAEA,SAASD,oBAAoBA,CAACH,IAAI,EAClC;EACI,MAAMK,KAAK,GAAG,EAAE;EAChB,IAAIlI,OAAO,GAAG,EAAE;EAChB,IAAImI,MAAM,GAAG,KAAK;EAClB,IAAIC,OAAO,GAAG,KAAK;AAEnB,EAAA,KAAK,IAAIxqB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiqB,IAAI,CAACzuB,MAAM,EAAEwE,CAAC,EAAE,EACpC;AACI,IAAA,MAAMgO,IAAI,GAAGic,IAAI,CAACjqB,CAAC,CAAC;AACpB,IAAA,IAAIwqB,OAAO,EACX;AACIpI,MAAAA,OAAO,IAAIpU,IAAI;AACfwc,MAAAA,OAAO,GAAG,KAAK;AACf,MAAA;AACJ,IAAA;IACA,IAAIxc,IAAI,KAAK,IAAI,EACjB;AACIoU,MAAAA,OAAO,IAAIpU,IAAI;AACfwc,MAAAA,OAAO,GAAG,IAAI;AACd,MAAA;AACJ,IAAA;IACA,IAAIxc,IAAI,KAAK,IAAI,EACjB;MACIuc,MAAM,GAAG,CAACA,MAAM;AAChBnI,MAAAA,OAAO,IAAIpU,IAAI;AACf,MAAA;AACJ,IAAA;AACA,IAAA,IAAIA,IAAI,KAAK,GAAG,IAAI,CAACuc,MAAM,EAC3B;MACID,KAAK,CAACptB,IAAI,CAACklB,OAAO,CAAChc,IAAI,EAAE,CAAC;AAC1Bgc,MAAAA,OAAO,GAAG,EAAE;AACZ,MAAA;AACJ,IAAA;AACAA,IAAAA,OAAO,IAAIpU,IAAI;AACnB,EAAA;AAEA,EAAA,IAAIoU,OAAO,CAAChc,IAAI,EAAE,IAAI6jB,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,EACxC;IACII,KAAK,CAACptB,IAAI,CAACklB,OAAO,CAAChc,IAAI,EAAE,CAAC;AAC9B,EAAA;AAEA,EAAA,OAAOkkB,KAAK;AAChB;AAEA,SAASD,eAAeA,CAACnsB,KAAK,EAC9B;AACI,EAAA,IAAI,SAAS,CAAC+P,IAAI,CAAC/P,KAAK,CAAC,EACzB;IACI,OAAOA,KAAK,CAACwG,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAACtP,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAACA,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC5E,EAAA;AACA,EAAA,IAAI,kBAAkB,CAAC6Y,IAAI,CAAC/P,KAAK,CAAC,EAClC;AACI,IAAA,OAAOA,KAAK,CAAC7I,WAAW,EAAE,KAAK,MAAM;AACzC,EAAA;AACA,EAAA,IAAI,4CAA4C,CAAC4Y,IAAI,CAAC/P,KAAK,CAAC,EAC5D;IACI,OAAOoC,MAAM,CAACpC,KAAK,CAAC;AACxB,EAAA;AACA,EAAA,OAAOA,KAAK;AAChB;AAEA,SAASiI,iBAAiBA,CAACD,IAAI,EAC/B;EACI,IAAIqkB,MAAM,GAAG,KAAK;EAClB,IAAIC,OAAO,GAAG,KAAK;AACnB,EAAA,KAAK,IAAIxqB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkG,IAAI,CAAC1K,MAAM,EAAEwE,CAAC,EAAE,EACpC;AACI,IAAA,MAAMgO,IAAI,GAAG9H,IAAI,CAAClG,CAAC,CAAC;AACpB,IAAA,IAAIwqB,OAAO,EACX;AACIA,MAAAA,OAAO,GAAG,KAAK;AACf,MAAA;AACJ,IAAA;IACA,IAAIxc,IAAI,KAAK,IAAI,EACjB;AACIwc,MAAAA,OAAO,GAAG,IAAI;AACd,MAAA;AACJ,IAAA;IACA,IAAIxc,IAAI,KAAK,IAAI,EACjB;MACIuc,MAAM,GAAG,CAACA,MAAM;AAChB,MAAA;AACJ,IAAA;AACA,IAAA,IAAIvc,IAAI,KAAK,GAAG,IAAI,CAACuc,MAAM,EAC3B;AACI,MAAA,OAAOrkB,IAAI,CAACxB,KAAK,CAAC,CAAC,EAAE1E,CAAC,CAAC;AAC3B,IAAA;AACJ,EAAA;AACA,EAAA,OAAOkG,IAAI;AACf;AAEA,SAAS/I,WAAWA,CAACtG,KAAK,EAC1B;AACI,EAAA,IAAIA,KAAK,CAACF,UAAU,GAAG/D,kBAAkB,EACzC;AACI,IAAA,OAAO,KAAK;AAChB,EAAA;AACA,EAAA,KAAK,IAAIoN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGrN,gBAAgB,CAAC6I,MAAM,EAAEwE,CAAC,EAAE,EAChD;IACI,IAAInJ,KAAK,CAACmJ,CAAC,CAAC,KAAKrN,gBAAgB,CAAC83B,UAAU,CAACzqB,CAAC,CAAC,EAC/C;AACI,MAAA,OAAO,KAAK;AAChB,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,IAAI;AACf;AAEA,SAASxC,cAAcA,CAACH,IAAI,EAC5B;AACI,EAAA,OAAO,kCAAkC,CAAC4Q,IAAI,CAAC5Q,IAAI,CAAC,IAChD,uBAAuB,CAAC4Q,IAAI,CAAC5Q,IAAI,CAAC,IAClC,2BAA2B,CAAC4Q,IAAI,CAAC5Q,IAAI,CAAC;AAC9C;AAEA,SAASQ,mBAAmBA,CAACR,IAAI,EACjC;AACI,EAAA,OAAOU,qBAAqB,CAACV,IAAI,CAAC,CAAC7B,MAAM;AAC7C;AAEA,SAASuC,qBAAqBA,CAACV,IAAI,EACnC;EACI,MAAMuR,KAAK,GAAG,EAAE;EAChB,IAAIlP,KAAK,GAAG,CAAC;EAEb,KAAK,MAAMsG,OAAO,IAAI3I,IAAI,CAAC4I,KAAK,CAAC,QAAQ,CAAC,EAC1C;IACI,MAAMC,IAAI,GAAGC,iBAAiB,CAACH,OAAO,CAAC,CAACI,IAAI,EAAE;IAC9C,IAAI,CAACF,IAAI,EACT;AACI,MAAA;AACJ,IAAA;AACA,IAAA,IAAIA,IAAI,CAACnL,UAAU,CAAC,GAAG,CAAC,EACxB;MACI2E,KAAK,GAAGyF,IAAI,CAACM,GAAG,CAAC/F,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9B,MAAA;AACJ,IAAA;AAEA,IAAA,MAAM6S,KAAK,GAAG,yBAAyB,CAACyX,IAAI,CAAC9jB,IAAI,CAAC;AAClD,IAAA,IAAIqM,KAAK,IAAI7S,KAAK,KAAK,CAAC,EACxB;AACIkP,MAAAA,KAAK,CAAC1R,IAAI,CAACqV,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,IAAA;AACA,IAAA,IAAIrM,IAAI,CAACgkB,QAAQ,CAAC,GAAG,CAAC,EACtB;AACIxqB,MAAAA,KAAK,EAAE;AACX,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOkP,KAAK;AAChB;AAEA,SAASlR,gBAAgBA,CAACL,IAAI,EAC9B;AACI,EAAA,MAAMqtB,MAAM,GAAG,yBAAyB,CAACV,IAAI,CAAC3sB,IAAI,CAAC;AACnD,EAAA,IAAIqtB,MAAM,EACV;AACI,IAAA,OAAOpqB,MAAM,CAACoqB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAA;AAEA,EAAA,MAAMC,OAAO,GAAG,iCAAiC,CAACX,IAAI,CAAC3sB,IAAI,CAAC;EAC5D,IAAI,CAACstB,OAAO,EACZ;AACI,IAAA,OAAO,CAAC;AACZ,EAAA;AACA,EAAA,OAAOrqB,MAAM,CAAC,CAAA,EAAGqqB,OAAO,CAAC,CAAC,CAAC,CAAA,EAAGA,OAAO,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,EAAGD,OAAO,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC9F;AAEA,SAASttB,iBAAiBA,CAACzG,KAAK,EAAE2E,MAAM,EACxC;EACI,IAAI6B,IAAI,GAAG,EAAE;EACb,MAAMkC,KAAK,GAAG4F,IAAI,CAACC,GAAG,CAACvO,KAAK,CAACF,UAAU,EAAE6E,MAAM,CAAC;EAChD,KAAK,IAAIwE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,KAAK,EAAES,CAAC,EAAE,EAC9B;AACI,IAAA,MAAM6E,IAAI,GAAGhO,KAAK,CAACmJ,CAAC,CAAC;IACrB,IAAI6E,IAAI,KAAK,CAAC,EACd;AACI,MAAA;AACJ,IAAA;AACAxH,IAAAA,IAAI,IAAIlI,MAAM,CAACsL,YAAY,CAACoE,IAAI,CAAC;AACrC,EAAA;AACA,EAAA,OAAOxH,IAAI;AACf;AAEA,SAASsB,uBAAuBA,CAAClB,OAAO,EACxC;AACI,EAAA,OAAOA,OAAO,IAAI,IAAI,GAAG3K,mBAAmB,GAAGD,mBAAmB;AACtE;AAEA,SAASgM,YAAYA,CAAChI,KAAK,EAAE+H,MAAM,EAAEpD,MAAM,EAC3C;AACI,EAAA,IAAIoD,MAAM,GAAGpD,MAAM,GAAG3E,KAAK,CAACF,UAAU,EACtC;AACI,IAAA,OAAO,KAAK;AAChB,EAAA;EACA,KAAK,IAAIqJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxE,MAAM,EAAEwE,CAAC,EAAE,EAC/B;IACI,IAAInJ,KAAK,CAAC+H,MAAM,GAAGoB,CAAC,CAAC,KAAK,CAAC,EAC3B;AACI,MAAA,OAAO,KAAK;AAChB,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,IAAI;AACf;AAEA,SAASqB,mBAAmBA,CAAClD,IAAI,EACjC;AACI,EAAA,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,EAChC;AACI,IAAA,OAAO,CAAC;AACZ,EAAA;AACA,EAAA,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,EAChC;AACI,IAAA,OAAO,CAAC;AACZ,EAAA;AACA,EAAA,OAAO,CAAC;AACZ;AAEA,SAAS5I,qBAAqBA,CAAC2I,KAAK,EAAE2sB,SAAS,EAAEn2B,UAAU,EAC3D;EACI,IAAI,CAAC4L,MAAM,CAACwqB,SAAS,CAAC5sB,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EACzC;IACI,MAAM,IAAIvJ,SAAS,CAAC,CAAA,EAAGD,UAAU,CAAA,EAAA,EAAKm2B,SAAS,6BAA6B,CAAC;AACjF,EAAA;AACA,EAAA,OAAO3sB,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS1I,sBAAsBA,CAAC0I,KAAK,EAAE2sB,SAAS,EAAEn2B,UAAU,EAC5D;AACI,EAAA,IAAI,OAAOwJ,KAAK,KAAK,SAAS,EAC9B;AACI,IAAA,OAAOA,KAAK;AAChB,EAAA;AACA,EAAA,IAAIA,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC,EAC9B;IACI,OAAOgU,OAAO,CAAChU,KAAK,CAAC;AACzB,EAAA;EACA,MAAM,IAAIvJ,SAAS,CAAC,CAAA,EAAGD,UAAU,CAAA,EAAA,EAAKm2B,SAAS,oBAAoB,CAAC;AACxE;AAEA,SAASp1B,MAAMA,CAACyI,KAAK,EAAEtJ,GAAG,EAC1B;EACI,OAAOnD,MAAM,CAACs5B,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC/sB,KAAK,EAAEtJ,GAAG,CAAC;AAC3D;AAEA,SAASe,gBAAgBA,CAACtD,OAAO,EAAEqC,UAAU,EAC7C;EACI,IAAI,CAACrC,OAAO,EACZ;AACI,IAAA,OAAO,EAAE;AACb,EAAA;EACA,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAIR,KAAK,CAACwM,OAAO,CAAChM,OAAO,CAAC,EACzD;AACI,IAAA,MAAM,IAAIsC,SAAS,CAAC,CAAA,EAAGD,UAAU,iCAAiC,CAAC;AACvE,EAAA;EAEA,MAAMyyB,UAAU,GAAG,EAAE;AACrB,EAAA,KAAK,MAAM,CAAEvyB,GAAG,EAAEsB,KAAK,CAAE,IAAIzE,MAAM,CAAC+M,OAAO,CAACnM,OAAO,CAAC,EACpD;AACI4D,IAAAA,aAAa,CAACrB,GAAG,EAAEsB,KAAK,EAAExB,UAAU,CAAC;AACrCyyB,IAAAA,UAAU,CAACvyB,GAAG,CAAC,GAAGsB,KAAK;AAC3B,EAAA;AACA,EAAA,OAAOixB,UAAU;AACrB;AAEA,SAASzxB,YAAYA,CAAClB,IAAI,EAAEnC,OAAO,EAAEqC,UAAU,EAC/C;AACI,EAAA,IAAI,CAACrC,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAIR,KAAK,CAACwM,OAAO,CAAChM,OAAO,CAAC,EACrE;AACI,IAAA,MAAM,IAAIsC,SAAS,CAAC,CAAA,EAAGD,UAAU,iCAAiC,CAAC;AACvE,EAAA;AAEA,EAAA,MAAMyyB,UAAU,GAAGxxB,gBAAgB,CAACnB,IAAI,EAAEE,UAAU,CAAC;AACrD,EAAA,KAAK,MAAM,CAAEE,GAAG,EAAEsB,KAAK,CAAE,IAAIzE,MAAM,CAAC+M,OAAO,CAACnM,OAAO,CAAC,EACpD;AACI,IAAA,IAAI6D,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS,EACzC;AACIN,MAAAA,gBAAgB,CAACjB,GAAG,EAAEF,UAAU,CAAC;MACjC,OAAOyyB,UAAU,CAACvyB,GAAG,CAAC;AACtB,MAAA;AACJ,IAAA;AACAqB,IAAAA,aAAa,CAACrB,GAAG,EAAEsB,KAAK,EAAExB,UAAU,CAAC;AACrCyyB,IAAAA,UAAU,CAACvyB,GAAG,CAAC,GAAGsB,KAAK;AAC3B,EAAA;AACA,EAAA,OAAOixB,UAAU;AACrB;AAEA,SAASvxB,UAAUA,CAACvD,OAAO,EAC3B;AACI,EAAA,OAAO,CAAC,CAACA,OAAO,IAAIZ,MAAM,CAACyD,MAAM,CAAC7C,OAAO,CAAC,CAACsjB,IAAI,CAACzf,KAAK,IAAI,OAAOA,KAAK,KAAK,UAAU,CAAC;AACzF;AAEA,SAAS2W,YAAYA,CAAC3O,KAAK,EAAEyP,OAAO,EACpC;AACI,EAAA,MAAMud,MAAM,GAAG5qB,MAAM,CAACpC,KAAK,CAAC;AAC5B,EAAA,IAAI,CAACoC,MAAM,CAACygB,QAAQ,CAACmK,MAAM,CAAC,EAC5B;AACI,IAAA,MAAM,IAAIn1B,KAAK,CAAC,CAAA,KAAA,EAAQ4X,OAAO,+BAA+B,CAAC;AACnE,EAAA;AACA,EAAA,OAAOud,MAAM;AACjB;AAEA,SAASxe,aAAaA,CAACxO,KAAK,EAAEyP,OAAO,EACrC;AACI,EAAA,MAAMud,MAAM,GAAGre,YAAY,CAAC3O,KAAK,EAAEyP,OAAO,CAAC;AAC3C,EAAA,IAAI,CAACrN,MAAM,CAACwqB,SAAS,CAACI,MAAM,CAAC,EAC7B;AACI,IAAA,MAAM,IAAIn1B,KAAK,CAAC,CAAA,KAAA,EAAQ4X,OAAO,+BAA+B,CAAC;AACnE,EAAA;AACA,EAAA,OAAOud,MAAM;AACjB;AAEA,SAAS1qB,WAAWA,CAAC3J,KAAK,EAAE+H,MAAM,EAAEpD,MAAM,EAAEnC,OAAO,EACnD;AACI,EAAA,IAAIuF,MAAM,GAAGpD,MAAM,GAAG3E,KAAK,CAACF,UAAU,EACtC;AACI,IAAA,MAAM,IAAIZ,KAAK,CAACsD,OAAO,CAAC;AAC5B,EAAA;AACJ;AAEA,SAAS4F,UAAUA,CAACpI,KAAK,EAAE+H,MAAM,EAAEpD,MAAM,EACzC;EACIgF,WAAW,CAAC3J,KAAK,EAAE+H,MAAM,EAAEpD,MAAM,EAAE,0BAA0B,CAAC;AAC9D,EAAA,OAAOvI,YAAY,CAAC0Q,MAAM,CAAC9M,KAAK,CAACqK,QAAQ,CAACtC,MAAM,EAAEA,MAAM,GAAGpD,MAAM,CAAC,CAAC;AACvE;AAEA,SAASiD,SAASA,CAAC5H,KAAK,EAAE+H,MAAM,EAChC;AACI,EAAA,OAAO,CAAC/H,KAAK,CAAC+H,MAAM,CAAC,GAAI/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GAAI/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG,GAAI/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,GAAG,SAAU,MAAM,CAAC;AACzH;AAEA,SAASsD,SAASA,CAACrL,KAAK,EAAE+H,MAAM,EAChC;AACI,EAAA,OAAO,CAAG/H,KAAK,CAAC+H,MAAM,CAAC,IAAI,EAAE,KAAM,CAAC,GAAK/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG,GAAI/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GAAG/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3H;AAEA,SAAS8B,SAASA,CAAC7J,KAAK,EAAE+H,MAAM,EAChC;AACI,EAAA,MAAMV,KAAK,GAAGrH,KAAK,CAAC+H,MAAM,CAAC,GAAI/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE;EACtD,OAAOV,KAAK,GAAG,MAAM,GAAGA,KAAK,GAAG,OAAO,GAAGA,KAAK;AACnD;AAEA,SAASyC,SAASA,CAAC9J,KAAK,EAAE+H,MAAM,EAChC;AACI,EAAA,OAAO/H,KAAK,CAAC+H,MAAM,CAAC,GAAI/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GAAI/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG,GAAI/H,KAAK,CAAC+H,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG;AAC3G;AAEA,SAASyB,iBAAiBA,CAACxJ,KAAK,EAAE+H,MAAM,EACxC;AACI,EAAA,MAAMyG,GAAG,GAAG5G,SAAS,CAAC5H,KAAK,EAAE+H,MAAM,CAAC;EACpC,MAAM0G,IAAI,GAAG7G,SAAS,CAAC5H,KAAK,EAAE+H,MAAM,GAAG,CAAC,CAAC;AACzC,EAAA,OAAO0G,IAAI,GAAG,WAAW,GAAGD,GAAG;AACnC;AAEA,SAASvE,cAAcA,CAACjK,KAAK,EAAE+H,MAAM,EACrC;AACI,EAAA,MAAMyG,GAAG,GAAG5G,SAAS,CAAC5H,KAAK,EAAE+H,MAAM,CAAC;EACpC,MAAMusB,YAAY,GAAG1sB,SAAS,CAAC5H,KAAK,EAAE+H,MAAM,GAAG,CAAC,CAAC;AACjD,EAAA,MAAMwsB,QAAQ,GAAG,CAAC,EAAED,YAAY,GAAG,UAAU,CAAC;AAC9C,EAAA,IAAIjtB,KAAK,GAAGitB,YAAY,GAAG,WAAW,GAAG9lB,GAAG;AAE5C,EAAA,IAAI+lB,QAAQ,EACZ;AACIltB,IAAAA,KAAK,IAAI,mBAAmB;AAChC,EAAA;AAEA,EAAA,OAAOoC,MAAM,CAACC,aAAa,CAACrC,KAAK,CAAC,GAAGA,KAAK,GAAG/I,MAAM,CAAC+I,KAAK,CAAC;AAC9D;AAEA,SAAS0C,SAASA,CAAC/J,KAAK,EAAE+H,MAAM,EAChC;EACI,OAAO,IAAIkP,QAAQ,CAACjX,KAAK,CAACJ,MAAM,EAAEI,KAAK,CAACH,UAAU,GAAGkI,MAAM,EAAE,CAAC,CAAC,CAACmP,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC;AACvF;AAEA,SAASlN,SAASA,CAAChK,KAAK,EAAE+H,MAAM,EAChC;EACI,OAAO,IAAIkP,QAAQ,CAACjX,KAAK,CAACJ,MAAM,EAAEI,KAAK,CAACH,UAAU,GAAGkI,MAAM,EAAE,CAAC,CAAC,CAACysB,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC;AACvF;;;;"}