@babylonjs/viewer 7.42.0 → 7.44.0
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.
- package/assets/photoStudio.env +0 -0
- package/dist/babylon-viewer.esm.js +2 -0
- package/dist/babylon-viewer.esm.js.map +1 -0
- package/dist/babylon-viewer.esm.min.js +2 -0
- package/dist/babylon-viewer.esm.min.js.map +1 -0
- package/dist/chunks/EXT_lights_ies-D-oSSifC.esm.min.js +2 -0
- package/dist/chunks/EXT_lights_ies-D-oSSifC.esm.min.js.map +1 -0
- package/dist/chunks/EXT_lights_ies-DJJLktlG.esm.js +84 -0
- package/dist/chunks/EXT_lights_ies-DJJLktlG.esm.js.map +1 -0
- package/dist/chunks/EXT_lights_image_based-Bm1EdHWU.esm.js +171 -0
- package/dist/chunks/EXT_lights_image_based-Bm1EdHWU.esm.js.map +1 -0
- package/dist/chunks/EXT_lights_image_based-CPP95suP.esm.min.js +2 -0
- package/dist/chunks/EXT_lights_image_based-CPP95suP.esm.min.js.map +1 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-DuFNjp-b.esm.js +86 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-DuFNjp-b.esm.js.map +1 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-RXBAS2yg.esm.min.js +2 -0
- package/dist/chunks/EXT_mesh_gpu_instancing-RXBAS2yg.esm.min.js.map +1 -0
- package/dist/chunks/EXT_meshopt_compression-B_tol2Sa.esm.min.js +2 -0
- package/dist/chunks/EXT_meshopt_compression-B_tol2Sa.esm.min.js.map +1 -0
- package/dist/chunks/EXT_meshopt_compression-Rai3-_W3.esm.js +134 -0
- package/dist/chunks/EXT_meshopt_compression-Rai3-_W3.esm.js.map +1 -0
- package/dist/chunks/EXT_texture_avif-D3PbSGsk.esm.js +44 -0
- package/dist/chunks/EXT_texture_avif-D3PbSGsk.esm.js.map +1 -0
- package/dist/chunks/EXT_texture_avif-DB96e8gK.esm.min.js +2 -0
- package/dist/chunks/EXT_texture_avif-DB96e8gK.esm.min.js.map +1 -0
- package/dist/chunks/EXT_texture_webp-BrAdNUVI.esm.min.js +2 -0
- package/dist/chunks/EXT_texture_webp-BrAdNUVI.esm.min.js.map +1 -0
- package/dist/chunks/EXT_texture_webp-BsSdw4hb.esm.js +43 -0
- package/dist/chunks/EXT_texture_webp-BsSdw4hb.esm.js.map +1 -0
- package/dist/chunks/ExtrasAsMetadata-CvpNkVJm.esm.js +64 -0
- package/dist/chunks/ExtrasAsMetadata-CvpNkVJm.esm.js.map +1 -0
- package/dist/chunks/ExtrasAsMetadata-CwSGAnId.esm.min.js +2 -0
- package/dist/chunks/ExtrasAsMetadata-CwSGAnId.esm.min.js.map +1 -0
- package/dist/chunks/KHR_animation_pointer-B29-7REN.esm.js +352 -0
- package/dist/chunks/KHR_animation_pointer-B29-7REN.esm.js.map +1 -0
- package/dist/chunks/KHR_animation_pointer-DXhkj5r0.esm.min.js +2 -0
- package/dist/chunks/KHR_animation_pointer-DXhkj5r0.esm.min.js.map +1 -0
- package/dist/chunks/KHR_draco_mesh_compression-4y3oU3vs.esm.js +611 -0
- package/dist/chunks/KHR_draco_mesh_compression-4y3oU3vs.esm.js.map +1 -0
- package/dist/chunks/KHR_draco_mesh_compression-OUEmCF9O.esm.min.js +2 -0
- package/dist/chunks/KHR_draco_mesh_compression-OUEmCF9O.esm.min.js.map +1 -0
- package/dist/chunks/KHR_interactivity-DmxwZO-B.esm.min.js +2 -0
- package/dist/chunks/KHR_interactivity-DmxwZO-B.esm.min.js.map +1 -0
- package/dist/chunks/KHR_interactivity-Nql0vbRS.esm.js +4033 -0
- package/dist/chunks/KHR_interactivity-Nql0vbRS.esm.js.map +1 -0
- package/dist/chunks/KHR_lights_punctual-BuxTRJTD.esm.min.js +2 -0
- package/dist/chunks/KHR_lights_punctual-BuxTRJTD.esm.min.js.map +1 -0
- package/dist/chunks/KHR_lights_punctual-DT1Tmy49.esm.js +581 -0
- package/dist/chunks/KHR_lights_punctual-DT1Tmy49.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_anisotropy-CkyM8JSq.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_anisotropy-CkyM8JSq.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_anisotropy-rMp1ahNa.esm.js +65 -0
- package/dist/chunks/KHR_materials_anisotropy-rMp1ahNa.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_clearcoat-Dw7bP6zs.esm.js +96 -0
- package/dist/chunks/KHR_materials_clearcoat-Dw7bP6zs.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_clearcoat-c_8cDReS.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_clearcoat-c_8cDReS.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-CXn0MUer.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-CXn0MUer.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-CsMJW09v.esm.js +97 -0
- package/dist/chunks/KHR_materials_diffuse_transmission-CsMJW09v.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_dispersion-BDCbGsPA.esm.js +62 -0
- package/dist/chunks/KHR_materials_dispersion-BDCbGsPA.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_dispersion-D2yTJOjM.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_dispersion-D2yTJOjM.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_emissive_strength-Tz0C88U3.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_emissive_strength-Tz0C88U3.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_emissive_strength-jQMxZKq5.esm.js +55 -0
- package/dist/chunks/KHR_materials_emissive_strength-jQMxZKq5.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_ior-2zUX8jy7.esm.js +64 -0
- package/dist/chunks/KHR_materials_ior-2zUX8jy7.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_ior-sCAKuvLs.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_ior-sCAKuvLs.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_iridescence-CTk6lY7i.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_iridescence-CTk6lY7i.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_iridescence-DxBAsUzR.esm.js +72 -0
- package/dist/chunks/KHR_materials_iridescence-DxBAsUzR.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-BgkZXf0x.esm.js +81 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-BgkZXf0x.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Dq7WTMdT.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_pbrSpecularGlossiness-Dq7WTMdT.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_sheen-35UGLw0C.esm.js +85 -0
- package/dist/chunks/KHR_materials_sheen-35UGLw0C.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_sheen-DQ6C57Dt.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_sheen-DQ6C57Dt.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_specular-BPk7EQUD.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_specular-BPk7EQUD.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_specular-DrL3M38a.esm.js +75 -0
- package/dist/chunks/KHR_materials_specular-DrL3M38a.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_transmission-3olkVCcW.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_transmission-3olkVCcW.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_transmission-BpjfU0Rf.esm.js +307 -0
- package/dist/chunks/KHR_materials_transmission-BpjfU0Rf.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_unlit-BK4Bp8qS.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_unlit-BK4Bp8qS.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_unlit-DqWkeMIs.esm.js +74 -0
- package/dist/chunks/KHR_materials_unlit-DqWkeMIs.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_variants-C8EH6z5q.esm.js +262 -0
- package/dist/chunks/KHR_materials_variants-C8EH6z5q.esm.js.map +1 -0
- package/dist/chunks/KHR_materials_variants-U_7nHGWs.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_variants-U_7nHGWs.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_volume-QCITeTgE.esm.min.js +2 -0
- package/dist/chunks/KHR_materials_volume-QCITeTgE.esm.min.js.map +1 -0
- package/dist/chunks/KHR_materials_volume-eXcEVVpW.esm.js +87 -0
- package/dist/chunks/KHR_materials_volume-eXcEVVpW.esm.js.map +1 -0
- package/dist/chunks/KHR_mesh_quantization-BjqgHT7P.esm.js +26 -0
- package/dist/chunks/KHR_mesh_quantization-BjqgHT7P.esm.js.map +1 -0
- package/dist/chunks/KHR_mesh_quantization-CEo8-_n9.esm.min.js +2 -0
- package/dist/chunks/KHR_mesh_quantization-CEo8-_n9.esm.min.js.map +1 -0
- package/dist/chunks/KHR_node_hoverability-CLakAM7o.esm.min.js +2 -0
- package/dist/chunks/KHR_node_hoverability-CLakAM7o.esm.min.js.map +1 -0
- package/dist/chunks/KHR_node_hoverability-XR4H2sEJ.esm.js +39 -0
- package/dist/chunks/KHR_node_hoverability-XR4H2sEJ.esm.js.map +1 -0
- package/dist/chunks/KHR_node_visibility-D5-Uq040.esm.js +46 -0
- package/dist/chunks/KHR_node_visibility-D5-Uq040.esm.js.map +1 -0
- package/dist/chunks/KHR_node_visibility-JpHMpDZy.esm.min.js +2 -0
- package/dist/chunks/KHR_node_visibility-JpHMpDZy.esm.min.js.map +1 -0
- package/dist/chunks/KHR_texture_basisu-CK096eX9.esm.min.js +2 -0
- package/dist/chunks/KHR_texture_basisu-CK096eX9.esm.min.js.map +1 -0
- package/dist/chunks/KHR_texture_basisu-JvEhdHQJ.esm.js +43 -0
- package/dist/chunks/KHR_texture_basisu-JvEhdHQJ.esm.js.map +1 -0
- package/dist/chunks/KHR_texture_transform-ASnRyeyf.esm.js +63 -0
- package/dist/chunks/KHR_texture_transform-ASnRyeyf.esm.js.map +1 -0
- package/dist/chunks/KHR_texture_transform-Ci769L7F.esm.min.js +2 -0
- package/dist/chunks/KHR_texture_transform-Ci769L7F.esm.min.js.map +1 -0
- package/dist/chunks/KHR_xmp_json_ld-Cf0IphHD.esm.min.js +2 -0
- package/dist/chunks/KHR_xmp_json_ld-Cf0IphHD.esm.min.js.map +1 -0
- package/dist/chunks/KHR_xmp_json_ld-ZytUWg-l.esm.js +51 -0
- package/dist/chunks/KHR_xmp_json_ld-ZytUWg-l.esm.js.map +1 -0
- package/dist/chunks/MSFT_audio_emitter-BjoYL7lC.esm.min.js +2 -0
- package/dist/chunks/MSFT_audio_emitter-BjoYL7lC.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_audio_emitter-Di8nqSDi.esm.js +2200 -0
- package/dist/chunks/MSFT_audio_emitter-Di8nqSDi.esm.js.map +1 -0
- package/dist/chunks/MSFT_lod-BMUlo5OU.esm.js +337 -0
- package/dist/chunks/MSFT_lod-BMUlo5OU.esm.js.map +1 -0
- package/dist/chunks/MSFT_lod-OG5_k4mO.esm.min.js +2 -0
- package/dist/chunks/MSFT_lod-OG5_k4mO.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_minecraftMesh-CA9_SnEQ.esm.js +46 -0
- package/dist/chunks/MSFT_minecraftMesh-CA9_SnEQ.esm.js.map +1 -0
- package/dist/chunks/MSFT_minecraftMesh-DA-GfwSb.esm.min.js +2 -0
- package/dist/chunks/MSFT_minecraftMesh-DA-GfwSb.esm.min.js.map +1 -0
- package/dist/chunks/MSFT_sRGBFactors-BpXptZ3D.esm.js +47 -0
- package/dist/chunks/MSFT_sRGBFactors-BpXptZ3D.esm.js.map +1 -0
- package/dist/chunks/MSFT_sRGBFactors-COm0y2eh.esm.min.js +2 -0
- package/dist/chunks/MSFT_sRGBFactors-COm0y2eh.esm.min.js.map +1 -0
- package/dist/chunks/animationGroup-DeyI1KVN.esm.min.js +2 -0
- package/dist/chunks/animationGroup-DeyI1KVN.esm.min.js.map +1 -0
- package/dist/chunks/animationGroup-DrsZkXQW.esm.js +2482 -0
- package/dist/chunks/animationGroup-DrsZkXQW.esm.js.map +1 -0
- package/dist/chunks/assetContainer-Cx2Wvxkg.esm.js +1786 -0
- package/dist/chunks/assetContainer-Cx2Wvxkg.esm.js.map +1 -0
- package/dist/chunks/assetContainer-l3mez3br.esm.min.js +2 -0
- package/dist/chunks/assetContainer-l3mez3br.esm.min.js.map +1 -0
- package/dist/chunks/bakedVertexAnimation-CwJYQylG.esm.js +114 -0
- package/dist/chunks/bakedVertexAnimation-CwJYQylG.esm.js.map +1 -0
- package/dist/chunks/bakedVertexAnimation-D5PLG8Vz.esm.min.js +2 -0
- package/dist/chunks/bakedVertexAnimation-D5PLG8Vz.esm.min.js.map +1 -0
- package/dist/chunks/basisTextureLoader-BNH-2Zvb.esm.min.js +2 -0
- package/dist/chunks/basisTextureLoader-BNH-2Zvb.esm.min.js.map +1 -0
- package/dist/chunks/basisTextureLoader-JW5tEMV8.esm.js +600 -0
- package/dist/chunks/basisTextureLoader-JW5tEMV8.esm.js.map +1 -0
- package/dist/chunks/dds-B1kYpKg4.esm.js +540 -0
- package/dist/chunks/dds-B1kYpKg4.esm.js.map +1 -0
- package/dist/chunks/dds-BIaKvdM8.esm.min.js +2 -0
- package/dist/chunks/dds-BIaKvdM8.esm.min.js.map +1 -0
- package/dist/chunks/ddsTextureLoader-DHdy4-WN.esm.js +88 -0
- package/dist/chunks/ddsTextureLoader-DHdy4-WN.esm.js.map +1 -0
- package/dist/chunks/ddsTextureLoader-DQvH8BPG.esm.min.js +2 -0
- package/dist/chunks/ddsTextureLoader-DQvH8BPG.esm.min.js.map +1 -0
- package/dist/chunks/decalFragment-B07XA08h.esm.min.js +2 -0
- package/dist/chunks/decalFragment-B07XA08h.esm.min.js.map +1 -0
- package/dist/chunks/decalFragment-ClGzoop1.esm.js +18 -0
- package/dist/chunks/decalFragment-ClGzoop1.esm.js.map +1 -0
- package/dist/chunks/default.fragment-CAC3-eH5.esm.min.js +2 -0
- package/dist/chunks/default.fragment-CAC3-eH5.esm.min.js.map +1 -0
- package/dist/chunks/default.fragment-Cr0qnYU0.esm.js +446 -0
- package/dist/chunks/default.fragment-Cr0qnYU0.esm.js.map +1 -0
- package/dist/chunks/default.fragment-DJgifW8z.esm.min.js +2 -0
- package/dist/chunks/default.fragment-DJgifW8z.esm.min.js.map +1 -0
- package/dist/chunks/default.fragment-uFTw5k6Z.esm.js +515 -0
- package/dist/chunks/default.fragment-uFTw5k6Z.esm.js.map +1 -0
- package/dist/chunks/default.vertex-B_u-vpoR.esm.js +211 -0
- package/dist/chunks/default.vertex-B_u-vpoR.esm.js.map +1 -0
- package/dist/chunks/default.vertex-Bo-YeuPk.esm.min.js +2 -0
- package/dist/chunks/default.vertex-Bo-YeuPk.esm.min.js.map +1 -0
- package/dist/chunks/default.vertex-C6LMYeLT.esm.min.js +2 -0
- package/dist/chunks/default.vertex-C6LMYeLT.esm.min.js.map +1 -0
- package/dist/chunks/default.vertex-CzuD5tIE.esm.js +190 -0
- package/dist/chunks/default.vertex-CzuD5tIE.esm.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-BSYuerQe.esm.min.js +2 -0
- package/dist/chunks/defaultUboDeclaration-BSYuerQe.esm.min.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-CQJaKPLM.esm.min.js +2 -0
- package/dist/chunks/defaultUboDeclaration-CQJaKPLM.esm.min.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-DzRt1iTO.esm.js +13 -0
- package/dist/chunks/defaultUboDeclaration-DzRt1iTO.esm.js.map +1 -0
- package/dist/chunks/defaultUboDeclaration-DzpAmCf1.esm.js +15 -0
- package/dist/chunks/defaultUboDeclaration-DzpAmCf1.esm.js.map +1 -0
- package/dist/chunks/dumpTools-JfWNUHd1.esm.js +200 -0
- package/dist/chunks/dumpTools-JfWNUHd1.esm.js.map +1 -0
- package/dist/chunks/dumpTools-MGQM1tV4.esm.min.js +2 -0
- package/dist/chunks/dumpTools-MGQM1tV4.esm.min.js.map +1 -0
- package/dist/chunks/envTextureLoader-CoD9RkFy.esm.js +64 -0
- package/dist/chunks/envTextureLoader-CoD9RkFy.esm.js.map +1 -0
- package/dist/chunks/envTextureLoader-_huqF4Iu.esm.min.js +2 -0
- package/dist/chunks/envTextureLoader-_huqF4Iu.esm.min.js.map +1 -0
- package/dist/chunks/environmentTextureTools-BFBrSyc_.esm.min.js +2 -0
- package/dist/chunks/environmentTextureTools-BFBrSyc_.esm.min.js.map +1 -0
- package/dist/chunks/environmentTextureTools-DMKf2lIW.esm.js +382 -0
- package/dist/chunks/environmentTextureTools-DMKf2lIW.esm.js.map +1 -0
- package/dist/chunks/exrTextureLoader-BkuwS0XF.esm.min.js +2 -0
- package/dist/chunks/exrTextureLoader-BkuwS0XF.esm.min.js.map +1 -0
- package/dist/chunks/exrTextureLoader-DxOSgB3m.esm.js +1683 -0
- package/dist/chunks/exrTextureLoader-DxOSgB3m.esm.js.map +1 -0
- package/dist/chunks/fogFragment-CdyzhyDy.esm.min.js +2 -0
- package/dist/chunks/fogFragment-CdyzhyDy.esm.min.js.map +1 -0
- package/dist/chunks/fogFragment-Ct0roave.esm.js +101 -0
- package/dist/chunks/fogFragment-Ct0roave.esm.js.map +1 -0
- package/dist/chunks/fogFragment-DjORBY8D.esm.min.js +2 -0
- package/dist/chunks/fogFragment-DjORBY8D.esm.min.js.map +1 -0
- package/dist/chunks/fogFragment-DwdRh83Z.esm.js +102 -0
- package/dist/chunks/fogFragment-DwdRh83Z.esm.js.map +1 -0
- package/dist/chunks/fresnelFunction-CuDZqiSs.esm.js +12 -0
- package/dist/chunks/fresnelFunction-CuDZqiSs.esm.js.map +1 -0
- package/dist/chunks/fresnelFunction-zYzL693r.esm.min.js +2 -0
- package/dist/chunks/fresnelFunction-zYzL693r.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoader-CKBe9bFc.esm.js +7735 -0
- package/dist/chunks/glTFLoader-CKBe9bFc.esm.js.map +1 -0
- package/dist/chunks/glTFLoader-HrDvovFY.esm.min.js +2 -0
- package/dist/chunks/glTFLoader-HrDvovFY.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoaderAnimation-D-y1xZvo.esm.min.js +2 -0
- package/dist/chunks/glTFLoaderAnimation-D-y1xZvo.esm.min.js.map +1 -0
- package/dist/chunks/glTFLoaderAnimation-D57wBZJj.esm.js +77 -0
- package/dist/chunks/glTFLoaderAnimation-D57wBZJj.esm.js.map +1 -0
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +2 -0
- package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +1 -0
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +67 -0
- package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-8p1AKl3B.esm.js +35 -0
- package/dist/chunks/harmonicsFunctions-8p1AKl3B.esm.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-C3M4g6jE.esm.min.js +2 -0
- package/dist/chunks/harmonicsFunctions-C3M4g6jE.esm.min.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-CoiTSsVa.esm.min.js +2 -0
- package/dist/chunks/harmonicsFunctions-CoiTSsVa.esm.min.js.map +1 -0
- package/dist/chunks/harmonicsFunctions-HT06ZoZl.esm.js +34 -0
- package/dist/chunks/harmonicsFunctions-HT06ZoZl.esm.js.map +1 -0
- package/dist/chunks/hdrTextureLoader-B0kksMif.esm.js +253 -0
- package/dist/chunks/hdrTextureLoader-B0kksMif.esm.js.map +1 -0
- package/dist/chunks/hdrTextureLoader-CnTSpduj.esm.min.js +2 -0
- package/dist/chunks/hdrTextureLoader-CnTSpduj.esm.min.js.map +1 -0
- package/dist/chunks/helperFunctions-Bq5KkNmT.esm.js +83 -0
- package/dist/chunks/helperFunctions-Bq5KkNmT.esm.js.map +1 -0
- package/dist/chunks/helperFunctions-DauLsm9X.esm.min.js +2 -0
- package/dist/chunks/helperFunctions-DauLsm9X.esm.min.js.map +1 -0
- package/dist/chunks/helperFunctions-Du6Zsfhy.esm.min.js +2 -0
- package/dist/chunks/helperFunctions-Du6Zsfhy.esm.min.js.map +1 -0
- package/dist/chunks/helperFunctions-oDSGYqJN.esm.js +110 -0
- package/dist/chunks/helperFunctions-oDSGYqJN.esm.js.map +1 -0
- package/dist/chunks/iesTextureLoader-DdRr77cj.esm.js +189 -0
- package/dist/chunks/iesTextureLoader-DdRr77cj.esm.js.map +1 -0
- package/dist/chunks/iesTextureLoader-DkEckxVj.esm.min.js +2 -0
- package/dist/chunks/iesTextureLoader-DkEckxVj.esm.min.js.map +1 -0
- package/dist/chunks/index-D46Rc8Qa.esm.js +82819 -0
- package/dist/chunks/index-D46Rc8Qa.esm.js.map +1 -0
- package/dist/chunks/index-r5IGv8fd.esm.min.js +57 -0
- package/dist/chunks/index-r5IGv8fd.esm.min.js.map +1 -0
- package/dist/chunks/ktxTextureLoader-CImJ68er.esm.min.js +2 -0
- package/dist/chunks/ktxTextureLoader-CImJ68er.esm.min.js.map +1 -0
- package/dist/chunks/ktxTextureLoader-CvQzBtnz.esm.js +814 -0
- package/dist/chunks/ktxTextureLoader-CvQzBtnz.esm.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-BNJ_qeEv.esm.min.js +2 -0
- package/dist/chunks/logDepthDeclaration-BNJ_qeEv.esm.min.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-Co9yKHfe.esm.js +35 -0
- package/dist/chunks/logDepthDeclaration-Co9yKHfe.esm.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-DP9tYyv7.esm.min.js +2 -0
- package/dist/chunks/logDepthDeclaration-DP9tYyv7.esm.min.js.map +1 -0
- package/dist/chunks/logDepthDeclaration-KzS73dPG.esm.js +11 -0
- package/dist/chunks/logDepthDeclaration-KzS73dPG.esm.js.map +1 -0
- package/dist/chunks/logDepthVertex-BBDSLJJg.esm.js +77 -0
- package/dist/chunks/logDepthVertex-BBDSLJJg.esm.js.map +1 -0
- package/dist/chunks/logDepthVertex-CHXEv8Hm.esm.min.js +2 -0
- package/dist/chunks/logDepthVertex-CHXEv8Hm.esm.min.js.map +1 -0
- package/dist/chunks/logDepthVertex-CkCG5UAD.esm.min.js +2 -0
- package/dist/chunks/logDepthVertex-CkCG5UAD.esm.min.js.map +1 -0
- package/dist/chunks/logDepthVertex-DKTOhgu8.esm.js +81 -0
- package/dist/chunks/logDepthVertex-DKTOhgu8.esm.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-BxP2qnf1.esm.js +11 -0
- package/dist/chunks/mainUVVaryingDeclaration-BxP2qnf1.esm.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-D-YFWEWb.esm.min.js +2 -0
- package/dist/chunks/mainUVVaryingDeclaration-D-YFWEWb.esm.min.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-D5LXIN_s.esm.min.js +2 -0
- package/dist/chunks/mainUVVaryingDeclaration-D5LXIN_s.esm.min.js.map +1 -0
- package/dist/chunks/mainUVVaryingDeclaration-DBd0Ca2K.esm.js +11 -0
- package/dist/chunks/mainUVVaryingDeclaration-DBd0Ca2K.esm.js.map +1 -0
- package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js +119 -0
- package/dist/chunks/mesh.vertexData.functions-B_pMCAzZ.esm.js.map +1 -0
- package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js +2 -0
- package/dist/chunks/mesh.vertexData.functions-Bo7e6Of9.esm.min.js.map +1 -0
- package/dist/chunks/meshUboDeclaration-D7vtpetW.esm.js +26 -0
- package/dist/chunks/meshUboDeclaration-D7vtpetW.esm.js.map +1 -0
- package/dist/chunks/meshUboDeclaration-tb8T5asG.esm.min.js +2 -0
- package/dist/chunks/meshUboDeclaration-tb8T5asG.esm.min.js.map +1 -0
- package/dist/chunks/objFileLoader-B0XaXxyr.esm.min.js +2 -0
- package/dist/chunks/objFileLoader-B0XaXxyr.esm.min.js.map +1 -0
- package/dist/chunks/objFileLoader-B1MaGxQt.esm.js +1338 -0
- package/dist/chunks/objFileLoader-B1MaGxQt.esm.js.map +1 -0
- package/dist/chunks/oitFragment-BEKFrqPY.esm.js +1078 -0
- package/dist/chunks/oitFragment-BEKFrqPY.esm.js.map +1 -0
- package/dist/chunks/oitFragment-CJrbQh0i.esm.min.js +2 -0
- package/dist/chunks/oitFragment-CJrbQh0i.esm.min.js.map +1 -0
- package/dist/chunks/oitFragment-DCxGblwL.esm.js +1240 -0
- package/dist/chunks/oitFragment-DCxGblwL.esm.js.map +1 -0
- package/dist/chunks/oitFragment-sZA5tkE3.esm.min.js +2 -0
- package/dist/chunks/oitFragment-sZA5tkE3.esm.min.js.map +1 -0
- package/dist/chunks/pass.fragment-BYDvFFL5.esm.js +15 -0
- package/dist/chunks/pass.fragment-BYDvFFL5.esm.js.map +1 -0
- package/dist/chunks/pass.fragment-BgXOqRns.esm.js +15 -0
- package/dist/chunks/pass.fragment-BgXOqRns.esm.js.map +1 -0
- package/dist/chunks/pass.fragment-DgadxzwS.esm.min.js +2 -0
- package/dist/chunks/pass.fragment-DgadxzwS.esm.min.js.map +1 -0
- package/dist/chunks/pass.fragment-Dqmp3CRB.esm.min.js +2 -0
- package/dist/chunks/pass.fragment-Dqmp3CRB.esm.min.js.map +1 -0
- package/dist/chunks/passCube.fragment-07CNLnnq.esm.js +34 -0
- package/dist/chunks/passCube.fragment-07CNLnnq.esm.js.map +1 -0
- package/dist/chunks/passCube.fragment-4R2Z-LXR.esm.min.js +2 -0
- package/dist/chunks/passCube.fragment-4R2Z-LXR.esm.min.js.map +1 -0
- package/dist/chunks/passCube.fragment-Aq1scRJ9.esm.js +34 -0
- package/dist/chunks/passCube.fragment-Aq1scRJ9.esm.js.map +1 -0
- package/dist/chunks/passCube.fragment-DiybDNvK.esm.min.js +2 -0
- package/dist/chunks/passCube.fragment-DiybDNvK.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-CBb8vd51.esm.min.js +2 -0
- package/dist/chunks/pbr.fragment-CBb8vd51.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-DSUT21Rk.esm.min.js +2 -0
- package/dist/chunks/pbr.fragment-DSUT21Rk.esm.min.js.map +1 -0
- package/dist/chunks/pbr.fragment-DmP7eqg7.esm.js +3272 -0
- package/dist/chunks/pbr.fragment-DmP7eqg7.esm.js.map +1 -0
- package/dist/chunks/pbr.fragment-DzIZJg6m.esm.js +3225 -0
- package/dist/chunks/pbr.fragment-DzIZJg6m.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex--Lj5Uipt.esm.js +223 -0
- package/dist/chunks/pbr.vertex--Lj5Uipt.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex-BScRF6wh.esm.min.js +2 -0
- package/dist/chunks/pbr.vertex-BScRF6wh.esm.min.js.map +1 -0
- package/dist/chunks/pbr.vertex-CZSsnbPf.esm.js +348 -0
- package/dist/chunks/pbr.vertex-CZSsnbPf.esm.js.map +1 -0
- package/dist/chunks/pbr.vertex-Nho2p99M.esm.min.js +2 -0
- package/dist/chunks/pbr.vertex-Nho2p99M.esm.min.js.map +1 -0
- package/dist/chunks/postprocess.vertex-B_q6GHTK.esm.js +20 -0
- package/dist/chunks/postprocess.vertex-B_q6GHTK.esm.js.map +1 -0
- package/dist/chunks/postprocess.vertex-C-ocJcje.esm.min.js +2 -0
- package/dist/chunks/postprocess.vertex-C-ocJcje.esm.min.js.map +1 -0
- package/dist/chunks/rawTexture-DeYN01jd.esm.min.js +2 -0
- package/dist/chunks/rawTexture-DeYN01jd.esm.min.js.map +1 -0
- package/dist/chunks/rawTexture-Dh4jdTlv.esm.js +191 -0
- package/dist/chunks/rawTexture-Dh4jdTlv.esm.js.map +1 -0
- package/dist/chunks/ray-DMN9ip7z.esm.min.js +2 -0
- package/dist/chunks/ray-DMN9ip7z.esm.min.js.map +1 -0
- package/dist/chunks/ray-QR2k6aJd.esm.js +946 -0
- package/dist/chunks/ray-QR2k6aJd.esm.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-C3AkoFAQ.esm.min.js +2 -0
- package/dist/chunks/rgbdDecode.fragment-C3AkoFAQ.esm.min.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-Cok6PVQr.esm.js +13 -0
- package/dist/chunks/rgbdDecode.fragment-Cok6PVQr.esm.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-CqcagT1x.esm.min.js +2 -0
- package/dist/chunks/rgbdDecode.fragment-CqcagT1x.esm.min.js.map +1 -0
- package/dist/chunks/rgbdDecode.fragment-DRpqF3bE.esm.js +13 -0
- package/dist/chunks/rgbdDecode.fragment-DRpqF3bE.esm.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-BLe7imXf.esm.min.js +2 -0
- package/dist/chunks/rgbdEncode.fragment-BLe7imXf.esm.min.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-Bi6E_oVW.esm.js +13 -0
- package/dist/chunks/rgbdEncode.fragment-Bi6E_oVW.esm.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-C7hBKPem.esm.min.js +2 -0
- package/dist/chunks/rgbdEncode.fragment-C7hBKPem.esm.min.js.map +1 -0
- package/dist/chunks/rgbdEncode.fragment-C9DicUjD.esm.js +13 -0
- package/dist/chunks/rgbdEncode.fragment-C9DicUjD.esm.js.map +1 -0
- package/dist/chunks/splatFileLoader-BzfYte-_.esm.min.js +2 -0
- package/dist/chunks/splatFileLoader-BzfYte-_.esm.min.js.map +1 -0
- package/dist/chunks/splatFileLoader-K9RpjB6c.esm.js +3660 -0
- package/dist/chunks/splatFileLoader-K9RpjB6c.esm.js.map +1 -0
- package/dist/chunks/spotLight-CJlK-_c5.esm.min.js +2 -0
- package/dist/chunks/spotLight-CJlK-_c5.esm.min.js.map +1 -0
- package/dist/chunks/spotLight-DxPJdRVZ.esm.js +701 -0
- package/dist/chunks/spotLight-DxPJdRVZ.esm.js.map +1 -0
- package/dist/chunks/standardMaterial-BRKRGk7c.esm.js +1811 -0
- package/dist/chunks/standardMaterial-BRKRGk7c.esm.js.map +1 -0
- package/dist/chunks/standardMaterial-Bs9Jda3X.esm.min.js +2 -0
- package/dist/chunks/standardMaterial-Bs9Jda3X.esm.min.js.map +1 -0
- package/dist/chunks/stlFileLoader-BSGzPo-z.esm.min.js +2 -0
- package/dist/chunks/stlFileLoader-BSGzPo-z.esm.min.js.map +1 -0
- package/dist/chunks/stlFileLoader-DtPzeNXZ.esm.js +238 -0
- package/dist/chunks/stlFileLoader-DtPzeNXZ.esm.js.map +1 -0
- package/dist/chunks/tgaTextureLoader-CFjxRPEE.esm.js +349 -0
- package/dist/chunks/tgaTextureLoader-CFjxRPEE.esm.js.map +1 -0
- package/dist/chunks/tgaTextureLoader-Ch1a2Rcd.esm.min.js +2 -0
- package/dist/chunks/tgaTextureLoader-Ch1a2Rcd.esm.min.js.map +1 -0
- package/dist/chunks/thinInstanceMesh-CgfQdxDM.esm.min.js +2 -0
- package/dist/chunks/thinInstanceMesh-CgfQdxDM.esm.min.js.map +1 -0
- package/dist/chunks/thinInstanceMesh-tQGPk8rE.esm.js +314 -0
- package/dist/chunks/thinInstanceMesh-tQGPk8rE.esm.js.map +1 -0
- package/dist/chunks/vertexColorMixing-BcDvzwMA.esm.js +440 -0
- package/dist/chunks/vertexColorMixing-BcDvzwMA.esm.js.map +1 -0
- package/dist/chunks/vertexColorMixing-CJeeWCpY.esm.min.js +2 -0
- package/dist/chunks/vertexColorMixing-CJeeWCpY.esm.min.js.map +1 -0
- package/dist/chunks/vertexColorMixing-DQESmS2T.esm.js +550 -0
- package/dist/chunks/vertexColorMixing-DQESmS2T.esm.js.map +1 -0
- package/dist/chunks/vertexColorMixing-DlrEyRWJ.esm.min.js +2 -0
- package/dist/chunks/vertexColorMixing-DlrEyRWJ.esm.min.js.map +1 -0
- package/dist/chunks/webgpuEngine-B8AMUx8i.esm.js +11539 -0
- package/dist/chunks/webgpuEngine-B8AMUx8i.esm.js.map +1 -0
- package/dist/chunks/webgpuEngine-CxY3O3Qz.esm.min.js +2 -0
- package/dist/chunks/webgpuEngine-CxY3O3Qz.esm.min.js.map +1 -0
- package/dist/chunks/workerPool-BUOov2K1.esm.js +122 -0
- package/dist/chunks/workerPool-BUOov2K1.esm.js.map +1 -0
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +2 -0
- package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +1 -0
- package/lib/index.d.ts +637 -0
- package/lib/index.js +2257 -0
- package/lib/index.js.map +1 -0
- package/package.json +38 -24
- package/readme.md +28 -28
- package/configuration/configuration.d.ts +0 -107
- package/configuration/configuration.js +0 -16
- package/configuration/configuration.js.map +0 -1
- package/configuration/configurationCompatibility.d.ts +0 -8
- package/configuration/configurationCompatibility.js +0 -66
- package/configuration/configurationCompatibility.js.map +0 -1
- package/configuration/configurationContainer.d.ts +0 -10
- package/configuration/configurationContainer.js +0 -10
- package/configuration/configurationContainer.js.map +0 -1
- package/configuration/globals.d.ts +0 -6
- package/configuration/globals.js +0 -18
- package/configuration/globals.js.map +0 -1
- package/configuration/index.d.ts +0 -2
- package/configuration/index.js +0 -4
- package/configuration/index.js.map +0 -1
- package/configuration/interfaces/cameraConfiguration.d.ts +0 -31
- package/configuration/interfaces/cameraConfiguration.js +0 -2
- package/configuration/interfaces/cameraConfiguration.js.map +0 -1
- package/configuration/interfaces/colorGradingConfiguration.d.ts +0 -81
- package/configuration/interfaces/colorGradingConfiguration.js +0 -2
- package/configuration/interfaces/colorGradingConfiguration.js.map +0 -1
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +0 -20
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +0 -2
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +0 -1
- package/configuration/interfaces/environmentMapConfiguration.d.ts +0 -22
- package/configuration/interfaces/environmentMapConfiguration.js +0 -2
- package/configuration/interfaces/environmentMapConfiguration.js.map +0 -1
- package/configuration/interfaces/groundConfiguration.d.ts +0 -24
- package/configuration/interfaces/groundConfiguration.js +0 -2
- package/configuration/interfaces/groundConfiguration.js.map +0 -1
- package/configuration/interfaces/imageProcessingConfiguration.d.ts +0 -45
- package/configuration/interfaces/imageProcessingConfiguration.js +0 -2
- package/configuration/interfaces/imageProcessingConfiguration.js.map +0 -1
- package/configuration/interfaces/index.d.ts +0 -15
- package/configuration/interfaces/index.js +0 -16
- package/configuration/interfaces/index.js.map +0 -1
- package/configuration/interfaces/lightConfiguration.d.ts +0 -60
- package/configuration/interfaces/lightConfiguration.js +0 -2
- package/configuration/interfaces/lightConfiguration.js.map +0 -1
- package/configuration/interfaces/modelAnimationConfiguration.d.ts +0 -26
- package/configuration/interfaces/modelAnimationConfiguration.js +0 -2
- package/configuration/interfaces/modelAnimationConfiguration.js.map +0 -1
- package/configuration/interfaces/modelConfiguration.d.ts +0 -65
- package/configuration/interfaces/modelConfiguration.js +0 -2
- package/configuration/interfaces/modelConfiguration.js.map +0 -1
- package/configuration/interfaces/observersConfiguration.d.ts +0 -5
- package/configuration/interfaces/observersConfiguration.js +0 -2
- package/configuration/interfaces/observersConfiguration.js.map +0 -1
- package/configuration/interfaces/sceneConfiguration.d.ts +0 -48
- package/configuration/interfaces/sceneConfiguration.js +0 -2
- package/configuration/interfaces/sceneConfiguration.js.map +0 -1
- package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +0 -23
- package/configuration/interfaces/sceneOptimizerConfiguration.js +0 -2
- package/configuration/interfaces/sceneOptimizerConfiguration.js.map +0 -1
- package/configuration/interfaces/skyboxConfiguration.d.ts +0 -21
- package/configuration/interfaces/skyboxConfiguration.js +0 -2
- package/configuration/interfaces/skyboxConfiguration.js.map +0 -1
- package/configuration/interfaces/templateConfiguration.d.ts +0 -67
- package/configuration/interfaces/templateConfiguration.js +0 -2
- package/configuration/interfaces/templateConfiguration.js.map +0 -1
- package/configuration/interfaces/vrConfiguration.d.ts +0 -16
- package/configuration/interfaces/vrConfiguration.js +0 -2
- package/configuration/interfaces/vrConfiguration.js.map +0 -1
- package/configuration/loader.d.ts +0 -4
- package/configuration/loader.js +0 -17
- package/configuration/loader.js.map +0 -1
- package/configuration/mappers.d.ts +0 -43
- package/configuration/mappers.js +0 -193
- package/configuration/mappers.js.map +0 -1
- package/configuration/renderOnlyLoader.d.ts +0 -33
- package/configuration/renderOnlyLoader.js +0 -162
- package/configuration/renderOnlyLoader.js.map +0 -1
- package/configuration/types/default.d.ts +0 -6
- package/configuration/types/default.js +0 -121
- package/configuration/types/default.js.map +0 -1
- package/configuration/types/environmentMap.d.ts +0 -5
- package/configuration/types/environmentMap.js +0 -14
- package/configuration/types/environmentMap.js.map +0 -1
- package/configuration/types/extended.d.ts +0 -6
- package/configuration/types/extended.js +0 -317
- package/configuration/types/extended.js.map +0 -1
- package/configuration/types/index.d.ts +0 -14
- package/configuration/types/index.js +0 -51
- package/configuration/types/index.js.map +0 -1
- package/configuration/types/minimal.d.ts +0 -6
- package/configuration/types/minimal.js +0 -43
- package/configuration/types/minimal.js.map +0 -1
- package/configuration/types/renderOnlyDefault.d.ts +0 -30
- package/configuration/types/renderOnlyDefault.js +0 -31
- package/configuration/types/renderOnlyDefault.js.map +0 -1
- package/configuration/types/shadowLight.d.ts +0 -9
- package/configuration/types/shadowLight.js +0 -64
- package/configuration/types/shadowLight.js.map +0 -1
- package/helper/index.d.ts +0 -29
- package/helper/index.js +0 -66
- package/helper/index.js.map +0 -1
- package/index.d.ts +0 -30
- package/index.js +0 -46
- package/index.js.map +0 -1
- package/initializer.d.ts +0 -11
- package/initializer.js +0 -35
- package/initializer.js.map +0 -1
- package/interfaces.d.ts +0 -5
- package/interfaces.js +0 -7
- package/interfaces.js.map +0 -1
- package/labs/environmentSerializer.d.ts +0 -126
- package/labs/environmentSerializer.js +0 -191
- package/labs/environmentSerializer.js.map +0 -1
- package/labs/texture.d.ts +0 -183
- package/labs/texture.js +0 -351
- package/labs/texture.js.map +0 -1
- package/labs/viewerLabs.d.ts +0 -51
- package/labs/viewerLabs.js +0 -134
- package/labs/viewerLabs.js.map +0 -1
- package/loader/modelLoader.d.ts +0 -56
- package/loader/modelLoader.js +0 -202
- package/loader/modelLoader.js.map +0 -1
- package/loader/plugins/applyMaterialConfig.d.ts +0 -12
- package/loader/plugins/applyMaterialConfig.js +0 -16
- package/loader/plugins/applyMaterialConfig.js.map +0 -1
- package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +0 -9
- package/loader/plugins/extendedMaterialLoaderPlugin.js +0 -16
- package/loader/plugins/extendedMaterialLoaderPlugin.js.map +0 -1
- package/loader/plugins/index.d.ts +0 -19
- package/loader/plugins/index.js +0 -44
- package/loader/plugins/index.js.map +0 -1
- package/loader/plugins/loaderPlugin.d.ts +0 -24
- package/loader/plugins/loaderPlugin.js +0 -2
- package/loader/plugins/loaderPlugin.js.map +0 -1
- package/loader/plugins/msftLodLoaderPlugin.d.ts +0 -12
- package/loader/plugins/msftLodLoaderPlugin.js +0 -21
- package/loader/plugins/msftLodLoaderPlugin.js.map +0 -1
- package/loader/plugins/telemetryLoaderPlugin.d.ts +0 -12
- package/loader/plugins/telemetryLoaderPlugin.js +0 -36
- package/loader/plugins/telemetryLoaderPlugin.js.map +0 -1
- package/managers/observablesManager.d.ts +0 -66
- package/managers/observablesManager.js +0 -35
- package/managers/observablesManager.js.map +0 -1
- package/managers/sceneManager.d.ts +0 -245
- package/managers/sceneManager.js +0 -1375
- package/managers/sceneManager.js.map +0 -1
- package/managers/telemetryManager.d.ts +0 -78
- package/managers/telemetryManager.js +0 -117
- package/managers/telemetryManager.js.map +0 -1
- package/model/modelAnimation.d.ts +0 -215
- package/model/modelAnimation.js +0 -237
- package/model/modelAnimation.js.map +0 -1
- package/model/viewerModel.d.ts +0 -233
- package/model/viewerModel.js +0 -673
- package/model/viewerModel.js.map +0 -1
- package/optimizer/custom/extended.d.ts +0 -13
- package/optimizer/custom/extended.js +0 -101
- package/optimizer/custom/extended.js.map +0 -1
- package/optimizer/custom/index.d.ts +0 -9
- package/optimizer/custom/index.js +0 -26
- package/optimizer/custom/index.js.map +0 -1
- package/renderOnlyIndex.d.ts +0 -11
- package/renderOnlyIndex.js +0 -18
- package/renderOnlyIndex.js.map +0 -1
- package/templating/eventManager.d.ts +0 -35
- package/templating/eventManager.js +0 -66
- package/templating/eventManager.js.map +0 -1
- package/templating/plugins/hdButtonPlugin.d.ts +0 -9
- package/templating/plugins/hdButtonPlugin.js +0 -22
- package/templating/plugins/hdButtonPlugin.js.map +0 -1
- package/templating/plugins/printButton.d.ts +0 -9
- package/templating/plugins/printButton.js +0 -41
- package/templating/plugins/printButton.js.map +0 -1
- package/templating/templateManager.d.ts +0 -197
- package/templating/templateManager.js +0 -561
- package/templating/templateManager.js.map +0 -1
- package/templating/viewerTemplatePlugin.d.ts +0 -21
- package/templating/viewerTemplatePlugin.js +0 -69
- package/templating/viewerTemplatePlugin.js.map +0 -1
- package/viewer/defaultViewer.d.ts +0 -130
- package/viewer/defaultViewer.js +0 -672
- package/viewer/defaultViewer.js.map +0 -1
- package/viewer/renderOnlyViewer.d.ts +0 -9
- package/viewer/renderOnlyViewer.js +0 -46
- package/viewer/renderOnlyViewer.js.map +0 -1
- package/viewer/viewer.d.ts +0 -258
- package/viewer/viewer.js +0 -783
- package/viewer/viewer.js.map +0 -1
- package/viewer/viewerManager.d.ts +0 -58
- package/viewer/viewerManager.js +0 -91
- package/viewer/viewerManager.js.map +0 -1
- package/viewer/viewerWithTemplate.d.ts +0 -9
- package/viewer/viewerWithTemplate.js +0 -20
- package/viewer/viewerWithTemplate.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpuEngine-B8AMUx8i.esm.js","sources":["../../../../../dev/core/dist/Engines/WebGPU/webgpuTextureHelper.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuPerfCounter.js","../../../../../dev/core/dist/Engines/thinWebGPUEngine.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuConstants.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuShaderProcessor.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuPipelineContext.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuShaderProcessingContext.js","../../../../../dev/core/dist/Misc/codeStringParsingTools.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuShaderProcessorsGLSL.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuShaderProcessorsWGSL.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuHardwareTexture.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuTextureManager.js","../../../../../dev/core/dist/Meshes/WebGPU/webgpuDataBuffer.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuBufferManager.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuCacheSampler.js","../../../../../dev/core/dist/Buffers/buffer.nonFloatVertexBuffers.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuCacheRenderPipeline.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuCacheRenderPipelineTree.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuStencilStateComposer.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuDepthCullingState.js","../../../../../dev/core/dist/Materials/Textures/externalTexture.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuMaterialContext.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuDrawContext.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuCacheBindGroups.js","../../../../../dev/core/dist/ShadersWGSL/clearQuad.vertex.js","../../../../../dev/core/dist/ShadersWGSL/clearQuad.fragment.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuClearQuad.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuBundleList.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuQuerySet.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuTimestampQuery.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuOcclusionQuery.js","../../../../../dev/core/dist/Engines/Processors/shaderCodeInliner.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuTintWASM.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuSnapshotRendering.js","../../../../../dev/core/dist/Buffers/buffer.align.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuExternalTexture.js","../../../../../dev/core/dist/Engines/WebGPU/Extensions/engine.alpha.js","../../../../../dev/core/dist/Engines/WebGPU/Extensions/engine.rawTexture.js","../../../../../dev/core/dist/Engines/WebGPU/Extensions/engine.readTexture.js","../../../../../dev/core/dist/Engines/WebGPU/Extensions/engine.cubeTexture.js","../../../../../dev/core/dist/Engines/WebGPU/webgpuRenderTargetWrapper.js","../../../../../dev/core/dist/Engines/WebGPU/Extensions/engine.renderTarget.js","../../../../../dev/core/dist/Engines/WebGPU/Extensions/engine.renderTargetTexture.js","../../../../../dev/core/dist/Engines/WebGPU/Extensions/engine.renderTargetCube.js","../../../../../dev/core/dist/Engines/AbstractEngine/abstractEngine.query.js","../../../../../dev/core/dist/Engines/WebGPU/Extensions/engine.query.js","../../../../../dev/core/dist/Engines/webgpuEngine.js"],"sourcesContent":["import { ILog2 } from \"../../Maths/math.scalar.functions\";\nimport { Constants } from \"../constants\";\n/** @internal */\nexport class WebGPUTextureHelper {\n static ComputeNumMipmapLevels(width, height) {\n return ILog2(Math.max(width, height)) + 1;\n }\n static GetTextureTypeFromFormat(format) {\n switch (format) {\n // One Component = 8 bits unsigned\n case \"r8unorm\" /* WebGPUConstants.TextureFormat.R8Unorm */:\n case \"r8uint\" /* WebGPUConstants.TextureFormat.R8Uint */:\n case \"rg8unorm\" /* WebGPUConstants.TextureFormat.RG8Unorm */:\n case \"rg8uint\" /* WebGPUConstants.TextureFormat.RG8Uint */:\n case \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */:\n case \"rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.RGBA8UnormSRGB */:\n case \"rgba8uint\" /* WebGPUConstants.TextureFormat.RGBA8Uint */:\n case \"bgra8unorm\" /* WebGPUConstants.TextureFormat.BGRA8Unorm */:\n case \"bgra8unorm-srgb\" /* WebGPUConstants.TextureFormat.BGRA8UnormSRGB */:\n case \"rgb10a2uint\" /* WebGPUConstants.TextureFormat.RGB10A2UINT */: // composite format - let's say it's byte...\n case \"rgb10a2unorm\" /* WebGPUConstants.TextureFormat.RGB10A2Unorm */: // composite format - let's say it's byte...\n case \"rgb9e5ufloat\" /* WebGPUConstants.TextureFormat.RGB9E5UFloat */: // composite format - let's say it's byte...\n case \"rg11b10ufloat\" /* WebGPUConstants.TextureFormat.RG11B10UFloat */: // composite format - let's say it's byte...\n case \"bc7-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC7RGBAUnorm */:\n case \"bc7-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC7RGBAUnormSRGB */:\n case \"bc6h-rgb-ufloat\" /* WebGPUConstants.TextureFormat.BC6HRGBUFloat */:\n case \"bc5-rg-unorm\" /* WebGPUConstants.TextureFormat.BC5RGUnorm */:\n case \"bc3-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC3RGBAUnorm */:\n case \"bc3-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC3RGBAUnormSRGB */:\n case \"bc2-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC2RGBAUnorm */:\n case \"bc2-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC2RGBAUnormSRGB */:\n case \"bc4-r-unorm\" /* WebGPUConstants.TextureFormat.BC4RUnorm */:\n case \"bc1-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC1RGBAUnorm */:\n case \"bc1-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC1RGBAUnormSRGB */:\n case \"etc2-rgb8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8Unorm */:\n case \"etc2-rgb8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8UnormSRGB */:\n case \"etc2-rgb8a1unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8A1Unorm */:\n case \"etc2-rgb8a1unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8A1UnormSRGB */:\n case \"etc2-rgba8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGBA8Unorm */:\n case \"etc2-rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGBA8UnormSRGB */:\n case \"eac-r11unorm\" /* WebGPUConstants.TextureFormat.EACR11Unorm */:\n case \"eac-rg11unorm\" /* WebGPUConstants.TextureFormat.EACRG11Unorm */:\n case \"astc-4x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC4x4Unorm */:\n case \"astc-4x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC4x4UnormSRGB */:\n case \"astc-5x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC5x4Unorm */:\n case \"astc-5x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC5x4UnormSRGB */:\n case \"astc-5x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC5x5Unorm */:\n case \"astc-5x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC5x5UnormSRGB */:\n case \"astc-6x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC6x5Unorm */:\n case \"astc-6x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC6x5UnormSRGB */:\n case \"astc-6x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC6x6Unorm */:\n case \"astc-6x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC6x6UnormSRGB */:\n case \"astc-8x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x5Unorm */:\n case \"astc-8x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x5UnormSRGB */:\n case \"astc-8x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x6Unorm */:\n case \"astc-8x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x6UnormSRGB */:\n case \"astc-8x8-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x8Unorm */:\n case \"astc-8x8-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x8UnormSRGB */:\n case \"astc-10x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x5Unorm */:\n case \"astc-10x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x5UnormSRGB */:\n case \"astc-10x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x6Unorm */:\n case \"astc-10x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x6UnormSRGB */:\n case \"astc-10x8-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x8Unorm */:\n case \"astc-10x8-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x8UnormSRGB */:\n case \"astc-10x10-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x10Unorm */:\n case \"astc-10x10-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x10UnormSRGB */:\n case \"astc-12x10-unorm\" /* WebGPUConstants.TextureFormat.ASTC12x10Unorm */:\n case \"astc-12x10-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC12x10UnormSRGB */:\n case \"astc-12x12-unorm\" /* WebGPUConstants.TextureFormat.ASTC12x12Unorm */:\n case \"astc-12x12-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC12x12UnormSRGB */:\n case \"stencil8\" /* WebGPUConstants.TextureFormat.Stencil8 */:\n return Constants.TEXTURETYPE_UNSIGNED_BYTE;\n // One Component = 8 bits signed\n case \"r8snorm\" /* WebGPUConstants.TextureFormat.R8Snorm */:\n case \"r8sint\" /* WebGPUConstants.TextureFormat.R8Sint */:\n case \"rg8snorm\" /* WebGPUConstants.TextureFormat.RG8Snorm */:\n case \"rg8sint\" /* WebGPUConstants.TextureFormat.RG8Sint */:\n case \"rgba8snorm\" /* WebGPUConstants.TextureFormat.RGBA8Snorm */:\n case \"rgba8sint\" /* WebGPUConstants.TextureFormat.RGBA8Sint */:\n case \"bc6h-rgb-float\" /* WebGPUConstants.TextureFormat.BC6HRGBFloat */:\n case \"bc5-rg-snorm\" /* WebGPUConstants.TextureFormat.BC5RGSnorm */:\n case \"bc4-r-snorm\" /* WebGPUConstants.TextureFormat.BC4RSnorm */:\n case \"eac-r11snorm\" /* WebGPUConstants.TextureFormat.EACR11Snorm */:\n case \"eac-rg11snorm\" /* WebGPUConstants.TextureFormat.EACRG11Snorm */:\n return Constants.TEXTURETYPE_BYTE;\n // One component = 16 bits unsigned\n case \"r16uint\" /* WebGPUConstants.TextureFormat.R16Uint */:\n case \"r16unorm\" /* WebGPUConstants.TextureFormat.R16Unorm */:\n case \"rg16unorm\" /* WebGPUConstants.TextureFormat.RG16Unorm */:\n case \"rgba16unorm\" /* WebGPUConstants.TextureFormat.RGBA16Unorm */:\n case \"rg16uint\" /* WebGPUConstants.TextureFormat.RG16Uint */:\n case \"rgba16uint\" /* WebGPUConstants.TextureFormat.RGBA16Uint */:\n case \"depth16unorm\" /* WebGPUConstants.TextureFormat.Depth16Unorm */:\n return Constants.TEXTURETYPE_UNSIGNED_SHORT;\n // One component = 16 bits signed\n case \"r16sint\" /* WebGPUConstants.TextureFormat.R16Sint */:\n case \"r16snorm\" /* WebGPUConstants.TextureFormat.R16Snorm */:\n case \"rg16snorm\" /* WebGPUConstants.TextureFormat.RG16Snorm */:\n case \"rgba16snorm\" /* WebGPUConstants.TextureFormat.RGBA16Snorm */:\n case \"rg16sint\" /* WebGPUConstants.TextureFormat.RG16Sint */:\n case \"rgba16sint\" /* WebGPUConstants.TextureFormat.RGBA16Sint */:\n return Constants.TEXTURETYPE_SHORT;\n case \"r16float\" /* WebGPUConstants.TextureFormat.R16Float */:\n case \"rg16float\" /* WebGPUConstants.TextureFormat.RG16Float */:\n case \"rgba16float\" /* WebGPUConstants.TextureFormat.RGBA16Float */:\n return Constants.TEXTURETYPE_HALF_FLOAT;\n // One component = 32 bits unsigned\n case \"r32uint\" /* WebGPUConstants.TextureFormat.R32Uint */:\n case \"rg32uint\" /* WebGPUConstants.TextureFormat.RG32Uint */:\n case \"rgba32uint\" /* WebGPUConstants.TextureFormat.RGBA32Uint */:\n return Constants.TEXTURETYPE_UNSIGNED_INTEGER;\n // One component = 32 bits signed\n case \"r32sint\" /* WebGPUConstants.TextureFormat.R32Sint */:\n case \"rg32sint\" /* WebGPUConstants.TextureFormat.RG32Sint */:\n case \"rgba32sint\" /* WebGPUConstants.TextureFormat.RGBA32Sint */:\n return Constants.TEXTURETYPE_UNSIGNED_INTEGER;\n case \"r32float\" /* WebGPUConstants.TextureFormat.R32Float */:\n case \"rg32float\" /* WebGPUConstants.TextureFormat.RG32Float */:\n case \"rgba32float\" /* WebGPUConstants.TextureFormat.RGBA32Float */:\n case \"depth32float\" /* WebGPUConstants.TextureFormat.Depth32Float */:\n case \"depth32float-stencil8\" /* WebGPUConstants.TextureFormat.Depth32FloatStencil8 */:\n case \"depth24plus\" /* WebGPUConstants.TextureFormat.Depth24Plus */:\n case \"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */:\n return Constants.TEXTURETYPE_FLOAT;\n }\n return Constants.TEXTURETYPE_UNSIGNED_BYTE;\n }\n static GetBlockInformationFromFormat(format) {\n switch (format) {\n // 8 bits formats\n case \"r8unorm\" /* WebGPUConstants.TextureFormat.R8Unorm */:\n case \"r8snorm\" /* WebGPUConstants.TextureFormat.R8Snorm */:\n case \"r8uint\" /* WebGPUConstants.TextureFormat.R8Uint */:\n case \"r8sint\" /* WebGPUConstants.TextureFormat.R8Sint */:\n return { width: 1, height: 1, length: 1 };\n // 16 bits formats\n case \"r16uint\" /* WebGPUConstants.TextureFormat.R16Uint */:\n case \"r16sint\" /* WebGPUConstants.TextureFormat.R16Sint */:\n case \"r16unorm\" /* WebGPUConstants.TextureFormat.R16Unorm */:\n case \"rg16unorm\" /* WebGPUConstants.TextureFormat.RG16Unorm */:\n case \"rgba16unorm\" /* WebGPUConstants.TextureFormat.RGBA16Unorm */:\n case \"r16snorm\" /* WebGPUConstants.TextureFormat.R16Snorm */:\n case \"rg16snorm\" /* WebGPUConstants.TextureFormat.RG16Snorm */:\n case \"rgba16snorm\" /* WebGPUConstants.TextureFormat.RGBA16Snorm */:\n case \"r16float\" /* WebGPUConstants.TextureFormat.R16Float */:\n case \"rg8unorm\" /* WebGPUConstants.TextureFormat.RG8Unorm */:\n case \"rg8snorm\" /* WebGPUConstants.TextureFormat.RG8Snorm */:\n case \"rg8uint\" /* WebGPUConstants.TextureFormat.RG8Uint */:\n case \"rg8sint\" /* WebGPUConstants.TextureFormat.RG8Sint */:\n return { width: 1, height: 1, length: 2 };\n // 32 bits formats\n case \"r32uint\" /* WebGPUConstants.TextureFormat.R32Uint */:\n case \"r32sint\" /* WebGPUConstants.TextureFormat.R32Sint */:\n case \"r32float\" /* WebGPUConstants.TextureFormat.R32Float */:\n case \"rg16uint\" /* WebGPUConstants.TextureFormat.RG16Uint */:\n case \"rg16sint\" /* WebGPUConstants.TextureFormat.RG16Sint */:\n case \"rg16float\" /* WebGPUConstants.TextureFormat.RG16Float */:\n case \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */:\n case \"rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.RGBA8UnormSRGB */:\n case \"rgba8snorm\" /* WebGPUConstants.TextureFormat.RGBA8Snorm */:\n case \"rgba8uint\" /* WebGPUConstants.TextureFormat.RGBA8Uint */:\n case \"rgba8sint\" /* WebGPUConstants.TextureFormat.RGBA8Sint */:\n case \"bgra8unorm\" /* WebGPUConstants.TextureFormat.BGRA8Unorm */:\n case \"bgra8unorm-srgb\" /* WebGPUConstants.TextureFormat.BGRA8UnormSRGB */:\n case \"rgb9e5ufloat\" /* WebGPUConstants.TextureFormat.RGB9E5UFloat */:\n case \"rgb10a2uint\" /* WebGPUConstants.TextureFormat.RGB10A2UINT */:\n case \"rgb10a2unorm\" /* WebGPUConstants.TextureFormat.RGB10A2Unorm */:\n case \"rg11b10ufloat\" /* WebGPUConstants.TextureFormat.RG11B10UFloat */:\n return { width: 1, height: 1, length: 4 };\n // 64 bits formats\n case \"rg32uint\" /* WebGPUConstants.TextureFormat.RG32Uint */:\n case \"rg32sint\" /* WebGPUConstants.TextureFormat.RG32Sint */:\n case \"rg32float\" /* WebGPUConstants.TextureFormat.RG32Float */:\n case \"rgba16uint\" /* WebGPUConstants.TextureFormat.RGBA16Uint */:\n case \"rgba16sint\" /* WebGPUConstants.TextureFormat.RGBA16Sint */:\n case \"rgba16float\" /* WebGPUConstants.TextureFormat.RGBA16Float */:\n return { width: 1, height: 1, length: 8 };\n // 128 bits formats\n case \"rgba32uint\" /* WebGPUConstants.TextureFormat.RGBA32Uint */:\n case \"rgba32sint\" /* WebGPUConstants.TextureFormat.RGBA32Sint */:\n case \"rgba32float\" /* WebGPUConstants.TextureFormat.RGBA32Float */:\n return { width: 1, height: 1, length: 16 };\n // Depth and stencil formats\n case \"stencil8\" /* WebGPUConstants.TextureFormat.Stencil8 */:\n // eslint-disable-next-line no-throw-literal\n throw \"No fixed size for Stencil8 format!\";\n case \"depth16unorm\" /* WebGPUConstants.TextureFormat.Depth16Unorm */:\n return { width: 1, height: 1, length: 2 };\n case \"depth24plus\" /* WebGPUConstants.TextureFormat.Depth24Plus */:\n // eslint-disable-next-line no-throw-literal\n throw \"No fixed size for Depth24Plus format!\";\n case \"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */:\n // eslint-disable-next-line no-throw-literal\n throw \"No fixed size for Depth24PlusStencil8 format!\";\n case \"depth32float\" /* WebGPUConstants.TextureFormat.Depth32Float */:\n return { width: 1, height: 1, length: 4 };\n case \"depth32float-stencil8\" /* WebGPUConstants.TextureFormat.Depth32FloatStencil8 */:\n return { width: 1, height: 1, length: 5 };\n // BC compressed formats usable if \"texture-compression-bc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n case \"bc7-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC7RGBAUnorm */:\n case \"bc7-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC7RGBAUnormSRGB */:\n case \"bc6h-rgb-ufloat\" /* WebGPUConstants.TextureFormat.BC6HRGBUFloat */:\n case \"bc6h-rgb-float\" /* WebGPUConstants.TextureFormat.BC6HRGBFloat */:\n case \"bc5-rg-unorm\" /* WebGPUConstants.TextureFormat.BC5RGUnorm */:\n case \"bc5-rg-snorm\" /* WebGPUConstants.TextureFormat.BC5RGSnorm */:\n case \"bc3-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC3RGBAUnorm */:\n case \"bc3-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC3RGBAUnormSRGB */:\n case \"bc2-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC2RGBAUnorm */:\n case \"bc2-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC2RGBAUnormSRGB */:\n return { width: 4, height: 4, length: 16 };\n case \"bc4-r-unorm\" /* WebGPUConstants.TextureFormat.BC4RUnorm */:\n case \"bc4-r-snorm\" /* WebGPUConstants.TextureFormat.BC4RSnorm */:\n case \"bc1-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC1RGBAUnorm */:\n case \"bc1-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC1RGBAUnormSRGB */:\n return { width: 4, height: 4, length: 8 };\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n case \"etc2-rgb8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8Unorm */:\n case \"etc2-rgb8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8UnormSRGB */:\n case \"etc2-rgb8a1unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8A1Unorm */:\n case \"etc2-rgb8a1unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8A1UnormSRGB */:\n case \"eac-r11unorm\" /* WebGPUConstants.TextureFormat.EACR11Unorm */:\n case \"eac-r11snorm\" /* WebGPUConstants.TextureFormat.EACR11Snorm */:\n return { width: 4, height: 4, length: 8 };\n case \"etc2-rgba8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGBA8Unorm */:\n case \"etc2-rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGBA8UnormSRGB */:\n case \"eac-rg11unorm\" /* WebGPUConstants.TextureFormat.EACRG11Unorm */:\n case \"eac-rg11snorm\" /* WebGPUConstants.TextureFormat.EACRG11Snorm */:\n return { width: 4, height: 4, length: 16 };\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n case \"astc-4x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC4x4Unorm */:\n case \"astc-4x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC4x4UnormSRGB */:\n return { width: 4, height: 4, length: 16 };\n case \"astc-5x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC5x4Unorm */:\n case \"astc-5x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC5x4UnormSRGB */:\n return { width: 5, height: 4, length: 16 };\n case \"astc-5x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC5x5Unorm */:\n case \"astc-5x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC5x5UnormSRGB */:\n return { width: 5, height: 5, length: 16 };\n case \"astc-6x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC6x5Unorm */:\n case \"astc-6x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC6x5UnormSRGB */:\n return { width: 6, height: 5, length: 16 };\n case \"astc-6x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC6x6Unorm */:\n case \"astc-6x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC6x6UnormSRGB */:\n return { width: 6, height: 6, length: 16 };\n case \"astc-8x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x5Unorm */:\n case \"astc-8x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x5UnormSRGB */:\n return { width: 8, height: 5, length: 16 };\n case \"astc-8x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x6Unorm */:\n case \"astc-8x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x6UnormSRGB */:\n return { width: 8, height: 6, length: 16 };\n case \"astc-8x8-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x8Unorm */:\n case \"astc-8x8-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x8UnormSRGB */:\n return { width: 8, height: 8, length: 16 };\n case \"astc-10x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x5Unorm */:\n case \"astc-10x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x5UnormSRGB */:\n return { width: 10, height: 5, length: 16 };\n case \"astc-10x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x6Unorm */:\n case \"astc-10x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x6UnormSRGB */:\n return { width: 10, height: 6, length: 16 };\n case \"astc-10x8-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x8Unorm */:\n case \"astc-10x8-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x8UnormSRGB */:\n return { width: 10, height: 8, length: 16 };\n case \"astc-10x10-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x10Unorm */:\n case \"astc-10x10-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x10UnormSRGB */:\n return { width: 10, height: 10, length: 16 };\n case \"astc-12x10-unorm\" /* WebGPUConstants.TextureFormat.ASTC12x10Unorm */:\n case \"astc-12x10-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC12x10UnormSRGB */:\n return { width: 12, height: 10, length: 16 };\n case \"astc-12x12-unorm\" /* WebGPUConstants.TextureFormat.ASTC12x12Unorm */:\n case \"astc-12x12-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC12x12UnormSRGB */:\n return { width: 12, height: 12, length: 16 };\n }\n return { width: 1, height: 1, length: 4 };\n }\n static IsHardwareTexture(texture) {\n return !!texture.release;\n }\n static IsInternalTexture(texture) {\n return !!texture.dispose;\n }\n static IsImageBitmap(imageBitmap) {\n return imageBitmap.close !== undefined;\n }\n static IsImageBitmapArray(imageBitmap) {\n return Array.isArray(imageBitmap) && imageBitmap[0].close !== undefined;\n }\n static IsCompressedFormat(format) {\n switch (format) {\n case \"bc7-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC7RGBAUnormSRGB */:\n case \"bc7-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC7RGBAUnorm */:\n case \"bc6h-rgb-float\" /* WebGPUConstants.TextureFormat.BC6HRGBFloat */:\n case \"bc6h-rgb-ufloat\" /* WebGPUConstants.TextureFormat.BC6HRGBUFloat */:\n case \"bc5-rg-snorm\" /* WebGPUConstants.TextureFormat.BC5RGSnorm */:\n case \"bc5-rg-unorm\" /* WebGPUConstants.TextureFormat.BC5RGUnorm */:\n case \"bc4-r-snorm\" /* WebGPUConstants.TextureFormat.BC4RSnorm */:\n case \"bc4-r-unorm\" /* WebGPUConstants.TextureFormat.BC4RUnorm */:\n case \"bc3-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC3RGBAUnormSRGB */:\n case \"bc3-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC3RGBAUnorm */:\n case \"bc2-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC2RGBAUnormSRGB */:\n case \"bc2-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC2RGBAUnorm */:\n case \"bc1-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC1RGBAUnormSRGB */:\n case \"bc1-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC1RGBAUnorm */:\n case \"etc2-rgb8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8Unorm */:\n case \"etc2-rgb8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8UnormSRGB */:\n case \"etc2-rgb8a1unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8A1Unorm */:\n case \"etc2-rgb8a1unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8A1UnormSRGB */:\n case \"etc2-rgba8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGBA8Unorm */:\n case \"etc2-rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGBA8UnormSRGB */:\n case \"eac-r11unorm\" /* WebGPUConstants.TextureFormat.EACR11Unorm */:\n case \"eac-r11snorm\" /* WebGPUConstants.TextureFormat.EACR11Snorm */:\n case \"eac-rg11unorm\" /* WebGPUConstants.TextureFormat.EACRG11Unorm */:\n case \"eac-rg11snorm\" /* WebGPUConstants.TextureFormat.EACRG11Snorm */:\n case \"astc-4x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC4x4Unorm */:\n case \"astc-4x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC4x4UnormSRGB */:\n case \"astc-5x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC5x4Unorm */:\n case \"astc-5x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC5x4UnormSRGB */:\n case \"astc-5x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC5x5Unorm */:\n case \"astc-5x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC5x5UnormSRGB */:\n case \"astc-6x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC6x5Unorm */:\n case \"astc-6x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC6x5UnormSRGB */:\n case \"astc-6x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC6x6Unorm */:\n case \"astc-6x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC6x6UnormSRGB */:\n case \"astc-8x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x5Unorm */:\n case \"astc-8x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x5UnormSRGB */:\n case \"astc-8x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x6Unorm */:\n case \"astc-8x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x6UnormSRGB */:\n case \"astc-8x8-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x8Unorm */:\n case \"astc-8x8-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x8UnormSRGB */:\n case \"astc-10x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x5Unorm */:\n case \"astc-10x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x5UnormSRGB */:\n case \"astc-10x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x6Unorm */:\n case \"astc-10x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x6UnormSRGB */:\n case \"astc-10x8-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x8Unorm */:\n case \"astc-10x8-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x8UnormSRGB */:\n case \"astc-10x10-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x10Unorm */:\n case \"astc-10x10-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x10UnormSRGB */:\n case \"astc-12x10-unorm\" /* WebGPUConstants.TextureFormat.ASTC12x10Unorm */:\n case \"astc-12x10-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC12x10UnormSRGB */:\n case \"astc-12x12-unorm\" /* WebGPUConstants.TextureFormat.ASTC12x12Unorm */:\n case \"astc-12x12-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC12x12UnormSRGB */:\n return true;\n }\n return false;\n }\n static GetWebGPUTextureFormat(type, format, useSRGBBuffer = false) {\n switch (format) {\n case Constants.TEXTUREFORMAT_DEPTH16:\n return \"depth16unorm\" /* WebGPUConstants.TextureFormat.Depth16Unorm */;\n case Constants.TEXTUREFORMAT_DEPTH24:\n return \"depth24plus\" /* WebGPUConstants.TextureFormat.Depth24Plus */;\n case Constants.TEXTUREFORMAT_DEPTH24_STENCIL8:\n return \"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */;\n case Constants.TEXTUREFORMAT_DEPTH32_FLOAT:\n return \"depth32float\" /* WebGPUConstants.TextureFormat.Depth32Float */;\n case Constants.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8:\n return \"depth32float-stencil8\" /* WebGPUConstants.TextureFormat.Depth32FloatStencil8 */;\n case Constants.TEXTUREFORMAT_STENCIL8:\n return \"stencil8\" /* WebGPUConstants.TextureFormat.Stencil8 */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM:\n return useSRGBBuffer ? \"bc7-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC7RGBAUnormSRGB */ : \"bc7-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC7RGBAUnorm */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT:\n return \"bc6h-rgb-ufloat\" /* WebGPUConstants.TextureFormat.BC6HRGBUFloat */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:\n return \"bc6h-rgb-float\" /* WebGPUConstants.TextureFormat.BC6HRGBFloat */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5:\n return useSRGBBuffer ? \"bc3-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC3RGBAUnormSRGB */ : \"bc3-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC3RGBAUnorm */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3:\n return useSRGBBuffer ? \"bc2-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC2RGBAUnormSRGB */ : \"bc2-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC2RGBAUnorm */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1:\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1:\n return useSRGBBuffer ? \"bc1-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC1RGBAUnormSRGB */ : \"bc1-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC1RGBAUnorm */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4:\n return useSRGBBuffer ? \"astc-4x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC4x4UnormSRGB */ : \"astc-4x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC4x4Unorm */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL:\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2:\n return useSRGBBuffer ? \"etc2-rgb8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8UnormSRGB */ : \"etc2-rgb8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8Unorm */;\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC:\n return useSRGBBuffer ? \"etc2-rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGBA8UnormSRGB */ : \"etc2-rgba8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGBA8Unorm */;\n }\n switch (type) {\n case Constants.TEXTURETYPE_BYTE:\n switch (format) {\n case Constants.TEXTUREFORMAT_RED:\n return \"r8snorm\" /* WebGPUConstants.TextureFormat.R8Snorm */;\n case Constants.TEXTUREFORMAT_RG:\n return \"rg8snorm\" /* WebGPUConstants.TextureFormat.RG8Snorm */;\n case Constants.TEXTUREFORMAT_RGB:\n // eslint-disable-next-line no-throw-literal\n throw \"RGB format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RED_INTEGER:\n return \"r8sint\" /* WebGPUConstants.TextureFormat.R8Sint */;\n case Constants.TEXTUREFORMAT_RG_INTEGER:\n return \"rg8sint\" /* WebGPUConstants.TextureFormat.RG8Sint */;\n case Constants.TEXTUREFORMAT_RGB_INTEGER:\n // eslint-disable-next-line no-throw-literal\n throw \"RGB_INTEGER format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n return \"rgba8sint\" /* WebGPUConstants.TextureFormat.RGBA8Sint */;\n default:\n return \"rgba8snorm\" /* WebGPUConstants.TextureFormat.RGBA8Snorm */;\n }\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\n switch (format) {\n case Constants.TEXTUREFORMAT_RED:\n return \"r8unorm\" /* WebGPUConstants.TextureFormat.R8Unorm */;\n case Constants.TEXTUREFORMAT_RG:\n return \"rg8unorm\" /* WebGPUConstants.TextureFormat.RG8Unorm */;\n case Constants.TEXTUREFORMAT_RGB:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGB format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA:\n return useSRGBBuffer ? \"rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.RGBA8UnormSRGB */ : \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */;\n case Constants.TEXTUREFORMAT_BGRA:\n return useSRGBBuffer ? \"bgra8unorm-srgb\" /* WebGPUConstants.TextureFormat.BGRA8UnormSRGB */ : \"bgra8unorm\" /* WebGPUConstants.TextureFormat.BGRA8Unorm */;\n case Constants.TEXTUREFORMAT_RED_INTEGER:\n return \"r8uint\" /* WebGPUConstants.TextureFormat.R8Uint */;\n case Constants.TEXTUREFORMAT_RG_INTEGER:\n return \"rg8uint\" /* WebGPUConstants.TextureFormat.RG8Uint */;\n case Constants.TEXTUREFORMAT_RGB_INTEGER:\n // eslint-disable-next-line no-throw-literal\n throw \"RGB_INTEGER format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n return \"rgba8uint\" /* WebGPUConstants.TextureFormat.RGBA8Uint */;\n case Constants.TEXTUREFORMAT_ALPHA:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_ALPHA format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_LUMINANCE:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_LUMINANCE format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_LUMINANCE_ALPHA:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_LUMINANCE_ALPHA format not supported in WebGPU\";\n default:\n return \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */;\n }\n case Constants.TEXTURETYPE_SHORT:\n switch (format) {\n case Constants.TEXTUREFORMAT_RED_INTEGER:\n return \"r16sint\" /* WebGPUConstants.TextureFormat.R16Sint */;\n case Constants.TEXTUREFORMAT_RG_INTEGER:\n return \"rg16sint\" /* WebGPUConstants.TextureFormat.RG16Sint */;\n case Constants.TEXTUREFORMAT_RGB_INTEGER:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n return \"rgba16sint\" /* WebGPUConstants.TextureFormat.RGBA16Sint */;\n default:\n return \"rgba16sint\" /* WebGPUConstants.TextureFormat.RGBA16Sint */;\n }\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\n switch (format) {\n case Constants.TEXTUREFORMAT_RED_INTEGER:\n return \"r16uint\" /* WebGPUConstants.TextureFormat.R16Uint */;\n case Constants.TEXTUREFORMAT_RG_INTEGER:\n return \"rg16uint\" /* WebGPUConstants.TextureFormat.RG16Uint */;\n case Constants.TEXTUREFORMAT_RGB_INTEGER:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n return \"rgba16uint\" /* WebGPUConstants.TextureFormat.RGBA16Uint */;\n default:\n return \"rgba16uint\" /* WebGPUConstants.TextureFormat.RGBA16Uint */;\n }\n case Constants.TEXTURETYPE_INT:\n switch (format) {\n case Constants.TEXTUREFORMAT_RED_INTEGER:\n return \"r32sint\" /* WebGPUConstants.TextureFormat.R32Sint */;\n case Constants.TEXTUREFORMAT_RG_INTEGER:\n return \"rg32sint\" /* WebGPUConstants.TextureFormat.RG32Sint */;\n case Constants.TEXTUREFORMAT_RGB_INTEGER:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n return \"rgba32sint\" /* WebGPUConstants.TextureFormat.RGBA32Sint */;\n default:\n return \"rgba32sint\" /* WebGPUConstants.TextureFormat.RGBA32Sint */;\n }\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER: // Refers to UNSIGNED_INT\n switch (format) {\n case Constants.TEXTUREFORMAT_RED_INTEGER:\n return \"r32uint\" /* WebGPUConstants.TextureFormat.R32Uint */;\n case Constants.TEXTUREFORMAT_RG_INTEGER:\n return \"rg32uint\" /* WebGPUConstants.TextureFormat.RG32Uint */;\n case Constants.TEXTUREFORMAT_RGB_INTEGER:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGB_INTEGER format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n return \"rgba32uint\" /* WebGPUConstants.TextureFormat.RGBA32Uint */;\n default:\n return \"rgba32uint\" /* WebGPUConstants.TextureFormat.RGBA32Uint */;\n }\n case Constants.TEXTURETYPE_FLOAT:\n switch (format) {\n case Constants.TEXTUREFORMAT_RED:\n return \"r32float\" /* WebGPUConstants.TextureFormat.R32Float */; // By default. Other possibility is R16Float.\n case Constants.TEXTUREFORMAT_RG:\n return \"rg32float\" /* WebGPUConstants.TextureFormat.RG32Float */; // By default. Other possibility is RG16Float.\n case Constants.TEXTUREFORMAT_RGB:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGB format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA:\n return \"rgba32float\" /* WebGPUConstants.TextureFormat.RGBA32Float */; // By default. Other possibility is RGBA16Float.\n default:\n return \"rgba32float\" /* WebGPUConstants.TextureFormat.RGBA32Float */;\n }\n case Constants.TEXTURETYPE_HALF_FLOAT:\n switch (format) {\n case Constants.TEXTUREFORMAT_RED:\n return \"r16float\" /* WebGPUConstants.TextureFormat.R16Float */;\n case Constants.TEXTUREFORMAT_RG:\n return \"rg16float\" /* WebGPUConstants.TextureFormat.RG16Float */;\n case Constants.TEXTUREFORMAT_RGB:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGB format not supported in WebGPU\";\n case Constants.TEXTUREFORMAT_RGBA:\n return \"rgba16float\" /* WebGPUConstants.TextureFormat.RGBA16Float */;\n default:\n return \"rgba16float\" /* WebGPUConstants.TextureFormat.RGBA16Float */;\n }\n case Constants.TEXTURETYPE_UNSIGNED_SHORT_5_6_5:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTURETYPE_UNSIGNED_SHORT_5_6_5 format not supported in WebGPU\";\n case Constants.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV:\n switch (format) {\n case Constants.TEXTUREFORMAT_RGBA:\n return \"rg11b10ufloat\" /* WebGPUConstants.TextureFormat.RG11B10UFloat */;\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGBA_INTEGER format not supported in WebGPU when type is TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV\";\n default:\n return \"rg11b10ufloat\" /* WebGPUConstants.TextureFormat.RG11B10UFloat */;\n }\n case Constants.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV:\n switch (format) {\n case Constants.TEXTUREFORMAT_RGBA:\n return \"rgb9e5ufloat\" /* WebGPUConstants.TextureFormat.RGB9E5UFloat */;\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTUREFORMAT_RGBA_INTEGER format not supported in WebGPU when type is TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV\";\n default:\n return \"rgb9e5ufloat\" /* WebGPUConstants.TextureFormat.RGB9E5UFloat */;\n }\n case Constants.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4 format not supported in WebGPU\";\n case Constants.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1:\n // eslint-disable-next-line no-throw-literal\n throw \"TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1 format not supported in WebGPU\";\n case Constants.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV:\n switch (format) {\n case Constants.TEXTUREFORMAT_RGBA:\n return \"rgb10a2unorm\" /* WebGPUConstants.TextureFormat.RGB10A2Unorm */;\n case Constants.TEXTUREFORMAT_RGBA_INTEGER:\n return \"rgb10a2uint\" /* WebGPUConstants.TextureFormat.RGB10A2UINT */;\n default:\n return \"rgb10a2unorm\" /* WebGPUConstants.TextureFormat.RGB10A2Unorm */;\n }\n }\n return useSRGBBuffer ? \"rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.RGBA8UnormSRGB */ : \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */;\n }\n static GetNumChannelsFromWebGPUTextureFormat(format) {\n switch (format) {\n case \"r8unorm\" /* WebGPUConstants.TextureFormat.R8Unorm */:\n case \"r8snorm\" /* WebGPUConstants.TextureFormat.R8Snorm */:\n case \"r8uint\" /* WebGPUConstants.TextureFormat.R8Uint */:\n case \"r8sint\" /* WebGPUConstants.TextureFormat.R8Sint */:\n case \"bc4-r-unorm\" /* WebGPUConstants.TextureFormat.BC4RUnorm */:\n case \"bc4-r-snorm\" /* WebGPUConstants.TextureFormat.BC4RSnorm */:\n case \"r16uint\" /* WebGPUConstants.TextureFormat.R16Uint */:\n case \"r16sint\" /* WebGPUConstants.TextureFormat.R16Sint */:\n case \"depth16unorm\" /* WebGPUConstants.TextureFormat.Depth16Unorm */:\n case \"r16float\" /* WebGPUConstants.TextureFormat.R16Float */:\n case \"r16unorm\" /* WebGPUConstants.TextureFormat.R16Unorm */:\n case \"r16snorm\" /* WebGPUConstants.TextureFormat.R16Snorm */:\n case \"r32uint\" /* WebGPUConstants.TextureFormat.R32Uint */:\n case \"r32sint\" /* WebGPUConstants.TextureFormat.R32Sint */:\n case \"r32float\" /* WebGPUConstants.TextureFormat.R32Float */:\n case \"depth32float\" /* WebGPUConstants.TextureFormat.Depth32Float */:\n case \"stencil8\" /* WebGPUConstants.TextureFormat.Stencil8 */:\n case \"depth24plus\" /* WebGPUConstants.TextureFormat.Depth24Plus */:\n case \"eac-r11unorm\" /* WebGPUConstants.TextureFormat.EACR11Unorm */:\n case \"eac-r11snorm\" /* WebGPUConstants.TextureFormat.EACR11Snorm */:\n return 1;\n case \"rg8unorm\" /* WebGPUConstants.TextureFormat.RG8Unorm */:\n case \"rg8snorm\" /* WebGPUConstants.TextureFormat.RG8Snorm */:\n case \"rg8uint\" /* WebGPUConstants.TextureFormat.RG8Uint */:\n case \"rg8sint\" /* WebGPUConstants.TextureFormat.RG8Sint */:\n case \"depth32float-stencil8\" /* WebGPUConstants.TextureFormat.Depth32FloatStencil8 */:\n case \"bc5-rg-unorm\" /* WebGPUConstants.TextureFormat.BC5RGUnorm */:\n case \"bc5-rg-snorm\" /* WebGPUConstants.TextureFormat.BC5RGSnorm */:\n case \"rg16uint\" /* WebGPUConstants.TextureFormat.RG16Uint */:\n case \"rg16sint\" /* WebGPUConstants.TextureFormat.RG16Sint */:\n case \"rg16float\" /* WebGPUConstants.TextureFormat.RG16Float */:\n case \"rg16unorm\" /* WebGPUConstants.TextureFormat.RG16Unorm */:\n case \"rg16snorm\" /* WebGPUConstants.TextureFormat.RG16Snorm */:\n case \"rg32uint\" /* WebGPUConstants.TextureFormat.RG32Uint */:\n case \"rg32sint\" /* WebGPUConstants.TextureFormat.RG32Sint */:\n case \"rg32float\" /* WebGPUConstants.TextureFormat.RG32Float */:\n case \"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */:\n case \"eac-rg11unorm\" /* WebGPUConstants.TextureFormat.EACRG11Unorm */:\n case \"eac-rg11snorm\" /* WebGPUConstants.TextureFormat.EACRG11Snorm */:\n return 2;\n case \"rgb9e5ufloat\" /* WebGPUConstants.TextureFormat.RGB9E5UFloat */:\n case \"rg11b10ufloat\" /* WebGPUConstants.TextureFormat.RG11B10UFloat */:\n case \"bc6h-rgb-ufloat\" /* WebGPUConstants.TextureFormat.BC6HRGBUFloat */:\n case \"bc6h-rgb-float\" /* WebGPUConstants.TextureFormat.BC6HRGBFloat */:\n case \"etc2-rgb8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8Unorm */:\n case \"etc2-rgb8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8UnormSRGB */:\n return 3;\n case \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */:\n case \"rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.RGBA8UnormSRGB */:\n case \"rgba8snorm\" /* WebGPUConstants.TextureFormat.RGBA8Snorm */:\n case \"rgba8uint\" /* WebGPUConstants.TextureFormat.RGBA8Uint */:\n case \"rgba8sint\" /* WebGPUConstants.TextureFormat.RGBA8Sint */:\n case \"bgra8unorm\" /* WebGPUConstants.TextureFormat.BGRA8Unorm */:\n case \"bgra8unorm-srgb\" /* WebGPUConstants.TextureFormat.BGRA8UnormSRGB */:\n case \"rgba16unorm\" /* WebGPUConstants.TextureFormat.RGBA16Unorm */:\n case \"rgba16snorm\" /* WebGPUConstants.TextureFormat.RGBA16Snorm */:\n case \"rgb10a2uint\" /* WebGPUConstants.TextureFormat.RGB10A2UINT */:\n case \"rgb10a2unorm\" /* WebGPUConstants.TextureFormat.RGB10A2Unorm */:\n case \"bc7-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC7RGBAUnorm */:\n case \"bc7-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC7RGBAUnormSRGB */:\n case \"bc3-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC3RGBAUnorm */:\n case \"bc3-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC3RGBAUnormSRGB */:\n case \"bc2-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC2RGBAUnorm */:\n case \"bc2-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC2RGBAUnormSRGB */:\n case \"bc1-rgba-unorm\" /* WebGPUConstants.TextureFormat.BC1RGBAUnorm */:\n case \"bc1-rgba-unorm-srgb\" /* WebGPUConstants.TextureFormat.BC1RGBAUnormSRGB */:\n case \"rgba16uint\" /* WebGPUConstants.TextureFormat.RGBA16Uint */:\n case \"rgba16sint\" /* WebGPUConstants.TextureFormat.RGBA16Sint */:\n case \"rgba16float\" /* WebGPUConstants.TextureFormat.RGBA16Float */:\n case \"rgba32uint\" /* WebGPUConstants.TextureFormat.RGBA32Uint */:\n case \"rgba32sint\" /* WebGPUConstants.TextureFormat.RGBA32Sint */:\n case \"rgba32float\" /* WebGPUConstants.TextureFormat.RGBA32Float */:\n case \"etc2-rgb8a1unorm\" /* WebGPUConstants.TextureFormat.ETC2RGB8A1Unorm */:\n case \"etc2-rgb8a1unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGB8A1UnormSRGB */:\n case \"etc2-rgba8unorm\" /* WebGPUConstants.TextureFormat.ETC2RGBA8Unorm */:\n case \"etc2-rgba8unorm-srgb\" /* WebGPUConstants.TextureFormat.ETC2RGBA8UnormSRGB */:\n case \"astc-4x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC4x4Unorm */:\n case \"astc-4x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC4x4UnormSRGB */:\n case \"astc-5x4-unorm\" /* WebGPUConstants.TextureFormat.ASTC5x4Unorm */:\n case \"astc-5x4-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC5x4UnormSRGB */:\n case \"astc-5x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC5x5Unorm */:\n case \"astc-5x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC5x5UnormSRGB */:\n case \"astc-6x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC6x5Unorm */:\n case \"astc-6x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC6x5UnormSRGB */:\n case \"astc-6x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC6x6Unorm */:\n case \"astc-6x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC6x6UnormSRGB */:\n case \"astc-8x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x5Unorm */:\n case \"astc-8x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x5UnormSRGB */:\n case \"astc-8x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x6Unorm */:\n case \"astc-8x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x6UnormSRGB */:\n case \"astc-8x8-unorm\" /* WebGPUConstants.TextureFormat.ASTC8x8Unorm */:\n case \"astc-8x8-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC8x8UnormSRGB */:\n case \"astc-10x5-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x5Unorm */:\n case \"astc-10x5-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x5UnormSRGB */:\n case \"astc-10x6-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x6Unorm */:\n case \"astc-10x6-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x6UnormSRGB */:\n case \"astc-10x8-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x8Unorm */:\n case \"astc-10x8-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x8UnormSRGB */:\n case \"astc-10x10-unorm\" /* WebGPUConstants.TextureFormat.ASTC10x10Unorm */:\n case \"astc-10x10-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC10x10UnormSRGB */:\n case \"astc-12x10-unorm\" /* WebGPUConstants.TextureFormat.ASTC12x10Unorm */:\n case \"astc-12x10-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC12x10UnormSRGB */:\n case \"astc-12x12-unorm\" /* WebGPUConstants.TextureFormat.ASTC12x12Unorm */:\n case \"astc-12x12-unorm-srgb\" /* WebGPUConstants.TextureFormat.ASTC12x12UnormSRGB */:\n return 4;\n }\n // eslint-disable-next-line no-throw-literal\n throw `Unknown format ${format}!`;\n }\n static HasStencilAspect(format) {\n switch (format) {\n case \"stencil8\" /* WebGPUConstants.TextureFormat.Stencil8 */:\n case \"depth32float-stencil8\" /* WebGPUConstants.TextureFormat.Depth32FloatStencil8 */:\n case \"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */:\n return true;\n }\n return false;\n }\n static HasDepthAndStencilAspects(format) {\n switch (format) {\n case \"depth32float-stencil8\" /* WebGPUConstants.TextureFormat.Depth32FloatStencil8 */:\n case \"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */:\n return true;\n }\n return false;\n }\n static GetDepthFormatOnly(format) {\n switch (format) {\n case \"depth16unorm\" /* WebGPUConstants.TextureFormat.Depth16Unorm */:\n return \"depth16unorm\" /* WebGPUConstants.TextureFormat.Depth16Unorm */;\n case \"depth24plus\" /* WebGPUConstants.TextureFormat.Depth24Plus */:\n return \"depth24plus\" /* WebGPUConstants.TextureFormat.Depth24Plus */;\n case \"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */:\n return \"depth24plus\" /* WebGPUConstants.TextureFormat.Depth24Plus */;\n case \"depth32float\" /* WebGPUConstants.TextureFormat.Depth32Float */:\n return \"depth32float\" /* WebGPUConstants.TextureFormat.Depth32Float */;\n case \"depth32float-stencil8\" /* WebGPUConstants.TextureFormat.Depth32FloatStencil8 */:\n return \"depth32float\" /* WebGPUConstants.TextureFormat.Depth32Float */;\n }\n return format;\n }\n static GetSample(sampleCount) {\n // WebGPU only supports 1 or 4\n return sampleCount > 1 ? 4 : 1;\n }\n}\n//# sourceMappingURL=webgpuTextureHelper.js.map","import { PerfCounter } from \"../../Misc/perfCounter\";\n/**\n * Class used to define a WebGPU performance counter\n */\nexport class WebGPUPerfCounter {\n constructor() {\n this._gpuTimeInFrameId = -1;\n /**\n * The GPU time in nanoseconds spent in the last frame\n */\n this.counter = new PerfCounter();\n }\n /**\n * @internal\n */\n _addDuration(currentFrameId, duration) {\n if (currentFrameId < this._gpuTimeInFrameId) {\n return;\n }\n if (this._gpuTimeInFrameId !== currentFrameId) {\n this.counter._fetchResult();\n this.counter.fetchNewFrame();\n this.counter.addCount(duration, false);\n this._gpuTimeInFrameId = currentFrameId;\n }\n else {\n this.counter.addCount(duration, false);\n }\n }\n}\n//# sourceMappingURL=webgpuPerfCounter.js.map","import { AbstractEngine } from \"./abstractEngine\";\nimport { Logger } from \"core/Misc/logger\";\nimport { WebGPUTextureHelper } from \"./WebGPU/webgpuTextureHelper\";\nimport { WebGPUPerfCounter } from \"./WebGPU/webgpuPerfCounter\";\nimport { Constants } from \"./constants\";\n/**\n * The base engine class for WebGPU\n */\nexport class ThinWebGPUEngine extends AbstractEngine {\n constructor() {\n super(...arguments);\n // TODO WEBGPU remove those variables when code stabilized\n /** @internal */\n this.dbgShowShaderCode = false;\n /** @internal */\n this.dbgSanityChecks = true;\n /** @internal */\n this.dbgVerboseLogsNumFrames = 10;\n /** @internal */\n this.dbgLogIfNotDrawWrapper = true;\n /** @internal */\n this.dbgShowEmptyEnableEffectCalls = true;\n /** @internal */\n this.dbgVerboseLogsForFirstFrames = false;\n /** @internal */\n this._currentRenderPass = null;\n this._snapshotRenderingMode = Constants.SNAPSHOTRENDERING_STANDARD;\n /** @internal */\n this._timestampIndex = 0;\n /** @internal */\n this._debugStackRenderPass = [];\n }\n /**\n * Enables or disables GPU timing measurements.\n * Note that this is only supported if the \"timestamp-query\" extension is enabled in the options.\n */\n get enableGPUTimingMeasurements() {\n return this._timestampQuery.enable;\n }\n set enableGPUTimingMeasurements(enable) {\n if (this._timestampQuery.enable === enable) {\n return;\n }\n this.gpuTimeInFrameForMainPass = enable ? new WebGPUPerfCounter() : undefined;\n this._timestampQuery.enable = enable;\n }\n _currentPassIsMainPass() {\n return this._currentRenderTarget === null;\n }\n /** @internal */\n _endCurrentRenderPass() {\n if (!this._currentRenderPass) {\n return 0;\n }\n if (this._debugStackRenderPass.length !== 0) {\n for (let i = 0; i < this._debugStackRenderPass.length; ++i) {\n this._currentRenderPass.popDebugGroup();\n }\n }\n const currentPassIndex = this._currentPassIsMainPass() ? 2 : 1;\n if (!this._snapshotRendering.endRenderPass(this._currentRenderPass) && !this.compatibilityMode) {\n this._bundleList.run(this._currentRenderPass);\n this._bundleList.reset();\n }\n this._currentRenderPass.end();\n this._timestampQuery.endPass(this._timestampIndex, (this._currentRenderTarget && this._currentRenderTarget.gpuTimeInFrame\n ? this._currentRenderTarget.gpuTimeInFrame\n : this.gpuTimeInFrameForMainPass));\n this._timestampIndex += 2;\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log(\"frame #\" +\n this._count +\n \" - \" +\n (currentPassIndex === 2 ? \"main\" : \"render target\") +\n \" end pass\" +\n (currentPassIndex === 1 ? \" - internalTexture.uniqueId=\" + this._currentRenderTarget?.texture?.uniqueId : \"\"));\n }\n }\n this._debugPopGroup?.(0);\n this._currentRenderPass = null;\n return currentPassIndex;\n }\n /**\n * @internal\n */\n _generateMipmaps(texture, commandEncoder) {\n commandEncoder = commandEncoder ?? this._renderEncoder;\n const gpuHardwareTexture = texture._hardwareTexture;\n if (!gpuHardwareTexture) {\n return;\n }\n if (commandEncoder === this._renderEncoder) {\n // We must close the current pass (if any) because we are going to use the render encoder to generate the mipmaps (so, we are going to create a new render pass)\n this._endCurrentRenderPass();\n }\n const format = texture._hardwareTexture.format;\n const mipmapCount = WebGPUTextureHelper.ComputeNumMipmapLevels(texture.width, texture.height);\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log(\"frame #\" +\n this._count +\n \" - generate mipmaps - width=\" +\n texture.width +\n \", height=\" +\n texture.height +\n \", isCube=\" +\n texture.isCube +\n \", command encoder=\" +\n (commandEncoder === this._renderEncoder ? \"render\" : \"copy\"));\n }\n }\n if (texture.isCube) {\n this._textureHelper.generateCubeMipmaps(gpuHardwareTexture, format, mipmapCount, commandEncoder);\n }\n else {\n this._textureHelper.generateMipmaps(gpuHardwareTexture, format, mipmapCount, 0, texture.is3D, commandEncoder);\n }\n }\n}\n//# sourceMappingURL=thinWebGPUEngine.js.map","/** @internal */\n// eslint-disable-next-line import/export\nexport var PowerPreference;\n(function (PowerPreference) {\n PowerPreference[\"LowPower\"] = \"low-power\";\n PowerPreference[\"HighPerformance\"] = \"high-performance\";\n})(PowerPreference || (PowerPreference = {}));\n/** @internal */\nexport var FeatureName;\n(function (FeatureName) {\n FeatureName[\"DepthClipControl\"] = \"depth-clip-control\";\n FeatureName[\"Depth32FloatStencil8\"] = \"depth32float-stencil8\";\n FeatureName[\"TextureCompressionBC\"] = \"texture-compression-bc\";\n FeatureName[\"TextureCompressionBCSliced3D\"] = \"texture-compression-bc-sliced-3d\";\n FeatureName[\"TextureCompressionETC2\"] = \"texture-compression-etc2\";\n FeatureName[\"TextureCompressionASTC\"] = \"texture-compression-astc\";\n FeatureName[\"TextureCompressionASTCSliced3D\"] = \"texture-compression-astc-sliced-3d\";\n FeatureName[\"TimestampQuery\"] = \"timestamp-query\";\n FeatureName[\"IndirectFirstInstance\"] = \"indirect-first-instance\";\n FeatureName[\"ShaderF16\"] = \"shader-f16\";\n FeatureName[\"RG11B10UFloatRenderable\"] = \"rg11b10ufloat-renderable\";\n FeatureName[\"BGRA8UnormStorage\"] = \"bgra8unorm-storage\";\n FeatureName[\"Float32Filterable\"] = \"float32-filterable\";\n FeatureName[\"Float32Blendable\"] = \"float32-blendable\";\n FeatureName[\"ClipDistances\"] = \"clip-distances\";\n FeatureName[\"DualSourceBlending\"] = \"dual-source-blending\";\n})(FeatureName || (FeatureName = {}));\n/** @internal */\nexport var BufferMapState;\n(function (BufferMapState) {\n BufferMapState[\"Unmapped\"] = \"unmapped\";\n BufferMapState[\"Pending\"] = \"pending\";\n BufferMapState[\"Mapped\"] = \"mapped\";\n})(BufferMapState || (BufferMapState = {}));\n/** @internal */\nexport var BufferUsage;\n(function (BufferUsage) {\n BufferUsage[BufferUsage[\"MapRead\"] = 1] = \"MapRead\";\n BufferUsage[BufferUsage[\"MapWrite\"] = 2] = \"MapWrite\";\n BufferUsage[BufferUsage[\"CopySrc\"] = 4] = \"CopySrc\";\n BufferUsage[BufferUsage[\"CopyDst\"] = 8] = \"CopyDst\";\n BufferUsage[BufferUsage[\"Index\"] = 16] = \"Index\";\n BufferUsage[BufferUsage[\"Vertex\"] = 32] = \"Vertex\";\n BufferUsage[BufferUsage[\"Uniform\"] = 64] = \"Uniform\";\n BufferUsage[BufferUsage[\"Storage\"] = 128] = \"Storage\";\n BufferUsage[BufferUsage[\"Indirect\"] = 256] = \"Indirect\";\n BufferUsage[BufferUsage[\"QueryResolve\"] = 512] = \"QueryResolve\";\n})(BufferUsage || (BufferUsage = {}));\n/** @internal */\nexport var MapMode;\n(function (MapMode) {\n MapMode[MapMode[\"Read\"] = 1] = \"Read\";\n MapMode[MapMode[\"Write\"] = 2] = \"Write\";\n})(MapMode || (MapMode = {}));\n/** @internal */\nexport var TextureDimension;\n(function (TextureDimension) {\n TextureDimension[\"E1d\"] = \"1d\";\n TextureDimension[\"E2d\"] = \"2d\";\n TextureDimension[\"E3d\"] = \"3d\";\n})(TextureDimension || (TextureDimension = {}));\n/** @internal */\nexport var TextureUsage;\n(function (TextureUsage) {\n TextureUsage[TextureUsage[\"CopySrc\"] = 1] = \"CopySrc\";\n TextureUsage[TextureUsage[\"CopyDst\"] = 2] = \"CopyDst\";\n TextureUsage[TextureUsage[\"TextureBinding\"] = 4] = \"TextureBinding\";\n TextureUsage[TextureUsage[\"StorageBinding\"] = 8] = \"StorageBinding\";\n TextureUsage[TextureUsage[\"RenderAttachment\"] = 16] = \"RenderAttachment\";\n})(TextureUsage || (TextureUsage = {}));\n/** @internal */\nexport var TextureViewDimension;\n(function (TextureViewDimension) {\n TextureViewDimension[\"E1d\"] = \"1d\";\n TextureViewDimension[\"E2d\"] = \"2d\";\n TextureViewDimension[\"E2dArray\"] = \"2d-array\";\n TextureViewDimension[\"Cube\"] = \"cube\";\n TextureViewDimension[\"CubeArray\"] = \"cube-array\";\n TextureViewDimension[\"E3d\"] = \"3d\";\n})(TextureViewDimension || (TextureViewDimension = {}));\n/** @internal */\nexport var TextureAspect;\n(function (TextureAspect) {\n TextureAspect[\"All\"] = \"all\";\n TextureAspect[\"StencilOnly\"] = \"stencil-only\";\n TextureAspect[\"DepthOnly\"] = \"depth-only\";\n})(TextureAspect || (TextureAspect = {}));\n/**\n * Comments taken from https://github.com/gfx-rs/wgpu/blob/master/wgpu-types/src/lib.rs\n * @internal\n */\nexport var TextureFormat;\n(function (TextureFormat) {\n // 8-bit formats\n TextureFormat[\"R8Unorm\"] = \"r8unorm\";\n TextureFormat[\"R8Snorm\"] = \"r8snorm\";\n TextureFormat[\"R8Uint\"] = \"r8uint\";\n TextureFormat[\"R8Sint\"] = \"r8sint\";\n // 16-bit formats\n TextureFormat[\"R16Uint\"] = \"r16uint\";\n TextureFormat[\"R16Sint\"] = \"r16sint\";\n TextureFormat[\"R16Float\"] = \"r16float\";\n TextureFormat[\"RG8Unorm\"] = \"rg8unorm\";\n TextureFormat[\"RG8Snorm\"] = \"rg8snorm\";\n TextureFormat[\"RG8Uint\"] = \"rg8uint\";\n TextureFormat[\"RG8Sint\"] = \"rg8sint\";\n TextureFormat[\"R16Unorm\"] = \"r16unorm\";\n TextureFormat[\"R16Snorm\"] = \"r16snorm\";\n TextureFormat[\"RG16Unorm\"] = \"rg16unorm\";\n TextureFormat[\"RG16Snorm\"] = \"rg16snorm\";\n TextureFormat[\"RGBA16Unorm\"] = \"rgba16unorm\";\n TextureFormat[\"RGBA16Snorm\"] = \"rgba16snorm\";\n // 32-bit formats\n TextureFormat[\"R32Uint\"] = \"r32uint\";\n TextureFormat[\"R32Sint\"] = \"r32sint\";\n TextureFormat[\"R32Float\"] = \"r32float\";\n TextureFormat[\"RG16Uint\"] = \"rg16uint\";\n TextureFormat[\"RG16Sint\"] = \"rg16sint\";\n TextureFormat[\"RG16Float\"] = \"rg16float\";\n TextureFormat[\"RGBA8Unorm\"] = \"rgba8unorm\";\n TextureFormat[\"RGBA8UnormSRGB\"] = \"rgba8unorm-srgb\";\n TextureFormat[\"RGBA8Snorm\"] = \"rgba8snorm\";\n TextureFormat[\"RGBA8Uint\"] = \"rgba8uint\";\n TextureFormat[\"RGBA8Sint\"] = \"rgba8sint\";\n TextureFormat[\"BGRA8Unorm\"] = \"bgra8unorm\";\n TextureFormat[\"BGRA8UnormSRGB\"] = \"bgra8unorm-srgb\";\n // Packed 32-bit formats\n TextureFormat[\"RGB9E5UFloat\"] = \"rgb9e5ufloat\";\n TextureFormat[\"RGB10A2UINT\"] = \"rgb10a2uint\";\n TextureFormat[\"RGB10A2Unorm\"] = \"rgb10a2unorm\";\n TextureFormat[\"RG11B10UFloat\"] = \"rg11b10ufloat\";\n // 64-bit formats\n TextureFormat[\"RG32Uint\"] = \"rg32uint\";\n TextureFormat[\"RG32Sint\"] = \"rg32sint\";\n TextureFormat[\"RG32Float\"] = \"rg32float\";\n TextureFormat[\"RGBA16Uint\"] = \"rgba16uint\";\n TextureFormat[\"RGBA16Sint\"] = \"rgba16sint\";\n TextureFormat[\"RGBA16Float\"] = \"rgba16float\";\n // 128-bit formats\n TextureFormat[\"RGBA32Uint\"] = \"rgba32uint\";\n TextureFormat[\"RGBA32Sint\"] = \"rgba32sint\";\n TextureFormat[\"RGBA32Float\"] = \"rgba32float\";\n // Depth and stencil formats\n TextureFormat[\"Stencil8\"] = \"stencil8\";\n TextureFormat[\"Depth16Unorm\"] = \"depth16unorm\";\n TextureFormat[\"Depth24Plus\"] = \"depth24plus\";\n TextureFormat[\"Depth24PlusStencil8\"] = \"depth24plus-stencil8\";\n TextureFormat[\"Depth32Float\"] = \"depth32float\";\n // BC compressed formats usable if \"texture-compression-bc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n TextureFormat[\"BC1RGBAUnorm\"] = \"bc1-rgba-unorm\";\n TextureFormat[\"BC1RGBAUnormSRGB\"] = \"bc1-rgba-unorm-srgb\";\n TextureFormat[\"BC2RGBAUnorm\"] = \"bc2-rgba-unorm\";\n TextureFormat[\"BC2RGBAUnormSRGB\"] = \"bc2-rgba-unorm-srgb\";\n TextureFormat[\"BC3RGBAUnorm\"] = \"bc3-rgba-unorm\";\n TextureFormat[\"BC3RGBAUnormSRGB\"] = \"bc3-rgba-unorm-srgb\";\n TextureFormat[\"BC4RUnorm\"] = \"bc4-r-unorm\";\n TextureFormat[\"BC4RSnorm\"] = \"bc4-r-snorm\";\n TextureFormat[\"BC5RGUnorm\"] = \"bc5-rg-unorm\";\n TextureFormat[\"BC5RGSnorm\"] = \"bc5-rg-snorm\";\n TextureFormat[\"BC6HRGBUFloat\"] = \"bc6h-rgb-ufloat\";\n TextureFormat[\"BC6HRGBFloat\"] = \"bc6h-rgb-float\";\n TextureFormat[\"BC7RGBAUnorm\"] = \"bc7-rgba-unorm\";\n TextureFormat[\"BC7RGBAUnormSRGB\"] = \"bc7-rgba-unorm-srgb\";\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n TextureFormat[\"ETC2RGB8Unorm\"] = \"etc2-rgb8unorm\";\n TextureFormat[\"ETC2RGB8UnormSRGB\"] = \"etc2-rgb8unorm-srgb\";\n TextureFormat[\"ETC2RGB8A1Unorm\"] = \"etc2-rgb8a1unorm\";\n TextureFormat[\"ETC2RGB8A1UnormSRGB\"] = \"etc2-rgb8a1unorm-srgb\";\n TextureFormat[\"ETC2RGBA8Unorm\"] = \"etc2-rgba8unorm\";\n TextureFormat[\"ETC2RGBA8UnormSRGB\"] = \"etc2-rgba8unorm-srgb\";\n TextureFormat[\"EACR11Unorm\"] = \"eac-r11unorm\";\n TextureFormat[\"EACR11Snorm\"] = \"eac-r11snorm\";\n TextureFormat[\"EACRG11Unorm\"] = \"eac-rg11unorm\";\n TextureFormat[\"EACRG11Snorm\"] = \"eac-rg11snorm\";\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n TextureFormat[\"ASTC4x4Unorm\"] = \"astc-4x4-unorm\";\n TextureFormat[\"ASTC4x4UnormSRGB\"] = \"astc-4x4-unorm-srgb\";\n TextureFormat[\"ASTC5x4Unorm\"] = \"astc-5x4-unorm\";\n TextureFormat[\"ASTC5x4UnormSRGB\"] = \"astc-5x4-unorm-srgb\";\n TextureFormat[\"ASTC5x5Unorm\"] = \"astc-5x5-unorm\";\n TextureFormat[\"ASTC5x5UnormSRGB\"] = \"astc-5x5-unorm-srgb\";\n TextureFormat[\"ASTC6x5Unorm\"] = \"astc-6x5-unorm\";\n TextureFormat[\"ASTC6x5UnormSRGB\"] = \"astc-6x5-unorm-srgb\";\n TextureFormat[\"ASTC6x6Unorm\"] = \"astc-6x6-unorm\";\n TextureFormat[\"ASTC6x6UnormSRGB\"] = \"astc-6x6-unorm-srgb\";\n TextureFormat[\"ASTC8x5Unorm\"] = \"astc-8x5-unorm\";\n TextureFormat[\"ASTC8x5UnormSRGB\"] = \"astc-8x5-unorm-srgb\";\n TextureFormat[\"ASTC8x6Unorm\"] = \"astc-8x6-unorm\";\n TextureFormat[\"ASTC8x6UnormSRGB\"] = \"astc-8x6-unorm-srgb\";\n TextureFormat[\"ASTC8x8Unorm\"] = \"astc-8x8-unorm\";\n TextureFormat[\"ASTC8x8UnormSRGB\"] = \"astc-8x8-unorm-srgb\";\n TextureFormat[\"ASTC10x5Unorm\"] = \"astc-10x5-unorm\";\n TextureFormat[\"ASTC10x5UnormSRGB\"] = \"astc-10x5-unorm-srgb\";\n TextureFormat[\"ASTC10x6Unorm\"] = \"astc-10x6-unorm\";\n TextureFormat[\"ASTC10x6UnormSRGB\"] = \"astc-10x6-unorm-srgb\";\n TextureFormat[\"ASTC10x8Unorm\"] = \"astc-10x8-unorm\";\n TextureFormat[\"ASTC10x8UnormSRGB\"] = \"astc-10x8-unorm-srgb\";\n TextureFormat[\"ASTC10x10Unorm\"] = \"astc-10x10-unorm\";\n TextureFormat[\"ASTC10x10UnormSRGB\"] = \"astc-10x10-unorm-srgb\";\n TextureFormat[\"ASTC12x10Unorm\"] = \"astc-12x10-unorm\";\n TextureFormat[\"ASTC12x10UnormSRGB\"] = \"astc-12x10-unorm-srgb\";\n TextureFormat[\"ASTC12x12Unorm\"] = \"astc-12x12-unorm\";\n TextureFormat[\"ASTC12x12UnormSRGB\"] = \"astc-12x12-unorm-srgb\";\n // \"depth32float-stencil8\" feature\n TextureFormat[\"Depth32FloatStencil8\"] = \"depth32float-stencil8\";\n})(TextureFormat || (TextureFormat = {}));\n/** @internal */\nexport var AddressMode;\n(function (AddressMode) {\n AddressMode[\"ClampToEdge\"] = \"clamp-to-edge\";\n AddressMode[\"Repeat\"] = \"repeat\";\n AddressMode[\"MirrorRepeat\"] = \"mirror-repeat\";\n})(AddressMode || (AddressMode = {}));\n/** @internal */\nexport var FilterMode;\n(function (FilterMode) {\n FilterMode[\"Nearest\"] = \"nearest\";\n FilterMode[\"Linear\"] = \"linear\";\n})(FilterMode || (FilterMode = {}));\n/** @internal */\nexport var MipmapFilterMode;\n(function (MipmapFilterMode) {\n MipmapFilterMode[\"Nearest\"] = \"nearest\";\n MipmapFilterMode[\"Linear\"] = \"linear\";\n})(MipmapFilterMode || (MipmapFilterMode = {}));\n/** @internal */\nexport var CompareFunction;\n(function (CompareFunction) {\n CompareFunction[\"Never\"] = \"never\";\n CompareFunction[\"Less\"] = \"less\";\n CompareFunction[\"Equal\"] = \"equal\";\n CompareFunction[\"LessEqual\"] = \"less-equal\";\n CompareFunction[\"Greater\"] = \"greater\";\n CompareFunction[\"NotEqual\"] = \"not-equal\";\n CompareFunction[\"GreaterEqual\"] = \"greater-equal\";\n CompareFunction[\"Always\"] = \"always\";\n})(CompareFunction || (CompareFunction = {}));\n/** @internal */\nexport var ShaderStage;\n(function (ShaderStage) {\n ShaderStage[ShaderStage[\"Vertex\"] = 1] = \"Vertex\";\n ShaderStage[ShaderStage[\"Fragment\"] = 2] = \"Fragment\";\n ShaderStage[ShaderStage[\"Compute\"] = 4] = \"Compute\";\n})(ShaderStage || (ShaderStage = {}));\n/** @internal */\nexport var BufferBindingType;\n(function (BufferBindingType) {\n BufferBindingType[\"Uniform\"] = \"uniform\";\n BufferBindingType[\"Storage\"] = \"storage\";\n BufferBindingType[\"ReadOnlyStorage\"] = \"read-only-storage\";\n})(BufferBindingType || (BufferBindingType = {}));\n/** @internal */\nexport var SamplerBindingType;\n(function (SamplerBindingType) {\n SamplerBindingType[\"Filtering\"] = \"filtering\";\n SamplerBindingType[\"NonFiltering\"] = \"non-filtering\";\n SamplerBindingType[\"Comparison\"] = \"comparison\";\n})(SamplerBindingType || (SamplerBindingType = {}));\n/** @internal */\nexport var TextureSampleType;\n(function (TextureSampleType) {\n TextureSampleType[\"Float\"] = \"float\";\n TextureSampleType[\"UnfilterableFloat\"] = \"unfilterable-float\";\n TextureSampleType[\"Depth\"] = \"depth\";\n TextureSampleType[\"Sint\"] = \"sint\";\n TextureSampleType[\"Uint\"] = \"uint\";\n})(TextureSampleType || (TextureSampleType = {}));\n/** @internal */\nexport var StorageTextureAccess;\n(function (StorageTextureAccess) {\n StorageTextureAccess[\"WriteOnly\"] = \"write-only\";\n StorageTextureAccess[\"ReadOnly\"] = \"read-only\";\n StorageTextureAccess[\"ReadWrite\"] = \"read-write\";\n})(StorageTextureAccess || (StorageTextureAccess = {}));\n/** @internal */\nexport var CompilationMessageType;\n(function (CompilationMessageType) {\n CompilationMessageType[\"Error\"] = \"error\";\n CompilationMessageType[\"Warning\"] = \"warning\";\n CompilationMessageType[\"Info\"] = \"info\";\n})(CompilationMessageType || (CompilationMessageType = {}));\n/** @internal */\nexport var PipelineErrorReason;\n(function (PipelineErrorReason) {\n PipelineErrorReason[\"Validation\"] = \"validation\";\n PipelineErrorReason[\"Internal\"] = \"internal\";\n})(PipelineErrorReason || (PipelineErrorReason = {}));\n/** @internal */\nexport var AutoLayoutMode;\n(function (AutoLayoutMode) {\n AutoLayoutMode[\"Auto\"] = \"auto\";\n})(AutoLayoutMode || (AutoLayoutMode = {}));\n/** @internal */\nexport var PrimitiveTopology;\n(function (PrimitiveTopology) {\n PrimitiveTopology[\"PointList\"] = \"point-list\";\n PrimitiveTopology[\"LineList\"] = \"line-list\";\n PrimitiveTopology[\"LineStrip\"] = \"line-strip\";\n PrimitiveTopology[\"TriangleList\"] = \"triangle-list\";\n PrimitiveTopology[\"TriangleStrip\"] = \"triangle-strip\";\n})(PrimitiveTopology || (PrimitiveTopology = {}));\n/** @internal */\nexport var FrontFace;\n(function (FrontFace) {\n FrontFace[\"CCW\"] = \"ccw\";\n FrontFace[\"CW\"] = \"cw\";\n})(FrontFace || (FrontFace = {}));\n/** @internal */\nexport var CullMode;\n(function (CullMode) {\n CullMode[\"None\"] = \"none\";\n CullMode[\"Front\"] = \"front\";\n CullMode[\"Back\"] = \"back\";\n})(CullMode || (CullMode = {}));\n/** @internal */\nexport var ColorWrite;\n(function (ColorWrite) {\n ColorWrite[ColorWrite[\"Red\"] = 1] = \"Red\";\n ColorWrite[ColorWrite[\"Green\"] = 2] = \"Green\";\n ColorWrite[ColorWrite[\"Blue\"] = 4] = \"Blue\";\n ColorWrite[ColorWrite[\"Alpha\"] = 8] = \"Alpha\";\n ColorWrite[ColorWrite[\"All\"] = 15] = \"All\";\n})(ColorWrite || (ColorWrite = {}));\n/** @internal */\nexport var BlendFactor;\n(function (BlendFactor) {\n BlendFactor[\"Zero\"] = \"zero\";\n BlendFactor[\"One\"] = \"one\";\n BlendFactor[\"Src\"] = \"src\";\n BlendFactor[\"OneMinusSrc\"] = \"one-minus-src\";\n BlendFactor[\"SrcAlpha\"] = \"src-alpha\";\n BlendFactor[\"OneMinusSrcAlpha\"] = \"one-minus-src-alpha\";\n BlendFactor[\"Dst\"] = \"dst\";\n BlendFactor[\"OneMinusDst\"] = \"one-minus-dst\";\n BlendFactor[\"DstAlpha\"] = \"dst-alpha\";\n BlendFactor[\"OneMinusDstAlpha\"] = \"one-minus-dst-alpha\";\n BlendFactor[\"SrcAlphaSaturated\"] = \"src-alpha-saturated\";\n BlendFactor[\"Constant\"] = \"constant\";\n BlendFactor[\"OneMinusConstant\"] = \"one-minus-constant\";\n BlendFactor[\"Src1\"] = \"src1\";\n BlendFactor[\"OneMinusSrc1\"] = \"one-minus-src1\";\n BlendFactor[\"Src1Alpha\"] = \"src1-alpha\";\n BlendFactor[\"OneMinusSrc1Alpha\"] = \"one-minus-src1-alpha\";\n})(BlendFactor || (BlendFactor = {}));\n/** @internal */\nexport var BlendOperation;\n(function (BlendOperation) {\n BlendOperation[\"Add\"] = \"add\";\n BlendOperation[\"Subtract\"] = \"subtract\";\n BlendOperation[\"ReverseSubtract\"] = \"reverse-subtract\";\n BlendOperation[\"Min\"] = \"min\";\n BlendOperation[\"Max\"] = \"max\";\n})(BlendOperation || (BlendOperation = {}));\n/** @internal */\nexport var StencilOperation;\n(function (StencilOperation) {\n StencilOperation[\"Keep\"] = \"keep\";\n StencilOperation[\"Zero\"] = \"zero\";\n StencilOperation[\"Replace\"] = \"replace\";\n StencilOperation[\"Invert\"] = \"invert\";\n StencilOperation[\"IncrementClamp\"] = \"increment-clamp\";\n StencilOperation[\"DecrementClamp\"] = \"decrement-clamp\";\n StencilOperation[\"IncrementWrap\"] = \"increment-wrap\";\n StencilOperation[\"DecrementWrap\"] = \"decrement-wrap\";\n})(StencilOperation || (StencilOperation = {}));\n/** @internal */\nexport var IndexFormat;\n(function (IndexFormat) {\n IndexFormat[\"Uint16\"] = \"uint16\";\n IndexFormat[\"Uint32\"] = \"uint32\";\n})(IndexFormat || (IndexFormat = {}));\n/** @internal */\nexport var VertexFormat;\n(function (VertexFormat) {\n VertexFormat[\"Uint8x2\"] = \"uint8x2\";\n VertexFormat[\"Uint8x4\"] = \"uint8x4\";\n VertexFormat[\"Sint8x2\"] = \"sint8x2\";\n VertexFormat[\"Sint8x4\"] = \"sint8x4\";\n VertexFormat[\"Unorm8x2\"] = \"unorm8x2\";\n VertexFormat[\"Unorm8x4\"] = \"unorm8x4\";\n VertexFormat[\"Snorm8x2\"] = \"snorm8x2\";\n VertexFormat[\"Snorm8x4\"] = \"snorm8x4\";\n VertexFormat[\"Uint16x2\"] = \"uint16x2\";\n VertexFormat[\"Uint16x4\"] = \"uint16x4\";\n VertexFormat[\"Sint16x2\"] = \"sint16x2\";\n VertexFormat[\"Sint16x4\"] = \"sint16x4\";\n VertexFormat[\"Unorm16x2\"] = \"unorm16x2\";\n VertexFormat[\"Unorm16x4\"] = \"unorm16x4\";\n VertexFormat[\"Snorm16x2\"] = \"snorm16x2\";\n VertexFormat[\"Snorm16x4\"] = \"snorm16x4\";\n VertexFormat[\"Float16x2\"] = \"float16x2\";\n VertexFormat[\"Float16x4\"] = \"float16x4\";\n VertexFormat[\"Float32\"] = \"float32\";\n VertexFormat[\"Float32x2\"] = \"float32x2\";\n VertexFormat[\"Float32x3\"] = \"float32x3\";\n VertexFormat[\"Float32x4\"] = \"float32x4\";\n VertexFormat[\"Uint32\"] = \"uint32\";\n VertexFormat[\"Uint32x2\"] = \"uint32x2\";\n VertexFormat[\"Uint32x3\"] = \"uint32x3\";\n VertexFormat[\"Uint32x4\"] = \"uint32x4\";\n VertexFormat[\"Sint32\"] = \"sint32\";\n VertexFormat[\"Sint32x2\"] = \"sint32x2\";\n VertexFormat[\"Sint32x3\"] = \"sint32x3\";\n VertexFormat[\"Sint32x4\"] = \"sint32x4\";\n VertexFormat[\"UNORM10x10x10x2\"] = \"unorm10-10-10-2\";\n})(VertexFormat || (VertexFormat = {}));\n/** @internal */\nexport var VertexStepMode;\n(function (VertexStepMode) {\n VertexStepMode[\"Vertex\"] = \"vertex\";\n VertexStepMode[\"Instance\"] = \"instance\";\n})(VertexStepMode || (VertexStepMode = {}));\n/** @internal */\nexport var ComputePassTimestampLocation;\n(function (ComputePassTimestampLocation) {\n ComputePassTimestampLocation[\"Beginning\"] = \"beginning\";\n ComputePassTimestampLocation[\"End\"] = \"end\";\n})(ComputePassTimestampLocation || (ComputePassTimestampLocation = {}));\n/** @internal */\nexport var RenderPassTimestampLocation;\n(function (RenderPassTimestampLocation) {\n RenderPassTimestampLocation[\"Beginning\"] = \"beginning\";\n RenderPassTimestampLocation[\"End\"] = \"end\";\n})(RenderPassTimestampLocation || (RenderPassTimestampLocation = {}));\n/** @internal */\nexport var LoadOp;\n(function (LoadOp) {\n LoadOp[\"Load\"] = \"load\";\n LoadOp[\"Clear\"] = \"clear\";\n})(LoadOp || (LoadOp = {}));\n/** @internal */\nexport var StoreOp;\n(function (StoreOp) {\n StoreOp[\"Store\"] = \"store\";\n StoreOp[\"Discard\"] = \"discard\";\n})(StoreOp || (StoreOp = {}));\n/** @internal */\nexport var QueryType;\n(function (QueryType) {\n QueryType[\"Occlusion\"] = \"occlusion\";\n QueryType[\"Timestamp\"] = \"timestamp\";\n})(QueryType || (QueryType = {}));\n/** @internal */\nexport var CanvasAlphaMode;\n(function (CanvasAlphaMode) {\n CanvasAlphaMode[\"Opaque\"] = \"opaque\";\n CanvasAlphaMode[\"Premultiplied\"] = \"premultiplied\";\n})(CanvasAlphaMode || (CanvasAlphaMode = {}));\n/** @internal */\nexport var CanvasToneMappingMode;\n(function (CanvasToneMappingMode) {\n CanvasToneMappingMode[\"Standard\"] = \"standard\";\n CanvasToneMappingMode[\"Extended\"] = \"extended\";\n})(CanvasToneMappingMode || (CanvasToneMappingMode = {}));\n/** @internal */\nexport var DeviceLostReason;\n(function (DeviceLostReason) {\n DeviceLostReason[\"Unknown\"] = \"unknown\";\n DeviceLostReason[\"Destroyed\"] = \"destroyed\";\n})(DeviceLostReason || (DeviceLostReason = {}));\n/** @internal */\nexport var ErrorFilter;\n(function (ErrorFilter) {\n ErrorFilter[\"Validation\"] = \"validation\";\n ErrorFilter[\"OutOfMemory\"] = \"out-of-memory\";\n ErrorFilter[\"Internal\"] = \"internal\";\n})(ErrorFilter || (ErrorFilter = {}));\n//# sourceMappingURL=webgpuConstants.js.map","/** @internal */\nexport class WebGPUShaderProcessor {\n constructor() {\n this.shaderLanguage = 0 /* ShaderLanguage.GLSL */;\n }\n _addUniformToLeftOverUBO(name, uniformType, preProcessors) {\n let length = 0;\n [name, uniformType, length] = this._getArraySize(name, uniformType, preProcessors);\n for (let i = 0; i < this._webgpuProcessingContext.leftOverUniforms.length; i++) {\n if (this._webgpuProcessingContext.leftOverUniforms[i].name === name) {\n return;\n }\n }\n this._webgpuProcessingContext.leftOverUniforms.push({\n name,\n type: uniformType,\n length,\n });\n }\n _buildLeftOverUBO() {\n if (!this._webgpuProcessingContext.leftOverUniforms.length) {\n return \"\";\n }\n const name = WebGPUShaderProcessor.LeftOvertUBOName;\n let availableUBO = this._webgpuProcessingContext.availableBuffers[name];\n if (!availableUBO) {\n availableUBO = {\n binding: this._webgpuProcessingContext.getNextFreeUBOBinding(),\n };\n this._webgpuProcessingContext.availableBuffers[name] = availableUBO;\n this._addBufferBindingDescription(name, availableUBO, \"uniform\" /* WebGPUConstants.BufferBindingType.Uniform */, true);\n this._addBufferBindingDescription(name, availableUBO, \"uniform\" /* WebGPUConstants.BufferBindingType.Uniform */, false);\n }\n return this._generateLeftOverUBOCode(name, availableUBO);\n }\n _collectBindingNames() {\n // collect all the binding names for faster processing in WebGPUCacheBindGroup\n for (let i = 0; i < this._webgpuProcessingContext.bindGroupLayoutEntries.length; i++) {\n const setDefinition = this._webgpuProcessingContext.bindGroupLayoutEntries[i];\n if (setDefinition === undefined) {\n this._webgpuProcessingContext.bindGroupLayoutEntries[i] = [];\n continue;\n }\n for (let j = 0; j < setDefinition.length; j++) {\n const entry = this._webgpuProcessingContext.bindGroupLayoutEntries[i][j];\n const name = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding].name;\n const nameInArrayOfTexture = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding].nameInArrayOfTexture;\n if (entry) {\n if (entry.texture || entry.externalTexture || entry.storageTexture) {\n this._webgpuProcessingContext.textureNames.push(nameInArrayOfTexture);\n }\n else if (entry.sampler) {\n this._webgpuProcessingContext.samplerNames.push(name);\n }\n else if (entry.buffer) {\n this._webgpuProcessingContext.bufferNames.push(name);\n }\n }\n }\n }\n }\n _preCreateBindGroupEntries() {\n const bindGroupEntries = this._webgpuProcessingContext.bindGroupEntries;\n for (let i = 0; i < this._webgpuProcessingContext.bindGroupLayoutEntries.length; i++) {\n const setDefinition = this._webgpuProcessingContext.bindGroupLayoutEntries[i];\n const entries = [];\n for (let j = 0; j < setDefinition.length; j++) {\n const entry = this._webgpuProcessingContext.bindGroupLayoutEntries[i][j];\n if (entry.sampler || entry.texture || entry.storageTexture || entry.externalTexture) {\n entries.push({\n binding: entry.binding,\n resource: undefined,\n });\n }\n else if (entry.buffer) {\n entries.push({\n binding: entry.binding,\n resource: {\n buffer: undefined,\n offset: 0,\n size: 0,\n },\n });\n }\n }\n bindGroupEntries[i] = entries;\n }\n }\n _addTextureBindingDescription(name, textureInfo, textureIndex, dimension, format, isVertex) {\n // eslint-disable-next-line prefer-const\n let { groupIndex, bindingIndex } = textureInfo.textures[textureIndex];\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\n }\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\n let len;\n if (dimension === null) {\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\n binding: bindingIndex,\n visibility: 0,\n externalTexture: {},\n });\n }\n else if (format) {\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\n binding: bindingIndex,\n visibility: 0,\n storageTexture: {\n access: \"write-only\" /* WebGPUConstants.StorageTextureAccess.WriteOnly */,\n format,\n viewDimension: dimension,\n },\n });\n }\n else {\n len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\n binding: bindingIndex,\n visibility: 0,\n texture: {\n sampleType: textureInfo.sampleType,\n viewDimension: dimension,\n multisampled: false,\n },\n });\n }\n const textureName = textureInfo.isTextureArray ? name + textureIndex : name;\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1, nameInArrayOfTexture: textureName };\n }\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\n if (isVertex) {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= 1 /* WebGPUConstants.ShaderStage.Vertex */;\n }\n else {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= 2 /* WebGPUConstants.ShaderStage.Fragment */;\n }\n }\n _addSamplerBindingDescription(name, samplerInfo, isVertex) {\n // eslint-disable-next-line prefer-const\n let { groupIndex, bindingIndex } = samplerInfo.binding;\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\n }\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\n const len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\n binding: bindingIndex,\n visibility: 0,\n sampler: {\n type: samplerInfo.type,\n },\n });\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1 };\n }\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\n if (isVertex) {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= 1 /* WebGPUConstants.ShaderStage.Vertex */;\n }\n else {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= 2 /* WebGPUConstants.ShaderStage.Fragment */;\n }\n }\n _addBufferBindingDescription(name, uniformBufferInfo, bufferType, isVertex) {\n // eslint-disable-next-line prefer-const\n let { groupIndex, bindingIndex } = uniformBufferInfo.binding;\n if (!this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex]) {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex] = [];\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex] = [];\n }\n if (!this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex]) {\n const len = this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex].push({\n binding: bindingIndex,\n visibility: 0,\n buffer: {\n type: bufferType,\n },\n });\n this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex] = { name, index: len - 1 };\n }\n bindingIndex = this._webgpuProcessingContext.bindGroupLayoutEntryInfo[groupIndex][bindingIndex].index;\n if (isVertex) {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= 1 /* WebGPUConstants.ShaderStage.Vertex */;\n }\n else {\n this._webgpuProcessingContext.bindGroupLayoutEntries[groupIndex][bindingIndex].visibility |= 2 /* WebGPUConstants.ShaderStage.Fragment */;\n }\n }\n}\nWebGPUShaderProcessor.LeftOvertUBOName = \"LeftOver\";\nWebGPUShaderProcessor.InternalsUBOName = \"Internals\";\nWebGPUShaderProcessor.UniformSizes = {\n // GLSL types\n bool: 1,\n int: 1,\n float: 1,\n vec2: 2,\n ivec2: 2,\n uvec2: 2,\n vec3: 3,\n ivec3: 3,\n uvec3: 3,\n vec4: 4,\n ivec4: 4,\n uvec4: 4,\n mat2: 4,\n mat3: 12,\n mat4: 16,\n // WGSL types\n i32: 1,\n u32: 1,\n f32: 1,\n mat2x2: 4,\n mat3x3: 12,\n mat4x4: 16,\n mat2x2f: 4,\n mat3x3f: 12,\n mat4x4f: 16,\n vec2i: 2,\n vec3i: 3,\n vec4i: 4,\n vec2u: 2,\n vec3u: 3,\n vec4u: 4,\n vec2f: 2,\n vec3f: 3,\n vec4f: 4,\n vec2h: 1,\n vec3h: 2,\n vec4h: 2,\n};\n// eslint-disable-next-line @typescript-eslint/naming-convention\nWebGPUShaderProcessor._SamplerFunctionByWebGLSamplerType = {\n sampler2D: \"sampler2D\",\n sampler2DArray: \"sampler2DArray\",\n sampler2DShadow: \"sampler2DShadow\",\n sampler2DArrayShadow: \"sampler2DArrayShadow\",\n samplerCube: \"samplerCube\",\n sampler3D: \"sampler3D\",\n};\n// eslint-disable-next-line @typescript-eslint/naming-convention\nWebGPUShaderProcessor._TextureTypeByWebGLSamplerType = {\n sampler2D: \"texture2D\",\n sampler2DArray: \"texture2DArray\",\n sampler2DShadow: \"texture2D\",\n sampler2DArrayShadow: \"texture2DArray\",\n samplerCube: \"textureCube\",\n samplerCubeArray: \"textureCubeArray\",\n sampler3D: \"texture3D\",\n};\n// eslint-disable-next-line @typescript-eslint/naming-convention\nWebGPUShaderProcessor._GpuTextureViewDimensionByWebGPUTextureType = {\n textureCube: \"cube\" /* WebGPUConstants.TextureViewDimension.Cube */,\n textureCubeArray: \"cube-array\" /* WebGPUConstants.TextureViewDimension.CubeArray */,\n texture2D: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n texture2DArray: \"2d-array\" /* WebGPUConstants.TextureViewDimension.E2dArray */,\n texture3D: \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */,\n};\n// if the webgl sampler type is not listed in this array, \"sampler\" is taken by default\n// eslint-disable-next-line @typescript-eslint/naming-convention\nWebGPUShaderProcessor._SamplerTypeByWebGLSamplerType = {\n sampler2DShadow: \"samplerShadow\",\n sampler2DArrayShadow: \"samplerShadow\",\n};\n// eslint-disable-next-line @typescript-eslint/naming-convention\nWebGPUShaderProcessor._IsComparisonSamplerByWebGPUSamplerType = {\n samplerShadow: true,\n samplerArrayShadow: true,\n sampler: false,\n};\n//# sourceMappingURL=webgpuShaderProcessor.js.map","import { UniformBuffer } from \"../../Materials/uniformBuffer\";\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\n/** @internal */\nexport class WebGPUPipelineContext {\n get isAsync() {\n return false;\n }\n get isReady() {\n if (this.stages) {\n return true;\n }\n return false;\n }\n constructor(shaderProcessingContext, engine) {\n // The field is indexed by textureState. See @WebGPUMaterialContext.textureState for more information.\n this.bindGroupLayouts = {};\n this._name = \"unnamed\";\n this.shaderProcessingContext = shaderProcessingContext;\n this._leftOverUniformsByName = {};\n this.engine = engine;\n this.vertexBufferKindToType = {};\n }\n _handlesSpectorRebuildCallback() {\n // Nothing to do yet for spector.\n }\n _fillEffectInformation(effect, uniformBuffersNames, uniformsNames, uniforms, samplerList, samplers, attributesNames, attributes) {\n const engine = this.engine;\n if (engine._doNotHandleContextLost) {\n effect._fragmentSourceCode = \"\";\n effect._vertexSourceCode = \"\";\n }\n const foundSamplers = this.shaderProcessingContext.availableTextures;\n let index;\n for (index = 0; index < samplerList.length; index++) {\n const name = samplerList[index];\n const sampler = foundSamplers[samplerList[index]];\n if (sampler == null || sampler == undefined) {\n samplerList.splice(index, 1);\n index--;\n }\n else {\n samplers[name] = index;\n }\n }\n for (const attr of engine.getAttributes(this, attributesNames)) {\n attributes.push(attr);\n }\n // Build the uniform layout for the left over uniforms.\n this.buildUniformLayout();\n const attributeNamesFromEffect = [];\n const attributeLocationsFromEffect = [];\n for (index = 0; index < attributesNames.length; index++) {\n const location = attributes[index];\n if (location >= 0) {\n attributeNamesFromEffect.push(attributesNames[index]);\n attributeLocationsFromEffect.push(location);\n }\n }\n this.shaderProcessingContext.attributeNamesFromEffect = attributeNamesFromEffect;\n this.shaderProcessingContext.attributeLocationsFromEffect = attributeLocationsFromEffect;\n }\n /** @internal */\n /**\n * Build the uniform buffer used in the material.\n */\n buildUniformLayout() {\n if (!this.shaderProcessingContext.leftOverUniforms.length) {\n return;\n }\n this.uniformBuffer?.dispose();\n this.uniformBuffer = new UniformBuffer(this.engine, undefined, undefined, \"leftOver-\" + this._name);\n for (const leftOverUniform of this.shaderProcessingContext.leftOverUniforms) {\n const type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, \"$1\");\n const size = WebGPUShaderProcessor.UniformSizes[type];\n this.uniformBuffer.addUniform(leftOverUniform.name, size, leftOverUniform.length);\n this._leftOverUniformsByName[leftOverUniform.name] = leftOverUniform.type;\n }\n this.uniformBuffer.create();\n }\n setEngine(engine) {\n this.engine = engine;\n }\n /**\n * Release all associated resources.\n **/\n dispose() {\n if (this.uniformBuffer) {\n this.uniformBuffer.dispose();\n }\n }\n /**\n * Sets an integer value on a uniform variable.\n * @param uniformName Name of the variable.\n * @param value Value to be set.\n */\n setInt(uniformName, value) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateInt(uniformName, value);\n }\n /**\n * Sets an int2 value on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First int in int2.\n * @param y Second int in int2.\n */\n setInt2(uniformName, x, y) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateInt2(uniformName, x, y);\n }\n /**\n * Sets an int3 value on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First int in int3.\n * @param y Second int in int3.\n * @param z Third int in int3.\n */\n setInt3(uniformName, x, y, z) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateInt3(uniformName, x, y, z);\n }\n /**\n * Sets an int4 value on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First int in int4.\n * @param y Second int in int4.\n * @param z Third int in int4.\n * @param w Fourth int in int4.\n */\n setInt4(uniformName, x, y, z, w) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateInt4(uniformName, x, y, z, w);\n }\n /**\n * Sets an int array on a uniform variable.\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setIntArray(uniformName, array) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateIntArray(uniformName, array);\n }\n /**\n * Sets an int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setIntArray2(uniformName, array) {\n this.setIntArray(uniformName, array);\n }\n /**\n * Sets an int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setIntArray3(uniformName, array) {\n this.setIntArray(uniformName, array);\n }\n /**\n * Sets an int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setIntArray4(uniformName, array) {\n this.setIntArray(uniformName, array);\n }\n /**\n * Sets an unsigned integer value on a uniform variable.\n * @param uniformName Name of the variable.\n * @param value Value to be set.\n */\n setUInt(uniformName, value) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateUInt(uniformName, value);\n }\n /**\n * Sets an unsigned int2 value on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First unsigned int in uint2.\n * @param y Second unsigned int in uint2.\n */\n setUInt2(uniformName, x, y) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateUInt2(uniformName, x, y);\n }\n /**\n * Sets an unsigned int3 value on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First unsigned int in uint3.\n * @param y Second unsigned int in uint3.\n * @param z Third unsigned int in uint3.\n */\n setUInt3(uniformName, x, y, z) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateUInt3(uniformName, x, y, z);\n }\n /**\n * Sets an unsigned int4 value on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First unsigned int in uint4.\n * @param y Second unsigned int in uint4.\n * @param z Third unsigned int in uint4.\n * @param w Fourth unsigned int in uint4.\n */\n setUInt4(uniformName, x, y, z, w) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateUInt4(uniformName, x, y, z, w);\n }\n /**\n * Sets an unsigned int array on a uniform variable.\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setUIntArray(uniformName, array) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateUIntArray(uniformName, array);\n }\n /**\n * Sets an unsigned int array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setUIntArray2(uniformName, array) {\n this.setUIntArray(uniformName, array);\n }\n /**\n * Sets an unsigned int array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setUIntArray3(uniformName, array) {\n this.setUIntArray(uniformName, array);\n }\n /**\n * Sets an unsigned int array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setUIntArray4(uniformName, array) {\n this.setUIntArray(uniformName, array);\n }\n /**\n * Sets an array on a uniform variable.\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setArray(uniformName, array) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateArray(uniformName, array);\n }\n /**\n * Sets an array 2 on a uniform variable. (Array is specified as single array eg. [1,2,3,4] will result in [[1,2],[3,4]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setArray2(uniformName, array) {\n this.setArray(uniformName, array);\n }\n /**\n * Sets an array 3 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6] will result in [[1,2,3],[4,5,6]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setArray3(uniformName, array) {\n this.setArray(uniformName, array);\n }\n /**\n * Sets an array 4 on a uniform variable. (Array is specified as single array eg. [1,2,3,4,5,6,7,8] will result in [[1,2,3,4],[5,6,7,8]] in the shader)\n * @param uniformName Name of the variable.\n * @param array array to be set.\n */\n setArray4(uniformName, array) {\n this.setArray(uniformName, array);\n }\n /**\n * Sets matrices on a uniform variable.\n * @param uniformName Name of the variable.\n * @param matrices matrices to be set.\n */\n setMatrices(uniformName, matrices) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateMatrices(uniformName, matrices);\n }\n /**\n * Sets matrix on a uniform variable.\n * @param uniformName Name of the variable.\n * @param matrix matrix to be set.\n */\n setMatrix(uniformName, matrix) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateMatrix(uniformName, matrix);\n }\n /**\n * Sets a 3x3 matrix on a uniform variable. (Specified as [1,2,3,4,5,6,7,8,9] will result in [1,2,3][4,5,6][7,8,9] matrix)\n * @param uniformName Name of the variable.\n * @param matrix matrix to be set.\n */\n setMatrix3x3(uniformName, matrix) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateMatrix3x3(uniformName, matrix);\n }\n /**\n * Sets a 2x2 matrix on a uniform variable. (Specified as [1,2,3,4] will result in [1,2][3,4] matrix)\n * @param uniformName Name of the variable.\n * @param matrix matrix to be set.\n */\n setMatrix2x2(uniformName, matrix) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateMatrix2x2(uniformName, matrix);\n }\n /**\n * Sets a float on a uniform variable.\n * @param uniformName Name of the variable.\n * @param value value to be set.\n */\n setFloat(uniformName, value) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateFloat(uniformName, value);\n }\n /**\n * Sets a Vector2 on a uniform variable.\n * @param uniformName Name of the variable.\n * @param vector2 vector2 to be set.\n */\n setVector2(uniformName, vector2) {\n this.setFloat2(uniformName, vector2.x, vector2.y);\n }\n /**\n * Sets a float2 on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First float in float2.\n * @param y Second float in float2.\n */\n setFloat2(uniformName, x, y) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateFloat2(uniformName, x, y);\n }\n /**\n * Sets a Vector3 on a uniform variable.\n * @param uniformName Name of the variable.\n * @param vector3 Value to be set.\n */\n setVector3(uniformName, vector3) {\n this.setFloat3(uniformName, vector3.x, vector3.y, vector3.z);\n }\n /**\n * Sets a float3 on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First float in float3.\n * @param y Second float in float3.\n * @param z Third float in float3.\n */\n setFloat3(uniformName, x, y, z) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateFloat3(uniformName, x, y, z);\n }\n /**\n * Sets a Vector4 on a uniform variable.\n * @param uniformName Name of the variable.\n * @param vector4 Value to be set.\n */\n setVector4(uniformName, vector4) {\n this.setFloat4(uniformName, vector4.x, vector4.y, vector4.z, vector4.w);\n }\n /**\n * Sets a Quaternion on a uniform variable.\n * @param uniformName Name of the variable.\n * @param quaternion Value to be set.\n */\n setQuaternion(uniformName, quaternion) {\n this.setFloat4(uniformName, quaternion.x, quaternion.y, quaternion.z, quaternion.w);\n }\n /**\n * Sets a float4 on a uniform variable.\n * @param uniformName Name of the variable.\n * @param x First float in float4.\n * @param y Second float in float4.\n * @param z Third float in float4.\n * @param w Fourth float in float4.\n */\n setFloat4(uniformName, x, y, z, w) {\n if (!this.uniformBuffer || !this._leftOverUniformsByName[uniformName]) {\n return;\n }\n this.uniformBuffer.updateFloat4(uniformName, x, y, z, w);\n }\n /**\n * Sets a Color3 on a uniform variable.\n * @param uniformName Name of the variable.\n * @param color3 Value to be set.\n */\n setColor3(uniformName, color3) {\n this.setFloat3(uniformName, color3.r, color3.g, color3.b);\n }\n /**\n * Sets a Color4 on a uniform variable.\n * @param uniformName Name of the variable.\n * @param color3 Value to be set.\n * @param alpha Alpha value to be set.\n */\n setColor4(uniformName, color3, alpha) {\n this.setFloat4(uniformName, color3.r, color3.g, color3.b, alpha);\n }\n /**\n * Sets a Color4 on a uniform variable\n * @param uniformName defines the name of the variable\n * @param color4 defines the value to be set\n */\n setDirectColor4(uniformName, color4) {\n this.setFloat4(uniformName, color4.r, color4.g, color4.b, color4.a);\n }\n _getVertexShaderCode() {\n return this.sources?.vertex;\n }\n _getFragmentShaderCode() {\n return this.sources?.fragment;\n }\n}\n//# sourceMappingURL=webgpuPipelineContext.js.map","const _maxGroups = 4;\nconst _maxBindingsPerGroup = 1 << 16;\n// all types not listed are assumed to consume 1 location\nconst _typeToLocationSize = {\n // GLSL types\n mat2: 2,\n mat3: 3,\n mat4: 4,\n // WGSL types\n mat2x2: 2,\n mat3x3: 3,\n mat4x4: 4,\n};\n/**\n * @internal\n */\nexport class WebGPUShaderProcessingContext {\n static get KnownUBOs() {\n return WebGPUShaderProcessingContext._SimplifiedKnownBindings ? WebGPUShaderProcessingContext._SimplifiedKnownUBOs : WebGPUShaderProcessingContext._KnownUBOs;\n }\n constructor(shaderLanguage, pureMode = false) {\n this.vertexBufferKindToNumberOfComponents = {};\n this.shaderLanguage = shaderLanguage;\n this._attributeNextLocation = 0;\n this._varyingNextLocation = 0;\n this.freeGroupIndex = 0;\n this.freeBindingIndex = 0;\n this.availableVaryings = {};\n this.availableAttributes = {};\n this.availableBuffers = {};\n this.availableTextures = {};\n this.availableSamplers = {};\n this.orderedAttributes = [];\n this.bindGroupLayoutEntries = [];\n this.bindGroupLayoutEntryInfo = [];\n this.bindGroupEntries = [];\n this.bufferNames = [];\n this.textureNames = [];\n this.samplerNames = [];\n this.leftOverUniforms = [];\n if (!pureMode) {\n this._findStartingGroupBinding();\n }\n }\n _findStartingGroupBinding() {\n const knownUBOs = WebGPUShaderProcessingContext.KnownUBOs;\n const groups = [];\n for (const name in knownUBOs) {\n const binding = knownUBOs[name].binding;\n if (binding.groupIndex === -1) {\n continue;\n }\n if (groups[binding.groupIndex] === undefined) {\n groups[binding.groupIndex] = binding.bindingIndex;\n }\n else {\n groups[binding.groupIndex] = Math.max(groups[binding.groupIndex], binding.bindingIndex);\n }\n }\n this.freeGroupIndex = groups.length - 1;\n if (this.freeGroupIndex === 0) {\n this.freeGroupIndex++;\n this.freeBindingIndex = 0;\n }\n else {\n this.freeBindingIndex = groups[groups.length - 1] + 1;\n }\n }\n getAttributeNextLocation(dataType, arrayLength = 0) {\n const index = this._attributeNextLocation;\n this._attributeNextLocation += (_typeToLocationSize[dataType] ?? 1) * (arrayLength || 1);\n return index;\n }\n getVaryingNextLocation(dataType, arrayLength = 0) {\n const index = this._varyingNextLocation;\n this._varyingNextLocation += (_typeToLocationSize[dataType] ?? 1) * (arrayLength || 1);\n return index;\n }\n getNextFreeUBOBinding() {\n return this._getNextFreeBinding(1);\n }\n _getNextFreeBinding(bindingCount) {\n if (this.freeBindingIndex > _maxBindingsPerGroup - bindingCount) {\n this.freeGroupIndex++;\n this.freeBindingIndex = 0;\n }\n if (this.freeGroupIndex === _maxGroups) {\n // eslint-disable-next-line no-throw-literal\n throw \"Too many textures or UBOs have been declared and it is not supported in WebGPU.\";\n }\n const returnValue = {\n groupIndex: this.freeGroupIndex,\n bindingIndex: this.freeBindingIndex,\n };\n this.freeBindingIndex += bindingCount;\n return returnValue;\n }\n}\n/** @internal */\nWebGPUShaderProcessingContext._SimplifiedKnownBindings = true; // if true, use only group=0,binding=0 as a known group/binding for the Scene ubo and use group=1,binding=X for all other bindings\n// if false, see _KnownUBOs for the known groups/bindings used\nWebGPUShaderProcessingContext._SimplifiedKnownUBOs = {\n Scene: { binding: { groupIndex: 0, bindingIndex: 0 } },\n Light0: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light1: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light2: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light3: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light4: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light5: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light6: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light7: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light8: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light9: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light10: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light11: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light12: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light13: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light14: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light15: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light16: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light17: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light18: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light19: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light20: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light21: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light22: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light23: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light24: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light25: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light26: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light27: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light28: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light29: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light30: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Light31: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Material: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Mesh: { binding: { groupIndex: -1, bindingIndex: -1 } },\n Internals: { binding: { groupIndex: -1, bindingIndex: -1 } },\n};\nWebGPUShaderProcessingContext._KnownUBOs = {\n Scene: { binding: { groupIndex: 0, bindingIndex: 0 } },\n Light0: { binding: { groupIndex: 1, bindingIndex: 0 } },\n Light1: { binding: { groupIndex: 1, bindingIndex: 1 } },\n Light2: { binding: { groupIndex: 1, bindingIndex: 2 } },\n Light3: { binding: { groupIndex: 1, bindingIndex: 3 } },\n Light4: { binding: { groupIndex: 1, bindingIndex: 4 } },\n Light5: { binding: { groupIndex: 1, bindingIndex: 5 } },\n Light6: { binding: { groupIndex: 1, bindingIndex: 6 } },\n Light7: { binding: { groupIndex: 1, bindingIndex: 7 } },\n Light8: { binding: { groupIndex: 1, bindingIndex: 8 } },\n Light9: { binding: { groupIndex: 1, bindingIndex: 9 } },\n Light10: { binding: { groupIndex: 1, bindingIndex: 10 } },\n Light11: { binding: { groupIndex: 1, bindingIndex: 11 } },\n Light12: { binding: { groupIndex: 1, bindingIndex: 12 } },\n Light13: { binding: { groupIndex: 1, bindingIndex: 13 } },\n Light14: { binding: { groupIndex: 1, bindingIndex: 14 } },\n Light15: { binding: { groupIndex: 1, bindingIndex: 15 } },\n Light16: { binding: { groupIndex: 1, bindingIndex: 16 } },\n Light17: { binding: { groupIndex: 1, bindingIndex: 17 } },\n Light18: { binding: { groupIndex: 1, bindingIndex: 18 } },\n Light19: { binding: { groupIndex: 1, bindingIndex: 19 } },\n Light20: { binding: { groupIndex: 1, bindingIndex: 20 } },\n Light21: { binding: { groupIndex: 1, bindingIndex: 21 } },\n Light22: { binding: { groupIndex: 1, bindingIndex: 22 } },\n Light23: { binding: { groupIndex: 1, bindingIndex: 23 } },\n Light24: { binding: { groupIndex: 1, bindingIndex: 24 } },\n Light25: { binding: { groupIndex: 1, bindingIndex: 25 } },\n Light26: { binding: { groupIndex: 1, bindingIndex: 26 } },\n Light27: { binding: { groupIndex: 1, bindingIndex: 27 } },\n Light28: { binding: { groupIndex: 1, bindingIndex: 28 } },\n Light29: { binding: { groupIndex: 1, bindingIndex: 29 } },\n Light30: { binding: { groupIndex: 1, bindingIndex: 30 } },\n Light31: { binding: { groupIndex: 1, bindingIndex: 31 } },\n Material: { binding: { groupIndex: 2, bindingIndex: 0 } },\n Mesh: { binding: { groupIndex: 2, bindingIndex: 1 } },\n Internals: { binding: { groupIndex: 2, bindingIndex: 2 } },\n};\n//# sourceMappingURL=webgpuShaderProcessingContext.js.map","/**\n * Extracts the characters between two markers (for eg, between \"(\" and \")\"). The function handles nested markers as well as markers inside strings (delimited by \", ' or `) and comments\n * @param markerOpen opening marker\n * @param markerClose closing marker\n * @param block code block to parse\n * @param startIndex starting index in block where the extraction must start. The character at block[startIndex] should be the markerOpen character!\n * @returns index of the last character for the extraction (or -1 if the string is invalid - no matching closing marker found). The string to extract (without the markers) is the string between startIndex + 1 and the returned value (exclusive)\n */\nexport function ExtractBetweenMarkers(markerOpen, markerClose, block, startIndex) {\n let currPos = startIndex, openMarkers = 0, waitForChar = \"\";\n while (currPos < block.length) {\n const currChar = block.charAt(currPos);\n if (!waitForChar) {\n switch (currChar) {\n case markerOpen:\n openMarkers++;\n break;\n case markerClose:\n openMarkers--;\n break;\n case '\"':\n case \"'\":\n case \"`\":\n waitForChar = currChar;\n break;\n case \"/\":\n if (currPos + 1 < block.length) {\n const nextChar = block.charAt(currPos + 1);\n if (nextChar === \"/\") {\n waitForChar = \"\\n\";\n }\n else if (nextChar === \"*\") {\n waitForChar = \"*/\";\n }\n }\n break;\n }\n }\n else {\n if (currChar === waitForChar) {\n if (waitForChar === '\"' || waitForChar === \"'\") {\n block.charAt(currPos - 1) !== \"\\\\\" && (waitForChar = \"\");\n }\n else {\n waitForChar = \"\";\n }\n }\n else if (waitForChar === \"*/\" && currChar === \"*\" && currPos + 1 < block.length) {\n block.charAt(currPos + 1) === \"/\" && (waitForChar = \"\");\n if (waitForChar === \"\") {\n currPos++;\n }\n }\n }\n currPos++;\n if (openMarkers === 0) {\n break;\n }\n }\n return openMarkers === 0 ? currPos - 1 : -1;\n}\n/**\n * Parses a string and skip whitespaces\n * @param s string to parse\n * @param index index where to start parsing\n * @returns the index after all whitespaces have been skipped\n */\nexport function SkipWhitespaces(s, index) {\n while (index < s.length) {\n const c = s[index];\n if (c !== \" \" && c !== \"\\n\" && c !== \"\\r\" && c !== \"\\t\" && c !== \"\\u000a\" && c !== \"\\u00a0\") {\n break;\n }\n index++;\n }\n return index;\n}\n/**\n * Checks if a character is an identifier character (meaning, if it is 0-9, A-Z, a-z or _)\n * @param c character to check\n * @returns true if the character is an identifier character\n */\nexport function IsIdentifierChar(c) {\n const v = c.charCodeAt(0);\n return ((v >= 48 && v <= 57) || // 0-9\n (v >= 65 && v <= 90) || // A-Z\n (v >= 97 && v <= 122) || // a-z\n v == 95); // _\n}\n/**\n * Removes the comments of a code block\n * @param block code block to parse\n * @returns block with the comments removed\n */\nexport function RemoveComments(block) {\n let currPos = 0, waitForChar = \"\", inComments = false;\n const s = [];\n while (currPos < block.length) {\n const currChar = block.charAt(currPos);\n if (!waitForChar) {\n switch (currChar) {\n case '\"':\n case \"'\":\n case \"`\":\n waitForChar = currChar;\n break;\n case \"/\":\n if (currPos + 1 < block.length) {\n const nextChar = block.charAt(currPos + 1);\n if (nextChar === \"/\") {\n waitForChar = \"\\n\";\n inComments = true;\n }\n else if (nextChar === \"*\") {\n waitForChar = \"*/\";\n inComments = true;\n }\n }\n break;\n }\n if (!inComments) {\n s.push(currChar);\n }\n }\n else {\n if (currChar === waitForChar) {\n if (waitForChar === '\"' || waitForChar === \"'\") {\n block.charAt(currPos - 1) !== \"\\\\\" && (waitForChar = \"\");\n s.push(currChar);\n }\n else {\n waitForChar = \"\";\n inComments = false;\n }\n }\n else if (waitForChar === \"*/\" && currChar === \"*\" && currPos + 1 < block.length) {\n block.charAt(currPos + 1) === \"/\" && (waitForChar = \"\");\n if (waitForChar === \"\") {\n inComments = false;\n currPos++;\n }\n }\n else {\n if (!inComments) {\n s.push(currChar);\n }\n }\n }\n currPos++;\n }\n return s.join(\"\");\n}\n/**\n * Finds the first occurrence of a character in a string going backward\n * @param s the string to parse\n * @param index starting index in the string\n * @param c the character to find\n * @param c2 an optional second character to find\n * @returns the index of the character if found, else -1\n */\nexport function FindBackward(s, index, c, c2) {\n while (index >= 0 && s.charAt(index) !== c && (!c2 || s.charAt(index) !== c2)) {\n index--;\n }\n return index;\n}\n/**\n * Escapes a string so that it is usable as a regular expression\n * @param s string to escape\n * @returns escaped string\n */\nexport function EscapeRegExp(s) {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n/**\n * Injects code at the beginning and/or end of a function.\n * The function is identified by \"mainFuncDecl\". The starting code is injected just after the first \"\\{\" found after the mainFuncDecl.\n * The ending code is injected just before the last \"\\}\" of the whole block of code (so, it is assumed that the function is the last of the block of code).\n * @param code code to inject into\n * @param mainFuncDecl Function declaration to find in the code (for eg: \"void main\")\n * @param startingCode The code to inject at the beginning of the function\n * @param endingCode The code to inject at the end of the function\n * @returns The code with the injected code\n */\nexport function InjectStartingAndEndingCode(code, mainFuncDecl, startingCode, endingCode) {\n let idx = code.indexOf(mainFuncDecl);\n if (idx < 0) {\n return code;\n }\n if (startingCode) {\n // eslint-disable-next-line no-empty\n while (idx++ < code.length && code.charAt(idx) != \"{\") { }\n if (idx < code.length) {\n const part1 = code.substring(0, idx + 1);\n const part2 = code.substring(idx + 1);\n code = part1 + startingCode + part2;\n }\n }\n if (endingCode) {\n const lastClosingCurly = code.lastIndexOf(\"}\");\n code = code.substring(0, lastClosingCurly);\n code += endingCode + \"\\n}\";\n }\n return code;\n}\n//# sourceMappingURL=codeStringParsingTools.js.map","import { WebGPUShaderProcessingContext } from \"./webgpuShaderProcessingContext\";\nimport { Logger } from \"../../Misc/logger\";\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\nimport { InjectStartingAndEndingCode } from \"../../Misc/codeStringParsingTools\";\nimport { Constants } from \"../constants\";\n/** @internal */\nexport class WebGPUShaderProcessorGLSL extends WebGPUShaderProcessor {\n constructor() {\n super(...arguments);\n this._missingVaryings = [];\n this._textureArrayProcessing = [];\n this._vertexIsGLES3 = false;\n this._fragmentIsGLES3 = false;\n this.shaderLanguage = 0 /* ShaderLanguage.GLSL */;\n this.parseGLES3 = true;\n }\n _getArraySize(name, type, preProcessors) {\n let length = 0;\n const startArray = name.indexOf(\"[\");\n const endArray = name.indexOf(\"]\");\n if (startArray > 0 && endArray > 0) {\n const lengthInString = name.substring(startArray + 1, endArray);\n length = +lengthInString;\n if (isNaN(length)) {\n length = +preProcessors[lengthInString.trim()];\n }\n name = name.substring(0, startArray);\n }\n return [name, type, length];\n }\n initializeShaders(processingContext) {\n this._webgpuProcessingContext = processingContext;\n this._missingVaryings.length = 0;\n this._textureArrayProcessing.length = 0;\n this.attributeKeywordName = undefined;\n this.varyingVertexKeywordName = undefined;\n this.varyingFragmentKeywordName = undefined;\n }\n preProcessShaderCode(code, isFragment) {\n const ubDeclaration = `// Internals UBO\\nuniform ${WebGPUShaderProcessor.InternalsUBOName} {\\nfloat yFactor_;\\nfloat textureOutputHeight_;\\n};\\n`;\n const alreadyInjected = code.indexOf(\"// Internals UBO\") !== -1;\n if (isFragment) {\n this._fragmentIsGLES3 = code.indexOf(\"#version 3\") !== -1;\n if (this._fragmentIsGLES3) {\n this.varyingFragmentKeywordName = \"in\";\n }\n return alreadyInjected ? code : ubDeclaration + \"##INJECTCODE##\\n\" + code;\n }\n this._vertexIsGLES3 = code.indexOf(\"#version 3\") !== -1;\n if (this._vertexIsGLES3) {\n this.attributeKeywordName = \"in\";\n this.varyingVertexKeywordName = \"out\";\n }\n return alreadyInjected ? code : ubDeclaration + code;\n }\n varyingCheck(varying, isFragment) {\n const outRegex = /(flat\\s)?\\s*\\bout\\b/;\n const inRegex = /(flat\\s)?\\s*\\bin\\b/;\n const varyingRegex = /(flat\\s)?\\s*\\bvarying\\b/;\n const regex = isFragment && this._fragmentIsGLES3 ? inRegex : !isFragment && this._vertexIsGLES3 ? outRegex : varyingRegex;\n return regex.test(varying);\n }\n varyingProcessor(varying, isFragment, preProcessors) {\n this._preProcessors = preProcessors;\n const outRegex = /\\s*(flat)?\\s*out\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\n const inRegex = /\\s*(flat)?\\s*in\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\n const varyingRegex = /\\s*(flat)?\\s*varying\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\n const regex = isFragment && this._fragmentIsGLES3 ? inRegex : !isFragment && this._vertexIsGLES3 ? outRegex : varyingRegex;\n const match = regex.exec(varying);\n if (match !== null) {\n const interpolationQualifier = match[1] ?? \"\";\n const varyingType = match[2];\n const name = match[3];\n let location;\n if (isFragment) {\n location = this._webgpuProcessingContext.availableVaryings[name];\n this._missingVaryings[location] = \"\";\n if (location === undefined) {\n Logger.Warn(`Invalid fragment shader: The varying named \"${name}\" is not declared in the vertex shader! This declaration will be ignored.`);\n }\n }\n else {\n location = this._webgpuProcessingContext.getVaryingNextLocation(varyingType, this._getArraySize(name, varyingType, preProcessors)[2]);\n this._webgpuProcessingContext.availableVaryings[name] = location;\n this._missingVaryings[location] = `layout(location = ${location}) ${interpolationQualifier} in ${varyingType} ${name};`;\n }\n varying = varying.replace(match[0], location === undefined ? \"\" : `layout(location = ${location}) ${interpolationQualifier} ${isFragment ? \"in\" : \"out\"} ${varyingType} ${name};`);\n }\n return varying;\n }\n attributeProcessor(attribute, preProcessors) {\n this._preProcessors = preProcessors;\n const inRegex = /\\s*in\\s+(\\S+)\\s+(\\S+)\\s*;/gm;\n const attribRegex = /\\s*attribute\\s+(\\S+)\\s+(\\S+)\\s*;/gm;\n const regex = this._vertexIsGLES3 ? inRegex : attribRegex;\n const match = regex.exec(attribute);\n if (match !== null) {\n const attributeType = match[1];\n const name = match[2];\n const location = this._webgpuProcessingContext.getAttributeNextLocation(attributeType, this._getArraySize(name, attributeType, preProcessors)[2]);\n this._webgpuProcessingContext.availableAttributes[name] = location;\n this._webgpuProcessingContext.orderedAttributes[location] = name;\n const numComponents = this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents[name];\n if (numComponents !== undefined) {\n // Special case for an int/ivecX vertex buffer that is used as a float/vecX attribute in the shader.\n const newType = numComponents < 0 ? (numComponents === -1 ? \"int\" : \"ivec\" + -numComponents) : numComponents === 1 ? \"uint\" : \"uvec\" + numComponents;\n const newName = `_int_${name}_`;\n attribute = attribute.replace(match[0], `layout(location = ${location}) in ${newType} ${newName}; ${attributeType} ${name} = ${attributeType}(${newName});`);\n }\n else {\n attribute = attribute.replace(match[0], `layout(location = ${location}) in ${attributeType} ${name};`);\n }\n }\n return attribute;\n }\n uniformProcessor(uniform, isFragment, preProcessors) {\n this._preProcessors = preProcessors;\n const uniformRegex = /\\s*uniform\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s+(\\S+)\\s*;/gm;\n const match = uniformRegex.exec(uniform);\n if (match !== null) {\n let uniformType = match[1];\n let name = match[2];\n if (uniformType.indexOf(\"sampler\") === 0 || uniformType.indexOf(\"sampler\") === 1) {\n let arraySize = 0; // 0 means the texture is not declared as an array\n [name, uniformType, arraySize] = this._getArraySize(name, uniformType, preProcessors);\n let textureInfo = this._webgpuProcessingContext.availableTextures[name];\n if (!textureInfo) {\n textureInfo = {\n autoBindSampler: true,\n isTextureArray: arraySize > 0,\n isStorageTexture: false,\n textures: [],\n sampleType: \"float\" /* WebGPUConstants.TextureSampleType.Float */,\n };\n for (let i = 0; i < (arraySize || 1); ++i) {\n textureInfo.textures.push(this._webgpuProcessingContext.getNextFreeUBOBinding());\n }\n }\n const samplerType = WebGPUShaderProcessor._SamplerTypeByWebGLSamplerType[uniformType] ?? \"sampler\";\n const isComparisonSampler = !!WebGPUShaderProcessor._IsComparisonSamplerByWebGPUSamplerType[samplerType];\n const samplerBindingType = isComparisonSampler ? \"comparison\" /* WebGPUConstants.SamplerBindingType.Comparison */ : \"filtering\" /* WebGPUConstants.SamplerBindingType.Filtering */;\n const samplerName = name + Constants.AUTOSAMPLERSUFFIX;\n let samplerInfo = this._webgpuProcessingContext.availableSamplers[samplerName];\n if (!samplerInfo) {\n samplerInfo = {\n binding: this._webgpuProcessingContext.getNextFreeUBOBinding(),\n type: samplerBindingType,\n };\n }\n const componentType = uniformType.charAt(0) === \"u\" ? \"u\" : uniformType.charAt(0) === \"i\" ? \"i\" : \"\";\n if (componentType) {\n uniformType = uniformType.substring(1);\n }\n const sampleType = isComparisonSampler\n ? \"depth\" /* WebGPUConstants.TextureSampleType.Depth */\n : componentType === \"u\"\n ? \"uint\" /* WebGPUConstants.TextureSampleType.Uint */\n : componentType === \"i\"\n ? \"sint\" /* WebGPUConstants.TextureSampleType.Sint */\n : \"float\" /* WebGPUConstants.TextureSampleType.Float */;\n textureInfo.sampleType = sampleType;\n const isTextureArray = arraySize > 0;\n const samplerGroupIndex = samplerInfo.binding.groupIndex;\n const samplerBindingIndex = samplerInfo.binding.bindingIndex;\n const samplerFunction = WebGPUShaderProcessor._SamplerFunctionByWebGLSamplerType[uniformType];\n const textureType = WebGPUShaderProcessor._TextureTypeByWebGLSamplerType[uniformType];\n const textureDimension = WebGPUShaderProcessor._GpuTextureViewDimensionByWebGPUTextureType[textureType];\n // Manage textures and samplers.\n if (!isTextureArray) {\n arraySize = 1;\n uniform = `layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${samplerType} ${samplerName};\r\n layout(set = ${textureInfo.textures[0].groupIndex}, binding = ${textureInfo.textures[0].bindingIndex}) uniform ${componentType}${textureType} ${name}Texture;\r\n #define ${name} ${componentType}${samplerFunction}(${name}Texture, ${samplerName})`;\n }\n else {\n const layouts = [];\n layouts.push(`layout(set = ${samplerGroupIndex}, binding = ${samplerBindingIndex}) uniform ${componentType}${samplerType} ${samplerName};`);\n uniform = `\\n`;\n for (let i = 0; i < arraySize; ++i) {\n const textureSetIndex = textureInfo.textures[i].groupIndex;\n const textureBindingIndex = textureInfo.textures[i].bindingIndex;\n layouts.push(`layout(set = ${textureSetIndex}, binding = ${textureBindingIndex}) uniform ${textureType} ${name}Texture${i};`);\n uniform += `${i > 0 ? \"\\n\" : \"\"}#define ${name}${i} ${componentType}${samplerFunction}(${name}Texture${i}, ${samplerName})`;\n }\n uniform = layouts.join(\"\\n\") + uniform;\n this._textureArrayProcessing.push(name);\n }\n this._webgpuProcessingContext.availableTextures[name] = textureInfo;\n this._webgpuProcessingContext.availableSamplers[samplerName] = samplerInfo;\n this._addSamplerBindingDescription(samplerName, samplerInfo, !isFragment);\n for (let i = 0; i < arraySize; ++i) {\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, null, !isFragment);\n }\n }\n else {\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\n uniform = \"\";\n }\n }\n return uniform;\n }\n uniformBufferProcessor(uniformBuffer, isFragment) {\n const uboRegex = /uniform\\s+(\\w+)/gm;\n const match = uboRegex.exec(uniformBuffer);\n if (match !== null) {\n const name = match[1];\n let uniformBufferInfo = this._webgpuProcessingContext.availableBuffers[name];\n if (!uniformBufferInfo) {\n const knownUBO = WebGPUShaderProcessingContext.KnownUBOs[name];\n let binding;\n if (knownUBO && knownUBO.binding.groupIndex !== -1) {\n binding = knownUBO.binding;\n }\n else {\n binding = this._webgpuProcessingContext.getNextFreeUBOBinding();\n }\n uniformBufferInfo = { binding };\n this._webgpuProcessingContext.availableBuffers[name] = uniformBufferInfo;\n }\n this._addBufferBindingDescription(name, uniformBufferInfo, \"uniform\" /* WebGPUConstants.BufferBindingType.Uniform */, !isFragment);\n uniformBuffer = uniformBuffer.replace(\"uniform\", `layout(set = ${uniformBufferInfo.binding.groupIndex}, binding = ${uniformBufferInfo.binding.bindingIndex}) uniform`);\n }\n return uniformBuffer;\n }\n postProcessor(code, defines, isFragment, _processingContext, _parameters) {\n const hasDrawBuffersExtension = code.search(/#extension.+GL_EXT_draw_buffers.+require/) !== -1;\n // Remove extensions\n const regex = /#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;\n code = code.replace(regex, \"\");\n // Replace instructions\n code = code.replace(/texture2D\\s*\\(/g, \"texture(\");\n if (isFragment) {\n const hasFragCoord = code.indexOf(\"gl_FragCoord\") >= 0;\n const fragCoordCode = `\r\n glFragCoord_ = gl_FragCoord;\r\n if (yFactor_ == 1.) {\r\n glFragCoord_.y = textureOutputHeight_ - glFragCoord_.y;\r\n }\r\n `;\n const injectCode = hasFragCoord ? \"vec4 glFragCoord_;\\n\" : \"\";\n const hasOutput = code.search(/layout *\\(location *= *0\\) *out/g) !== -1;\n code = code.replace(/texture2DLodEXT\\s*\\(/g, \"textureLod(\");\n code = code.replace(/textureCubeLodEXT\\s*\\(/g, \"textureLod(\");\n code = code.replace(/textureCube\\s*\\(/g, \"texture(\");\n code = code.replace(/gl_FragDepthEXT/g, \"gl_FragDepth\");\n code = code.replace(/gl_FragColor/g, \"glFragColor\");\n code = code.replace(/gl_FragData/g, \"glFragData\");\n code = code.replace(/gl_FragCoord/g, \"glFragCoord_\");\n if (!this._fragmentIsGLES3) {\n code = code.replace(/void\\s+?main\\s*\\(/g, (hasDrawBuffersExtension || hasOutput ? \"\" : \"layout(location = 0) out vec4 glFragColor;\\n\") + \"void main(\");\n }\n else {\n const match = /^\\s*out\\s+\\S+\\s+\\S+\\s*;/gm.exec(code);\n if (match !== null) {\n code = code.substring(0, match.index) + \"layout(location = 0) \" + code.substring(match.index);\n }\n }\n code = code.replace(/dFdy/g, \"(-yFactor_)*dFdy\"); // will also handle dFdyCoarse and dFdyFine\n code = code.replace(\"##INJECTCODE##\", injectCode);\n if (hasFragCoord) {\n code = InjectStartingAndEndingCode(code, \"void main\", fragCoordCode);\n }\n }\n else {\n code = code.replace(/gl_InstanceID/g, \"gl_InstanceIndex\");\n code = code.replace(/gl_VertexID/g, \"gl_VertexIndex\");\n const hasMultiviewExtension = defines.indexOf(\"#define MULTIVIEW\") !== -1;\n if (hasMultiviewExtension) {\n return \"#extension GL_OVR_multiview2 : require\\nlayout (num_views = 2) in;\\n\" + code;\n }\n }\n // Flip Y + convert z range from [-1,1] to [0,1]\n if (!isFragment) {\n const lastClosingCurly = code.lastIndexOf(\"}\");\n code = code.substring(0, lastClosingCurly);\n code += \"gl_Position.y *= yFactor_;\\n\";\n // isNDCHalfZRange is always true in WebGPU\n code += \"}\";\n }\n return code;\n }\n _applyTextureArrayProcessing(code, name) {\n // Replaces the occurrences of name[XX] by nameXX\n const regex = new RegExp(name + \"\\\\s*\\\\[(.+)?\\\\]\", \"gm\");\n let match = regex.exec(code);\n while (match !== null) {\n const index = match[1];\n let iindex = +index;\n if (this._preProcessors && isNaN(iindex)) {\n iindex = +this._preProcessors[index.trim()];\n }\n code = code.replace(match[0], name + iindex);\n match = regex.exec(code);\n }\n return code;\n }\n _generateLeftOverUBOCode(name, uniformBufferDescription) {\n let ubo = `layout(set = ${uniformBufferDescription.binding.groupIndex}, binding = ${uniformBufferDescription.binding.bindingIndex}) uniform ${name} {\\n `;\n for (const leftOverUniform of this._webgpuProcessingContext.leftOverUniforms) {\n if (leftOverUniform.length > 0) {\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name}[${leftOverUniform.length}];\\n`;\n }\n else {\n ubo += ` ${leftOverUniform.type} ${leftOverUniform.name};\\n`;\n }\n }\n ubo += \"};\\n\\n\";\n return ubo;\n }\n finalizeShaders(vertexCode, fragmentCode) {\n // make replacements for texture names in the texture array case\n for (let i = 0; i < this._textureArrayProcessing.length; ++i) {\n const name = this._textureArrayProcessing[i];\n vertexCode = this._applyTextureArrayProcessing(vertexCode, name);\n fragmentCode = this._applyTextureArrayProcessing(fragmentCode, name);\n }\n // inject the missing varying in the fragment shader\n for (let i = 0; i < this._missingVaryings.length; ++i) {\n const decl = this._missingVaryings[i];\n if (decl && decl.length > 0) {\n fragmentCode = decl + \"\\n\" + fragmentCode;\n }\n }\n // Builds the leftover UBOs.\n const leftOverUBO = this._buildLeftOverUBO();\n vertexCode = leftOverUBO + vertexCode;\n fragmentCode = leftOverUBO + fragmentCode;\n this._collectBindingNames();\n this._preCreateBindGroupEntries();\n this._preProcessors = null;\n this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents = {};\n return { vertexCode, fragmentCode };\n }\n}\n//# sourceMappingURL=webgpuShaderProcessorsGLSL.js.map","import { WebGPUShaderProcessingContext } from \"./webgpuShaderProcessingContext\";\nimport { Logger } from \"../../Misc/logger\";\nimport { WebGPUShaderProcessor } from \"./webgpuShaderProcessor\";\nimport { RemoveComments, InjectStartingAndEndingCode } from \"../../Misc/codeStringParsingTools\";\nimport { Constants } from \"../constants\";\nimport \"../../ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration\";\nimport \"../../ShadersWGSL/ShadersInclude/bakedVertexAnimation\";\nimport \"../../ShadersWGSL/ShadersInclude/instancesDeclaration\";\nimport \"../../ShadersWGSL/ShadersInclude/instancesVertex\";\nimport \"../../ShadersWGSL/ShadersInclude/helperFunctions\";\nimport \"../../ShadersWGSL/ShadersInclude/fresnelFunction\";\nimport \"../../ShadersWGSL/ShadersInclude/meshUboDeclaration\";\nimport \"../../ShadersWGSL/ShadersInclude/sceneUboDeclaration\";\nimport \"../../ShadersWGSL/ShadersInclude/decalFragment\";\nconst builtInName_frag_depth = \"fragmentOutputs.fragDepth\";\nconst leftOverVarName = \"uniforms\";\nconst internalsVarName = \"internals\";\nconst gpuTextureViewDimensionByWebGPUTextureFunction = {\n texture_1d: \"1d\" /* WebGPUConstants.TextureViewDimension.E1d */,\n texture_2d: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n texture_2d_array: \"2d-array\" /* WebGPUConstants.TextureViewDimension.E2dArray */,\n texture_3d: \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */,\n texture_cube: \"cube\" /* WebGPUConstants.TextureViewDimension.Cube */,\n texture_cube_array: \"cube-array\" /* WebGPUConstants.TextureViewDimension.CubeArray */,\n texture_multisampled_2d: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n texture_depth_2d: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n texture_depth_2d_array: \"2d-array\" /* WebGPUConstants.TextureViewDimension.E2dArray */,\n texture_depth_cube: \"cube\" /* WebGPUConstants.TextureViewDimension.Cube */,\n texture_depth_cube_array: \"cube-array\" /* WebGPUConstants.TextureViewDimension.CubeArray */,\n texture_depth_multisampled_2d: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n texture_storage_1d: \"1d\" /* WebGPUConstants.TextureViewDimension.E1d */,\n texture_storage_2d: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n texture_storage_2d_array: \"2d-array\" /* WebGPUConstants.TextureViewDimension.E2dArray */,\n texture_storage_3d: \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */,\n texture_external: null,\n};\n/** @internal */\nexport class WebGPUShaderProcessorWGSL extends WebGPUShaderProcessor {\n constructor() {\n super(...arguments);\n this.shaderLanguage = 1 /* ShaderLanguage.WGSL */;\n this.uniformRegexp = /uniform\\s+(\\w+)\\s*:\\s*(.+)\\s*;/;\n this.textureRegexp = /var\\s+(\\w+)\\s*:\\s*((array<\\s*)?(texture_\\w+)\\s*(<\\s*(.+)\\s*>)?\\s*(,\\s*\\w+\\s*>\\s*)?);/;\n this.noPrecision = true;\n this.pureMode = false;\n }\n preProcessor(code, defines, preProcessors, isFragment, processingContext) {\n // Convert defines into const\n for (const key in preProcessors) {\n if (key === \"__VERSION__\") {\n continue;\n }\n const value = preProcessors[key];\n if (!isNaN(parseInt(value)) || !isNaN(parseFloat(value))) {\n code = `const ${key} = ${value};\\n` + code;\n }\n }\n return code;\n }\n _getArraySize(name, uniformType, preProcessors) {\n let length = 0;\n const endArray = uniformType.lastIndexOf(\">\");\n if (uniformType.indexOf(\"array\") >= 0 && endArray > 0) {\n let startArray = endArray;\n while (startArray > 0 && uniformType.charAt(startArray) !== \" \" && uniformType.charAt(startArray) !== \",\") {\n startArray--;\n }\n const lengthInString = uniformType.substring(startArray + 1, endArray);\n length = +lengthInString;\n if (isNaN(length)) {\n length = +preProcessors[lengthInString.trim()];\n }\n while (startArray > 0 && (uniformType.charAt(startArray) === \" \" || uniformType.charAt(startArray) === \",\")) {\n startArray--;\n }\n uniformType = uniformType.substring(uniformType.indexOf(\"<\") + 1, startArray + 1);\n }\n return [name, uniformType, length];\n }\n initializeShaders(processingContext) {\n this._webgpuProcessingContext = processingContext;\n this._attributesInputWGSL = [];\n this._attributesWGSL = [];\n this._attributesConversionCodeWGSL = [];\n this._hasNonFloatAttribute = false;\n this._varyingsWGSL = [];\n this._varyingNamesWGSL = [];\n this._stridedUniformArrays = [];\n }\n preProcessShaderCode(code) {\n // Same check as in webgpuShaderProcessorsGLSL to avoid same ubDelcaration to be injected twice.\n const ubDeclaration = this.pureMode\n ? \"\"\n : `struct ${WebGPUShaderProcessor.InternalsUBOName} {\\n yFactor_: f32,\\n textureOutputHeight_: f32,\\n};\\nvar<uniform> ${internalsVarName} : ${WebGPUShaderProcessor.InternalsUBOName};\\n`;\n const alreadyInjected = code.indexOf(ubDeclaration) !== -1;\n return alreadyInjected ? code : ubDeclaration + RemoveComments(code);\n }\n varyingCheck(varying) {\n const regex = /(flat|linear|perspective)?\\s*(center|centroid|sample)?\\s*\\bvarying\\b/;\n return regex.test(varying);\n }\n varyingProcessor(varying, isFragment, preProcessors) {\n const varyingRegex = /\\s*(flat|linear|perspective)?\\s*(center|centroid|sample)?\\s*varying\\s+(?:(?:highp)?|(?:lowp)?)\\s*(\\S+)\\s*:\\s*(.+)\\s*;/gm;\n const match = varyingRegex.exec(varying);\n if (match !== null) {\n const interpolationType = match[1] ?? \"perspective\";\n const interpolationSampling = match[2] ?? \"center\";\n const varyingType = match[4];\n const name = match[3];\n const interpolation = interpolationType === \"flat\" ? `@interpolate(${interpolationType})` : `@interpolate(${interpolationType}, ${interpolationSampling})`;\n let location;\n if (isFragment) {\n location = this._webgpuProcessingContext.availableVaryings[name];\n if (location === undefined) {\n Logger.Warn(`Invalid fragment shader: The varying named \"${name}\" is not declared in the vertex shader! This declaration will be ignored.`);\n }\n }\n else {\n location = this._webgpuProcessingContext.getVaryingNextLocation(varyingType, this._getArraySize(name, varyingType, preProcessors)[2]);\n this._webgpuProcessingContext.availableVaryings[name] = location;\n this._varyingsWGSL.push(` @location(${location}) ${interpolation} ${name} : ${varyingType},`);\n this._varyingNamesWGSL.push(name);\n }\n varying = \"\";\n }\n return varying;\n }\n attributeProcessor(attribute, preProcessors) {\n const attribRegex = /\\s*attribute\\s+(\\S+)\\s*:\\s*(.+)\\s*;/gm;\n const match = attribRegex.exec(attribute);\n if (match !== null) {\n const attributeType = match[2];\n const name = match[1];\n const location = this._webgpuProcessingContext.getAttributeNextLocation(attributeType, this._getArraySize(name, attributeType, preProcessors)[2]);\n this._webgpuProcessingContext.availableAttributes[name] = location;\n this._webgpuProcessingContext.orderedAttributes[location] = name;\n const numComponents = this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents[name];\n if (numComponents !== undefined) {\n // Special case for an int/ivecX vertex buffer that is used as a float/vecX attribute in the shader.\n const newType = numComponents < 0 ? (numComponents === -1 ? \"i32\" : \"vec\" + -numComponents + \"<i32>\") : numComponents === 1 ? \"u32\" : \"vec\" + numComponents + \"<u32>\";\n const newName = `_int_${name}_`;\n this._attributesInputWGSL.push(`@location(${location}) ${newName} : ${newType},`);\n this._attributesWGSL.push(`${name} : ${attributeType},`);\n this._attributesConversionCodeWGSL.push(`vertexInputs.${name} = ${attributeType}(vertexInputs_.${newName});`);\n this._hasNonFloatAttribute = true;\n }\n else {\n this._attributesInputWGSL.push(`@location(${location}) ${name} : ${attributeType},`);\n this._attributesWGSL.push(`${name} : ${attributeType},`);\n this._attributesConversionCodeWGSL.push(`vertexInputs.${name} = vertexInputs_.${name};`);\n }\n attribute = \"\";\n }\n return attribute;\n }\n uniformProcessor(uniform, isFragment, preProcessors) {\n const match = this.uniformRegexp.exec(uniform);\n if (match !== null) {\n const uniformType = match[2];\n const name = match[1];\n this._addUniformToLeftOverUBO(name, uniformType, preProcessors);\n uniform = \"\";\n }\n return uniform;\n }\n textureProcessor(texture, isFragment, preProcessors) {\n const match = this.textureRegexp.exec(texture);\n if (match !== null) {\n const name = match[1]; // name of the variable\n const type = match[2]; // texture_2d<f32> or array<texture_2d_array<f32>, 5> for eg\n const isArrayOfTexture = !!match[3];\n const textureFunc = match[4]; // texture_2d, texture_depth_2d, etc\n const isStorageTexture = textureFunc.indexOf(\"storage\") > 0;\n const componentType = match[6]; // f32 or i32 or u32 or undefined\n const storageTextureFormat = isStorageTexture ? componentType.substring(0, componentType.indexOf(\",\")).trim() : null;\n let arraySize = isArrayOfTexture ? this._getArraySize(name, type, preProcessors)[2] : 0;\n let textureInfo = this._webgpuProcessingContext.availableTextures[name];\n if (!textureInfo) {\n textureInfo = {\n isTextureArray: arraySize > 0,\n isStorageTexture,\n textures: [],\n sampleType: \"float\" /* WebGPUConstants.TextureSampleType.Float */,\n };\n arraySize = arraySize || 1;\n for (let i = 0; i < arraySize; ++i) {\n textureInfo.textures.push(this._webgpuProcessingContext.getNextFreeUBOBinding());\n }\n }\n else {\n arraySize = textureInfo.textures.length;\n }\n this._webgpuProcessingContext.availableTextures[name] = textureInfo;\n const isDepthTexture = textureFunc.indexOf(\"depth\") > 0;\n const textureDimension = gpuTextureViewDimensionByWebGPUTextureFunction[textureFunc];\n const sampleType = isDepthTexture\n ? \"depth\" /* WebGPUConstants.TextureSampleType.Depth */\n : componentType === \"u32\"\n ? \"uint\" /* WebGPUConstants.TextureSampleType.Uint */\n : componentType === \"i32\"\n ? \"sint\" /* WebGPUConstants.TextureSampleType.Sint */\n : \"float\" /* WebGPUConstants.TextureSampleType.Float */;\n textureInfo.sampleType = sampleType;\n if (textureDimension === undefined) {\n // eslint-disable-next-line no-throw-literal\n throw `Can't get the texture dimension corresponding to the texture function \"${textureFunc}\"!`;\n }\n for (let i = 0; i < arraySize; ++i) {\n const { groupIndex, bindingIndex } = textureInfo.textures[i];\n if (i === 0) {\n texture = `@group(${groupIndex}) @binding(${bindingIndex}) ${texture}`;\n }\n this._addTextureBindingDescription(name, textureInfo, i, textureDimension, storageTextureFormat, !isFragment);\n }\n }\n return texture;\n }\n // We need to process defines which are directly in the files themselves\n postProcessor(code) {\n const definePattern = /#define (.+?) (.+?)$/gm;\n let match;\n while ((match = definePattern.exec(code)) !== null) {\n code = code.replace(new RegExp(match[1], \"g\"), match[2]);\n }\n return code;\n }\n finalizeShaders(vertexCode, fragmentCode) {\n const fragCoordCode = fragmentCode.indexOf(\"fragmentInputs.position\") >= 0 && !this.pureMode\n ? `\r\n if (internals.yFactor_ == 1.) {\r\n fragmentInputs.position.y = internals.textureOutputHeight_ - fragmentInputs.position.y;\r\n }\r\n `\n : \"\";\n // Add the group/binding info to the sampler declaration (var xxx: sampler|sampler_comparison)\n vertexCode = this._processSamplers(vertexCode, true);\n fragmentCode = this._processSamplers(fragmentCode, false);\n // Add the group/binding info to the uniform/storage buffer declarations (var<uniform> XXX:YYY or var<storage(,read_write|read)> XXX:YYY)\n vertexCode = this._processCustomBuffers(vertexCode, true);\n fragmentCode = this._processCustomBuffers(fragmentCode, false);\n // Builds the leftover UBOs.\n const leftOverUBO = this._buildLeftOverUBO();\n vertexCode = leftOverUBO + vertexCode;\n fragmentCode = leftOverUBO + fragmentCode;\n // Vertex code\n vertexCode = vertexCode.replace(/#define (\\w+)\\s+(\\d+\\.?\\d*)/g, \"const $1 = $2;\");\n vertexCode = vertexCode.replace(/#define /g, \"//#define \");\n vertexCode = this._processStridedUniformArrays(vertexCode);\n let vertexInputs = \"struct VertexInputs {\\n @builtin(vertex_index) vertexIndex : u32,\\n @builtin(instance_index) instanceIndex : u32,\\n\";\n if (this._attributesInputWGSL.length > 0) {\n vertexInputs += this._attributesInputWGSL.join(\"\\n\");\n }\n vertexInputs += \"\\n};\\nvar<private> vertexInputs\" + (this._hasNonFloatAttribute ? \"_\" : \"\") + \" : VertexInputs;\\n\";\n if (this._hasNonFloatAttribute) {\n vertexInputs += \"struct VertexInputs_ {\\n vertexIndex : u32, instanceIndex : u32,\\n\";\n vertexInputs += this._attributesWGSL.join(\"\\n\");\n vertexInputs += \"\\n};\\nvar<private> vertexInputs : VertexInputs_;\\n\";\n }\n let vertexOutputs = \"struct FragmentInputs {\\n @builtin(position) position : vec4<f32>,\\n\";\n if (this._varyingsWGSL.length > 0) {\n vertexOutputs += this._varyingsWGSL.join(\"\\n\");\n }\n vertexOutputs += \"\\n};\\nvar<private> vertexOutputs : FragmentInputs;\\n\";\n vertexCode = vertexInputs + vertexOutputs + vertexCode;\n let vertexMainStartingCode = `\\n vertexInputs${this._hasNonFloatAttribute ? \"_\" : \"\"} = input;\\n`;\n if (this._hasNonFloatAttribute) {\n vertexMainStartingCode += \"vertexInputs.vertexIndex = vertexInputs_.vertexIndex;\\nvertexInputs.instanceIndex = vertexInputs_.instanceIndex;\\n\";\n vertexMainStartingCode += this._attributesConversionCodeWGSL.join(\"\\n\");\n vertexMainStartingCode += \"\\n\";\n }\n const vertexMainEndingCode = this.pureMode\n ? ` return vertexOutputs;`\n : ` vertexOutputs.position.y = vertexOutputs.position.y * internals.yFactor_;\\n return vertexOutputs;`;\n let needDiagnosticOff = vertexCode.indexOf(Constants.DISABLEUA) !== -1;\n vertexCode =\n (needDiagnosticOff ? \"diagnostic(off, derivative_uniformity);\\n\" : \"\") +\n \"diagnostic(off, chromium.unreachable_code);\\n\" +\n InjectStartingAndEndingCode(vertexCode, \"fn main\", vertexMainStartingCode, vertexMainEndingCode);\n // fragment code\n fragmentCode = fragmentCode.replace(/#define (\\w+)\\s+(\\d+\\.?\\d*)/g, \"const $1 = $2;\");\n fragmentCode = fragmentCode.replace(/#define /g, \"//#define \");\n fragmentCode = this._processStridedUniformArrays(fragmentCode);\n if (!this.pureMode) {\n fragmentCode = fragmentCode.replace(/dpdy/g, \"(-internals.yFactor_)*dpdy\"); // will also handle dpdyCoarse and dpdyFine\n }\n let fragmentInputs = \"struct FragmentInputs {\\n @builtin(position) position : vec4<f32>,\\n @builtin(front_facing) frontFacing : bool,\\n\";\n if (this._varyingsWGSL.length > 0) {\n fragmentInputs += this._varyingsWGSL.join(\"\\n\");\n }\n fragmentInputs += \"\\n};\\nvar<private> fragmentInputs : FragmentInputs;\\n\";\n let fragmentOutputs = \"struct FragmentOutputs {\\n\";\n // Adding fragData output locations\n const regexRoot = \"fragmentOutputs\\\\.fragData\";\n let match = fragmentCode.match(new RegExp(regexRoot + \"0\", \"g\"));\n let indexLocation = 0;\n if (match) {\n fragmentOutputs += ` @location(${indexLocation}) fragData0 : vec4<f32>,\\n`;\n indexLocation++;\n for (let index = 1; index < 8; index++) {\n match = fragmentCode.match(new RegExp(regexRoot + index, \"g\"));\n if (match) {\n fragmentOutputs += ` @location(${indexLocation}) fragData${indexLocation} : vec4<f32>,\\n`;\n indexLocation++;\n }\n }\n if (fragmentCode.indexOf(\"MRT_AND_COLOR\") !== -1) {\n fragmentOutputs += ` @location(${indexLocation}) color : vec4<f32>,\\n`;\n indexLocation++;\n }\n }\n // Adding fragData output locations\n const regex = /oitDepthSampler/;\n match = fragmentCode.match(regex);\n if (match) {\n fragmentOutputs += ` @location(${indexLocation++}) depth : vec2<f32>,\\n`;\n fragmentOutputs += ` @location(${indexLocation++}) frontColor : vec4<f32>,\\n`;\n fragmentOutputs += ` @location(${indexLocation++}) backColor : vec4<f32>,\\n`;\n }\n if (indexLocation === 0) {\n fragmentOutputs += \" @location(0) color : vec4<f32>,\\n\";\n indexLocation++;\n }\n // FragDepth\n let hasFragDepth = false;\n let idx = 0;\n while (!hasFragDepth) {\n idx = fragmentCode.indexOf(builtInName_frag_depth, idx);\n if (idx < 0) {\n break;\n }\n const saveIndex = idx;\n hasFragDepth = true;\n while (idx > 1 && fragmentCode.charAt(idx) !== \"\\n\") {\n if (fragmentCode.charAt(idx) === \"/\" && fragmentCode.charAt(idx - 1) === \"/\") {\n hasFragDepth = false;\n break;\n }\n idx--;\n }\n idx = saveIndex + builtInName_frag_depth.length;\n }\n if (hasFragDepth) {\n fragmentOutputs += \" @builtin(frag_depth) fragDepth: f32,\\n\";\n }\n fragmentOutputs += \"};\\nvar<private> fragmentOutputs : FragmentOutputs;\\n\";\n fragmentCode = fragmentInputs + fragmentOutputs + fragmentCode;\n const fragmentStartingCode = \" fragmentInputs = input;\\n \" + fragCoordCode;\n const fragmentEndingCode = \" return fragmentOutputs;\";\n needDiagnosticOff = fragmentCode.indexOf(Constants.DISABLEUA) !== -1;\n fragmentCode =\n (needDiagnosticOff ? \"diagnostic(off, derivative_uniformity);\\n\" : \"\") +\n \"diagnostic(off, chromium.unreachable_code);\\n\" +\n InjectStartingAndEndingCode(fragmentCode, \"fn main\", fragmentStartingCode, fragmentEndingCode);\n this._collectBindingNames();\n this._preCreateBindGroupEntries();\n this._webgpuProcessingContext.vertexBufferKindToNumberOfComponents = {};\n return { vertexCode, fragmentCode };\n }\n _generateLeftOverUBOCode(name, uniformBufferDescription) {\n let stridedArrays = \"\";\n let ubo = `struct ${name} {\\n`;\n for (const leftOverUniform of this._webgpuProcessingContext.leftOverUniforms) {\n const type = leftOverUniform.type.replace(/^(.*?)(<.*>)?$/, \"$1\");\n const size = WebGPUShaderProcessor.UniformSizes[type];\n if (leftOverUniform.length > 0) {\n if (size <= 2) {\n const stridedArrayType = `${name}_${this._stridedUniformArrays.length}_strided_arr`;\n stridedArrays += `struct ${stridedArrayType} {\r\n @size(16)\r\n el: ${type},\r\n }`;\n this._stridedUniformArrays.push(leftOverUniform.name);\n ubo += ` @align(16) ${leftOverUniform.name} : array<${stridedArrayType}, ${leftOverUniform.length}>,\\n`;\n }\n else {\n ubo += ` ${leftOverUniform.name} : array<${leftOverUniform.type}, ${leftOverUniform.length}>,\\n`;\n }\n }\n else {\n ubo += ` ${leftOverUniform.name} : ${leftOverUniform.type},\\n`;\n }\n }\n ubo += \"};\\n\";\n ubo = `${stridedArrays}\\n${ubo}`;\n ubo += `@group(${uniformBufferDescription.binding.groupIndex}) @binding(${uniformBufferDescription.binding.bindingIndex}) var<uniform> ${leftOverVarName} : ${name};\\n`;\n return ubo;\n }\n _processSamplers(code, isVertex) {\n const samplerRegexp = /var\\s+(\\w+Sampler)\\s*:\\s*(sampler|sampler_comparison)\\s*;/gm;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const match = samplerRegexp.exec(code);\n if (match === null) {\n break;\n }\n const name = match[1]; // name of the variable\n const samplerType = match[2]; // sampler or sampler_comparison\n const suffixLessLength = name.length - Constants.AUTOSAMPLERSUFFIX.length;\n const textureName = name.lastIndexOf(Constants.AUTOSAMPLERSUFFIX) === suffixLessLength ? name.substring(0, suffixLessLength) : null;\n const samplerBindingType = samplerType === \"sampler_comparison\" ? \"comparison\" /* WebGPUConstants.SamplerBindingType.Comparison */ : \"filtering\" /* WebGPUConstants.SamplerBindingType.Filtering */;\n if (textureName) {\n const textureInfo = this._webgpuProcessingContext.availableTextures[textureName];\n if (textureInfo) {\n textureInfo.autoBindSampler = true;\n }\n }\n let samplerInfo = this._webgpuProcessingContext.availableSamplers[name];\n if (!samplerInfo) {\n samplerInfo = {\n binding: this._webgpuProcessingContext.getNextFreeUBOBinding(),\n type: samplerBindingType,\n };\n this._webgpuProcessingContext.availableSamplers[name] = samplerInfo;\n }\n this._addSamplerBindingDescription(name, samplerInfo, isVertex);\n const part1 = code.substring(0, match.index);\n const insertPart = `@group(${samplerInfo.binding.groupIndex}) @binding(${samplerInfo.binding.bindingIndex}) `;\n const part2 = code.substring(match.index);\n code = part1 + insertPart + part2;\n samplerRegexp.lastIndex += insertPart.length;\n }\n return code;\n }\n _processCustomBuffers(code, isVertex) {\n const instantiateBufferRegexp = /var<\\s*(uniform|storage)\\s*(,\\s*(read|read_write)\\s*)?>\\s+(\\S+)\\s*:\\s*(\\S+)\\s*;/gm;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const match = instantiateBufferRegexp.exec(code);\n if (match === null) {\n break;\n }\n const type = match[1];\n const decoration = match[3];\n let name = match[4];\n const structName = match[5];\n let bufferInfo = this._webgpuProcessingContext.availableBuffers[name];\n if (!bufferInfo) {\n const knownUBO = type === \"uniform\" ? WebGPUShaderProcessingContext.KnownUBOs[structName] : null;\n let binding;\n if (knownUBO) {\n name = structName;\n binding = knownUBO.binding;\n if (binding.groupIndex === -1) {\n binding = this._webgpuProcessingContext.availableBuffers[name]?.binding;\n if (!binding) {\n binding = this._webgpuProcessingContext.getNextFreeUBOBinding();\n }\n }\n }\n else {\n binding = this._webgpuProcessingContext.getNextFreeUBOBinding();\n }\n bufferInfo = { binding };\n this._webgpuProcessingContext.availableBuffers[name] = bufferInfo;\n }\n this._addBufferBindingDescription(name, this._webgpuProcessingContext.availableBuffers[name], decoration === \"read_write\"\n ? \"storage\" /* WebGPUConstants.BufferBindingType.Storage */\n : type === \"storage\"\n ? \"read-only-storage\" /* WebGPUConstants.BufferBindingType.ReadOnlyStorage */\n : \"uniform\" /* WebGPUConstants.BufferBindingType.Uniform */, isVertex);\n const groupIndex = bufferInfo.binding.groupIndex;\n const bindingIndex = bufferInfo.binding.bindingIndex;\n const part1 = code.substring(0, match.index);\n const insertPart = `@group(${groupIndex}) @binding(${bindingIndex}) `;\n const part2 = code.substring(match.index);\n code = part1 + insertPart + part2;\n instantiateBufferRegexp.lastIndex += insertPart.length;\n }\n return code;\n }\n _processStridedUniformArrays(code) {\n for (const uniformArrayName of this._stridedUniformArrays) {\n code = code.replace(new RegExp(`${uniformArrayName}\\\\s*\\\\[(.*?)\\\\]`, \"g\"), `${uniformArrayName}[$1].el`);\n }\n return code;\n }\n}\n//# sourceMappingURL=webgpuShaderProcessorsWGSL.js.map","import { ILog2 } from \"../../Maths/math.scalar.functions\";\nimport { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\n/** @internal */\nexport class WebGPUHardwareTexture {\n get underlyingResource() {\n return this._webgpuTexture;\n }\n getMSAATexture(index) {\n return this._webgpuMSAATexture?.[index] ?? null;\n }\n setMSAATexture(texture, index) {\n if (!this._webgpuMSAATexture) {\n this._webgpuMSAATexture = [];\n }\n this._webgpuMSAATexture[index] = texture;\n }\n releaseMSAATexture(index) {\n if (this._webgpuMSAATexture) {\n if (index !== undefined) {\n this._engine._textureHelper.releaseTexture(this._webgpuMSAATexture[index]);\n delete this._webgpuMSAATexture[index];\n }\n else {\n for (const texture of this._webgpuMSAATexture) {\n this._engine._textureHelper.releaseTexture(texture);\n }\n this._webgpuMSAATexture = null;\n }\n }\n }\n constructor(_engine, existingTexture = null) {\n this._engine = _engine;\n /** @internal */\n this._originalFormatIsRGB = false;\n this.format = \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */;\n this.textureUsages = 0;\n this.textureAdditionalUsages = 0;\n this._webgpuTexture = existingTexture;\n this._webgpuMSAATexture = null;\n this.view = null;\n this.viewForWriting = null;\n }\n set(hardwareTexture) {\n this._webgpuTexture = hardwareTexture;\n }\n setUsage(_textureSource, generateMipMaps, is2DArray, isCube, is3D, width, height, depth) {\n let viewDimension = \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */;\n let arrayLayerCount = 1;\n if (isCube) {\n viewDimension = is2DArray ? \"cube-array\" /* WebGPUConstants.TextureViewDimension.CubeArray */ : \"cube\" /* WebGPUConstants.TextureViewDimension.Cube */;\n arrayLayerCount = 6 * (depth || 1);\n }\n else if (is3D) {\n viewDimension = \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */;\n arrayLayerCount = 1;\n }\n else if (is2DArray) {\n viewDimension = \"2d-array\" /* WebGPUConstants.TextureViewDimension.E2dArray */;\n arrayLayerCount = depth;\n }\n const format = WebGPUTextureHelper.GetDepthFormatOnly(this.format);\n const aspect = WebGPUTextureHelper.HasDepthAndStencilAspects(this.format) ? \"depth-only\" /* WebGPUConstants.TextureAspect.DepthOnly */ : \"all\" /* WebGPUConstants.TextureAspect.All */;\n this.createView({\n label: `TextureView${is3D ? \"3D\" : isCube ? \"Cube\" : \"2D\"}${is2DArray ? \"_Array\" + arrayLayerCount : \"\"}_${width}x${height}_${generateMipMaps ? \"wmips\" : \"womips\"}_${this.format}_${viewDimension}`,\n format,\n dimension: viewDimension,\n mipLevelCount: generateMipMaps ? ILog2(Math.max(width, height)) + 1 : 1,\n baseArrayLayer: 0,\n baseMipLevel: 0,\n arrayLayerCount,\n aspect,\n });\n }\n createView(descriptor, createViewForWriting = false) {\n this.view = this._webgpuTexture.createView(descriptor);\n if (createViewForWriting && descriptor) {\n const saveNumMipMaps = descriptor.mipLevelCount;\n descriptor.mipLevelCount = 1;\n this.viewForWriting = this._webgpuTexture.createView(descriptor);\n descriptor.mipLevelCount = saveNumMipMaps;\n }\n }\n reset() {\n this._webgpuTexture = null;\n this._webgpuMSAATexture = null;\n this.view = null;\n this.viewForWriting = null;\n }\n release() {\n this._webgpuTexture?.destroy();\n this.releaseMSAATexture();\n this._copyInvertYTempTexture?.destroy();\n this.reset();\n }\n}\n//# sourceMappingURL=webgpuHardwareTexture.js.map","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable babylonjs/available */\n/* eslint-disable jsdoc/require-jsdoc */\n// License for the mipmap generation code:\n//\n// Copyright 2020 Brandon Jones\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nimport * as WebGPUConstants from \"./webgpuConstants\";\nimport { Constants } from \"../constants\";\nimport { WebGPUHardwareTexture } from \"./webgpuHardwareTexture\";\nimport { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\nimport { Finalize, Initialize, Process } from \"../Processors/shaderProcessor\";\n// TODO WEBGPU improve mipmap generation by using compute shaders\nconst mipmapVertexSource = `\r\n const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));\r\n const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));\r\n\r\n varying vTex: vec2f;\r\n\r\n @vertex\r\n fn main(input : VertexInputs) -> FragmentInputs {\r\n vertexOutputs.vTex = tex[input.vertexIndex];\r\n vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);\r\n }\r\n `;\nconst mipmapFragmentSource = `\r\n var imgSampler: sampler;\r\n var img: texture_2d<f32>;\r\n\r\n varying vTex: vec2f;\r\n\r\n @fragment\r\n fn main(input: FragmentInputs) -> FragmentOutputs {\r\n fragmentOutputs.color = textureSample(img, imgSampler, input.vTex);\r\n }\r\n `;\nconst invertYPreMultiplyAlphaVertexSource = `\r\n const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));\r\n const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));\r\n\r\n var img: texture_2d<f32>;\r\n\r\n #ifdef INVERTY\r\n varying vTextureSize: vec2f;\r\n #endif\r\n\r\n @vertex\r\n fn main(input : VertexInputs) -> FragmentInputs {\r\n #ifdef INVERTY\r\n vertexOutputs.vTextureSize = vec2f(textureDimensions(img, 0));\r\n #endif\r\n vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);\r\n }\r\n `;\nconst invertYPreMultiplyAlphaFragmentSource = `\r\n var img: texture_2d<f32>;\r\n\r\n #ifdef INVERTY\r\n varying vTextureSize: vec2f;\r\n #endif\r\n\r\n @fragment\r\n fn main(input: FragmentInputs) -> FragmentOutputs {\r\n #ifdef INVERTY\r\n var color: vec4f = textureLoad(img, vec2i(i32(input.position.x), i32(input.vTextureSize.y - input.position.y)), 0);\r\n #else\r\n var color: vec4f = textureLoad(img, vec2i(input.position.xy), 0);\r\n #endif\r\n #ifdef PREMULTIPLYALPHA\r\n fragmentOutputs.color = vec4f(color.rgb * color.a, color.a);\r\n #endif\r\n fragmentOutputs.color = color;\r\n }\r\n `;\nconst invertYPreMultiplyAlphaWithOfstVertexSource = invertYPreMultiplyAlphaVertexSource;\nconst invertYPreMultiplyAlphaWithOfstFragmentSource = `\r\n var img: texture_2d<f32>;\r\n uniform ofstX: f32;\r\n uniform ofstY: f32;\r\n uniform width: f32;\r\n uniform height: f32;\r\n\r\n #ifdef INVERTY\r\n varying vTextureSize: vec2f;\r\n #endif\r\n\r\n @fragment\r\n fn main(input: FragmentInputs) -> FragmentOutputs {\r\n if (input.position.x < uniforms.ofstX || input.position.x >= uniforms.ofstX + uniforms.width) {\r\n discard;\r\n }\r\n if (input.position.y < uniforms.ofstY || input.position.y >= uniforms.ofstY + uniforms.height) {\r\n discard;\r\n }\r\n #ifdef INVERTY\r\n var color: vec4f = textureLoad(img, vec2i(i32(input.position.x), i32(uniforms.ofstY + uniforms.height - (input.position.y - uniforms.ofstY))), 0);\r\n #else\r\n var color: vec4f = textureLoad(img, vec2i(input.position.xy), 0);\r\n #endif\r\n #ifdef PREMULTIPLYALPHA\r\n color = vec4f(color.rgb * color.a, color.a);\r\n #endif\r\n fragmentOutputs.color = color;\r\n }\r\n `;\nconst clearVertexSource = `\r\n const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));\r\n\r\n @vertex\r\n fn main(input : VertexInputs) -> FragmentInputs {\r\n vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);\r\n }\r\n `;\nconst clearFragmentSource = `\r\n uniform color: vec4f;\r\n\r\n\r\n @fragment\r\n fn main(input: FragmentInputs) -> FragmentOutputs {\r\n fragmentOutputs.color = uniforms.color;\r\n }\r\n `;\nconst copyVideoToTextureVertexSource = `\r\n struct VertexOutput {\r\n @builtin(position) Position : vec4<f32>,\r\n @location(0) fragUV : vec2<f32>\r\n }\r\n\r\n @vertex\r\n fn main(\r\n @builtin(vertex_index) VertexIndex : u32\r\n ) -> VertexOutput {\r\n var pos = array<vec2<f32>, 4>(\r\n vec2(-1.0, 1.0),\r\n vec2( 1.0, 1.0),\r\n vec2(-1.0, -1.0),\r\n vec2( 1.0, -1.0)\r\n );\r\n var tex = array<vec2<f32>, 4>(\r\n vec2(0.0, 0.0),\r\n vec2(1.0, 0.0),\r\n vec2(0.0, 1.0),\r\n vec2(1.0, 1.0)\r\n );\r\n\r\n var output: VertexOutput;\r\n\r\n output.Position = vec4<f32>(pos[VertexIndex], 0.0, 1.0);\r\n output.fragUV = tex[VertexIndex];\r\n\r\n return output;\r\n }\r\n `;\nconst copyVideoToTextureFragmentSource = `\r\n @group(0) @binding(0) var videoSampler: sampler;\r\n @group(0) @binding(1) var videoTexture: texture_external;\r\n\r\n @fragment\r\n fn main(\r\n @location(0) fragUV: vec2<f32>\r\n ) -> @location(0) vec4<f32> {\r\n return textureSampleBaseClampToEdge(videoTexture, videoSampler, fragUV);\r\n }\r\n `;\nconst copyVideoToTextureInvertYFragmentSource = `\r\n @group(0) @binding(0) var videoSampler: sampler;\r\n @group(0) @binding(1) var videoTexture: texture_external;\r\n\r\n @fragment\r\n fn main(\r\n @location(0) fragUV: vec2<f32>\r\n ) -> @location(0) vec4<f32> {\r\n return textureSampleBaseClampToEdge(videoTexture, videoSampler, vec2<f32>(fragUV.x, 1.0 - fragUV.y));\r\n }\r\n `;\nvar PipelineType;\n(function (PipelineType) {\n PipelineType[PipelineType[\"MipMap\"] = 0] = \"MipMap\";\n PipelineType[PipelineType[\"InvertYPremultiplyAlpha\"] = 1] = \"InvertYPremultiplyAlpha\";\n PipelineType[PipelineType[\"Clear\"] = 2] = \"Clear\";\n PipelineType[PipelineType[\"InvertYPremultiplyAlphaWithOfst\"] = 3] = \"InvertYPremultiplyAlphaWithOfst\";\n})(PipelineType || (PipelineType = {}));\nvar VideoPipelineType;\n(function (VideoPipelineType) {\n VideoPipelineType[VideoPipelineType[\"DontInvertY\"] = 0] = \"DontInvertY\";\n VideoPipelineType[VideoPipelineType[\"InvertY\"] = 1] = \"InvertY\";\n})(VideoPipelineType || (VideoPipelineType = {}));\nconst shadersForPipelineType = [\n { vertex: mipmapVertexSource, fragment: mipmapFragmentSource },\n { vertex: invertYPreMultiplyAlphaVertexSource, fragment: invertYPreMultiplyAlphaFragmentSource },\n { vertex: clearVertexSource, fragment: clearFragmentSource },\n { vertex: invertYPreMultiplyAlphaWithOfstVertexSource, fragment: invertYPreMultiplyAlphaWithOfstFragmentSource },\n];\n/**\n * Map a (renderable) texture format (GPUTextureFormat) to an index for fast lookup (in caches for eg)\n * The number of entries should not go over 64! Else, the code in WebGPUCacheRenderPipeline.setMRT should be updated\n */\nexport const renderableTextureFormatToIndex = {\n \"\": 0,\n r8unorm: 1,\n r8uint: 2,\n r8sint: 3,\n r16uint: 4,\n r16sint: 5,\n r16float: 6,\n rg8unorm: 7,\n rg8uint: 8,\n rg8sint: 9,\n r32uint: 10,\n r32sint: 11,\n r32float: 12,\n rg16uint: 13,\n rg16sint: 14,\n rg16float: 15,\n rgba8unorm: 16,\n \"rgba8unorm-srgb\": 17,\n rgba8uint: 18,\n rgba8sint: 19,\n bgra8unorm: 20,\n \"bgra8unorm-srgb\": 21,\n rgb10a2uint: 22,\n rgb10a2unorm: 23,\n /* rg11b10ufloat: this entry is dynamically added if the \"RG11B10UFloatRenderable\" extension is supported */\n rg32uint: 24,\n rg32sint: 25,\n rg32float: 26,\n rgba16uint: 27,\n rgba16sint: 28,\n rgba16float: 29,\n rgba32uint: 30,\n rgba32sint: 31,\n rgba32float: 32,\n stencil8: 33,\n depth16unorm: 34,\n depth24plus: 35,\n \"depth24plus-stencil8\": 36,\n depth32float: 37,\n \"depth32float-stencil8\": 38,\n r16unorm: 39,\n rg16unorm: 40,\n rgba16unorm: 41,\n r16snorm: 42,\n rg16snorm: 43,\n rgba16snorm: 44,\n};\n/** @internal */\nexport class WebGPUTextureManager {\n //------------------------------------------------------------------------------\n // Initialization / Helpers\n //------------------------------------------------------------------------------\n constructor(engine, device, bufferManager, enabledExtensions) {\n this._pipelines = {};\n this._compiledShaders = [];\n this._videoPipelines = {};\n this._videoCompiledShaders = [];\n this._deferredReleaseTextures = [];\n this._engine = engine;\n this._device = device;\n this._bufferManager = bufferManager;\n if (enabledExtensions.indexOf(\"rg11b10ufloat-renderable\" /* WebGPUConstants.FeatureName.RG11B10UFloatRenderable */) !== -1) {\n const keys = Object.keys(renderableTextureFormatToIndex);\n renderableTextureFormatToIndex[\"rg11b10ufloat\" /* WebGPUConstants.TextureFormat.RG11B10UFloat */] = renderableTextureFormatToIndex[keys[keys.length - 1]] + 1;\n }\n this._mipmapSampler = device.createSampler({ minFilter: \"linear\" /* WebGPUConstants.FilterMode.Linear */ });\n this._videoSampler = device.createSampler({ minFilter: \"linear\" /* WebGPUConstants.FilterMode.Linear */ });\n this._ubCopyWithOfst = this._bufferManager.createBuffer(4 * 4, WebGPUConstants.BufferUsage.Uniform | WebGPUConstants.BufferUsage.CopyDst, \"UBCopyWithOffset\").underlyingResource;\n this._getPipeline(\"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */);\n this._getVideoPipeline(\"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */);\n }\n _getPipeline(format, type = PipelineType.MipMap, params) {\n const index = type === PipelineType.MipMap\n ? 1 << 0\n : type === PipelineType.InvertYPremultiplyAlpha\n ? ((params.invertY ? 1 : 0) << 1) + ((params.premultiplyAlpha ? 1 : 0) << 2)\n : type === PipelineType.Clear\n ? 1 << 3\n : type === PipelineType.InvertYPremultiplyAlphaWithOfst\n ? ((params.invertY ? 1 : 0) << 4) + ((params.premultiplyAlpha ? 1 : 0) << 5)\n : 0;\n if (!this._pipelines[format]) {\n this._pipelines[format] = [];\n }\n let pipelineAndBGL = this._pipelines[format][index];\n if (!pipelineAndBGL) {\n let defines = \"\";\n if (type === PipelineType.InvertYPremultiplyAlpha || type === PipelineType.InvertYPremultiplyAlphaWithOfst) {\n if (params.invertY) {\n defines += \"#define INVERTY\\n\";\n }\n if (params.premultiplyAlpha) {\n defines += \"#define PREMULTIPLYALPHA\\n\";\n }\n }\n let modules = this._compiledShaders[index];\n if (!modules) {\n let vertexCode = shadersForPipelineType[type].vertex;\n let fragmentCode = shadersForPipelineType[type].fragment;\n const processorOptions = {\n defines: defines.split(\"\\n\"),\n indexParameters: null,\n isFragment: false,\n shouldUseHighPrecisionShader: true,\n processor: this._engine._getShaderProcessor(1 /* ShaderLanguage.WGSL */),\n supportsUniformBuffers: true,\n shadersRepository: \"\",\n includesShadersStore: {},\n version: (this._engine.version * 100).toString(),\n platformName: this._engine.shaderPlatformName,\n processingContext: this._engine._getShaderProcessingContext(1 /* ShaderLanguage.WGSL */, true),\n isNDCHalfZRange: this._engine.isNDCHalfZRange,\n useReverseDepthBuffer: this._engine.useReverseDepthBuffer,\n };\n Initialize(processorOptions);\n // Disable special additions not needed here\n processorOptions.processor.pureMode = true;\n Process(vertexCode, processorOptions, (migratedVertexCode) => {\n vertexCode = migratedVertexCode;\n }, this._engine);\n processorOptions.isFragment = true;\n Process(fragmentCode, processorOptions, (migratedFragmentCode) => {\n fragmentCode = migratedFragmentCode;\n }, this._engine);\n const final = Finalize(vertexCode, fragmentCode, processorOptions);\n // Restore\n processorOptions.processor.pureMode = false;\n const vertexModule = this._device.createShaderModule({\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_InternalVertexShader_${index}`,\n code: final.vertexCode,\n });\n const fragmentModule = this._device.createShaderModule({\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_InternalFragmentShader_${index}`,\n code: final.fragmentCode,\n });\n modules = this._compiledShaders[index] = [vertexModule, fragmentModule];\n }\n const pipeline = this._device.createRenderPipeline({\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_InternalPipeline_${format}_${index}`,\n layout: \"auto\" /* WebGPUConstants.AutoLayoutMode.Auto */,\n vertex: {\n module: modules[0],\n entryPoint: \"main\",\n },\n fragment: {\n module: modules[1],\n entryPoint: \"main\",\n targets: [\n {\n format,\n },\n ],\n },\n primitive: {\n topology: \"triangle-strip\" /* WebGPUConstants.PrimitiveTopology.TriangleStrip */,\n stripIndexFormat: \"uint16\" /* WebGPUConstants.IndexFormat.Uint16 */,\n },\n });\n pipelineAndBGL = this._pipelines[format][index] = [pipeline, pipeline.getBindGroupLayout(0)];\n }\n return pipelineAndBGL;\n }\n _getVideoPipeline(format, type = VideoPipelineType.DontInvertY) {\n const index = type === VideoPipelineType.InvertY ? 1 << 0 : 0;\n if (!this._videoPipelines[format]) {\n this._videoPipelines[format] = [];\n }\n let pipelineAndBGL = this._videoPipelines[format][index];\n if (!pipelineAndBGL) {\n let modules = this._videoCompiledShaders[index];\n if (!modules) {\n const vertexModule = this._device.createShaderModule({\n code: copyVideoToTextureVertexSource,\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_CopyVideoToTexture_VertexShader`,\n });\n const fragmentModule = this._device.createShaderModule({\n code: index === 0 ? copyVideoToTextureFragmentSource : copyVideoToTextureInvertYFragmentSource,\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_CopyVideoToTexture_FragmentShader_${index === 0 ? \"DontInvertY\" : \"InvertY\"}`,\n });\n modules = this._videoCompiledShaders[index] = [vertexModule, fragmentModule];\n }\n const pipeline = this._device.createRenderPipeline({\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_InternalVideoPipeline_${format}_${index === 0 ? \"DontInvertY\" : \"InvertY\"}`,\n layout: \"auto\" /* WebGPUConstants.AutoLayoutMode.Auto */,\n vertex: {\n module: modules[0],\n entryPoint: \"main\",\n },\n fragment: {\n module: modules[1],\n entryPoint: \"main\",\n targets: [\n {\n format,\n },\n ],\n },\n primitive: {\n topology: \"triangle-strip\" /* WebGPUConstants.PrimitiveTopology.TriangleStrip */,\n stripIndexFormat: \"uint16\" /* WebGPUConstants.IndexFormat.Uint16 */,\n },\n });\n pipelineAndBGL = this._videoPipelines[format][index] = [pipeline, pipeline.getBindGroupLayout(0)];\n }\n return pipelineAndBGL;\n }\n setCommandEncoder(encoder) {\n this._commandEncoderForCreation = encoder;\n }\n copyVideoToTexture(video, texture, format, invertY = false, commandEncoder) {\n const useOwnCommandEncoder = commandEncoder === undefined;\n const [pipeline, bindGroupLayout] = this._getVideoPipeline(format, invertY ? VideoPipelineType.InvertY : VideoPipelineType.DontInvertY);\n if (useOwnCommandEncoder) {\n commandEncoder = this._device.createCommandEncoder({});\n }\n commandEncoder.pushDebugGroup?.(`copy video to texture - invertY=${invertY}`);\n const webgpuHardwareTexture = texture._hardwareTexture;\n const renderPassDescriptor = {\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_copyVideoToTexture_${format}_${invertY ? \"InvertY\" : \"DontInvertY\"}${texture.label ? \"_\" + texture.label : \"\"}`,\n colorAttachments: [\n {\n view: webgpuHardwareTexture.underlyingResource.createView({\n format,\n dimension: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n mipLevelCount: 1,\n baseArrayLayer: 0,\n baseMipLevel: 0,\n arrayLayerCount: 1,\n aspect: \"all\" /* WebGPUConstants.TextureAspect.All */,\n }),\n loadOp: \"load\" /* WebGPUConstants.LoadOp.Load */,\n storeOp: \"store\" /* WebGPUConstants.StoreOp.Store */,\n },\n ],\n };\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n const descriptor = {\n layout: bindGroupLayout,\n entries: [\n {\n binding: 0,\n resource: this._videoSampler,\n },\n {\n binding: 1,\n resource: this._device.importExternalTexture({\n source: video.underlyingResource,\n }),\n },\n ],\n };\n const bindGroup = this._device.createBindGroup(descriptor);\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(4, 1, 0, 0);\n passEncoder.end();\n commandEncoder.popDebugGroup?.();\n if (useOwnCommandEncoder) {\n this._device.queue.submit([commandEncoder.finish()]);\n commandEncoder = null;\n }\n }\n invertYPreMultiplyAlpha(gpuOrHdwTexture, width, height, format, invertY = false, premultiplyAlpha = false, faceIndex = 0, mipLevel = 0, layers = 1, ofstX = 0, ofstY = 0, rectWidth = 0, rectHeight = 0, commandEncoder, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n allowGPUOptimization) {\n const useRect = rectWidth !== 0;\n const useOwnCommandEncoder = commandEncoder === undefined;\n const [pipeline, bindGroupLayout] = this._getPipeline(format, useRect ? PipelineType.InvertYPremultiplyAlphaWithOfst : PipelineType.InvertYPremultiplyAlpha, {\n invertY,\n premultiplyAlpha,\n });\n faceIndex = Math.max(faceIndex, 0);\n if (useOwnCommandEncoder) {\n commandEncoder = this._device.createCommandEncoder({});\n }\n commandEncoder.pushDebugGroup?.(`internal process texture - invertY=${invertY} premultiplyAlpha=${premultiplyAlpha}`);\n let gpuTexture;\n if (WebGPUTextureHelper.IsHardwareTexture(gpuOrHdwTexture)) {\n gpuTexture = gpuOrHdwTexture.underlyingResource;\n if (!(invertY && !premultiplyAlpha && layers === 1 && faceIndex === 0)) {\n // we optimize only for the most likely case (invertY=true, premultiplyAlpha=false, layers=1, faceIndex=0) to avoid dealing with big caches\n gpuOrHdwTexture = undefined;\n }\n }\n else {\n gpuTexture = gpuOrHdwTexture;\n gpuOrHdwTexture = undefined;\n }\n if (!gpuTexture) {\n return;\n }\n if (useRect) {\n this._bufferManager.setRawData(this._ubCopyWithOfst, 0, new Float32Array([ofstX, ofstY, rectWidth, rectHeight]), 0, 4 * 4);\n }\n const webgpuHardwareTexture = gpuOrHdwTexture;\n const outputTexture = webgpuHardwareTexture?._copyInvertYTempTexture ??\n this.createTexture({ width, height, layers: 1 }, false, false, false, false, false, format, 1, commandEncoder, 1 /* WebGPUConstants.TextureUsage.CopySrc */ | 16 /* WebGPUConstants.TextureUsage.RenderAttachment */ | 4 /* WebGPUConstants.TextureUsage.TextureBinding */, undefined, \"TempTextureForCopyWithInvertY\");\n const renderPassDescriptor = webgpuHardwareTexture?._copyInvertYRenderPassDescr ?? {\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_invertYPreMultiplyAlpha_${format}_${invertY ? \"InvertY\" : \"DontInvertY\"}_${premultiplyAlpha ? \"PremultiplyAlpha\" : \"DontPremultiplyAlpha\"}`,\n colorAttachments: [\n {\n view: outputTexture.createView({\n format,\n dimension: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n baseMipLevel: 0,\n mipLevelCount: 1,\n arrayLayerCount: 1,\n baseArrayLayer: 0,\n }),\n loadOp: \"load\" /* WebGPUConstants.LoadOp.Load */,\n storeOp: \"store\" /* WebGPUConstants.StoreOp.Store */,\n },\n ],\n };\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n let bindGroup = useRect ? webgpuHardwareTexture?._copyInvertYBindGroupWithOfst : webgpuHardwareTexture?._copyInvertYBindGroup;\n if (!bindGroup) {\n const descriptor = {\n layout: bindGroupLayout,\n entries: [\n {\n binding: 0,\n resource: gpuTexture.createView({\n format,\n dimension: \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n baseMipLevel: mipLevel,\n mipLevelCount: 1,\n arrayLayerCount: layers,\n baseArrayLayer: faceIndex,\n }),\n },\n ],\n };\n if (useRect) {\n descriptor.entries.push({\n binding: 1,\n resource: {\n buffer: this._ubCopyWithOfst,\n },\n });\n }\n bindGroup = this._device.createBindGroup(descriptor);\n }\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(4, 1, 0, 0);\n passEncoder.end();\n commandEncoder.copyTextureToTexture({\n texture: outputTexture,\n }, {\n texture: gpuTexture,\n mipLevel,\n origin: {\n x: 0,\n y: 0,\n z: faceIndex,\n },\n }, {\n width,\n height,\n depthOrArrayLayers: 1,\n });\n if (webgpuHardwareTexture) {\n webgpuHardwareTexture._copyInvertYTempTexture = outputTexture;\n webgpuHardwareTexture._copyInvertYRenderPassDescr = renderPassDescriptor;\n if (useRect) {\n webgpuHardwareTexture._copyInvertYBindGroupWithOfst = bindGroup;\n }\n else {\n webgpuHardwareTexture._copyInvertYBindGroup = bindGroup;\n }\n }\n else {\n this._deferredReleaseTextures.push([outputTexture, null]);\n }\n commandEncoder.popDebugGroup?.();\n if (useOwnCommandEncoder) {\n this._device.queue.submit([commandEncoder.finish()]);\n commandEncoder = null;\n }\n }\n copyWithInvertY(srcTextureView, format, renderPassDescriptor, commandEncoder) {\n const useOwnCommandEncoder = commandEncoder === undefined;\n const [pipeline, bindGroupLayout] = this._getPipeline(format, PipelineType.InvertYPremultiplyAlpha, { invertY: true, premultiplyAlpha: false });\n if (useOwnCommandEncoder) {\n commandEncoder = this._device.createCommandEncoder({});\n }\n commandEncoder.pushDebugGroup?.(`internal copy texture with invertY`);\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n const bindGroup = this._device.createBindGroup({\n layout: bindGroupLayout,\n entries: [\n {\n binding: 0,\n resource: srcTextureView,\n },\n ],\n });\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(4, 1, 0, 0);\n passEncoder.end();\n commandEncoder.popDebugGroup?.();\n if (useOwnCommandEncoder) {\n this._device.queue.submit([commandEncoder.finish()]);\n commandEncoder = null;\n }\n }\n //------------------------------------------------------------------------------\n // Creation\n //------------------------------------------------------------------------------\n createTexture(imageBitmap, hasMipmaps = false, generateMipmaps = false, invertY = false, premultiplyAlpha = false, is3D = false, format = \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */, sampleCount = 1, commandEncoder, usage = -1, additionalUsages = 0, label) {\n sampleCount = WebGPUTextureHelper.GetSample(sampleCount);\n const layerCount = imageBitmap.layers || 1;\n const textureSize = {\n width: imageBitmap.width,\n height: imageBitmap.height,\n depthOrArrayLayers: layerCount,\n };\n const renderAttachmentFlag = renderableTextureFormatToIndex[format] ? 16 /* WebGPUConstants.TextureUsage.RenderAttachment */ : 0;\n const isCompressedFormat = WebGPUTextureHelper.IsCompressedFormat(format);\n const mipLevelCount = hasMipmaps ? WebGPUTextureHelper.ComputeNumMipmapLevels(imageBitmap.width, imageBitmap.height) : 1;\n const usages = usage >= 0 ? usage : 1 /* WebGPUConstants.TextureUsage.CopySrc */ | 2 /* WebGPUConstants.TextureUsage.CopyDst */ | 4 /* WebGPUConstants.TextureUsage.TextureBinding */;\n additionalUsages |= hasMipmaps && !isCompressedFormat ? 1 /* WebGPUConstants.TextureUsage.CopySrc */ | renderAttachmentFlag : 0;\n if (!isCompressedFormat && !is3D) {\n // we don't know in advance if the texture will be updated with copyExternalImageToTexture (which requires to have those flags), so we need to force the flags all the times\n additionalUsages |= renderAttachmentFlag | 2 /* WebGPUConstants.TextureUsage.CopyDst */;\n }\n const gpuTexture = this._device.createTexture({\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_Texture${is3D ? \"3D\" : \"2D\"}_${label ? label + \"_\" : \"\"}${textureSize.width}x${textureSize.height}x${textureSize.depthOrArrayLayers}_${hasMipmaps ? \"wmips\" : \"womips\"}_${format}_samples${sampleCount}`,\n size: textureSize,\n dimension: is3D ? \"3d\" /* WebGPUConstants.TextureDimension.E3d */ : \"2d\" /* WebGPUConstants.TextureDimension.E2d */,\n format,\n usage: usages | additionalUsages,\n sampleCount,\n mipLevelCount,\n });\n if (WebGPUTextureHelper.IsImageBitmap(imageBitmap)) {\n this.updateTexture(imageBitmap, gpuTexture, imageBitmap.width, imageBitmap.height, layerCount, format, 0, 0, invertY, premultiplyAlpha, 0, 0);\n if (hasMipmaps && generateMipmaps) {\n this.generateMipmaps(gpuTexture, format, mipLevelCount, 0, is3D, commandEncoder);\n }\n }\n return gpuTexture;\n }\n createCubeTexture(imageBitmaps, hasMipmaps = false, generateMipmaps = false, invertY = false, premultiplyAlpha = false, format = \"rgba8unorm\" /* WebGPUConstants.TextureFormat.RGBA8Unorm */, sampleCount = 1, commandEncoder, usage = -1, additionalUsages = 0, label) {\n sampleCount = WebGPUTextureHelper.GetSample(sampleCount);\n const width = WebGPUTextureHelper.IsImageBitmapArray(imageBitmaps) ? imageBitmaps[0].width : imageBitmaps.width;\n const height = WebGPUTextureHelper.IsImageBitmapArray(imageBitmaps) ? imageBitmaps[0].height : imageBitmaps.height;\n const renderAttachmentFlag = renderableTextureFormatToIndex[format] ? 16 /* WebGPUConstants.TextureUsage.RenderAttachment */ : 0;\n const isCompressedFormat = WebGPUTextureHelper.IsCompressedFormat(format);\n const mipLevelCount = hasMipmaps ? WebGPUTextureHelper.ComputeNumMipmapLevels(width, height) : 1;\n const usages = usage >= 0 ? usage : 1 /* WebGPUConstants.TextureUsage.CopySrc */ | 2 /* WebGPUConstants.TextureUsage.CopyDst */ | 4 /* WebGPUConstants.TextureUsage.TextureBinding */;\n additionalUsages |= hasMipmaps && !isCompressedFormat ? 1 /* WebGPUConstants.TextureUsage.CopySrc */ | renderAttachmentFlag : 0;\n if (!isCompressedFormat) {\n // we don't know in advance if the texture will be updated with copyExternalImageToTexture (which requires to have those flags), so we need to force the flags all the times\n additionalUsages |= renderAttachmentFlag | 2 /* WebGPUConstants.TextureUsage.CopyDst */;\n }\n const gpuTexture = this._device.createTexture({\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_TextureCube_${label ? label + \"_\" : \"\"}${width}x${height}x6_${hasMipmaps ? \"wmips\" : \"womips\"}_${format}_samples${sampleCount}`,\n size: {\n width,\n height,\n depthOrArrayLayers: 6,\n },\n dimension: \"2d\" /* WebGPUConstants.TextureDimension.E2d */,\n format,\n usage: usages | additionalUsages,\n sampleCount,\n mipLevelCount,\n });\n if (WebGPUTextureHelper.IsImageBitmapArray(imageBitmaps)) {\n this.updateCubeTextures(imageBitmaps, gpuTexture, width, height, format, invertY, premultiplyAlpha, 0, 0);\n if (hasMipmaps && generateMipmaps) {\n this.generateCubeMipmaps(gpuTexture, format, mipLevelCount, commandEncoder);\n }\n }\n return gpuTexture;\n }\n generateCubeMipmaps(gpuTexture, format, mipLevelCount, commandEncoder) {\n const useOwnCommandEncoder = commandEncoder === undefined;\n if (useOwnCommandEncoder) {\n commandEncoder = this._device.createCommandEncoder({});\n }\n commandEncoder.pushDebugGroup?.(`create cube mipmaps - ${mipLevelCount} levels`);\n for (let f = 0; f < 6; ++f) {\n this.generateMipmaps(gpuTexture, format, mipLevelCount, f, false, commandEncoder);\n }\n commandEncoder.popDebugGroup?.();\n if (useOwnCommandEncoder) {\n this._device.queue.submit([commandEncoder.finish()]);\n commandEncoder = null;\n }\n }\n generateMipmaps(gpuOrHdwTexture, format, mipLevelCount, faceIndex = 0, is3D = false, commandEncoder) {\n const useOwnCommandEncoder = commandEncoder === undefined;\n const [pipeline, bindGroupLayout] = this._getPipeline(format);\n faceIndex = Math.max(faceIndex, 0);\n if (useOwnCommandEncoder) {\n commandEncoder = this._device.createCommandEncoder({});\n }\n commandEncoder.pushDebugGroup?.(`create mipmaps for face #${faceIndex} - ${mipLevelCount} levels`);\n let gpuTexture;\n if (WebGPUTextureHelper.IsHardwareTexture(gpuOrHdwTexture)) {\n gpuTexture = gpuOrHdwTexture.underlyingResource;\n gpuOrHdwTexture._mipmapGenRenderPassDescr = gpuOrHdwTexture._mipmapGenRenderPassDescr || [];\n gpuOrHdwTexture._mipmapGenBindGroup = gpuOrHdwTexture._mipmapGenBindGroup || [];\n }\n else {\n gpuTexture = gpuOrHdwTexture;\n gpuOrHdwTexture = undefined;\n }\n if (!gpuTexture) {\n return;\n }\n const webgpuHardwareTexture = gpuOrHdwTexture;\n for (let i = 1; i < mipLevelCount; ++i) {\n const renderPassDescriptor = webgpuHardwareTexture?._mipmapGenRenderPassDescr[faceIndex]?.[i - 1] ?? {\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_generateMipmaps_${format}_faceIndex${faceIndex}_level${i}`,\n colorAttachments: [\n {\n view: gpuTexture.createView({\n format,\n dimension: is3D ? \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */ : \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n baseMipLevel: i,\n mipLevelCount: 1,\n arrayLayerCount: 1,\n baseArrayLayer: faceIndex,\n }),\n loadOp: \"load\" /* WebGPUConstants.LoadOp.Load */,\n storeOp: \"store\" /* WebGPUConstants.StoreOp.Store */,\n },\n ],\n };\n if (webgpuHardwareTexture) {\n webgpuHardwareTexture._mipmapGenRenderPassDescr[faceIndex] = webgpuHardwareTexture._mipmapGenRenderPassDescr[faceIndex] || [];\n webgpuHardwareTexture._mipmapGenRenderPassDescr[faceIndex][i - 1] = renderPassDescriptor;\n }\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n const bindGroup = webgpuHardwareTexture?._mipmapGenBindGroup[faceIndex]?.[i - 1] ??\n this._device.createBindGroup({\n layout: bindGroupLayout,\n entries: [\n {\n binding: 0,\n resource: gpuTexture.createView({\n format,\n dimension: is3D ? \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */ : \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n baseMipLevel: i - 1,\n mipLevelCount: 1,\n arrayLayerCount: 1,\n baseArrayLayer: faceIndex,\n }),\n },\n {\n binding: 1,\n resource: this._mipmapSampler,\n },\n ],\n });\n if (webgpuHardwareTexture) {\n webgpuHardwareTexture._mipmapGenBindGroup[faceIndex] = webgpuHardwareTexture._mipmapGenBindGroup[faceIndex] || [];\n webgpuHardwareTexture._mipmapGenBindGroup[faceIndex][i - 1] = bindGroup;\n }\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(4, 1, 0, 0);\n passEncoder.end();\n }\n commandEncoder.popDebugGroup?.();\n if (useOwnCommandEncoder) {\n this._device.queue.submit([commandEncoder.finish()]);\n commandEncoder = null;\n }\n }\n createGPUTextureForInternalTexture(texture, width, height, depth, creationFlags, dontCreateMSAATexture) {\n if (!texture._hardwareTexture) {\n texture._hardwareTexture = new WebGPUHardwareTexture(this._engine);\n }\n if (width === undefined) {\n width = texture.width;\n }\n if (height === undefined) {\n height = texture.height;\n }\n if (depth === undefined) {\n depth = texture.depth;\n }\n const gpuTextureWrapper = texture._hardwareTexture;\n const isStorageTexture = ((creationFlags ?? 0) & Constants.TEXTURE_CREATIONFLAG_STORAGE) !== 0;\n gpuTextureWrapper.format = WebGPUTextureHelper.GetWebGPUTextureFormat(texture.type, texture.format, texture._useSRGBBuffer);\n gpuTextureWrapper.textureUsages =\n texture._source === 5 /* InternalTextureSource.RenderTarget */ || texture.source === 6 /* InternalTextureSource.MultiRenderTarget */\n ? 4 /* WebGPUConstants.TextureUsage.TextureBinding */ | 1 /* WebGPUConstants.TextureUsage.CopySrc */ | 16 /* WebGPUConstants.TextureUsage.RenderAttachment */\n : texture._source === 12 /* InternalTextureSource.DepthStencil */\n ? 4 /* WebGPUConstants.TextureUsage.TextureBinding */ | 16 /* WebGPUConstants.TextureUsage.RenderAttachment */\n : -1;\n gpuTextureWrapper.textureAdditionalUsages = isStorageTexture ? 8 /* WebGPUConstants.TextureUsage.StorageBinding */ : 0;\n const hasMipMaps = texture.generateMipMaps;\n const layerCount = depth || 1;\n let mipmapCount;\n if (texture._maxLodLevel !== null) {\n mipmapCount = texture._maxLodLevel;\n }\n else {\n mipmapCount = hasMipMaps ? WebGPUTextureHelper.ComputeNumMipmapLevels(width, height) : 1;\n }\n if (texture.isCube) {\n const gpuTexture = this.createCubeTexture({ width, height }, texture.generateMipMaps, texture.generateMipMaps, texture.invertY, false, gpuTextureWrapper.format, 1, this._commandEncoderForCreation, gpuTextureWrapper.textureUsages, gpuTextureWrapper.textureAdditionalUsages, texture.label);\n gpuTextureWrapper.set(gpuTexture);\n const arrayLayerCount = texture.is3D ? 1 : layerCount;\n const format = WebGPUTextureHelper.GetDepthFormatOnly(gpuTextureWrapper.format);\n const aspect = WebGPUTextureHelper.HasDepthAndStencilAspects(gpuTextureWrapper.format) ? \"depth-only\" /* WebGPUConstants.TextureAspect.DepthOnly */ : \"all\" /* WebGPUConstants.TextureAspect.All */;\n const dimension = texture.is2DArray ? \"cube-array\" /* WebGPUConstants.TextureViewDimension.CubeArray */ : \"cube\" /* WebGPUConstants.TextureViewDimension.Cube */;\n gpuTextureWrapper.createView({\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_TextureViewCube${texture.is2DArray ? \"_Array\" + arrayLayerCount : \"\"}_${width}x${height}_${hasMipMaps ? \"wmips\" : \"womips\"}_${format}_${dimension}_${aspect}_${texture.label ?? \"noname\"}`,\n format,\n dimension,\n mipLevelCount: mipmapCount,\n baseArrayLayer: 0,\n baseMipLevel: 0,\n arrayLayerCount: 6,\n aspect,\n }, isStorageTexture);\n }\n else {\n const gpuTexture = this.createTexture({ width, height, layers: layerCount }, texture.generateMipMaps, texture.generateMipMaps, texture.invertY, false, texture.is3D, gpuTextureWrapper.format, 1, this._commandEncoderForCreation, gpuTextureWrapper.textureUsages, gpuTextureWrapper.textureAdditionalUsages, texture.label);\n gpuTextureWrapper.set(gpuTexture);\n const arrayLayerCount = texture.is3D ? 1 : layerCount;\n const format = WebGPUTextureHelper.GetDepthFormatOnly(gpuTextureWrapper.format);\n const aspect = WebGPUTextureHelper.HasDepthAndStencilAspects(gpuTextureWrapper.format) ? \"depth-only\" /* WebGPUConstants.TextureAspect.DepthOnly */ : \"all\" /* WebGPUConstants.TextureAspect.All */;\n const dimension = texture.is2DArray\n ? \"2d-array\" /* WebGPUConstants.TextureViewDimension.E2dArray */\n : texture.is3D\n ? \"3d\" /* WebGPUConstants.TextureDimension.E3d */\n : \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */;\n gpuTextureWrapper.createView({\n label: `BabylonWebGPUDevice${this._engine.uniqueId}_TextureView${texture.is3D ? \"3D\" : \"2D\"}${texture.is2DArray ? \"_Array\" + arrayLayerCount : \"\"}_${width}x${height}${texture.is3D ? \"x\" + layerCount : \"\"}_${hasMipMaps ? \"wmips\" : \"womips\"}_${format}_${dimension}_${aspect}_${texture.label ?? \"noname\"}`,\n format,\n dimension,\n mipLevelCount: mipmapCount,\n baseArrayLayer: 0,\n baseMipLevel: 0,\n arrayLayerCount,\n aspect,\n }, isStorageTexture);\n }\n texture.width = texture.baseWidth = width;\n texture.height = texture.baseHeight = height;\n texture.depth = texture.baseDepth = depth;\n if (!dontCreateMSAATexture) {\n this.createMSAATexture(texture, texture.samples);\n }\n return gpuTextureWrapper;\n }\n createMSAATexture(texture, samples, releaseExisting = true, index = 0) {\n const gpuTextureWrapper = texture._hardwareTexture;\n if (releaseExisting) {\n gpuTextureWrapper?.releaseMSAATexture();\n }\n if (!gpuTextureWrapper || (samples ?? 1) <= 1) {\n return;\n }\n const width = texture.width;\n const height = texture.height;\n const gpuMSAATexture = this.createTexture({ width, height, layers: 1 }, false, false, false, false, false, gpuTextureWrapper.format, samples, this._commandEncoderForCreation, 16 /* WebGPUConstants.TextureUsage.RenderAttachment */, 0, texture.label ? \"MSAA_\" + texture.label : \"MSAA\");\n gpuTextureWrapper.setMSAATexture(gpuMSAATexture, index);\n }\n //------------------------------------------------------------------------------\n // Update\n //------------------------------------------------------------------------------\n updateCubeTextures(imageBitmaps, gpuTexture, width, height, format, invertY = false, premultiplyAlpha = false, offsetX = 0, offsetY = 0) {\n const faces = [0, 3, 1, 4, 2, 5];\n for (let f = 0; f < faces.length; ++f) {\n const imageBitmap = imageBitmaps[faces[f]];\n this.updateTexture(imageBitmap, gpuTexture, width, height, 1, format, f, 0, invertY, premultiplyAlpha, offsetX, offsetY);\n }\n }\n // TODO WEBGPU handle data source not being in the same format than the destination texture?\n updateTexture(imageBitmap, texture, width, height, layers, format, faceIndex = 0, mipLevel = 0, invertY = false, premultiplyAlpha = false, offsetX = 0, offsetY = 0, allowGPUOptimization) {\n const gpuTexture = WebGPUTextureHelper.IsInternalTexture(texture) ? texture._hardwareTexture.underlyingResource : texture;\n const blockInformation = WebGPUTextureHelper.GetBlockInformationFromFormat(format);\n const gpuOrHdwTexture = WebGPUTextureHelper.IsInternalTexture(texture) ? texture._hardwareTexture : texture;\n const textureCopyView = {\n texture: gpuTexture,\n origin: {\n x: offsetX,\n y: offsetY,\n z: Math.max(faceIndex, 0),\n },\n mipLevel: mipLevel,\n premultipliedAlpha: premultiplyAlpha,\n };\n const textureExtent = {\n width: Math.ceil(width / blockInformation.width) * blockInformation.width,\n height: Math.ceil(height / blockInformation.height) * blockInformation.height,\n depthOrArrayLayers: layers || 1,\n };\n if (imageBitmap.byteLength !== undefined) {\n imageBitmap = imageBitmap;\n const bytesPerRow = Math.ceil(width / blockInformation.width) * blockInformation.length;\n const aligned = Math.ceil(bytesPerRow / 256) * 256 === bytesPerRow;\n if (aligned) {\n const commandEncoder = this._device.createCommandEncoder({});\n const buffer = this._bufferManager.createRawBuffer(imageBitmap.byteLength, WebGPUConstants.BufferUsage.MapWrite | WebGPUConstants.BufferUsage.CopySrc, true, \"TempBufferForUpdateTexture\" + (gpuTexture ? \"_\" + gpuTexture.label : \"\"));\n const arrayBuffer = buffer.getMappedRange();\n new Uint8Array(arrayBuffer).set(imageBitmap);\n buffer.unmap();\n commandEncoder.copyBufferToTexture({\n buffer: buffer,\n offset: 0,\n bytesPerRow,\n rowsPerImage: height,\n }, textureCopyView, textureExtent);\n this._device.queue.submit([commandEncoder.finish()]);\n this._bufferManager.releaseBuffer(buffer);\n }\n else {\n this._device.queue.writeTexture(textureCopyView, imageBitmap, {\n offset: 0,\n bytesPerRow,\n rowsPerImage: height,\n }, textureExtent);\n }\n if (invertY || premultiplyAlpha) {\n if (WebGPUTextureHelper.IsInternalTexture(texture)) {\n const dontUseRect = offsetX === 0 && offsetY === 0 && width === texture.width && height === texture.height;\n this.invertYPreMultiplyAlpha(gpuOrHdwTexture, texture.width, texture.height, format, invertY, premultiplyAlpha, faceIndex, mipLevel, layers || 1, offsetX, offsetY, dontUseRect ? 0 : width, dontUseRect ? 0 : height, undefined, allowGPUOptimization);\n }\n else {\n // we should never take this code path\n // eslint-disable-next-line no-throw-literal\n throw \"updateTexture: Can't process the texture data because a GPUTexture was provided instead of an InternalTexture!\";\n }\n }\n }\n else {\n imageBitmap = imageBitmap;\n if (invertY) {\n textureCopyView.premultipliedAlpha = false; // we are going to handle premultiplyAlpha ourselves\n // we must preprocess the image\n if (WebGPUTextureHelper.IsInternalTexture(texture) && offsetX === 0 && offsetY === 0 && width === texture.width && height === texture.height) {\n // optimization when the source image is the same size than the destination texture and offsets X/Y == 0:\n // we simply copy the source to the destination and we apply the preprocessing on the destination\n this._device.queue.copyExternalImageToTexture({ source: imageBitmap }, textureCopyView, textureExtent);\n this.invertYPreMultiplyAlpha(gpuOrHdwTexture, width, height, format, invertY, premultiplyAlpha, faceIndex, mipLevel, layers || 1, 0, 0, 0, 0, undefined, allowGPUOptimization);\n }\n else {\n // we must apply the preprocessing on the source image before copying it into the destination texture\n const commandEncoder = this._device.createCommandEncoder({});\n // create a temp texture and copy the image to it\n const srcTexture = this.createTexture({ width, height, layers: 1 }, false, false, false, false, false, format, 1, commandEncoder, 1 /* WebGPUConstants.TextureUsage.CopySrc */ | 4 /* WebGPUConstants.TextureUsage.TextureBinding */, undefined, \"TempTextureForUpdateTexture\");\n this._deferredReleaseTextures.push([srcTexture, null]);\n textureExtent.depthOrArrayLayers = 1;\n this._device.queue.copyExternalImageToTexture({ source: imageBitmap }, { texture: srcTexture }, textureExtent);\n textureExtent.depthOrArrayLayers = layers || 1;\n // apply the preprocessing to this temp texture\n this.invertYPreMultiplyAlpha(srcTexture, width, height, format, invertY, premultiplyAlpha, faceIndex, mipLevel, layers || 1, 0, 0, 0, 0, commandEncoder, allowGPUOptimization);\n // copy the temp texture to the destination texture\n commandEncoder.copyTextureToTexture({ texture: srcTexture }, textureCopyView, textureExtent);\n this._device.queue.submit([commandEncoder.finish()]);\n }\n }\n else {\n // no preprocessing: direct copy to destination texture\n this._device.queue.copyExternalImageToTexture({ source: imageBitmap }, textureCopyView, textureExtent);\n }\n }\n }\n readPixels(texture, x, y, width, height, format, faceIndex = 0, mipLevel = 0, buffer = null, noDataConversion = false) {\n const blockInformation = WebGPUTextureHelper.GetBlockInformationFromFormat(format);\n const bytesPerRow = Math.ceil(width / blockInformation.width) * blockInformation.length;\n const bytesPerRowAligned = Math.ceil(bytesPerRow / 256) * 256;\n const size = bytesPerRowAligned * height;\n const gpuBuffer = this._bufferManager.createRawBuffer(size, WebGPUConstants.BufferUsage.MapRead | WebGPUConstants.BufferUsage.CopyDst, undefined, \"TempBufferForReadPixels\" + (texture.label ? \"_\" + texture.label : \"\"));\n const commandEncoder = this._device.createCommandEncoder({});\n commandEncoder.copyTextureToBuffer({\n texture,\n mipLevel,\n origin: {\n x,\n y,\n z: Math.max(faceIndex, 0),\n },\n }, {\n buffer: gpuBuffer,\n offset: 0,\n bytesPerRow: bytesPerRowAligned,\n }, {\n width,\n height,\n depthOrArrayLayers: 1,\n });\n this._device.queue.submit([commandEncoder.finish()]);\n return this._bufferManager.readDataFromBuffer(gpuBuffer, size, width, height, bytesPerRow, bytesPerRowAligned, WebGPUTextureHelper.GetTextureTypeFromFormat(format), 0, buffer, true, noDataConversion);\n }\n //------------------------------------------------------------------------------\n // Dispose\n //------------------------------------------------------------------------------\n releaseTexture(texture) {\n if (WebGPUTextureHelper.IsInternalTexture(texture)) {\n const hardwareTexture = texture._hardwareTexture;\n const irradianceTexture = texture._irradianceTexture;\n // We can't destroy the objects just now because they could be used in the current frame - we delay the destroying after the end of the frame\n this._deferredReleaseTextures.push([hardwareTexture, irradianceTexture]);\n }\n else {\n this._deferredReleaseTextures.push([texture, null]);\n }\n }\n destroyDeferredTextures() {\n for (let i = 0; i < this._deferredReleaseTextures.length; ++i) {\n const [hardwareTexture, irradianceTexture] = this._deferredReleaseTextures[i];\n if (hardwareTexture) {\n if (WebGPUTextureHelper.IsHardwareTexture(hardwareTexture)) {\n hardwareTexture.release();\n }\n else {\n hardwareTexture.destroy();\n }\n }\n irradianceTexture?.dispose();\n }\n this._deferredReleaseTextures.length = 0;\n }\n}\n//# sourceMappingURL=webgpuTextureManager.js.map","import { DataBuffer } from \"../../Buffers/dataBuffer\";\n/** @internal */\nexport class WebGPUDataBuffer extends DataBuffer {\n set buffer(buffer) {\n this._buffer = buffer;\n }\n constructor(resource, capacity = 0) {\n super();\n // Used to make sure the buffer is not recreated twice after a context loss/restoration\n this.engineId = -1;\n this.capacity = capacity;\n if (resource) {\n this._buffer = resource;\n }\n }\n get underlyingResource() {\n return this._buffer;\n }\n}\n//# sourceMappingURL=webgpuDataBuffer.js.map","import { WebGPUDataBuffer } from \"../../Meshes/WebGPU/webgpuDataBuffer\";\nimport { FromHalfFloat } from \"../../Misc/textureTools\";\nimport { allocateAndCopyTypedBuffer } from \"../abstractEngine.functions\";\nimport { Constants } from \"../constants\";\n// eslint-disable-next-line @typescript-eslint/naming-convention\nimport * as WebGPUConstants from \"./webgpuConstants\";\n/** @internal */\nexport class WebGPUBufferManager {\n static _IsGPUBuffer(buffer) {\n return buffer.underlyingResource === undefined;\n }\n static _FlagsToString(flags, suffix = \"\") {\n let result = suffix;\n for (let i = 0; i <= 9; ++i) {\n if (flags & (1 << i)) {\n if (result) {\n result += \"_\";\n }\n result += WebGPUConstants.BufferUsage[1 << i];\n }\n }\n return result;\n }\n constructor(engine, device) {\n this._deferredReleaseBuffers = [];\n this._engine = engine;\n this._device = device;\n }\n createRawBuffer(viewOrSize, flags, mappedAtCreation = false, label) {\n const alignedLength = viewOrSize.byteLength !== undefined ? (viewOrSize.byteLength + 3) & ~3 : (viewOrSize + 3) & ~3; // 4 bytes alignments (because of the upload which requires this)\n const verticesBufferDescriptor = {\n label: \"BabylonWebGPUDevice\" + this._engine.uniqueId + \"_\" + WebGPUBufferManager._FlagsToString(flags, label ?? \"Buffer\") + \"_size\" + alignedLength,\n mappedAtCreation,\n size: alignedLength,\n usage: flags,\n };\n return this._device.createBuffer(verticesBufferDescriptor);\n }\n createBuffer(viewOrSize, flags, label) {\n const isView = viewOrSize.byteLength !== undefined;\n const dataBuffer = new WebGPUDataBuffer();\n const labelId = \"DataBufferUniqueId=\" + dataBuffer.uniqueId;\n dataBuffer.buffer = this.createRawBuffer(viewOrSize, flags, undefined, label ? labelId + \"-\" + label : labelId);\n dataBuffer.references = 1;\n dataBuffer.capacity = isView ? viewOrSize.byteLength : viewOrSize;\n dataBuffer.engineId = this._engine.uniqueId;\n if (isView) {\n this.setSubData(dataBuffer, 0, viewOrSize);\n }\n return dataBuffer;\n }\n setRawData(buffer, dstByteOffset, src, srcByteOffset, byteLength) {\n this._device.queue.writeBuffer(buffer, dstByteOffset, src.buffer, srcByteOffset, byteLength);\n }\n setSubData(dataBuffer, dstByteOffset, src, srcByteOffset = 0, byteLength = 0) {\n const buffer = dataBuffer.underlyingResource;\n byteLength = byteLength || src.byteLength;\n byteLength = Math.min(byteLength, dataBuffer.capacity - dstByteOffset);\n // After Migration to Canary\n let chunkStart = src.byteOffset + srcByteOffset;\n let chunkEnd = chunkStart + byteLength;\n // 4 bytes alignments for upload\n const alignedLength = (byteLength + 3) & ~3;\n if (alignedLength !== byteLength) {\n const tempView = new Uint8Array(src.buffer.slice(chunkStart, chunkEnd));\n src = new Uint8Array(alignedLength);\n src.set(tempView);\n srcByteOffset = 0;\n chunkStart = 0;\n chunkEnd = alignedLength;\n byteLength = alignedLength;\n }\n // Chunk\n const maxChunk = 1024 * 1024 * 15;\n let offset = 0;\n while (chunkEnd - (chunkStart + offset) > maxChunk) {\n this._device.queue.writeBuffer(buffer, dstByteOffset + offset, src.buffer, chunkStart + offset, maxChunk);\n offset += maxChunk;\n }\n this._device.queue.writeBuffer(buffer, dstByteOffset + offset, src.buffer, chunkStart + offset, byteLength - offset);\n }\n _getHalfFloatAsFloatRGBAArrayBuffer(dataLength, arrayBuffer, destArray) {\n if (!destArray) {\n destArray = new Float32Array(dataLength);\n }\n const srcData = new Uint16Array(arrayBuffer);\n while (dataLength--) {\n destArray[dataLength] = FromHalfFloat(srcData[dataLength]);\n }\n return destArray;\n }\n readDataFromBuffer(gpuBuffer, size, width, height, bytesPerRow, bytesPerRowAligned, type = Constants.TEXTURETYPE_UNSIGNED_BYTE, offset = 0, buffer = null, destroyBuffer = true, noDataConversion = false) {\n const floatFormat = type === Constants.TEXTURETYPE_FLOAT ? 2 : type === Constants.TEXTURETYPE_HALF_FLOAT ? 1 : 0;\n const engineId = this._engine.uniqueId;\n return new Promise((resolve, reject) => {\n gpuBuffer.mapAsync(1 /* WebGPUConstants.MapMode.Read */, offset, size).then(() => {\n const copyArrayBuffer = gpuBuffer.getMappedRange(offset, size);\n let data = buffer;\n if (noDataConversion) {\n if (data === null) {\n data = allocateAndCopyTypedBuffer(type, size, true, copyArrayBuffer);\n }\n else {\n data = allocateAndCopyTypedBuffer(type, data.buffer, undefined, copyArrayBuffer);\n }\n }\n else {\n if (data === null) {\n switch (floatFormat) {\n case 0: // byte format\n data = new Uint8Array(size);\n data.set(new Uint8Array(copyArrayBuffer));\n break;\n case 1: // half float\n // TODO WEBGPU use computer shaders (or render pass) to make the conversion?\n data = this._getHalfFloatAsFloatRGBAArrayBuffer(size / 2, copyArrayBuffer);\n break;\n case 2: // float\n data = new Float32Array(size / 4);\n data.set(new Float32Array(copyArrayBuffer));\n break;\n }\n }\n else {\n switch (floatFormat) {\n case 0: // byte format\n data = new Uint8Array(data.buffer);\n data.set(new Uint8Array(copyArrayBuffer));\n break;\n case 1: // half float\n // TODO WEBGPU use computer shaders (or render pass) to make the conversion?\n data = this._getHalfFloatAsFloatRGBAArrayBuffer(size / 2, copyArrayBuffer, buffer);\n break;\n case 2: // float\n data = new Float32Array(data.buffer);\n data.set(new Float32Array(copyArrayBuffer));\n break;\n }\n }\n }\n if (bytesPerRow !== bytesPerRowAligned) {\n // TODO WEBGPU use computer shaders (or render pass) to build the final buffer data?\n if (floatFormat === 1 && !noDataConversion) {\n // half float have been converted to float above\n bytesPerRow *= 2;\n bytesPerRowAligned *= 2;\n }\n const data2 = new Uint8Array(data.buffer);\n let offset = bytesPerRow, offset2 = 0;\n for (let y = 1; y < height; ++y) {\n offset2 = y * bytesPerRowAligned;\n for (let x = 0; x < bytesPerRow; ++x) {\n data2[offset++] = data2[offset2++];\n }\n }\n if (floatFormat !== 0 && !noDataConversion) {\n data = new Float32Array(data2.buffer, 0, offset / 4);\n }\n else {\n data = new Uint8Array(data2.buffer, 0, offset);\n }\n }\n gpuBuffer.unmap();\n if (destroyBuffer) {\n this.releaseBuffer(gpuBuffer);\n }\n resolve(data);\n }, (reason) => {\n if (this._engine.isDisposed || this._engine.uniqueId !== engineId) {\n // The engine was disposed while waiting for the promise, or a context loss/restoration has occurred: don't reject\n resolve(new Uint8Array());\n }\n else {\n reject(reason);\n }\n });\n });\n }\n releaseBuffer(buffer) {\n if (WebGPUBufferManager._IsGPUBuffer(buffer)) {\n this._deferredReleaseBuffers.push(buffer);\n return true;\n }\n buffer.references--;\n if (buffer.references === 0) {\n this._deferredReleaseBuffers.push(buffer.underlyingResource);\n return true;\n }\n return false;\n }\n destroyDeferredBuffers() {\n for (let i = 0; i < this._deferredReleaseBuffers.length; ++i) {\n this._deferredReleaseBuffers[i].destroy();\n }\n this._deferredReleaseBuffers.length = 0;\n }\n}\n//# sourceMappingURL=webgpuBufferManager.js.map","import { Constants } from \"../constants\";\nconst filterToBits = [\n 0 | (0 << 1) | (0 << 2), // not used\n 0 | (0 << 1) | (0 << 2), // TEXTURE_NEAREST_SAMPLINGMODE / TEXTURE_NEAREST_NEAREST\n 1 | (1 << 1) | (0 << 2), // TEXTURE_BILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR\n 1 | (1 << 1) | (1 << 2), // TEXTURE_TRILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR_MIPLINEAR\n 0 | (0 << 1) | (0 << 2), // TEXTURE_NEAREST_NEAREST_MIPNEAREST\n 0 | (1 << 1) | (0 << 2), // TEXTURE_NEAREST_LINEAR_MIPNEAREST\n 0 | (1 << 1) | (1 << 2), // TEXTURE_NEAREST_LINEAR_MIPLINEAR\n 0 | (1 << 1) | (0 << 2), // TEXTURE_NEAREST_LINEAR\n 0 | (0 << 1) | (1 << 2), // TEXTURE_NEAREST_NEAREST_MIPLINEAR\n 1 | (0 << 1) | (0 << 2), // TEXTURE_LINEAR_NEAREST_MIPNEAREST\n 1 | (0 << 1) | (1 << 2), // TEXTURE_LINEAR_NEAREST_MIPLINEAR\n 1 | (1 << 1) | (0 << 2), // TEXTURE_LINEAR_LINEAR_MIPNEAREST\n 1 | (0 << 1) | (0 << 2), // TEXTURE_LINEAR_NEAREST\n];\n// subtract 0x01FF from the comparison function value before indexing this array!\nconst comparisonFunctionToBits = [\n (0 << 3) | (0 << 4) | (0 << 5) | (0 << 6), // undefined\n (0 << 3) | (0 << 4) | (0 << 5) | (1 << 6), // NEVER\n (0 << 3) | (0 << 4) | (1 << 5) | (0 << 6), // LESS\n (0 << 3) | (0 << 4) | (1 << 5) | (1 << 6), // EQUAL\n (0 << 3) | (1 << 4) | (0 << 5) | (0 << 6), // LEQUAL\n (0 << 3) | (1 << 4) | (0 << 5) | (1 << 6), // GREATER\n (0 << 3) | (1 << 4) | (1 << 5) | (0 << 6), // NOTEQUAL\n (0 << 3) | (1 << 4) | (1 << 5) | (1 << 6), // GEQUAL\n (1 << 3) | (0 << 4) | (0 << 5) | (0 << 6), // ALWAYS\n];\nconst filterNoMipToBits = [\n 0 << 7, // not used\n 1 << 7, // TEXTURE_NEAREST_SAMPLINGMODE / TEXTURE_NEAREST_NEAREST\n 1 << 7, // TEXTURE_BILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR\n 0 << 7, // TEXTURE_TRILINEAR_SAMPLINGMODE / TEXTURE_LINEAR_LINEAR_MIPLINEAR\n 0 << 7, // TEXTURE_NEAREST_NEAREST_MIPNEAREST\n 0 << 7, // TEXTURE_NEAREST_LINEAR_MIPNEAREST\n 0 << 7, // TEXTURE_NEAREST_LINEAR_MIPLINEAR\n 1 << 7, // TEXTURE_NEAREST_LINEAR\n 0 << 7, // TEXTURE_NEAREST_NEAREST_MIPLINEAR\n 0 << 7, // TEXTURE_LINEAR_NEAREST_MIPNEAREST\n 0 << 7, // TEXTURE_LINEAR_NEAREST_MIPLINEAR\n 0 << 7, // TEXTURE_LINEAR_LINEAR_MIPNEAREST\n 1 << 7, // TEXTURE_LINEAR_NEAREST\n];\n/** @internal */\nexport class WebGPUCacheSampler {\n constructor(device) {\n this._samplers = {};\n this._device = device;\n this.disabled = false;\n }\n static GetSamplerHashCode(sampler) {\n // The WebGPU spec currently only allows values 1 and 4 for anisotropy\n const anisotropy = sampler._cachedAnisotropicFilteringLevel ? sampler._cachedAnisotropicFilteringLevel : 1;\n const code = filterToBits[sampler.samplingMode] +\n comparisonFunctionToBits[(sampler._comparisonFunction || 0x0202) - 0x0200 + 1] +\n filterNoMipToBits[sampler.samplingMode] + // handle the lodMinClamp = lodMaxClamp = 0 case when no filter used for mip mapping\n ((sampler._cachedWrapU ?? 1) << 8) +\n ((sampler._cachedWrapV ?? 1) << 10) +\n ((sampler._cachedWrapR ?? 1) << 12) +\n ((sampler.useMipMaps ? 1 : 0) << 14) + // need to factor this in because _getSamplerFilterDescriptor depends on samplingMode AND useMipMaps!\n (anisotropy << 15);\n return code;\n }\n static _GetSamplerFilterDescriptor(sampler, anisotropy) {\n let magFilter, minFilter, mipmapFilter, lodMinClamp, lodMaxClamp;\n const useMipMaps = sampler.useMipMaps;\n switch (sampler.samplingMode) {\n case Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST:\n magFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n minFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n if (!useMipMaps) {\n lodMinClamp = lodMaxClamp = 0;\n }\n break;\n case Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR:\n case Constants.TEXTURE_TRILINEAR_SAMPLINGMODE:\n magFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n minFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n if (!useMipMaps) {\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n }\n else {\n mipmapFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n }\n break;\n case Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR:\n magFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n minFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n if (!useMipMaps) {\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n }\n else {\n mipmapFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n }\n break;\n case Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST:\n magFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n minFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n if (!useMipMaps) {\n lodMinClamp = lodMaxClamp = 0;\n }\n break;\n case Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST:\n magFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n minFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n if (!useMipMaps) {\n lodMinClamp = lodMaxClamp = 0;\n }\n break;\n case Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR:\n magFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n minFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n if (!useMipMaps) {\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n }\n else {\n mipmapFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n }\n break;\n case Constants.TEXTURE_NEAREST_LINEAR:\n magFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n minFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n break;\n case Constants.TEXTURE_NEAREST_NEAREST:\n case Constants.TEXTURE_NEAREST_SAMPLINGMODE:\n magFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n minFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n break;\n case Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST:\n magFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n minFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n if (!useMipMaps) {\n lodMinClamp = lodMaxClamp = 0;\n }\n break;\n case Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR:\n magFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n minFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n if (!useMipMaps) {\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n }\n else {\n mipmapFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n }\n break;\n case Constants.TEXTURE_LINEAR_LINEAR:\n case Constants.TEXTURE_BILINEAR_SAMPLINGMODE:\n magFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n minFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n break;\n case Constants.TEXTURE_LINEAR_NEAREST:\n magFilter = \"linear\" /* WebGPUConstants.FilterMode.Linear */;\n minFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n break;\n default:\n magFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n minFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n mipmapFilter = \"nearest\" /* WebGPUConstants.FilterMode.Nearest */;\n lodMinClamp = lodMaxClamp = 0;\n break;\n }\n if (anisotropy > 1 && (lodMinClamp !== 0 || lodMaxClamp !== 0) && mipmapFilter !== \"nearest\" /* WebGPUConstants.FilterMode.Nearest */) {\n return {\n magFilter: \"linear\" /* WebGPUConstants.FilterMode.Linear */,\n minFilter: \"linear\" /* WebGPUConstants.FilterMode.Linear */,\n mipmapFilter: \"linear\" /* WebGPUConstants.FilterMode.Linear */,\n anisotropyEnabled: true,\n };\n }\n return {\n magFilter,\n minFilter,\n mipmapFilter,\n lodMinClamp,\n lodMaxClamp,\n };\n }\n static _GetWrappingMode(mode) {\n switch (mode) {\n case Constants.TEXTURE_WRAP_ADDRESSMODE:\n return \"repeat\" /* WebGPUConstants.AddressMode.Repeat */;\n case Constants.TEXTURE_CLAMP_ADDRESSMODE:\n return \"clamp-to-edge\" /* WebGPUConstants.AddressMode.ClampToEdge */;\n case Constants.TEXTURE_MIRROR_ADDRESSMODE:\n return \"mirror-repeat\" /* WebGPUConstants.AddressMode.MirrorRepeat */;\n }\n return \"repeat\" /* WebGPUConstants.AddressMode.Repeat */;\n }\n static _GetSamplerWrappingDescriptor(sampler) {\n return {\n addressModeU: this._GetWrappingMode(sampler._cachedWrapU),\n addressModeV: this._GetWrappingMode(sampler._cachedWrapV),\n addressModeW: this._GetWrappingMode(sampler._cachedWrapR),\n };\n }\n static _GetSamplerDescriptor(sampler, label) {\n const anisotropy = sampler.useMipMaps && sampler._cachedAnisotropicFilteringLevel ? sampler._cachedAnisotropicFilteringLevel : 1;\n const filterDescriptor = this._GetSamplerFilterDescriptor(sampler, anisotropy);\n return {\n label,\n ...filterDescriptor,\n ...this._GetSamplerWrappingDescriptor(sampler),\n compare: sampler._comparisonFunction ? WebGPUCacheSampler.GetCompareFunction(sampler._comparisonFunction) : undefined,\n maxAnisotropy: filterDescriptor.anisotropyEnabled ? anisotropy : 1,\n };\n }\n static GetCompareFunction(compareFunction) {\n switch (compareFunction) {\n case Constants.ALWAYS:\n return \"always\" /* WebGPUConstants.CompareFunction.Always */;\n case Constants.EQUAL:\n return \"equal\" /* WebGPUConstants.CompareFunction.Equal */;\n case Constants.GREATER:\n return \"greater\" /* WebGPUConstants.CompareFunction.Greater */;\n case Constants.GEQUAL:\n return \"greater-equal\" /* WebGPUConstants.CompareFunction.GreaterEqual */;\n case Constants.LESS:\n return \"less\" /* WebGPUConstants.CompareFunction.Less */;\n case Constants.LEQUAL:\n return \"less-equal\" /* WebGPUConstants.CompareFunction.LessEqual */;\n case Constants.NEVER:\n return \"never\" /* WebGPUConstants.CompareFunction.Never */;\n case Constants.NOTEQUAL:\n return \"not-equal\" /* WebGPUConstants.CompareFunction.NotEqual */;\n default:\n return \"less\" /* WebGPUConstants.CompareFunction.Less */;\n }\n }\n getSampler(sampler, bypassCache = false, hash = 0, label) {\n if (this.disabled) {\n return this._device.createSampler(WebGPUCacheSampler._GetSamplerDescriptor(sampler, label));\n }\n if (bypassCache) {\n hash = 0;\n }\n else if (hash === 0) {\n hash = WebGPUCacheSampler.GetSamplerHashCode(sampler);\n }\n let gpuSampler = bypassCache ? undefined : this._samplers[hash];\n if (!gpuSampler) {\n gpuSampler = this._device.createSampler(WebGPUCacheSampler._GetSamplerDescriptor(sampler, label));\n if (!bypassCache) {\n this._samplers[hash] = gpuSampler;\n }\n }\n return gpuSampler;\n }\n}\n//# sourceMappingURL=webgpuCacheSampler.js.map","import { VertexBuffer } from \"../Meshes/buffer\";\nconst vertexBufferKindForNonFloatProcessing = {\n [VertexBuffer.PositionKind]: true,\n [VertexBuffer.NormalKind]: true,\n [VertexBuffer.TangentKind]: true,\n [VertexBuffer.UVKind]: true,\n [VertexBuffer.UV2Kind]: true,\n [VertexBuffer.UV3Kind]: true,\n [VertexBuffer.UV4Kind]: true,\n [VertexBuffer.UV5Kind]: true,\n [VertexBuffer.UV6Kind]: true,\n [VertexBuffer.ColorKind]: true,\n [VertexBuffer.ColorInstanceKind]: true,\n [VertexBuffer.MatricesIndicesKind]: true,\n [VertexBuffer.MatricesWeightsKind]: true,\n [VertexBuffer.MatricesIndicesExtraKind]: true,\n [VertexBuffer.MatricesWeightsExtraKind]: true,\n};\n/**\n * Indicates if the type is a signed or unsigned type\n * @param type Type to check\n * @returns True if it is a signed type\n */\nfunction isSignedType(type) {\n switch (type) {\n case VertexBuffer.BYTE:\n case VertexBuffer.SHORT:\n case VertexBuffer.INT:\n case VertexBuffer.FLOAT:\n return true;\n case VertexBuffer.UNSIGNED_BYTE:\n case VertexBuffer.UNSIGNED_SHORT:\n case VertexBuffer.UNSIGNED_INT:\n return false;\n default:\n throw new Error(`Invalid type '${type}'`);\n }\n}\n/**\n * Checks whether some vertex buffers that should be of type float are of a different type (int, byte...).\n * If so, trigger a shader recompilation to give the shader processor the opportunity to update the code accordingly.\n * @param vertexBuffers List of vertex buffers to check\n * @param effect The effect (shaders) that should be recompiled if needed\n */\nexport function checkNonFloatVertexBuffers(vertexBuffers, effect) {\n const engine = effect.getEngine();\n const pipelineContext = effect._pipelineContext;\n if (!pipelineContext?.vertexBufferKindToType) {\n return;\n }\n let shaderProcessingContext = null;\n for (const kind in vertexBuffers) {\n const currentVertexBuffer = vertexBuffers[kind];\n if (!currentVertexBuffer || !vertexBufferKindForNonFloatProcessing[kind]) {\n continue;\n }\n const currentVertexBufferType = currentVertexBuffer.normalized ? VertexBuffer.FLOAT : currentVertexBuffer.type;\n const vertexBufferType = pipelineContext.vertexBufferKindToType[kind];\n if ((currentVertexBufferType !== VertexBuffer.FLOAT && vertexBufferType === undefined) ||\n (vertexBufferType !== undefined && vertexBufferType !== currentVertexBufferType)) {\n if (!shaderProcessingContext) {\n shaderProcessingContext = engine._getShaderProcessingContext(effect.shaderLanguage, false);\n }\n pipelineContext.vertexBufferKindToType[kind] = currentVertexBufferType;\n if (currentVertexBufferType !== VertexBuffer.FLOAT) {\n shaderProcessingContext.vertexBufferKindToNumberOfComponents[kind] = VertexBuffer.DeduceStride(kind);\n if (isSignedType(currentVertexBufferType)) {\n shaderProcessingContext.vertexBufferKindToNumberOfComponents[kind] *= -1;\n }\n }\n }\n }\n if (shaderProcessingContext) {\n // We temporarily disable parallel compilation of shaders because we want new shaders to be compiled after the _processShaderCode call, so that they are in effect for the rest of the frame.\n // There is no additional call to async so the _processShaderCodeAsync will execute synchronously.\n const parallelShaderCompile = engine._caps.parallelShaderCompile;\n engine._caps.parallelShaderCompile = undefined;\n effect._processShaderCodeAsync(null, engine._features._checkNonFloatVertexBuffersDontRecreatePipelineContext, shaderProcessingContext);\n engine._caps.parallelShaderCompile = parallelShaderCompile;\n }\n}\n//# sourceMappingURL=buffer.nonFloatVertexBuffers.js.map","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable babylonjs/available */\n/* eslint-disable jsdoc/require-jsdoc */\nimport { Constants } from \"../constants\";\nimport { VertexBuffer } from \"../../Buffers/buffer\";\nimport { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\nimport { renderableTextureFormatToIndex } from \"./webgpuTextureManager\";\nimport { checkNonFloatVertexBuffers } from \"core/Buffers/buffer.nonFloatVertexBuffers\";\nimport { Logger } from \"core/Misc/logger\";\nvar StatePosition;\n(function (StatePosition) {\n StatePosition[StatePosition[\"StencilReadMask\"] = 0] = \"StencilReadMask\";\n StatePosition[StatePosition[\"StencilWriteMask\"] = 1] = \"StencilWriteMask\";\n //DepthBiasClamp = 1, // not used, so remove it to improve perf\n StatePosition[StatePosition[\"DepthBias\"] = 2] = \"DepthBias\";\n StatePosition[StatePosition[\"DepthBiasSlopeScale\"] = 3] = \"DepthBiasSlopeScale\";\n StatePosition[StatePosition[\"DepthStencilState\"] = 4] = \"DepthStencilState\";\n StatePosition[StatePosition[\"MRTAttachments1\"] = 5] = \"MRTAttachments1\";\n StatePosition[StatePosition[\"MRTAttachments2\"] = 6] = \"MRTAttachments2\";\n StatePosition[StatePosition[\"RasterizationState\"] = 7] = \"RasterizationState\";\n StatePosition[StatePosition[\"ColorStates\"] = 8] = \"ColorStates\";\n StatePosition[StatePosition[\"ShaderStage\"] = 9] = \"ShaderStage\";\n StatePosition[StatePosition[\"TextureStage\"] = 10] = \"TextureStage\";\n StatePosition[StatePosition[\"VertexState\"] = 11] = \"VertexState\";\n StatePosition[StatePosition[\"NumStates\"] = 12] = \"NumStates\";\n})(StatePosition || (StatePosition = {}));\nconst alphaBlendFactorToIndex = {\n 0: 1, // Zero\n 1: 2, // One\n 0x0300: 3, // SrcColor\n 0x0301: 4, // OneMinusSrcColor\n 0x0302: 5, // SrcAlpha\n 0x0303: 6, // OneMinusSrcAlpha\n 0x0304: 7, // DstAlpha\n 0x0305: 8, // OneMinusDstAlpha\n 0x0306: 9, // DstColor\n 0x0307: 10, // OneMinusDstColor\n 0x0308: 11, // SrcAlphaSaturated\n 0x8001: 12, // BlendColor\n 0x8002: 13, // OneMinusBlendColor\n 0x8003: 12, // BlendColor (alpha)\n 0x8004: 13, // OneMinusBlendColor (alpha)\n};\nconst stencilOpToIndex = {\n 0x0000: 0, // ZERO\n 0x1e00: 1, // KEEP\n 0x1e01: 2, // REPLACE\n 0x1e02: 3, // INCR\n 0x1e03: 4, // DECR\n 0x150a: 5, // INVERT\n 0x8507: 6, // INCR_WRAP\n 0x8508: 7, // DECR_WRAP\n};\n/** @internal */\nexport class WebGPUCacheRenderPipeline {\n constructor(device, emptyVertexBuffer) {\n this.mrtTextureCount = 0;\n this._device = device;\n this._useTextureStage = true; // we force usage because we must handle depth textures with \"float\" filtering, which can't be fixed by a caps (like \"textureFloatLinearFiltering\" can for float textures)\n this._states = new Array(30); // pre-allocate enough room so that no new allocation will take place afterwards\n this._statesLength = 0;\n this._stateDirtyLowestIndex = 0;\n this._emptyVertexBuffer = emptyVertexBuffer;\n this._mrtFormats = [];\n this._parameter = { token: undefined, pipeline: null };\n this.disabled = false;\n this.vertexBuffers = [];\n this._kMaxVertexBufferStride = device.limits.maxVertexBufferArrayStride || 2048;\n this.reset();\n }\n reset() {\n this._isDirty = true;\n this.vertexBuffers.length = 0;\n this.setAlphaToCoverage(false);\n this.resetDepthCullingState();\n this.setClampDepth(false);\n this.setDepthBias(0);\n //this.setDepthBiasClamp(0);\n this._webgpuColorFormat = [\"bgra8unorm\" /* WebGPUConstants.TextureFormat.BGRA8Unorm */];\n this.setColorFormat(\"bgra8unorm\" /* WebGPUConstants.TextureFormat.BGRA8Unorm */);\n this.setMRT([]);\n this.setAlphaBlendEnabled(false);\n this.setAlphaBlendFactors([null, null, null, null], [null, null]);\n this.setWriteMask(0xf);\n this.setDepthStencilFormat(\"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */);\n this.setStencilEnabled(false);\n this.resetStencilState();\n this.setBuffers(null, null, null);\n this._setTextureState(0);\n }\n get colorFormats() {\n return this._mrtAttachments1 > 0 ? this._mrtFormats : this._webgpuColorFormat;\n }\n getRenderPipeline(fillMode, effect, sampleCount, textureState = 0) {\n sampleCount = WebGPUTextureHelper.GetSample(sampleCount);\n if (this.disabled) {\n const topology = WebGPUCacheRenderPipeline._GetTopology(fillMode);\n this._setVertexState(effect); // to fill this.vertexBuffers with correct data\n this._setTextureState(textureState);\n this._parameter.pipeline = this._createRenderPipeline(effect, topology, sampleCount);\n WebGPUCacheRenderPipeline.NumCacheMiss++;\n WebGPUCacheRenderPipeline._NumPipelineCreationCurrentFrame++;\n return this._parameter.pipeline;\n }\n this._setShaderStage(effect.uniqueId);\n this._setRasterizationState(fillMode, sampleCount);\n this._setColorStates();\n this._setDepthStencilState();\n this._setVertexState(effect);\n this._setTextureState(textureState);\n this.lastStateDirtyLowestIndex = this._stateDirtyLowestIndex;\n if (!this._isDirty && this._parameter.pipeline) {\n this._stateDirtyLowestIndex = this._statesLength;\n WebGPUCacheRenderPipeline.NumCacheHitWithoutHash++;\n return this._parameter.pipeline;\n }\n this._getRenderPipeline(this._parameter);\n this._isDirty = false;\n this._stateDirtyLowestIndex = this._statesLength;\n if (this._parameter.pipeline) {\n WebGPUCacheRenderPipeline.NumCacheHitWithHash++;\n return this._parameter.pipeline;\n }\n const topology = WebGPUCacheRenderPipeline._GetTopology(fillMode);\n this._parameter.pipeline = this._createRenderPipeline(effect, topology, sampleCount);\n this._setRenderPipeline(this._parameter);\n WebGPUCacheRenderPipeline.NumCacheMiss++;\n WebGPUCacheRenderPipeline._NumPipelineCreationCurrentFrame++;\n return this._parameter.pipeline;\n }\n endFrame() {\n WebGPUCacheRenderPipeline.NumPipelineCreationLastFrame = WebGPUCacheRenderPipeline._NumPipelineCreationCurrentFrame;\n WebGPUCacheRenderPipeline._NumPipelineCreationCurrentFrame = 0;\n }\n setAlphaToCoverage(enabled) {\n this._alphaToCoverageEnabled = enabled;\n }\n setFrontFace(frontFace) {\n this._frontFace = frontFace;\n }\n setCullEnabled(enabled) {\n this._cullEnabled = enabled;\n }\n setCullFace(cullFace) {\n this._cullFace = cullFace;\n }\n setClampDepth(clampDepth) {\n this._clampDepth = clampDepth;\n }\n resetDepthCullingState() {\n this.setDepthCullingState(false, 2, 1, 0, 0, true, true, Constants.ALWAYS);\n }\n setDepthCullingState(cullEnabled, frontFace, cullFace, zOffset, zOffsetUnits, depthTestEnabled, depthWriteEnabled, depthCompare) {\n this._depthWriteEnabled = depthWriteEnabled;\n this._depthTestEnabled = depthTestEnabled;\n this._depthCompare = (depthCompare ?? Constants.ALWAYS) - 0x0200;\n this._cullFace = cullFace;\n this._cullEnabled = cullEnabled;\n this._frontFace = frontFace;\n this.setDepthBiasSlopeScale(zOffset);\n this.setDepthBias(zOffsetUnits);\n }\n setDepthBias(depthBias) {\n if (this._depthBias !== depthBias) {\n this._depthBias = depthBias;\n this._states[StatePosition.DepthBias] = depthBias;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.DepthBias);\n }\n }\n /*public setDepthBiasClamp(depthBiasClamp: number): void {\n if (this._depthBiasClamp !== depthBiasClamp) {\n this._depthBiasClamp = depthBiasClamp;\n this._states[StatePosition.DepthBiasClamp] = depthBiasClamp.toString();\n this._isDirty = true;\n }\n }*/\n setDepthBiasSlopeScale(depthBiasSlopeScale) {\n if (this._depthBiasSlopeScale !== depthBiasSlopeScale) {\n this._depthBiasSlopeScale = depthBiasSlopeScale;\n this._states[StatePosition.DepthBiasSlopeScale] = depthBiasSlopeScale;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.DepthBiasSlopeScale);\n }\n }\n setColorFormat(format) {\n this._webgpuColorFormat[0] = format;\n this._colorFormat = renderableTextureFormatToIndex[format ?? \"\"];\n }\n setMRTAttachments(attachments) {\n this.mrtAttachments = attachments;\n let mask = 0;\n for (let i = 0; i < attachments.length; ++i) {\n if (attachments[i] !== 0) {\n mask += 1 << i;\n }\n }\n if (this._mrtEnabledMask !== mask) {\n this._mrtEnabledMask = mask;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.MRTAttachments1);\n }\n }\n setMRT(textureArray, textureCount) {\n textureCount = textureCount ?? textureArray.length;\n if (textureCount > 10) {\n // If we want more than 10 attachments we need to change this method (and the StatePosition enum) but 10 seems plenty: note that WebGPU only supports 8 at the time (2021/12/13)!\n // As we need ~39 different values we are using 6 bits to encode a texture format, meaning we can encode 5 texture formats in 32 bits\n // We are using 2x32 bit values to handle 10 textures\n // eslint-disable-next-line no-throw-literal\n throw \"Can't handle more than 10 attachments for a MRT in cache render pipeline!\";\n }\n this.mrtTextureArray = textureArray;\n this.mrtTextureCount = textureCount;\n this._mrtEnabledMask = 0xffff; // all textures are enabled at start (meaning we can write to them). Calls to setMRTAttachments may disable some\n const bits = [0, 0];\n let indexBits = 0, mask = 0, numRT = 0;\n for (let i = 0; i < textureCount; ++i) {\n const texture = textureArray[i];\n const gpuWrapper = texture?._hardwareTexture;\n this._mrtFormats[numRT] = gpuWrapper?.format ?? this._webgpuColorFormat[0];\n bits[indexBits] += renderableTextureFormatToIndex[this._mrtFormats[numRT] ?? \"\"] << mask;\n mask += 6;\n numRT++;\n if (mask >= 32) {\n mask = 0;\n indexBits++;\n }\n }\n this._mrtFormats.length = numRT;\n if (this._mrtAttachments1 !== bits[0] || this._mrtAttachments2 !== bits[1]) {\n this._mrtAttachments1 = bits[0];\n this._mrtAttachments2 = bits[1];\n this._states[StatePosition.MRTAttachments1] = bits[0];\n this._states[StatePosition.MRTAttachments2] = bits[1];\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.MRTAttachments1);\n }\n }\n setAlphaBlendEnabled(enabled) {\n this._alphaBlendEnabled = enabled;\n }\n setAlphaBlendFactors(factors, operations) {\n this._alphaBlendFuncParams = factors;\n this._alphaBlendEqParams = operations;\n }\n setWriteMask(mask) {\n this._writeMask = mask;\n }\n setDepthStencilFormat(format) {\n this._webgpuDepthStencilFormat = format;\n this._depthStencilFormat = format === undefined ? 0 : renderableTextureFormatToIndex[format];\n }\n setDepthTestEnabled(enabled) {\n this._depthTestEnabled = enabled;\n }\n setDepthWriteEnabled(enabled) {\n this._depthWriteEnabled = enabled;\n }\n setDepthCompare(func) {\n this._depthCompare = (func ?? Constants.ALWAYS) - 0x0200;\n }\n setStencilEnabled(enabled) {\n this._stencilEnabled = enabled;\n }\n setStencilCompare(func) {\n this._stencilFrontCompare = (func ?? Constants.ALWAYS) - 0x0200;\n }\n setStencilDepthFailOp(op) {\n this._stencilFrontDepthFailOp = op === null ? 1 /* KEEP */ : stencilOpToIndex[op];\n }\n setStencilPassOp(op) {\n this._stencilFrontPassOp = op === null ? 2 /* REPLACE */ : stencilOpToIndex[op];\n }\n setStencilFailOp(op) {\n this._stencilFrontFailOp = op === null ? 1 /* KEEP */ : stencilOpToIndex[op];\n }\n setStencilReadMask(mask) {\n if (this._stencilReadMask !== mask) {\n this._stencilReadMask = mask;\n this._states[StatePosition.StencilReadMask] = mask;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.StencilReadMask);\n }\n }\n setStencilWriteMask(mask) {\n if (this._stencilWriteMask !== mask) {\n this._stencilWriteMask = mask;\n this._states[StatePosition.StencilWriteMask] = mask;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.StencilWriteMask);\n }\n }\n resetStencilState() {\n this.setStencilState(false, Constants.ALWAYS, Constants.KEEP, Constants.REPLACE, Constants.KEEP, 0xff, 0xff);\n }\n setStencilState(stencilEnabled, compare, depthFailOp, passOp, failOp, readMask, writeMask) {\n this._stencilEnabled = stencilEnabled;\n this._stencilFrontCompare = (compare ?? Constants.ALWAYS) - 0x0200;\n this._stencilFrontDepthFailOp = depthFailOp === null ? 1 /* KEEP */ : stencilOpToIndex[depthFailOp];\n this._stencilFrontPassOp = passOp === null ? 2 /* REPLACE */ : stencilOpToIndex[passOp];\n this._stencilFrontFailOp = failOp === null ? 1 /* KEEP */ : stencilOpToIndex[failOp];\n this.setStencilReadMask(readMask);\n this.setStencilWriteMask(writeMask);\n }\n setBuffers(vertexBuffers, indexBuffer, overrideVertexBuffers) {\n this._vertexBuffers = vertexBuffers;\n this._overrideVertexBuffers = overrideVertexBuffers;\n this._indexBuffer = indexBuffer;\n }\n static _GetTopology(fillMode) {\n switch (fillMode) {\n // Triangle views\n case Constants.MATERIAL_TriangleFillMode:\n return \"triangle-list\" /* WebGPUConstants.PrimitiveTopology.TriangleList */;\n case Constants.MATERIAL_PointFillMode:\n return \"point-list\" /* WebGPUConstants.PrimitiveTopology.PointList */;\n case Constants.MATERIAL_WireFrameFillMode:\n return \"line-list\" /* WebGPUConstants.PrimitiveTopology.LineList */;\n // Draw modes\n case Constants.MATERIAL_PointListDrawMode:\n return \"point-list\" /* WebGPUConstants.PrimitiveTopology.PointList */;\n case Constants.MATERIAL_LineListDrawMode:\n return \"line-list\" /* WebGPUConstants.PrimitiveTopology.LineList */;\n case Constants.MATERIAL_LineLoopDrawMode:\n // return this._gl.LINE_LOOP;\n // TODO WEBGPU. Line Loop Mode Fallback at buffer load time.\n // eslint-disable-next-line no-throw-literal\n throw \"LineLoop is an unsupported fillmode in WebGPU\";\n case Constants.MATERIAL_LineStripDrawMode:\n return \"line-strip\" /* WebGPUConstants.PrimitiveTopology.LineStrip */;\n case Constants.MATERIAL_TriangleStripDrawMode:\n return \"triangle-strip\" /* WebGPUConstants.PrimitiveTopology.TriangleStrip */;\n case Constants.MATERIAL_TriangleFanDrawMode:\n // return this._gl.TRIANGLE_FAN;\n // TODO WEBGPU. Triangle Fan Mode Fallback at buffer load time.\n // eslint-disable-next-line no-throw-literal\n throw \"TriangleFan is an unsupported fillmode in WebGPU\";\n default:\n return \"triangle-list\" /* WebGPUConstants.PrimitiveTopology.TriangleList */;\n }\n }\n static _GetAphaBlendOperation(operation) {\n switch (operation) {\n case Constants.GL_ALPHA_EQUATION_ADD:\n return \"add\" /* WebGPUConstants.BlendOperation.Add */;\n case Constants.GL_ALPHA_EQUATION_SUBTRACT:\n return \"subtract\" /* WebGPUConstants.BlendOperation.Subtract */;\n case Constants.GL_ALPHA_EQUATION_REVERSE_SUBTRACT:\n return \"reverse-subtract\" /* WebGPUConstants.BlendOperation.ReverseSubtract */;\n case Constants.GL_ALPHA_EQUATION_MIN:\n return \"min\" /* WebGPUConstants.BlendOperation.Min */;\n case Constants.GL_ALPHA_EQUATION_MAX:\n return \"max\" /* WebGPUConstants.BlendOperation.Max */;\n default:\n return \"add\" /* WebGPUConstants.BlendOperation.Add */;\n }\n }\n static _GetAphaBlendFactor(factor) {\n switch (factor) {\n case 0:\n return \"zero\" /* WebGPUConstants.BlendFactor.Zero */;\n case 1:\n return \"one\" /* WebGPUConstants.BlendFactor.One */;\n case Constants.GL_ALPHA_FUNCTION_SRC:\n return \"src\" /* WebGPUConstants.BlendFactor.Src */;\n case Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR:\n return \"one-minus-src\" /* WebGPUConstants.BlendFactor.OneMinusSrc */;\n case Constants.GL_ALPHA_FUNCTION_SRC_ALPHA:\n return \"src-alpha\" /* WebGPUConstants.BlendFactor.SrcAlpha */;\n case Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA:\n return \"one-minus-src-alpha\" /* WebGPUConstants.BlendFactor.OneMinusSrcAlpha */;\n case Constants.GL_ALPHA_FUNCTION_DST_ALPHA:\n return \"dst-alpha\" /* WebGPUConstants.BlendFactor.DstAlpha */;\n case Constants.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA:\n return \"one-minus-dst-alpha\" /* WebGPUConstants.BlendFactor.OneMinusDstAlpha */;\n case Constants.GL_ALPHA_FUNCTION_DST_COLOR:\n return \"dst\" /* WebGPUConstants.BlendFactor.Dst */;\n case Constants.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR:\n return \"one-minus-dst\" /* WebGPUConstants.BlendFactor.OneMinusDst */;\n case Constants.GL_ALPHA_FUNCTION_SRC_ALPHA_SATURATED:\n return \"src-alpha-saturated\" /* WebGPUConstants.BlendFactor.SrcAlphaSaturated */;\n case Constants.GL_ALPHA_FUNCTION_CONSTANT_COLOR:\n return \"constant\" /* WebGPUConstants.BlendFactor.Constant */;\n case Constants.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR:\n return \"one-minus-constant\" /* WebGPUConstants.BlendFactor.OneMinusConstant */;\n case Constants.GL_ALPHA_FUNCTION_CONSTANT_ALPHA:\n return \"constant\" /* WebGPUConstants.BlendFactor.Constant */;\n case Constants.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA:\n return \"one-minus-constant\" /* WebGPUConstants.BlendFactor.OneMinusConstant */;\n case Constants.GL_ALPHA_FUNCTION_SRC1_COLOR:\n return \"src1\" /* WebGPUConstants.BlendFactor.Src1 */;\n case Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_COLOR:\n return \"one-minus-src1\" /* WebGPUConstants.BlendFactor.OneMinusSrc1 */;\n case Constants.GL_ALPHA_FUNCTION_SRC1_ALPHA:\n return \"src1-alpha\" /* WebGPUConstants.BlendFactor.Src1Alpha */;\n case Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_ALPHA:\n return \"one-minus-src1-alpha\" /* WebGPUConstants.BlendFactor.OneMinusSrc1Alpha */;\n default:\n return \"one\" /* WebGPUConstants.BlendFactor.One */;\n }\n }\n static _GetCompareFunction(compareFunction) {\n switch (compareFunction) {\n case 0: // NEVER\n return \"never\" /* WebGPUConstants.CompareFunction.Never */;\n case 1: // LESS\n return \"less\" /* WebGPUConstants.CompareFunction.Less */;\n case 2: // EQUAL\n return \"equal\" /* WebGPUConstants.CompareFunction.Equal */;\n case 3: // LEQUAL\n return \"less-equal\" /* WebGPUConstants.CompareFunction.LessEqual */;\n case 4: // GREATER\n return \"greater\" /* WebGPUConstants.CompareFunction.Greater */;\n case 5: // NOTEQUAL\n return \"not-equal\" /* WebGPUConstants.CompareFunction.NotEqual */;\n case 6: // GEQUAL\n return \"greater-equal\" /* WebGPUConstants.CompareFunction.GreaterEqual */;\n case 7: // ALWAYS\n return \"always\" /* WebGPUConstants.CompareFunction.Always */;\n }\n return \"never\" /* WebGPUConstants.CompareFunction.Never */;\n }\n static _GetStencilOpFunction(operation) {\n switch (operation) {\n case 0:\n return \"zero\" /* WebGPUConstants.StencilOperation.Zero */;\n case 1:\n return \"keep\" /* WebGPUConstants.StencilOperation.Keep */;\n case 2:\n return \"replace\" /* WebGPUConstants.StencilOperation.Replace */;\n case 3:\n return \"increment-clamp\" /* WebGPUConstants.StencilOperation.IncrementClamp */;\n case 4:\n return \"decrement-clamp\" /* WebGPUConstants.StencilOperation.DecrementClamp */;\n case 5:\n return \"invert\" /* WebGPUConstants.StencilOperation.Invert */;\n case 6:\n return \"increment-wrap\" /* WebGPUConstants.StencilOperation.IncrementWrap */;\n case 7:\n return \"decrement-wrap\" /* WebGPUConstants.StencilOperation.DecrementWrap */;\n }\n return \"keep\" /* WebGPUConstants.StencilOperation.Keep */;\n }\n static _GetVertexInputDescriptorFormat(vertexBuffer) {\n const type = vertexBuffer.type;\n const normalized = vertexBuffer.normalized;\n const size = vertexBuffer.getSize();\n switch (type) {\n case VertexBuffer.BYTE:\n switch (size) {\n case 1:\n case 2:\n return normalized ? \"snorm8x2\" /* WebGPUConstants.VertexFormat.Snorm8x2 */ : \"sint8x2\" /* WebGPUConstants.VertexFormat.Sint8x2 */;\n case 3:\n case 4:\n return normalized ? \"snorm8x4\" /* WebGPUConstants.VertexFormat.Snorm8x4 */ : \"sint8x4\" /* WebGPUConstants.VertexFormat.Sint8x4 */;\n }\n break;\n case VertexBuffer.UNSIGNED_BYTE:\n switch (size) {\n case 1:\n case 2:\n return normalized ? \"unorm8x2\" /* WebGPUConstants.VertexFormat.Unorm8x2 */ : \"uint8x2\" /* WebGPUConstants.VertexFormat.Uint8x2 */;\n case 3:\n case 4:\n return normalized ? \"unorm8x4\" /* WebGPUConstants.VertexFormat.Unorm8x4 */ : \"uint8x4\" /* WebGPUConstants.VertexFormat.Uint8x4 */;\n }\n break;\n case VertexBuffer.SHORT:\n switch (size) {\n case 1:\n case 2:\n return normalized ? \"snorm16x2\" /* WebGPUConstants.VertexFormat.Snorm16x2 */ : \"sint16x2\" /* WebGPUConstants.VertexFormat.Sint16x2 */;\n case 3:\n case 4:\n return normalized ? \"snorm16x4\" /* WebGPUConstants.VertexFormat.Snorm16x4 */ : \"sint16x4\" /* WebGPUConstants.VertexFormat.Sint16x4 */;\n }\n break;\n case VertexBuffer.UNSIGNED_SHORT:\n switch (size) {\n case 1:\n case 2:\n return normalized ? \"unorm16x2\" /* WebGPUConstants.VertexFormat.Unorm16x2 */ : \"uint16x2\" /* WebGPUConstants.VertexFormat.Uint16x2 */;\n case 3:\n case 4:\n return normalized ? \"unorm16x4\" /* WebGPUConstants.VertexFormat.Unorm16x4 */ : \"uint16x4\" /* WebGPUConstants.VertexFormat.Uint16x4 */;\n }\n break;\n case VertexBuffer.INT:\n switch (size) {\n case 1:\n return \"sint32\" /* WebGPUConstants.VertexFormat.Sint32 */;\n case 2:\n return \"sint32x2\" /* WebGPUConstants.VertexFormat.Sint32x2 */;\n case 3:\n return \"sint32x3\" /* WebGPUConstants.VertexFormat.Sint32x3 */;\n case 4:\n return \"sint32x4\" /* WebGPUConstants.VertexFormat.Sint32x4 */;\n }\n break;\n case VertexBuffer.UNSIGNED_INT:\n switch (size) {\n case 1:\n return \"uint32\" /* WebGPUConstants.VertexFormat.Uint32 */;\n case 2:\n return \"uint32x2\" /* WebGPUConstants.VertexFormat.Uint32x2 */;\n case 3:\n return \"uint32x3\" /* WebGPUConstants.VertexFormat.Uint32x3 */;\n case 4:\n return \"uint32x4\" /* WebGPUConstants.VertexFormat.Uint32x4 */;\n }\n break;\n case VertexBuffer.FLOAT:\n switch (size) {\n case 1:\n return \"float32\" /* WebGPUConstants.VertexFormat.Float32 */;\n case 2:\n return \"float32x2\" /* WebGPUConstants.VertexFormat.Float32x2 */;\n case 3:\n return \"float32x3\" /* WebGPUConstants.VertexFormat.Float32x3 */;\n case 4:\n return \"float32x4\" /* WebGPUConstants.VertexFormat.Float32x4 */;\n }\n break;\n }\n throw new Error(`Invalid Format '${vertexBuffer.getKind()}' - type=${type}, normalized=${normalized}, size=${size}`);\n }\n _getAphaBlendState() {\n if (!this._alphaBlendEnabled) {\n return null;\n }\n return {\n srcFactor: WebGPUCacheRenderPipeline._GetAphaBlendFactor(this._alphaBlendFuncParams[2]),\n dstFactor: WebGPUCacheRenderPipeline._GetAphaBlendFactor(this._alphaBlendFuncParams[3]),\n operation: WebGPUCacheRenderPipeline._GetAphaBlendOperation(this._alphaBlendEqParams[1]),\n };\n }\n _getColorBlendState() {\n if (!this._alphaBlendEnabled) {\n return null;\n }\n return {\n srcFactor: WebGPUCacheRenderPipeline._GetAphaBlendFactor(this._alphaBlendFuncParams[0]),\n dstFactor: WebGPUCacheRenderPipeline._GetAphaBlendFactor(this._alphaBlendFuncParams[1]),\n operation: WebGPUCacheRenderPipeline._GetAphaBlendOperation(this._alphaBlendEqParams[0]),\n };\n }\n _setShaderStage(id) {\n if (this._shaderId !== id) {\n this._shaderId = id;\n this._states[StatePosition.ShaderStage] = id;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.ShaderStage);\n }\n }\n _setRasterizationState(topology, sampleCount) {\n const frontFace = this._frontFace;\n const cullMode = this._cullEnabled ? this._cullFace : 0;\n const clampDepth = this._clampDepth ? 1 : 0;\n const alphaToCoverage = this._alphaToCoverageEnabled ? 1 : 0;\n const rasterizationState = frontFace - 1 + (cullMode << 1) + (clampDepth << 3) + (alphaToCoverage << 4) + (topology << 5) + (sampleCount << 8);\n if (this._rasterizationState !== rasterizationState) {\n this._rasterizationState = rasterizationState;\n this._states[StatePosition.RasterizationState] = this._rasterizationState;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.RasterizationState);\n }\n }\n _setColorStates() {\n let colorStates = ((this._writeMask ? 1 : 0) << 22) + (this._colorFormat << 23) + ((this._depthWriteEnabled ? 1 : 0) << 29); // this state has been moved from depthStencilState here because alpha and depth are related (generally when alpha is on, depth write is off and the other way around)\n if (this._alphaBlendEnabled) {\n colorStates +=\n ((this._alphaBlendFuncParams[0] === null ? 2 : alphaBlendFactorToIndex[this._alphaBlendFuncParams[0]]) << 0) +\n ((this._alphaBlendFuncParams[1] === null ? 2 : alphaBlendFactorToIndex[this._alphaBlendFuncParams[1]]) << 4) +\n ((this._alphaBlendFuncParams[2] === null ? 2 : alphaBlendFactorToIndex[this._alphaBlendFuncParams[2]]) << 8) +\n ((this._alphaBlendFuncParams[3] === null ? 2 : alphaBlendFactorToIndex[this._alphaBlendFuncParams[3]]) << 12) +\n ((this._alphaBlendEqParams[0] === null ? 1 : this._alphaBlendEqParams[0] - 0x8005) << 16) +\n ((this._alphaBlendEqParams[1] === null ? 1 : this._alphaBlendEqParams[1] - 0x8005) << 19);\n }\n if (colorStates !== this._colorStates) {\n this._colorStates = colorStates;\n this._states[StatePosition.ColorStates] = this._colorStates;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.ColorStates);\n }\n }\n _setDepthStencilState() {\n const stencilState = !this._stencilEnabled\n ? 7 /* ALWAYS */ + (1 /* KEEP */ << 3) + (1 /* KEEP */ << 6) + (1 /* KEEP */ << 9)\n : this._stencilFrontCompare + (this._stencilFrontDepthFailOp << 3) + (this._stencilFrontPassOp << 6) + (this._stencilFrontFailOp << 9);\n const depthStencilState = this._depthStencilFormat + ((this._depthTestEnabled ? this._depthCompare : 7) /* ALWAYS */ << 6) + (stencilState << 10); // stencil front - stencil back is the same\n if (this._depthStencilState !== depthStencilState) {\n this._depthStencilState = depthStencilState;\n this._states[StatePosition.DepthStencilState] = this._depthStencilState;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.DepthStencilState);\n }\n }\n _setVertexState(effect) {\n const currStateLen = this._statesLength;\n let newNumStates = StatePosition.VertexState;\n const webgpuPipelineContext = effect._pipelineContext;\n const attributes = webgpuPipelineContext.shaderProcessingContext.attributeNamesFromEffect;\n const locations = webgpuPipelineContext.shaderProcessingContext.attributeLocationsFromEffect;\n let currentGPUBuffer;\n let numVertexBuffers = 0;\n for (let index = 0; index < attributes.length; index++) {\n const location = locations[index];\n let vertexBuffer = (this._overrideVertexBuffers && this._overrideVertexBuffers[attributes[index]]) ?? this._vertexBuffers[attributes[index]];\n if (!vertexBuffer) {\n // In WebGL it's valid to not bind a vertex buffer to an attribute, but it's not valid in WebGPU\n // So we must bind a dummy buffer when we are not given one for a specific attribute\n vertexBuffer = this._emptyVertexBuffer;\n if (WebGPUCacheRenderPipeline.LogErrorIfNoVertexBuffer) {\n Logger.Error(`No vertex buffer is provided for the \"${attributes[index]}\" attribute. A default empty vertex buffer will be used, but this may generate errors in some browsers.`);\n }\n }\n const buffer = vertexBuffer.effectiveBuffer?.underlyingResource;\n // We optimize usage of GPUVertexBufferLayout: we will create a single GPUVertexBufferLayout for all the attributes which follow each other and which use the same GPU buffer\n // However, there are some constraints in the attribute.offset value range, so we must check for them before being able to reuse the same GPUVertexBufferLayout\n // See _getVertexInputDescriptor() below\n if (vertexBuffer._validOffsetRange === undefined) {\n const offset = vertexBuffer.effectiveByteOffset;\n const formatSize = vertexBuffer.getSize(true);\n const byteStride = vertexBuffer.effectiveByteStride;\n vertexBuffer._validOffsetRange =\n (offset + formatSize <= this._kMaxVertexBufferStride && byteStride === 0) || (byteStride !== 0 && offset + formatSize <= byteStride);\n }\n if (!(currentGPUBuffer && currentGPUBuffer === buffer && vertexBuffer._validOffsetRange)) {\n // we can't combine the previous vertexBuffer with the current one\n this.vertexBuffers[numVertexBuffers++] = vertexBuffer;\n currentGPUBuffer = vertexBuffer._validOffsetRange ? buffer : null;\n }\n const vid = vertexBuffer.hashCode + (location << 7);\n this._isDirty = this._isDirty || this._states[newNumStates] !== vid;\n this._states[newNumStates++] = vid;\n }\n this.vertexBuffers.length = numVertexBuffers;\n this._statesLength = newNumStates;\n this._isDirty = this._isDirty || newNumStates !== currStateLen;\n if (this._isDirty) {\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.VertexState);\n }\n }\n _setTextureState(textureState) {\n if (this._textureState !== textureState) {\n this._textureState = textureState;\n this._states[StatePosition.TextureStage] = this._textureState;\n this._isDirty = true;\n this._stateDirtyLowestIndex = Math.min(this._stateDirtyLowestIndex, StatePosition.TextureStage);\n }\n }\n _createPipelineLayout(webgpuPipelineContext) {\n if (this._useTextureStage) {\n return this._createPipelineLayoutWithTextureStage(webgpuPipelineContext);\n }\n const bindGroupLayouts = [];\n const bindGroupLayoutEntries = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries;\n for (let i = 0; i < bindGroupLayoutEntries.length; i++) {\n const setDefinition = bindGroupLayoutEntries[i];\n bindGroupLayouts[i] = this._device.createBindGroupLayout({\n entries: setDefinition,\n });\n }\n webgpuPipelineContext.bindGroupLayouts[0] = bindGroupLayouts;\n return this._device.createPipelineLayout({ bindGroupLayouts });\n }\n _createPipelineLayoutWithTextureStage(webgpuPipelineContext) {\n const shaderProcessingContext = webgpuPipelineContext.shaderProcessingContext;\n const bindGroupLayoutEntries = shaderProcessingContext.bindGroupLayoutEntries;\n let bitVal = 1;\n for (let i = 0; i < bindGroupLayoutEntries.length; i++) {\n const setDefinition = bindGroupLayoutEntries[i];\n for (let j = 0; j < setDefinition.length; j++) {\n const entry = bindGroupLayoutEntries[i][j];\n if (entry.texture) {\n const name = shaderProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding].name;\n const textureInfo = shaderProcessingContext.availableTextures[name];\n const samplerInfo = textureInfo.autoBindSampler ? shaderProcessingContext.availableSamplers[name + Constants.AUTOSAMPLERSUFFIX] : null;\n let sampleType = textureInfo.sampleType;\n let samplerType = samplerInfo?.type ?? \"filtering\" /* WebGPUConstants.SamplerBindingType.Filtering */;\n if (this._textureState & bitVal && sampleType !== \"depth\" /* WebGPUConstants.TextureSampleType.Depth */) {\n // The texture is a 32 bits float texture but the system does not support linear filtering for them OR the texture is a depth texture with \"float\" filtering:\n // we set the sampler to \"non-filtering\" and the texture sample type to \"unfilterable-float\"\n if (textureInfo.autoBindSampler) {\n samplerType = \"non-filtering\" /* WebGPUConstants.SamplerBindingType.NonFiltering */;\n }\n sampleType = \"unfilterable-float\" /* WebGPUConstants.TextureSampleType.UnfilterableFloat */;\n }\n entry.texture.sampleType = sampleType;\n if (samplerInfo) {\n const binding = shaderProcessingContext.bindGroupLayoutEntryInfo[samplerInfo.binding.groupIndex][samplerInfo.binding.bindingIndex].index;\n bindGroupLayoutEntries[samplerInfo.binding.groupIndex][binding].sampler.type = samplerType;\n }\n bitVal = bitVal << 1;\n }\n }\n }\n const bindGroupLayouts = [];\n for (let i = 0; i < bindGroupLayoutEntries.length; ++i) {\n bindGroupLayouts[i] = this._device.createBindGroupLayout({\n entries: bindGroupLayoutEntries[i],\n });\n }\n webgpuPipelineContext.bindGroupLayouts[this._textureState] = bindGroupLayouts;\n return this._device.createPipelineLayout({ bindGroupLayouts });\n }\n _getVertexInputDescriptor(effect) {\n const descriptors = [];\n const webgpuPipelineContext = effect._pipelineContext;\n const attributes = webgpuPipelineContext.shaderProcessingContext.attributeNamesFromEffect;\n const locations = webgpuPipelineContext.shaderProcessingContext.attributeLocationsFromEffect;\n let currentGPUBuffer;\n let currentGPUAttributes;\n for (let index = 0; index < attributes.length; index++) {\n const location = locations[index];\n let vertexBuffer = (this._overrideVertexBuffers && this._overrideVertexBuffers[attributes[index]]) ?? this._vertexBuffers[attributes[index]];\n if (!vertexBuffer) {\n // In WebGL it's valid to not bind a vertex buffer to an attribute, but it's not valid in WebGPU\n // So we must bind a dummy buffer when we are not given one for a specific attribute\n vertexBuffer = this._emptyVertexBuffer;\n }\n let buffer = vertexBuffer.effectiveBuffer?.underlyingResource;\n // We reuse the same GPUVertexBufferLayout for all attributes that use the same underlying GPU buffer (and for attributes that follow each other in the attributes array)\n let offset = vertexBuffer.effectiveByteOffset;\n const invalidOffsetRange = !vertexBuffer._validOffsetRange;\n if (!(currentGPUBuffer && currentGPUAttributes && currentGPUBuffer === buffer) || invalidOffsetRange) {\n const vertexBufferDescriptor = {\n arrayStride: vertexBuffer.effectiveByteStride,\n stepMode: vertexBuffer.getIsInstanced() ? \"instance\" /* WebGPUConstants.VertexStepMode.Instance */ : \"vertex\" /* WebGPUConstants.VertexStepMode.Vertex */,\n attributes: [],\n };\n descriptors.push(vertexBufferDescriptor);\n currentGPUAttributes = vertexBufferDescriptor.attributes;\n if (invalidOffsetRange) {\n offset = 0; // the offset will be set directly in the setVertexBuffer call\n buffer = null; // buffer can't be reused\n }\n }\n currentGPUAttributes.push({\n shaderLocation: location,\n offset,\n format: WebGPUCacheRenderPipeline._GetVertexInputDescriptorFormat(vertexBuffer),\n });\n currentGPUBuffer = buffer;\n }\n return descriptors;\n }\n _createRenderPipeline(effect, topology, sampleCount) {\n const webgpuPipelineContext = effect._pipelineContext;\n const inputStateDescriptor = this._getVertexInputDescriptor(effect);\n const pipelineLayout = this._createPipelineLayout(webgpuPipelineContext);\n const colorStates = [];\n const alphaBlend = this._getAphaBlendState();\n const colorBlend = this._getColorBlendState();\n if (this._vertexBuffers) {\n checkNonFloatVertexBuffers(this._vertexBuffers, effect);\n }\n if (this._mrtAttachments1 > 0) {\n for (let i = 0; i < this._mrtFormats.length; ++i) {\n const format = this._mrtFormats[i];\n if (format) {\n const descr = {\n format,\n writeMask: (this._mrtEnabledMask & (1 << i)) !== 0 ? this._writeMask : 0,\n };\n if (alphaBlend && colorBlend) {\n descr.blend = {\n alpha: alphaBlend,\n color: colorBlend,\n };\n }\n colorStates.push(descr);\n }\n else {\n colorStates.push(null);\n }\n }\n }\n else {\n if (this._webgpuColorFormat[0]) {\n const descr = {\n format: this._webgpuColorFormat[0],\n writeMask: this._writeMask,\n };\n if (alphaBlend && colorBlend) {\n descr.blend = {\n alpha: alphaBlend,\n color: colorBlend,\n };\n }\n colorStates.push(descr);\n }\n else {\n colorStates.push(null);\n }\n }\n const stencilFrontBack = {\n compare: WebGPUCacheRenderPipeline._GetCompareFunction(this._stencilEnabled ? this._stencilFrontCompare : 7 /* ALWAYS */),\n depthFailOp: WebGPUCacheRenderPipeline._GetStencilOpFunction(this._stencilEnabled ? this._stencilFrontDepthFailOp : 1 /* KEEP */),\n failOp: WebGPUCacheRenderPipeline._GetStencilOpFunction(this._stencilEnabled ? this._stencilFrontFailOp : 1 /* KEEP */),\n passOp: WebGPUCacheRenderPipeline._GetStencilOpFunction(this._stencilEnabled ? this._stencilFrontPassOp : 1 /* KEEP */),\n };\n const topologyIsTriangle = topology === \"triangle-list\" /* WebGPUConstants.PrimitiveTopology.TriangleList */ || topology === \"triangle-strip\" /* WebGPUConstants.PrimitiveTopology.TriangleStrip */;\n let stripIndexFormat = undefined;\n if (topology === \"line-strip\" /* WebGPUConstants.PrimitiveTopology.LineStrip */ || topology === \"triangle-strip\" /* WebGPUConstants.PrimitiveTopology.TriangleStrip */) {\n stripIndexFormat = !this._indexBuffer || this._indexBuffer.is32Bits ? \"uint32\" /* WebGPUConstants.IndexFormat.Uint32 */ : \"uint16\" /* WebGPUConstants.IndexFormat.Uint16 */;\n }\n const depthStencilFormatHasStencil = this._webgpuDepthStencilFormat ? WebGPUTextureHelper.HasStencilAspect(this._webgpuDepthStencilFormat) : false;\n return this._device.createRenderPipeline({\n label: `RenderPipeline_${colorStates[0]?.format ?? \"nooutput\"}_${this._webgpuDepthStencilFormat ?? \"nodepth\"}_samples${sampleCount}_textureState${this._textureState}`,\n layout: pipelineLayout,\n vertex: {\n module: webgpuPipelineContext.stages.vertexStage.module,\n entryPoint: webgpuPipelineContext.stages.vertexStage.entryPoint,\n buffers: inputStateDescriptor,\n },\n primitive: {\n topology,\n stripIndexFormat,\n frontFace: this._frontFace === 1 ? \"ccw\" /* WebGPUConstants.FrontFace.CCW */ : \"cw\" /* WebGPUConstants.FrontFace.CW */,\n cullMode: !this._cullEnabled ? \"none\" /* WebGPUConstants.CullMode.None */ : this._cullFace === 2 ? \"front\" /* WebGPUConstants.CullMode.Front */ : \"back\" /* WebGPUConstants.CullMode.Back */,\n },\n fragment: !webgpuPipelineContext.stages.fragmentStage\n ? undefined\n : {\n module: webgpuPipelineContext.stages.fragmentStage.module,\n entryPoint: webgpuPipelineContext.stages.fragmentStage.entryPoint,\n targets: colorStates,\n },\n multisample: {\n count: sampleCount,\n /*mask,\n alphaToCoverageEnabled,*/\n },\n depthStencil: this._webgpuDepthStencilFormat === undefined\n ? undefined\n : {\n depthWriteEnabled: this._depthWriteEnabled,\n depthCompare: this._depthTestEnabled ? WebGPUCacheRenderPipeline._GetCompareFunction(this._depthCompare) : \"always\" /* WebGPUConstants.CompareFunction.Always */,\n format: this._webgpuDepthStencilFormat,\n stencilFront: this._stencilEnabled && depthStencilFormatHasStencil ? stencilFrontBack : undefined,\n stencilBack: this._stencilEnabled && depthStencilFormatHasStencil ? stencilFrontBack : undefined,\n stencilReadMask: this._stencilEnabled && depthStencilFormatHasStencil ? this._stencilReadMask : undefined,\n stencilWriteMask: this._stencilEnabled && depthStencilFormatHasStencil ? this._stencilWriteMask : undefined,\n depthBias: this._depthBias,\n depthBiasClamp: topologyIsTriangle ? this._depthBiasClamp : 0,\n depthBiasSlopeScale: topologyIsTriangle ? this._depthBiasSlopeScale : 0,\n },\n });\n }\n}\nWebGPUCacheRenderPipeline.LogErrorIfNoVertexBuffer = false;\nWebGPUCacheRenderPipeline.NumCacheHitWithoutHash = 0;\nWebGPUCacheRenderPipeline.NumCacheHitWithHash = 0;\nWebGPUCacheRenderPipeline.NumCacheMiss = 0;\nWebGPUCacheRenderPipeline.NumPipelineCreationLastFrame = 0;\nWebGPUCacheRenderPipeline._NumPipelineCreationCurrentFrame = 0;\n//# sourceMappingURL=webgpuCacheRenderPipeline.js.map","import { WebGPUCacheRenderPipeline } from \"./webgpuCacheRenderPipeline\";\n/** @internal */\nclass NodeState {\n constructor() {\n this.values = {};\n }\n count() {\n let countNode = 0, countPipeline = this.pipeline ? 1 : 0;\n for (const value in this.values) {\n const node = this.values[value];\n const [childCountNodes, childCoundPipeline] = node.count();\n countNode += childCountNodes;\n countPipeline += childCoundPipeline;\n countNode++;\n }\n return [countNode, countPipeline];\n }\n}\n/** @internal */\nexport class WebGPUCacheRenderPipelineTree extends WebGPUCacheRenderPipeline {\n static GetNodeCounts() {\n const counts = WebGPUCacheRenderPipelineTree._Cache.count();\n return { nodeCount: counts[0], pipelineCount: counts[1] };\n }\n static _GetPipelines(node, pipelines, curPath, curPathLen) {\n if (node.pipeline) {\n const path = curPath.slice();\n path.length = curPathLen;\n pipelines.push(path);\n }\n for (const value in node.values) {\n const nnode = node.values[value];\n curPath[curPathLen] = parseInt(value);\n WebGPUCacheRenderPipelineTree._GetPipelines(nnode, pipelines, curPath, curPathLen + 1);\n }\n }\n static GetPipelines() {\n const pipelines = [];\n WebGPUCacheRenderPipelineTree._GetPipelines(WebGPUCacheRenderPipelineTree._Cache, pipelines, [], 0);\n return pipelines;\n }\n static ResetCache() {\n WebGPUCacheRenderPipelineTree._Cache = new NodeState();\n }\n reset() {\n this._nodeStack = [];\n this._nodeStack[0] = WebGPUCacheRenderPipelineTree._Cache;\n super.reset();\n }\n _getRenderPipeline(param) {\n let node = this._nodeStack[this._stateDirtyLowestIndex];\n for (let i = this._stateDirtyLowestIndex; i < this._statesLength; ++i) {\n let nn = node.values[this._states[i]];\n if (!nn) {\n nn = new NodeState();\n node.values[this._states[i]] = nn;\n }\n node = nn;\n this._nodeStack[i + 1] = node;\n }\n param.token = node;\n param.pipeline = node.pipeline;\n }\n _setRenderPipeline(param) {\n param.token.pipeline = param.pipeline;\n }\n}\nWebGPUCacheRenderPipelineTree._Cache = new NodeState();\n//# sourceMappingURL=webgpuCacheRenderPipelineTree.js.map","import { StencilStateComposer } from \"../../States/stencilStateComposer\";\n/**\n * @internal\n **/\nexport class WebGPUStencilStateComposer extends StencilStateComposer {\n constructor(cache) {\n super(false);\n this._cache = cache;\n this.reset();\n }\n get func() {\n return this._func;\n }\n set func(value) {\n if (this._func === value) {\n return;\n }\n this._func = value;\n this._cache.setStencilCompare(value);\n }\n get funcMask() {\n return this._funcMask;\n }\n set funcMask(value) {\n if (this._funcMask === value) {\n return;\n }\n this._funcMask = value;\n this._cache.setStencilReadMask(value);\n }\n get opStencilFail() {\n return this._opStencilFail;\n }\n set opStencilFail(value) {\n if (this._opStencilFail === value) {\n return;\n }\n this._opStencilFail = value;\n this._cache.setStencilFailOp(value);\n }\n get opDepthFail() {\n return this._opDepthFail;\n }\n set opDepthFail(value) {\n if (this._opDepthFail === value) {\n return;\n }\n this._opDepthFail = value;\n this._cache.setStencilDepthFailOp(value);\n }\n get opStencilDepthPass() {\n return this._opStencilDepthPass;\n }\n set opStencilDepthPass(value) {\n if (this._opStencilDepthPass === value) {\n return;\n }\n this._opStencilDepthPass = value;\n this._cache.setStencilPassOp(value);\n }\n get mask() {\n return this._mask;\n }\n set mask(value) {\n if (this._mask === value) {\n return;\n }\n this._mask = value;\n this._cache.setStencilWriteMask(value);\n }\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n if (this._enabled === value) {\n return;\n }\n this._enabled = value;\n this._cache.setStencilEnabled(value);\n }\n reset() {\n super.reset();\n this._cache.resetStencilState();\n }\n apply() {\n const stencilMaterialEnabled = this.stencilMaterial?.enabled;\n this.enabled = stencilMaterialEnabled ? this.stencilMaterial.enabled : this.stencilGlobal.enabled;\n if (!this.enabled) {\n return;\n }\n this.func = stencilMaterialEnabled ? this.stencilMaterial.func : this.stencilGlobal.func;\n this.funcRef = stencilMaterialEnabled ? this.stencilMaterial.funcRef : this.stencilGlobal.funcRef;\n this.funcMask = stencilMaterialEnabled ? this.stencilMaterial.funcMask : this.stencilGlobal.funcMask;\n this.opStencilFail = stencilMaterialEnabled ? this.stencilMaterial.opStencilFail : this.stencilGlobal.opStencilFail;\n this.opDepthFail = stencilMaterialEnabled ? this.stencilMaterial.opDepthFail : this.stencilGlobal.opDepthFail;\n this.opStencilDepthPass = stencilMaterialEnabled ? this.stencilMaterial.opStencilDepthPass : this.stencilGlobal.opStencilDepthPass;\n this.mask = stencilMaterialEnabled ? this.stencilMaterial.mask : this.stencilGlobal.mask;\n }\n}\n//# sourceMappingURL=webgpuStencilStateComposer.js.map","import { DepthCullingState } from \"../../States/depthCullingState\";\n/**\n * @internal\n **/\nexport class WebGPUDepthCullingState extends DepthCullingState {\n /**\n * Initializes the state.\n * @param cache\n */\n constructor(cache) {\n super(false);\n this._cache = cache;\n this.reset();\n }\n get zOffset() {\n return this._zOffset;\n }\n set zOffset(value) {\n if (this._zOffset === value) {\n return;\n }\n this._zOffset = value;\n this._isZOffsetDirty = true;\n this._cache.setDepthBiasSlopeScale(value);\n }\n get zOffsetUnits() {\n return this._zOffsetUnits;\n }\n set zOffsetUnits(value) {\n if (this._zOffsetUnits === value) {\n return;\n }\n this._zOffsetUnits = value;\n this._isZOffsetDirty = true;\n this._cache.setDepthBias(value);\n }\n get cullFace() {\n return this._cullFace;\n }\n set cullFace(value) {\n if (this._cullFace === value) {\n return;\n }\n this._cullFace = value;\n this._isCullFaceDirty = true;\n this._cache.setCullFace(value ?? 1);\n }\n get cull() {\n return this._cull;\n }\n set cull(value) {\n if (this._cull === value) {\n return;\n }\n this._cull = value;\n this._isCullDirty = true;\n this._cache.setCullEnabled(!!value);\n }\n get depthFunc() {\n return this._depthFunc;\n }\n set depthFunc(value) {\n if (this._depthFunc === value) {\n return;\n }\n this._depthFunc = value;\n this._isDepthFuncDirty = true;\n this._cache.setDepthCompare(value);\n }\n get depthMask() {\n return this._depthMask;\n }\n set depthMask(value) {\n if (this._depthMask === value) {\n return;\n }\n this._depthMask = value;\n this._isDepthMaskDirty = true;\n this._cache.setDepthWriteEnabled(value);\n }\n get depthTest() {\n return this._depthTest;\n }\n set depthTest(value) {\n if (this._depthTest === value) {\n return;\n }\n this._depthTest = value;\n this._isDepthTestDirty = true;\n this._cache.setDepthTestEnabled(value);\n }\n get frontFace() {\n return this._frontFace;\n }\n set frontFace(value) {\n if (this._frontFace === value) {\n return;\n }\n this._frontFace = value;\n this._isFrontFaceDirty = true;\n this._cache.setFrontFace(value ?? 2);\n }\n reset() {\n super.reset();\n this._cache.resetDepthCullingState();\n }\n apply() {\n // nothing to do\n }\n}\n//# sourceMappingURL=webgpuDepthCullingState.js.map","import { Constants } from \"../../Engines/constants\";\nimport { InternalTexture } from \"./internalTexture\";\n/**\n * Class used to store an external texture (like GPUExternalTexture in WebGPU)\n */\nexport class ExternalTexture {\n /**\n * Checks if a texture is an external or internal texture\n * @param texture the external or internal texture\n * @returns true if the texture is an external texture, else false\n */\n static IsExternalTexture(texture) {\n return texture.underlyingResource !== undefined;\n }\n /**\n * Get the class name of the texture.\n * @returns \"ExternalTexture\"\n */\n getClassName() {\n return \"ExternalTexture\";\n }\n /**\n * Gets the underlying texture object\n */\n get underlyingResource() {\n return this._video;\n }\n /**\n * Constructs the texture\n * @param video The video the texture should be wrapped around\n */\n constructor(video) {\n /**\n * Gets a boolean indicating if the texture uses mipmaps\n */\n this.useMipMaps = false;\n /**\n * The type of the underlying texture is implementation dependent, so return \"UNDEFINED\" for the type\n */\n this.type = Constants.TEXTURETYPE_UNDEFINED;\n /**\n * The format of the underlying texture is implementation dependent, so return \"UNDEFINED\" for the format\n */\n this.format = Constants.TEXTUREFORMAT_UNDEFINED;\n this._video = video;\n this.uniqueId = InternalTexture._Counter++;\n }\n /**\n * Get if the texture is ready to be used (downloaded, converted, mip mapped...).\n * @returns true if fully ready\n */\n isReady() {\n return this._video.readyState >= this._video.HAVE_CURRENT_DATA;\n }\n /**\n * Dispose the texture and release its associated resources.\n */\n dispose() { }\n}\n//# sourceMappingURL=externalTexture.js.map","/* eslint-disable babylonjs/available */\n/* eslint-disable jsdoc/require-jsdoc */\nimport { ExternalTexture } from \"../../Materials/Textures/externalTexture\";\nimport { Constants } from \"../constants\";\nimport { WebGPUCacheSampler } from \"./webgpuCacheSampler\";\n/** @internal */\nexport class WebGPUMaterialContext {\n get forceBindGroupCreation() {\n // If there is at least one external texture to bind, we must recreate the bind groups each time\n // because we need to retrieve a new texture each frame (by calling device.importExternalTexture)\n return this._numExternalTextures > 0;\n }\n get hasFloatOrDepthTextures() {\n return this._numFloatOrDepthTextures > 0;\n }\n constructor() {\n this.uniqueId = WebGPUMaterialContext._Counter++;\n this.updateId = 0;\n this.textureState = 0;\n this.reset();\n }\n reset() {\n this.samplers = {};\n this.textures = {};\n this.isDirty = true;\n this._numFloatOrDepthTextures = 0;\n this._numExternalTextures = 0;\n }\n setSampler(name, sampler) {\n let samplerCache = this.samplers[name];\n let currentHashCode = -1;\n if (!samplerCache) {\n this.samplers[name] = samplerCache = { sampler, hashCode: 0 };\n }\n else {\n currentHashCode = samplerCache.hashCode;\n }\n samplerCache.sampler = sampler;\n samplerCache.hashCode = sampler ? WebGPUCacheSampler.GetSamplerHashCode(sampler) : 0;\n const isDirty = currentHashCode !== samplerCache.hashCode;\n if (isDirty) {\n this.updateId++;\n }\n this.isDirty ||= isDirty;\n }\n setTexture(name, texture) {\n let textureCache = this.textures[name];\n let currentTextureId = -1;\n if (!textureCache) {\n this.textures[name] = textureCache = { texture, isFloatOrDepthTexture: false, isExternalTexture: false };\n }\n else {\n currentTextureId = textureCache.texture?.uniqueId ?? -1;\n }\n if (textureCache.isExternalTexture) {\n this._numExternalTextures--;\n }\n if (textureCache.isFloatOrDepthTexture) {\n this._numFloatOrDepthTextures--;\n }\n if (texture) {\n textureCache.isFloatOrDepthTexture =\n texture.type === Constants.TEXTURETYPE_FLOAT ||\n (texture.format >= Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 && texture.format <= Constants.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8);\n textureCache.isExternalTexture = ExternalTexture.IsExternalTexture(texture);\n if (textureCache.isFloatOrDepthTexture) {\n this._numFloatOrDepthTextures++;\n }\n if (textureCache.isExternalTexture) {\n this._numExternalTextures++;\n }\n }\n else {\n textureCache.isFloatOrDepthTexture = false;\n textureCache.isExternalTexture = false;\n }\n textureCache.texture = texture;\n const isDirty = currentTextureId !== (texture?.uniqueId ?? -1);\n if (isDirty) {\n this.updateId++;\n }\n this.isDirty ||= isDirty;\n }\n}\nWebGPUMaterialContext._Counter = 0;\n//# sourceMappingURL=webgpuMaterialContext.js.map","import * as WebGPUConstants from \"./webgpuConstants\";\n/** @internal */\nexport class WebGPUDrawContext {\n isDirty(materialContextUpdateId) {\n return this._isDirty || this._materialContextUpdateId !== materialContextUpdateId;\n }\n resetIsDirty(materialContextUpdateId) {\n this._isDirty = false;\n this._materialContextUpdateId = materialContextUpdateId;\n }\n get useInstancing() {\n return this._useInstancing;\n }\n set useInstancing(use) {\n if (this._useInstancing === use) {\n return;\n }\n if (!use) {\n if (this.indirectDrawBuffer) {\n this._bufferManager.releaseBuffer(this.indirectDrawBuffer);\n }\n this.indirectDrawBuffer = undefined;\n this._indirectDrawData = undefined;\n }\n else {\n this.indirectDrawBuffer = this._bufferManager.createRawBuffer(20, WebGPUConstants.BufferUsage.CopyDst | WebGPUConstants.BufferUsage.Indirect | WebGPUConstants.BufferUsage.Storage, undefined, \"IndirectDrawBuffer\");\n this._indirectDrawData = new Uint32Array(5);\n this._indirectDrawData[3] = 0;\n this._indirectDrawData[4] = 0;\n }\n this._useInstancing = use;\n this._currentInstanceCount = -1;\n }\n constructor(bufferManager) {\n this._bufferManager = bufferManager;\n this.uniqueId = WebGPUDrawContext._Counter++;\n this._useInstancing = false;\n this._currentInstanceCount = 0;\n this.reset();\n }\n reset() {\n this.buffers = {};\n this._isDirty = true;\n this._materialContextUpdateId = 0;\n this.fastBundle = undefined;\n this.bindGroups = undefined;\n }\n setBuffer(name, buffer) {\n this._isDirty ||= buffer?.uniqueId !== this.buffers[name]?.uniqueId;\n this.buffers[name] = buffer;\n }\n setIndirectData(indexOrVertexCount, instanceCount, firstIndexOrVertex) {\n if (instanceCount === this._currentInstanceCount || !this.indirectDrawBuffer || !this._indirectDrawData) {\n // The current buffer is already up to date so do nothing\n // Note that we only check for instanceCount and not indexOrVertexCount nor firstIndexOrVertex because those values\n // are supposed to not change during the lifetime of a draw context\n return;\n }\n this._currentInstanceCount = instanceCount;\n this._indirectDrawData[0] = indexOrVertexCount;\n this._indirectDrawData[1] = instanceCount;\n this._indirectDrawData[2] = firstIndexOrVertex;\n this._bufferManager.setRawData(this.indirectDrawBuffer, 0, this._indirectDrawData, 0, 20);\n }\n dispose() {\n if (this.indirectDrawBuffer) {\n this._bufferManager.releaseBuffer(this.indirectDrawBuffer);\n this.indirectDrawBuffer = undefined;\n this._indirectDrawData = undefined;\n }\n this.fastBundle = undefined;\n this.bindGroups = undefined;\n this.buffers = undefined;\n }\n}\nWebGPUDrawContext._Counter = 0;\n//# sourceMappingURL=webgpuDrawContext.js.map","/* eslint-disable babylonjs/available */\n/* eslint-disable jsdoc/require-jsdoc */\nimport { Logger } from \"../../Misc/logger\";\n/**\n * Sampler hash codes are 19 bits long, so using a start value of 2^20 for buffer ids will ensure we can't have any collision with the sampler hash codes\n */\nconst bufferIdStart = 1 << 20;\n/**\n * textureIdStart is added to texture ids to ensure we can't have any collision with the buffer ids / sampler hash codes.\n * 2^35 for textureIdStart means we can have:\n * - 2^(35-20) = 2^15 = 32768 possible buffer ids\n * - 2^(53-35) = 2^18 = 524288 possible texture ids\n */\nconst textureIdStart = 2 ** 35;\nclass WebGPUBindGroupCacheNode {\n constructor() {\n this.values = {};\n }\n}\n/** @internal */\nexport class WebGPUCacheBindGroups {\n static get Statistics() {\n return {\n totalCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedTotal,\n lastFrameCreated: WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame,\n lookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame,\n noLookupLastFrame: WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame,\n };\n }\n static ResetCache() {\n WebGPUCacheBindGroups._Cache = new WebGPUBindGroupCacheNode();\n WebGPUCacheBindGroups.NumBindGroupsCreatedTotal = 0;\n WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame = 0;\n WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame = 0;\n WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame = 0;\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame = 0;\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame = 0;\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame = 0;\n }\n constructor(device, cacheSampler, engine) {\n this.disabled = false;\n this._device = device;\n this._cacheSampler = cacheSampler;\n this._engine = engine;\n }\n endFrame() {\n WebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame = WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame;\n WebGPUCacheBindGroups.NumBindGroupsLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame;\n WebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame = WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame;\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame = 0;\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame = 0;\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame = 0;\n }\n /**\n * Cache is currently based on the uniform/storage buffers, samplers and textures used by the binding groups.\n * Note that all uniform buffers have an offset of 0 in Babylon and we don't have a use case where we would have the same buffer used with different capacity values:\n * that means we don't need to factor in the offset/size of the buffer in the cache, only the id\n * @param webgpuPipelineContext\n * @param drawContext\n * @param materialContext\n * @returns a bind group array\n */\n getBindGroups(webgpuPipelineContext, drawContext, materialContext) {\n let bindGroups = undefined;\n let node = WebGPUCacheBindGroups._Cache;\n const cacheIsDisabled = this.disabled || materialContext.forceBindGroupCreation;\n if (!cacheIsDisabled) {\n if (!drawContext.isDirty(materialContext.updateId) && !materialContext.isDirty) {\n WebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame++;\n return drawContext.bindGroups;\n }\n for (const bufferName of webgpuPipelineContext.shaderProcessingContext.bufferNames) {\n const uboId = (drawContext.buffers[bufferName]?.uniqueId ?? 0) + bufferIdStart;\n let nextNode = node.values[uboId];\n if (!nextNode) {\n nextNode = new WebGPUBindGroupCacheNode();\n node.values[uboId] = nextNode;\n }\n node = nextNode;\n }\n for (const samplerName of webgpuPipelineContext.shaderProcessingContext.samplerNames) {\n const samplerHashCode = materialContext.samplers[samplerName]?.hashCode ?? 0;\n let nextNode = node.values[samplerHashCode];\n if (!nextNode) {\n nextNode = new WebGPUBindGroupCacheNode();\n node.values[samplerHashCode] = nextNode;\n }\n node = nextNode;\n }\n for (const textureName of webgpuPipelineContext.shaderProcessingContext.textureNames) {\n const textureId = (materialContext.textures[textureName]?.texture?.uniqueId ?? 0) + textureIdStart;\n let nextNode = node.values[textureId];\n if (!nextNode) {\n nextNode = new WebGPUBindGroupCacheNode();\n node.values[textureId] = nextNode;\n }\n node = nextNode;\n }\n bindGroups = node.bindGroups;\n }\n drawContext.resetIsDirty(materialContext.updateId);\n materialContext.isDirty = false;\n if (bindGroups) {\n drawContext.bindGroups = bindGroups;\n WebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame++;\n return bindGroups;\n }\n bindGroups = [];\n drawContext.bindGroups = bindGroups;\n if (!cacheIsDisabled) {\n node.bindGroups = bindGroups;\n }\n WebGPUCacheBindGroups.NumBindGroupsCreatedTotal++;\n WebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame++;\n const bindGroupLayouts = webgpuPipelineContext.bindGroupLayouts[materialContext.textureState];\n for (let i = 0; i < webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries.length; i++) {\n const setDefinition = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i];\n const entries = webgpuPipelineContext.shaderProcessingContext.bindGroupEntries[i];\n for (let j = 0; j < setDefinition.length; j++) {\n const entry = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntries[i][j];\n const entryInfo = webgpuPipelineContext.shaderProcessingContext.bindGroupLayoutEntryInfo[i][entry.binding];\n const name = entryInfo.nameInArrayOfTexture ?? entryInfo.name;\n if (entry.sampler) {\n const bindingInfo = materialContext.samplers[name];\n if (bindingInfo) {\n const sampler = bindingInfo.sampler;\n if (!sampler) {\n if (this._engine.dbgSanityChecks) {\n Logger.Error(`Trying to bind a null sampler! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key, value) => (key === \"texture\" ? \"<no dump>\" : value))}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\n }\n continue;\n }\n entries[j].resource = this._cacheSampler.getSampler(sampler, false, bindingInfo.hashCode, sampler.label);\n }\n else {\n Logger.Error(`Sampler \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key, value) => key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value)}`, 50);\n }\n }\n else if (entry.texture || entry.storageTexture) {\n const bindingInfo = materialContext.textures[name];\n if (bindingInfo) {\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\n Logger.Error(`Trying to bind a null texture! entry=${JSON.stringify(entry)}, bindingInfo=${JSON.stringify(bindingInfo, (key, value) => key === \"texture\" ? \"<no dump>\" : value)}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\n continue;\n }\n const hardwareTexture = bindingInfo.texture._hardwareTexture;\n if (this._engine.dbgSanityChecks &&\n (!hardwareTexture || (entry.texture && !hardwareTexture.view) || (entry.storageTexture && !hardwareTexture.viewForWriting))) {\n Logger.Error(`Trying to bind a null gpu texture or view! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key, value) => (key === \"texture\" ? \"<no dump>\" : value))}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\n continue;\n }\n entries[j].resource = entry.storageTexture ? hardwareTexture.viewForWriting : hardwareTexture.view;\n }\n else {\n Logger.Error(`Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key, value) => key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value)}`, 50);\n }\n }\n else if (entry.externalTexture) {\n const bindingInfo = materialContext.textures[name];\n if (bindingInfo) {\n if (this._engine.dbgSanityChecks && bindingInfo.texture === null) {\n Logger.Error(`Trying to bind a null external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key, value) => (key === \"texture\" ? \"<no dump>\" : value))}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\n continue;\n }\n const externalTexture = bindingInfo.texture.underlyingResource;\n if (this._engine.dbgSanityChecks && !externalTexture) {\n Logger.Error(`Trying to bind a null gpu external texture! entry=${JSON.stringify(entry)}, name=${name}, bindingInfo=${JSON.stringify(bindingInfo, (key, value) => (key === \"texture\" ? \"<no dump>\" : value))}, isReady=${bindingInfo.texture?.isReady}, materialContext.uniqueId=${materialContext.uniqueId}`, 50);\n continue;\n }\n entries[j].resource = this._device.importExternalTexture({ source: externalTexture });\n }\n else {\n Logger.Error(`Texture \"${name}\" could not be bound. entry=${JSON.stringify(entry)}, materialContext=${JSON.stringify(materialContext, (key, value) => key === \"texture\" || key === \"sampler\" ? \"<no dump>\" : value)}`, 50);\n }\n }\n else if (entry.buffer) {\n const dataBuffer = drawContext.buffers[name];\n if (dataBuffer) {\n const webgpuBuffer = dataBuffer.underlyingResource;\n entries[j].resource.buffer = webgpuBuffer;\n entries[j].resource.size = dataBuffer.capacity;\n }\n else {\n Logger.Error(`Can't find buffer \"${name}\". entry=${JSON.stringify(entry)}, buffers=${JSON.stringify(drawContext.buffers)}, drawContext.uniqueId=${drawContext.uniqueId}`, 50);\n }\n }\n }\n const groupLayout = bindGroupLayouts[i];\n bindGroups[i] = this._device.createBindGroup({\n layout: groupLayout,\n entries,\n });\n }\n return bindGroups;\n }\n}\nWebGPUCacheBindGroups.NumBindGroupsCreatedTotal = 0;\nWebGPUCacheBindGroups.NumBindGroupsCreatedLastFrame = 0;\nWebGPUCacheBindGroups.NumBindGroupsLookupLastFrame = 0;\nWebGPUCacheBindGroups.NumBindGroupsNoLookupLastFrame = 0;\nWebGPUCacheBindGroups._Cache = new WebGPUBindGroupCacheNode();\nWebGPUCacheBindGroups._NumBindGroupsCreatedCurrentFrame = 0;\nWebGPUCacheBindGroups._NumBindGroupsLookupCurrentFrame = 0;\nWebGPUCacheBindGroups._NumBindGroupsNoLookupCurrentFrame = 0;\n//# sourceMappingURL=webgpuCacheBindGroups.js.map","// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nconst name = \"clearQuadVertexShader\";\nconst shader = `uniform depthValue: f32;const pos=array(\nvec2f(-1.0,1.0),\nvec2f(1.0,1.0),\nvec2f(-1.0,-1.0),\nvec2f(1.0,-1.0)\n);\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvertexOutputs.position=vec4f(pos[input.vertexIndex],uniforms.depthValue,1.0);\n#define CUSTOM_VERTEX_MAIN_END\n}\n`;\n// Sideeffect\nShaderStore.ShadersStoreWGSL[name] = shader;\n/** @internal */\nexport const clearQuadVertexShaderWGSL = { name, shader };\n//# sourceMappingURL=clearQuad.vertex.js.map","// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nconst name = \"clearQuadPixelShader\";\nconst shader = `uniform color: vec4f;@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=uniforms.color;}\n`;\n// Sideeffect\nShaderStore.ShadersStoreWGSL[name] = shader;\n/** @internal */\nexport const clearQuadPixelShaderWGSL = { name, shader };\n//# sourceMappingURL=clearQuad.fragment.js.map","import { Constants } from \"../constants\";\nimport { WebGPUCacheRenderPipelineTree } from \"./webgpuCacheRenderPipelineTree\";\nimport { WebGPUShaderProcessingContext } from \"./webgpuShaderProcessingContext\";\nimport { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\nimport { renderableTextureFormatToIndex } from \"./webgpuTextureManager\";\nimport \"../../ShadersWGSL/clearQuad.vertex\";\nimport \"../../ShadersWGSL/clearQuad.fragment\";\n/** @internal */\nexport class WebGPUClearQuad {\n setDepthStencilFormat(format) {\n this._depthTextureFormat = format;\n this._cacheRenderPipeline.setDepthStencilFormat(format);\n }\n setColorFormat(format) {\n this._cacheRenderPipeline.setColorFormat(format);\n }\n setMRTAttachments(attachments, textureArray, textureCount) {\n this._cacheRenderPipeline.setMRT(textureArray, textureCount);\n this._cacheRenderPipeline.setMRTAttachments(attachments);\n }\n constructor(device, engine, emptyVertexBuffer) {\n this._bindGroups = {};\n this._bundleCache = {};\n this._keyTemp = [];\n this._device = device;\n this._engine = engine;\n this._cacheRenderPipeline = new WebGPUCacheRenderPipelineTree(this._device, emptyVertexBuffer);\n this._cacheRenderPipeline.setDepthTestEnabled(false);\n this._cacheRenderPipeline.setStencilReadMask(0xff);\n this._effect = engine.createEffect(\"clearQuad\", [], [\"color\", \"depthValue\"], undefined, undefined, undefined, undefined, undefined, undefined, 1 /* ShaderLanguage.WGSL */);\n }\n clear(renderPass, clearColor, clearDepth, clearStencil, sampleCount = 1) {\n let renderPass2;\n let bundle = null;\n let bundleKey;\n const isRTTPass = !!this._engine._currentRenderTarget;\n if (renderPass) {\n renderPass2 = renderPass;\n }\n else {\n let idx = 0;\n this._keyTemp.length = 0;\n for (let i = 0; i < this._cacheRenderPipeline.colorFormats.length; ++i) {\n this._keyTemp[idx++] = renderableTextureFormatToIndex[this._cacheRenderPipeline.colorFormats[i] ?? \"\"];\n }\n const depthStencilFormatIndex = renderableTextureFormatToIndex[this._depthTextureFormat ?? 0];\n this._keyTemp[idx] =\n (clearColor ? clearColor.r + clearColor.g * 256 + clearColor.b * 256 * 256 + clearColor.a * 256 * 256 * 256 : 0) +\n (clearDepth ? 2 ** 32 : 0) +\n (clearStencil ? 2 ** 33 : 0) +\n (this._engine.useReverseDepthBuffer ? 2 ** 34 : 0) +\n (isRTTPass ? 2 ** 35 : 0) +\n (sampleCount > 1 ? 2 ** 36 : 0) +\n depthStencilFormatIndex * 2 ** 37;\n bundleKey = this._keyTemp.join(\"_\");\n bundle = this._bundleCache[bundleKey];\n if (bundle) {\n return bundle;\n }\n renderPass2 = this._device.createRenderBundleEncoder({\n label: \"clearQuadRenderBundle\",\n colorFormats: this._cacheRenderPipeline.colorFormats,\n depthStencilFormat: this._depthTextureFormat,\n sampleCount: WebGPUTextureHelper.GetSample(sampleCount),\n });\n }\n this._cacheRenderPipeline.setDepthWriteEnabled(!!clearDepth);\n this._cacheRenderPipeline.setStencilEnabled(!!clearStencil && !!this._depthTextureFormat && WebGPUTextureHelper.HasStencilAspect(this._depthTextureFormat));\n this._cacheRenderPipeline.setStencilWriteMask(clearStencil ? 0xff : 0);\n this._cacheRenderPipeline.setStencilCompare(clearStencil ? Constants.ALWAYS : Constants.NEVER);\n this._cacheRenderPipeline.setStencilPassOp(clearStencil ? Constants.REPLACE : Constants.KEEP);\n this._cacheRenderPipeline.setWriteMask(clearColor ? 0xf : 0);\n const pipeline = this._cacheRenderPipeline.getRenderPipeline(Constants.MATERIAL_TriangleStripDrawMode, this._effect, sampleCount);\n const webgpuPipelineContext = this._effect._pipelineContext;\n if (clearColor) {\n this._effect.setDirectColor4(\"color\", clearColor);\n }\n this._effect.setFloat(\"depthValue\", this._engine.useReverseDepthBuffer ? this._engine._clearReverseDepthValue : this._engine._clearDepthValue);\n webgpuPipelineContext.uniformBuffer.update();\n const bufferInternals = isRTTPass ? this._engine._ubInvertY : this._engine._ubDontInvertY;\n const bufferLeftOver = webgpuPipelineContext.uniformBuffer.getBuffer();\n const key = bufferLeftOver.uniqueId + \"-\" + bufferInternals.uniqueId;\n let bindGroups = this._bindGroups[key];\n if (!bindGroups) {\n const bindGroupLayouts = webgpuPipelineContext.bindGroupLayouts[0];\n bindGroups = this._bindGroups[key] = [];\n bindGroups.push(this._device.createBindGroup({\n label: `clearQuadBindGroup0-${key}`,\n layout: bindGroupLayouts[0],\n entries: [],\n }));\n if (!WebGPUShaderProcessingContext._SimplifiedKnownBindings) {\n bindGroups.push(this._device.createBindGroup({\n label: `clearQuadBindGroup1-${key}`,\n layout: bindGroupLayouts[1],\n entries: [],\n }));\n }\n bindGroups.push(this._device.createBindGroup({\n label: `clearQuadBindGroup${WebGPUShaderProcessingContext._SimplifiedKnownBindings ? 1 : 2}-${key}`,\n layout: bindGroupLayouts[WebGPUShaderProcessingContext._SimplifiedKnownBindings ? 1 : 2],\n entries: [\n {\n binding: 0,\n resource: {\n buffer: bufferInternals.underlyingResource,\n size: bufferInternals.capacity,\n },\n },\n {\n binding: 1,\n resource: {\n buffer: bufferLeftOver.underlyingResource,\n size: bufferLeftOver.capacity,\n },\n },\n ],\n }));\n }\n renderPass2.setPipeline(pipeline);\n for (let i = 0; i < bindGroups.length; ++i) {\n renderPass2.setBindGroup(i, bindGroups[i]);\n }\n renderPass2.draw(4, 1, 0, 0);\n if (!renderPass) {\n bundle = renderPass2.finish();\n this._bundleCache[bundleKey] = bundle;\n }\n return bundle;\n }\n}\n//# sourceMappingURL=webgpuClearQuad.js.map","import { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\n/** @internal */\nexport class WebGPURenderItemViewport {\n constructor(x, y, w, h) {\n this.x = Math.floor(x);\n this.y = Math.floor(y);\n this.w = Math.floor(w);\n this.h = Math.floor(h);\n }\n run(renderPass) {\n renderPass.setViewport(this.x, this.y, this.w, this.h, 0, 1);\n }\n clone() {\n return new WebGPURenderItemViewport(this.x, this.y, this.w, this.h);\n }\n}\n/** @internal */\nexport class WebGPURenderItemScissor {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n this.w = w;\n this.h = h;\n }\n run(renderPass) {\n renderPass.setScissorRect(this.x, this.y, this.w, this.h);\n }\n clone() {\n return new WebGPURenderItemScissor(this.x, this.y, this.w, this.h);\n }\n}\n/** @internal */\nexport class WebGPURenderItemStencilRef {\n constructor(ref) {\n this.ref = ref;\n }\n run(renderPass) {\n renderPass.setStencilReference(this.ref);\n }\n clone() {\n return new WebGPURenderItemStencilRef(this.ref);\n }\n}\n/** @internal */\nexport class WebGPURenderItemBlendColor {\n constructor(color) {\n this.color = color;\n }\n run(renderPass) {\n renderPass.setBlendConstant(this.color);\n }\n clone() {\n return new WebGPURenderItemBlendColor(this.color);\n }\n}\n/** @internal */\nexport class WebGPURenderItemBeginOcclusionQuery {\n constructor(query) {\n this.query = query;\n }\n run(renderPass) {\n renderPass.beginOcclusionQuery(this.query);\n }\n clone() {\n return new WebGPURenderItemBeginOcclusionQuery(this.query);\n }\n}\n/** @internal */\nexport class WebGPURenderItemEndOcclusionQuery {\n constructor() { }\n run(renderPass) {\n renderPass.endOcclusionQuery();\n }\n clone() {\n return new WebGPURenderItemEndOcclusionQuery();\n }\n}\nclass WebGPURenderItemBundles {\n constructor() {\n this.bundles = [];\n }\n run(renderPass) {\n renderPass.executeBundles(this.bundles);\n }\n clone() {\n const cloned = new WebGPURenderItemBundles();\n cloned.bundles = this.bundles;\n return cloned;\n }\n}\n/** @internal */\nexport class WebGPUBundleList {\n constructor(device) {\n this.numDrawCalls = 0;\n this._device = device;\n this._list = new Array(10);\n this._listLength = 0;\n }\n addBundle(bundle) {\n if (!this._currentItemIsBundle) {\n const item = new WebGPURenderItemBundles();\n this._list[this._listLength++] = item;\n this._currentBundleList = item.bundles;\n this._currentItemIsBundle = true;\n }\n if (bundle) {\n this._currentBundleList.push(bundle);\n }\n }\n _finishBundle() {\n if (this._currentItemIsBundle && this._bundleEncoder) {\n this._currentBundleList.push(this._bundleEncoder.finish());\n this._bundleEncoder = undefined;\n this._currentItemIsBundle = false;\n }\n }\n addItem(item) {\n this._finishBundle();\n this._list[this._listLength++] = item;\n this._currentItemIsBundle = false;\n }\n getBundleEncoder(colorFormats, depthStencilFormat, sampleCount) {\n if (!this._currentItemIsBundle) {\n this.addBundle();\n this._bundleEncoder = this._device.createRenderBundleEncoder({\n colorFormats,\n depthStencilFormat,\n sampleCount: WebGPUTextureHelper.GetSample(sampleCount),\n });\n }\n return this._bundleEncoder;\n }\n close() {\n this._finishBundle();\n }\n run(renderPass) {\n this.close();\n for (let i = 0; i < this._listLength; ++i) {\n this._list[i].run(renderPass);\n }\n }\n reset() {\n this._listLength = 0;\n this._currentItemIsBundle = false;\n this.numDrawCalls = 0;\n }\n clone() {\n this.close();\n const cloned = new WebGPUBundleList(this._device);\n cloned._list = new Array(this._listLength);\n cloned._listLength = this._listLength;\n cloned.numDrawCalls = this.numDrawCalls;\n for (let i = 0; i < this._listLength; ++i) {\n cloned._list[i] = this._list[i].clone();\n }\n return cloned;\n }\n}\n//# sourceMappingURL=webgpuBundleList.js.map","import * as WebGPUConstants from \"./webgpuConstants\";\n/** @internal */\nexport class WebGPUQuerySet {\n get querySet() {\n return this._querySet;\n }\n constructor(engine, count, type, device, bufferManager, canUseMultipleBuffers = true, label) {\n this._dstBuffers = [];\n this._engine = engine;\n this._device = device;\n this._bufferManager = bufferManager;\n this._count = count;\n this._canUseMultipleBuffers = canUseMultipleBuffers;\n this._querySet = device.createQuerySet({\n label: label ?? \"QuerySet\",\n type,\n count,\n });\n this._queryBuffer = bufferManager.createRawBuffer(8 * count, WebGPUConstants.BufferUsage.QueryResolve | WebGPUConstants.BufferUsage.CopySrc, undefined, \"QueryBuffer\");\n if (!canUseMultipleBuffers) {\n this._dstBuffers.push(this._bufferManager.createRawBuffer(8 * this._count, WebGPUConstants.BufferUsage.MapRead | WebGPUConstants.BufferUsage.CopyDst, undefined, \"QueryBufferNoMultipleBuffers\"));\n }\n }\n _getBuffer(firstQuery, queryCount) {\n if (!this._canUseMultipleBuffers && this._dstBuffers.length === 0) {\n return null;\n }\n const encoderResult = this._device.createCommandEncoder();\n let buffer;\n if (this._dstBuffers.length === 0) {\n buffer = this._bufferManager.createRawBuffer(8 * this._count, WebGPUConstants.BufferUsage.MapRead | WebGPUConstants.BufferUsage.CopyDst, undefined, \"QueryBufferAdditionalBuffer\");\n }\n else {\n buffer = this._dstBuffers[this._dstBuffers.length - 1];\n this._dstBuffers.length--;\n }\n encoderResult.resolveQuerySet(this._querySet, firstQuery, queryCount, this._queryBuffer, 0);\n encoderResult.copyBufferToBuffer(this._queryBuffer, 0, buffer, 0, 8 * queryCount);\n this._device.queue.submit([encoderResult.finish()]);\n return buffer;\n }\n async readValues(firstQuery = 0, queryCount = 1) {\n const buffer = this._getBuffer(firstQuery, queryCount);\n if (buffer === null) {\n return null;\n }\n const engineId = this._engine.uniqueId;\n return buffer.mapAsync(1 /* WebGPUConstants.MapMode.Read */).then(() => {\n const arrayBuf = new BigUint64Array(buffer.getMappedRange()).slice();\n buffer.unmap();\n this._dstBuffers[this._dstBuffers.length] = buffer;\n return arrayBuf;\n }, (err) => {\n if (this._engine.isDisposed || this._engine.uniqueId !== engineId) {\n // Engine disposed or context loss/restoration\n return null;\n }\n throw err;\n });\n }\n async readValue(firstQuery = 0) {\n const buffer = this._getBuffer(firstQuery, 1);\n if (buffer === null) {\n return null;\n }\n const engineId = this._engine.uniqueId;\n return buffer.mapAsync(1 /* WebGPUConstants.MapMode.Read */).then(() => {\n const arrayBuf = new BigUint64Array(buffer.getMappedRange());\n const value = Number(arrayBuf[0]);\n buffer.unmap();\n this._dstBuffers[this._dstBuffers.length] = buffer;\n return value;\n }, (err) => {\n if (this._engine.isDisposed || this._engine.uniqueId !== engineId) {\n // Engine disposed or context loss/restoration\n return 0;\n }\n throw err;\n });\n }\n async readTwoValuesAndSubtract(firstQuery = 0) {\n const buffer = this._getBuffer(firstQuery, 2);\n if (buffer === null) {\n return null;\n }\n const engineId = this._engine.uniqueId;\n return buffer.mapAsync(1 /* WebGPUConstants.MapMode.Read */).then(() => {\n const arrayBuf = new BigUint64Array(buffer.getMappedRange());\n const value = Number(arrayBuf[1] - arrayBuf[0]);\n buffer.unmap();\n this._dstBuffers[this._dstBuffers.length] = buffer;\n return value;\n }, (err) => {\n if (this._engine.isDisposed || this._engine.uniqueId !== engineId) {\n // Engine disposed or context loss/restoration\n return 0;\n }\n throw err;\n });\n }\n dispose() {\n this._querySet.destroy();\n this._bufferManager.releaseBuffer(this._queryBuffer);\n for (let i = 0; i < this._dstBuffers.length; ++i) {\n this._bufferManager.releaseBuffer(this._dstBuffers[i]);\n }\n }\n}\n//# sourceMappingURL=webgpuQuerySet.js.map","import { PerfCounter } from \"../../Misc/perfCounter\";\nimport { WebGPUQuerySet } from \"./webgpuQuerySet\";\nimport { Logger } from \"core/Misc/logger\";\n/** @internal */\nexport class WebGPUTimestampQuery {\n get gpuFrameTimeCounter() {\n return this._gpuFrameTimeCounter;\n }\n constructor(engine, device, bufferManager) {\n this._enabled = false;\n this._gpuFrameTimeCounter = new PerfCounter();\n this._measureDurationState = 0;\n this._engine = engine;\n this._device = device;\n this._bufferManager = bufferManager;\n }\n get enable() {\n return this._enabled;\n }\n set enable(value) {\n if (this._enabled === value) {\n return;\n }\n this._enabled = value;\n this._measureDurationState = 0;\n if (value) {\n try {\n this._measureDuration = new WebGPUDurationMeasure(this._engine, this._device, this._bufferManager, 2000, \"QuerySet_TimestampQuery\");\n }\n catch (e) {\n this._enabled = false;\n Logger.Error(\"Could not create a WebGPUDurationMeasure!\\nError: \" + e.message + \"\\nMake sure timestamp query is supported and enabled in your browser.\");\n return;\n }\n }\n else {\n this._measureDuration.dispose();\n }\n }\n startFrame(commandEncoder) {\n if (this._enabled && this._measureDurationState === 0) {\n this._measureDuration.start(commandEncoder);\n this._measureDurationState = 1;\n }\n }\n endFrame(commandEncoder) {\n if (this._measureDurationState === 1) {\n this._measureDurationState = 2;\n this._measureDuration.stop(commandEncoder).then((duration) => {\n if (duration !== null && duration >= 0) {\n this._gpuFrameTimeCounter.fetchNewFrame();\n this._gpuFrameTimeCounter.addCount(duration, true);\n }\n this._measureDurationState = 0;\n });\n }\n }\n startPass(descriptor, index) {\n if (this._enabled) {\n this._measureDuration.startPass(descriptor, index);\n }\n else {\n descriptor.timestampWrites = undefined;\n }\n }\n endPass(index, gpuPerfCounter) {\n if (!this._enabled || !gpuPerfCounter) {\n return;\n }\n const currentFrameId = this._engine.frameId;\n this._measureDuration.stopPass(index).then((duration_) => {\n gpuPerfCounter._addDuration(currentFrameId, duration_ !== null && duration_ > 0 ? duration_ : 0);\n });\n }\n dispose() {\n this._measureDuration?.dispose();\n }\n}\n/** @internal */\nexport class WebGPUDurationMeasure {\n constructor(engine, device, bufferManager, count = 2, querySetLabel) {\n this._count = count;\n this._querySet = new WebGPUQuerySet(engine, count, \"timestamp\" /* WebGPUConstants.QueryType.Timestamp */, device, bufferManager, true, querySetLabel);\n }\n start(encoder) {\n encoder.writeTimestamp?.(this._querySet.querySet, 0);\n }\n async stop(encoder) {\n encoder.writeTimestamp?.(this._querySet.querySet, 1);\n return encoder.writeTimestamp ? this._querySet.readTwoValuesAndSubtract(0) : 0;\n }\n startPass(descriptor, index) {\n if (index + 3 > this._count) {\n throw new Error(\"WebGPUDurationMeasure: index out of range (\" + index + \")\");\n }\n descriptor.timestampWrites = {\n querySet: this._querySet.querySet,\n beginningOfPassWriteIndex: index + 2,\n endOfPassWriteIndex: index + 3,\n };\n }\n async stopPass(index) {\n return this._querySet.readTwoValuesAndSubtract(index + 2);\n }\n dispose() {\n this._querySet.dispose();\n }\n}\n//# sourceMappingURL=webgpuTimestampQuery.js.map","import { WebGPUQuerySet } from \"./webgpuQuerySet\";\n/** @internal */\nexport class WebGPUOcclusionQuery {\n get querySet() {\n return this._querySet.querySet;\n }\n get hasQueries() {\n return this._currentTotalIndices !== this._availableIndices.length;\n }\n canBeginQuery(index) {\n if (this._frameQuerySetIsDirty === this._engine.frameId || this._queryFrameId[index] === this._engine.frameId) {\n return false;\n }\n const canBegin = this._engine._getCurrentRenderPassWrapper().renderPassDescriptor.occlusionQuerySet !== undefined;\n if (canBegin) {\n this._queryFrameId[index] = this._engine.frameId;\n }\n return canBegin;\n }\n constructor(engine, device, bufferManager, startCount = 50, incrementCount = 100) {\n this._availableIndices = [];\n this._frameQuerySetIsDirty = -1;\n this._queryFrameId = [];\n this._engine = engine;\n this._device = device;\n this._bufferManager = bufferManager;\n this._frameLastBuffer = -1;\n this._currentTotalIndices = 0;\n this._countIncrement = incrementCount;\n this._allocateNewIndices(startCount);\n }\n createQuery() {\n if (this._availableIndices.length === 0) {\n this._allocateNewIndices();\n }\n const index = this._availableIndices[this._availableIndices.length - 1];\n this._availableIndices.length--;\n return index;\n }\n deleteQuery(index) {\n this._availableIndices[this._availableIndices.length] = index;\n }\n isQueryResultAvailable(index) {\n this._retrieveQueryBuffer();\n return !!this._lastBuffer && index < this._lastBuffer.length;\n }\n getQueryResult(index) {\n return Number(this._lastBuffer?.[index] ?? -1);\n }\n _retrieveQueryBuffer() {\n if (this._lastBuffer && this._frameLastBuffer === this._engine.frameId) {\n return;\n }\n if (this._frameLastBuffer !== this._engine.frameId) {\n this._frameLastBuffer = this._engine.frameId;\n this._querySet.readValues(0, this._currentTotalIndices).then((arrayBuffer) => {\n this._lastBuffer = arrayBuffer;\n });\n }\n }\n _allocateNewIndices(numIndices) {\n numIndices = numIndices ?? this._countIncrement;\n this._delayQuerySetDispose();\n for (let i = 0; i < numIndices; ++i) {\n this._availableIndices.push(this._currentTotalIndices + i);\n }\n this._currentTotalIndices += numIndices;\n this._querySet = new WebGPUQuerySet(this._engine, this._currentTotalIndices, \"occlusion\" /* WebGPUConstants.QueryType.Occlusion */, this._device, this._bufferManager, false, \"QuerySet_OcclusionQuery_count_\" + this._currentTotalIndices);\n this._frameQuerySetIsDirty = this._engine.frameId;\n }\n _delayQuerySetDispose() {\n const querySet = this._querySet;\n if (querySet) {\n // Wait a bit before disposing of the queryset, in case some queries are still running for it\n setTimeout(() => querySet.dispose, 1000);\n }\n }\n dispose() {\n this._querySet?.dispose();\n this._availableIndices.length = 0;\n }\n}\n//# sourceMappingURL=webgpuOcclusionQuery.js.map","import { Logger } from \"core/Misc/logger\";\nimport { EscapeRegExp, ExtractBetweenMarkers, FindBackward, IsIdentifierChar, RemoveComments, SkipWhitespaces } from \"../../Misc/codeStringParsingTools\";\n/**\n * Class used to inline functions in shader code\n */\nexport class ShaderCodeInliner {\n /** Gets the code after the inlining process */\n get code() {\n return this._sourceCode;\n }\n /**\n * Initializes the inliner\n * @param sourceCode shader code source to inline\n * @param numMaxIterations maximum number of iterations (used to detect recursive calls)\n */\n constructor(sourceCode, numMaxIterations = 20) {\n /** Gets or sets the debug mode */\n this.debug = false;\n this._sourceCode = sourceCode;\n this._numMaxIterations = numMaxIterations;\n this._functionDescr = [];\n this.inlineToken = \"#define inline\";\n }\n /**\n * Start the processing of the shader code\n */\n processCode() {\n if (this.debug) {\n Logger.Log(`Start inlining process (code size=${this._sourceCode.length})...`);\n }\n this._collectFunctions();\n this._processInlining(this._numMaxIterations);\n if (this.debug) {\n Logger.Log(\"End of inlining process.\");\n }\n }\n _collectFunctions() {\n let startIndex = 0;\n while (startIndex < this._sourceCode.length) {\n // locate the function to inline and extract its name\n const inlineTokenIndex = this._sourceCode.indexOf(this.inlineToken, startIndex);\n if (inlineTokenIndex < 0) {\n break;\n }\n const funcParamsStartIndex = this._sourceCode.indexOf(\"(\", inlineTokenIndex + this.inlineToken.length);\n if (funcParamsStartIndex < 0) {\n if (this.debug) {\n Logger.Warn(`Could not find the opening parenthesis after the token. startIndex=${startIndex}`);\n }\n startIndex = inlineTokenIndex + this.inlineToken.length;\n continue;\n }\n const funcNameMatch = ShaderCodeInliner._RegexpFindFunctionNameAndType.exec(this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex));\n if (!funcNameMatch) {\n if (this.debug) {\n Logger.Warn(`Could not extract the name/type of the function from: ${this._sourceCode.substring(inlineTokenIndex + this.inlineToken.length, funcParamsStartIndex)}`);\n }\n startIndex = inlineTokenIndex + this.inlineToken.length;\n continue;\n }\n const [funcType, funcName] = [funcNameMatch[3], funcNameMatch[4]];\n // extract the parameters of the function as a whole string (without the leading / trailing parenthesis)\n const funcParamsEndIndex = ExtractBetweenMarkers(\"(\", \")\", this._sourceCode, funcParamsStartIndex);\n if (funcParamsEndIndex < 0) {\n if (this.debug) {\n Logger.Warn(`Could not extract the parameters the function '${funcName}' (type=${funcType}). funcParamsStartIndex=${funcParamsStartIndex}`);\n }\n startIndex = inlineTokenIndex + this.inlineToken.length;\n continue;\n }\n const funcParams = this._sourceCode.substring(funcParamsStartIndex + 1, funcParamsEndIndex);\n // extract the body of the function (with the curly brackets)\n const funcBodyStartIndex = SkipWhitespaces(this._sourceCode, funcParamsEndIndex + 1);\n if (funcBodyStartIndex === this._sourceCode.length) {\n if (this.debug) {\n Logger.Warn(`Could not extract the body of the function '${funcName}' (type=${funcType}). funcParamsEndIndex=${funcParamsEndIndex}`);\n }\n startIndex = inlineTokenIndex + this.inlineToken.length;\n continue;\n }\n const funcBodyEndIndex = ExtractBetweenMarkers(\"{\", \"}\", this._sourceCode, funcBodyStartIndex);\n if (funcBodyEndIndex < 0) {\n if (this.debug) {\n Logger.Warn(`Could not extract the body of the function '${funcName}' (type=${funcType}). funcBodyStartIndex=${funcBodyStartIndex}`);\n }\n startIndex = inlineTokenIndex + this.inlineToken.length;\n continue;\n }\n const funcBody = this._sourceCode.substring(funcBodyStartIndex, funcBodyEndIndex + 1);\n // process the parameters: extract each names\n const params = RemoveComments(funcParams).split(\",\");\n const paramNames = [];\n for (let p = 0; p < params.length; ++p) {\n const param = params[p].trim();\n const idx = param.lastIndexOf(\" \");\n if (idx >= 0) {\n paramNames.push(param.substring(idx + 1));\n }\n }\n if (funcType !== \"void\") {\n // for functions that return a value, we will replace \"return\" by \"tempvarname = \", tempvarname being a unique generated name\n paramNames.push(\"return\");\n }\n // collect the function\n this._functionDescr.push({\n name: funcName,\n type: funcType,\n parameters: paramNames,\n body: funcBody,\n callIndex: 0,\n });\n startIndex = funcBodyEndIndex + 1;\n // remove the function from the source code\n const partBefore = inlineTokenIndex > 0 ? this._sourceCode.substring(0, inlineTokenIndex) : \"\";\n const partAfter = funcBodyEndIndex + 1 < this._sourceCode.length - 1 ? this._sourceCode.substring(funcBodyEndIndex + 1) : \"\";\n this._sourceCode = partBefore + partAfter;\n startIndex -= funcBodyEndIndex + 1 - inlineTokenIndex;\n }\n if (this.debug) {\n Logger.Log(`Collect functions: ${this._functionDescr.length} functions found. functionDescr=${this._functionDescr}`);\n }\n }\n _processInlining(numMaxIterations = 20) {\n while (numMaxIterations-- >= 0) {\n if (!this._replaceFunctionCallsByCode()) {\n break;\n }\n }\n if (this.debug) {\n Logger.Log(`numMaxIterations is ${numMaxIterations} after inlining process`);\n }\n return numMaxIterations >= 0;\n }\n _replaceFunctionCallsByCode() {\n let doAgain = false;\n for (const func of this._functionDescr) {\n const { name, type, parameters, body } = func;\n let startIndex = 0;\n while (startIndex < this._sourceCode.length) {\n // Look for the function name in the source code\n const functionCallIndex = this._sourceCode.indexOf(name, startIndex);\n if (functionCallIndex < 0) {\n break;\n }\n // Make sure \"name\" is not part of a bigger string\n if (functionCallIndex === 0 || IsIdentifierChar(this._sourceCode.charAt(functionCallIndex - 1))) {\n startIndex = functionCallIndex + name.length;\n continue;\n }\n // Find the opening parenthesis\n const callParamsStartIndex = SkipWhitespaces(this._sourceCode, functionCallIndex + name.length);\n if (callParamsStartIndex === this._sourceCode.length || this._sourceCode.charAt(callParamsStartIndex) !== \"(\") {\n startIndex = functionCallIndex + name.length;\n continue;\n }\n // extract the parameters of the function call as a whole string (without the leading / trailing parenthesis)\n const callParamsEndIndex = ExtractBetweenMarkers(\"(\", \")\", this._sourceCode, callParamsStartIndex);\n if (callParamsEndIndex < 0) {\n if (this.debug) {\n Logger.Warn(`Could not extract the parameters of the function call. Function '${name}' (type=${type}). callParamsStartIndex=${callParamsStartIndex}`);\n }\n startIndex = functionCallIndex + name.length;\n continue;\n }\n const callParams = this._sourceCode.substring(callParamsStartIndex + 1, callParamsEndIndex);\n // process the parameter call: extract each names\n // this function split the parameter list used in the function call at ',' boundaries by taking care of potential parenthesis like in:\n // myfunc(a, vec2(1., 0.), 4.)\n const splitParameterCall = (s) => {\n const parameters = [];\n let curIdx = 0, startParamIdx = 0;\n while (curIdx < s.length) {\n if (s.charAt(curIdx) === \"(\") {\n const idx2 = ExtractBetweenMarkers(\"(\", \")\", s, curIdx);\n if (idx2 < 0) {\n return null;\n }\n curIdx = idx2;\n }\n else if (s.charAt(curIdx) === \",\") {\n parameters.push(s.substring(startParamIdx, curIdx));\n startParamIdx = curIdx + 1;\n }\n curIdx++;\n }\n if (startParamIdx < curIdx) {\n parameters.push(s.substring(startParamIdx, curIdx));\n }\n return parameters;\n };\n const params = splitParameterCall(RemoveComments(callParams));\n if (params === null) {\n if (this.debug) {\n Logger.Warn(`Invalid function call: can't extract the parameters of the function call. Function '${name}' (type=${type}). callParamsStartIndex=${callParamsStartIndex}, callParams=` +\n callParams);\n }\n startIndex = functionCallIndex + name.length;\n continue;\n }\n const paramNames = [];\n for (let p = 0; p < params.length; ++p) {\n const param = params[p].trim();\n paramNames.push(param);\n }\n const retParamName = type !== \"void\" ? name + \"_\" + func.callIndex++ : null;\n if (retParamName) {\n paramNames.push(retParamName + \" =\");\n }\n if (paramNames.length !== parameters.length) {\n if (this.debug) {\n Logger.Warn(`Invalid function call: not the same number of parameters for the call than the number expected by the function. Function '${name}' (type=${type}). function parameters=${parameters}, call parameters=${paramNames}`);\n }\n startIndex = functionCallIndex + name.length;\n continue;\n }\n startIndex = callParamsEndIndex + 1;\n // replace the function call by the body function\n const funcBody = this._replaceNames(body, parameters, paramNames);\n let partBefore = functionCallIndex > 0 ? this._sourceCode.substring(0, functionCallIndex) : \"\";\n const partAfter = callParamsEndIndex + 1 < this._sourceCode.length - 1 ? this._sourceCode.substring(callParamsEndIndex + 1) : \"\";\n if (retParamName) {\n // case where the function returns a value. We generate:\n // FUNCTYPE retParamName;\n // {function body}\n // and replace the function call by retParamName\n const injectDeclarationIndex = FindBackward(this._sourceCode, functionCallIndex - 1, \"\\n\", \"{\");\n partBefore = this._sourceCode.substring(0, injectDeclarationIndex + 1);\n const partBetween = this._sourceCode.substring(injectDeclarationIndex + 1, functionCallIndex);\n this._sourceCode = partBefore + type + \" \" + retParamName + \";\\n\" + funcBody + \"\\n\" + partBetween + retParamName + partAfter;\n if (this.debug) {\n Logger.Log(`Replace function call by code. Function '${name}' (type=${type}). injectDeclarationIndex=${injectDeclarationIndex}, call parameters=${paramNames}`);\n }\n }\n else {\n // simple case where the return value of the function is \"void\"\n this._sourceCode = partBefore + funcBody + partAfter;\n startIndex += funcBody.length - (callParamsEndIndex + 1 - functionCallIndex);\n if (this.debug) {\n Logger.Log(`Replace function call by code. Function '${name}' (type=${type}). functionCallIndex=${functionCallIndex}, call parameters=${paramNames}`);\n }\n }\n doAgain = true;\n }\n }\n return doAgain;\n }\n _replaceNames(code, sources, destinations) {\n for (let i = 0; i < sources.length; ++i) {\n const source = new RegExp(EscapeRegExp(sources[i]), \"g\"), sourceLen = sources[i].length, destination = destinations[i];\n code = code.replace(source, (match, ...args) => {\n const offset = args[0];\n // Make sure \"source\" is not part of a bigger identifier (for eg, if source=view and we matched it with viewDirection)\n if (IsIdentifierChar(code.charAt(offset - 1)) || IsIdentifierChar(code.charAt(offset + sourceLen))) {\n return sources[i];\n }\n return destination;\n });\n }\n return code;\n }\n}\nShaderCodeInliner._RegexpFindFunctionNameAndType = /((\\s+?)(\\w+)\\s+(\\w+)\\s*?)$/;\n//# sourceMappingURL=shaderCodeInliner.js.map","import { Logger } from \"core/Misc/logger\";\nimport { Tools } from \"../../Misc/tools\";\n/** @internal */\nexport class WebGPUTintWASM {\n async initTwgsl(twgslOptions) {\n if (WebGPUTintWASM._Twgsl) {\n return;\n }\n twgslOptions = twgslOptions || {};\n twgslOptions = {\n ...WebGPUTintWASM._TWgslDefaultOptions,\n ...twgslOptions,\n };\n if (twgslOptions.twgsl) {\n WebGPUTintWASM._Twgsl = twgslOptions.twgsl;\n return Promise.resolve();\n }\n if (twgslOptions.jsPath && twgslOptions.wasmPath) {\n await Tools.LoadBabylonScriptAsync(twgslOptions.jsPath);\n }\n if (self.twgsl) {\n WebGPUTintWASM._Twgsl = await self.twgsl(Tools.GetBabylonScriptURL(twgslOptions.wasmPath));\n return Promise.resolve();\n }\n return Promise.reject(\"twgsl is not available.\");\n }\n convertSpirV2WGSL(code, disableUniformityAnalysis = false) {\n const ccode = WebGPUTintWASM._Twgsl.convertSpirV2WGSL(code, WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis);\n if (WebGPUTintWASM.ShowWGSLShaderCode) {\n Logger.Log(ccode);\n Logger.Log(\"***********************************************\");\n }\n return WebGPUTintWASM.DisableUniformityAnalysis || disableUniformityAnalysis ? \"diagnostic(off, derivative_uniformity);\\n\" + ccode : ccode;\n }\n}\n// Default twgsl options.\nWebGPUTintWASM._TWgslDefaultOptions = {\n jsPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.js`,\n wasmPath: `${Tools._DefaultCdnUrl}/twgsl/twgsl.wasm`,\n};\nWebGPUTintWASM.ShowWGSLShaderCode = false;\nWebGPUTintWASM.DisableUniformityAnalysis = false;\nWebGPUTintWASM._Twgsl = null;\n//# sourceMappingURL=webgpuTintWASM.js.map","import { Constants } from \"../constants\";\n/** @internal */\nexport class WebGPUSnapshotRendering {\n constructor(engine, renderingMode, bundleList) {\n this._record = false;\n this._play = false;\n this._playBundleListIndex = 0;\n this._allBundleLists = [];\n this._enabled = false;\n this._engine = engine;\n this._mode = renderingMode;\n this._bundleList = bundleList;\n }\n get enabled() {\n return this._enabled;\n }\n get play() {\n return this._play;\n }\n get record() {\n return this._record;\n }\n set enabled(activate) {\n this._allBundleLists.length = 0;\n this._record = this._enabled = activate;\n this._play = false;\n if (activate) {\n this._modeSaved = this._mode;\n this._mode = Constants.SNAPSHOTRENDERING_STANDARD; // need to reset to standard for the recording pass to avoid some code being bypassed\n }\n }\n get mode() {\n return this._mode;\n }\n set mode(mode) {\n if (this._record) {\n this._modeSaved = mode;\n }\n else {\n this._mode = mode;\n }\n }\n endRenderPass(currentRenderPass) {\n if (!this._record && !this._play) {\n // Snapshot rendering mode is not enabled\n return false;\n }\n let bundleList;\n if (this._record) {\n bundleList = this._bundleList.clone();\n this._allBundleLists.push(bundleList);\n this._bundleList.reset();\n }\n else {\n // We are playing the snapshot\n if (this._playBundleListIndex >= this._allBundleLists.length) {\n throw new Error(`Invalid playBundleListIndex! Your snapshot is no longer valid for the current frame, you should recreate a new one. playBundleListIndex=${this._playBundleListIndex}, allBundleLists.length=${this._allBundleLists.length}}`);\n }\n bundleList = this._allBundleLists[this._playBundleListIndex++];\n }\n bundleList.run(currentRenderPass);\n if (this._mode === Constants.SNAPSHOTRENDERING_FAST) {\n this._engine._reportDrawCall(bundleList.numDrawCalls);\n }\n return true;\n }\n endFrame() {\n if (this._record) {\n // We stop recording and switch to replay mode for the next frames\n this._record = false;\n this._play = true;\n this._mode = this._modeSaved;\n }\n this._playBundleListIndex = 0;\n }\n reset() {\n if (this._record) {\n this._mode = this._modeSaved;\n }\n this.enabled = false;\n this.enabled = true;\n }\n}\n//# sourceMappingURL=webgpuSnapshotRendering.js.map","import { Buffer, VertexBuffer } from \"./buffer\";\nconst isLittleEndian = (() => {\n const array = new Uint8Array(4);\n const view = new Uint32Array(array.buffer);\n return !!((view[0] = 1) & array[0]);\n})();\nObject.defineProperty(VertexBuffer.prototype, \"effectiveByteStride\", {\n get: function () {\n return (this._alignedBuffer && this._alignedBuffer.byteStride) || this.byteStride;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(VertexBuffer.prototype, \"effectiveByteOffset\", {\n get: function () {\n return this._alignedBuffer ? 0 : this.byteOffset;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(VertexBuffer.prototype, \"effectiveBuffer\", {\n get: function () {\n return (this._alignedBuffer && this._alignedBuffer.getBuffer()) || this._buffer.getBuffer();\n },\n enumerable: true,\n configurable: true,\n});\nVertexBuffer.prototype._rebuild = function () {\n this._buffer?._rebuild();\n this._alignedBuffer?._rebuild();\n};\nVertexBuffer.prototype.dispose = function () {\n if (this._ownsBuffer) {\n this._buffer.dispose();\n }\n this._alignedBuffer?.dispose();\n this._alignedBuffer = undefined;\n this._isDisposed = true;\n};\nVertexBuffer.prototype.getWrapperBuffer = function () {\n return this._alignedBuffer || this._buffer;\n};\nVertexBuffer.prototype._alignBuffer = function () {\n const data = this._buffer.getData();\n if (!this.engine._features.forceVertexBufferStrideAndOffsetMultiple4Bytes || (this.byteStride % 4 === 0 && this.byteOffset % 4 === 0) || !data) {\n return;\n }\n const typeByteLength = VertexBuffer.GetTypeByteLength(this.type);\n const alignedByteStride = (this.byteStride + 3) & ~3;\n const alignedSize = alignedByteStride / typeByteLength;\n const totalVertices = this._maxVerticesCount;\n const totalByteLength = totalVertices * alignedByteStride;\n const totalLength = totalByteLength / typeByteLength;\n let sourceData;\n if (Array.isArray(data)) {\n const sourceDataAsFloat = new Float32Array(data);\n sourceData = new DataView(sourceDataAsFloat.buffer, sourceDataAsFloat.byteOffset, sourceDataAsFloat.byteLength);\n }\n else if (data instanceof ArrayBuffer) {\n sourceData = new DataView(data, 0, data.byteLength);\n }\n else {\n sourceData = new DataView(data.buffer, data.byteOffset, data.byteLength);\n }\n let alignedData;\n if (this.type === VertexBuffer.BYTE) {\n alignedData = new Int8Array(totalLength);\n }\n else if (this.type === VertexBuffer.UNSIGNED_BYTE) {\n alignedData = new Uint8Array(totalLength);\n }\n else if (this.type === VertexBuffer.SHORT) {\n alignedData = new Int16Array(totalLength);\n }\n else if (this.type === VertexBuffer.UNSIGNED_SHORT) {\n alignedData = new Uint16Array(totalLength);\n }\n else if (this.type === VertexBuffer.INT) {\n alignedData = new Int32Array(totalLength);\n }\n else if (this.type === VertexBuffer.UNSIGNED_INT) {\n alignedData = new Uint32Array(totalLength);\n }\n else {\n alignedData = new Float32Array(totalLength);\n }\n const numComponents = this.getSize();\n let sourceOffset = this.byteOffset;\n for (let i = 0; i < totalVertices; ++i) {\n for (let j = 0; j < numComponents; ++j) {\n switch (this.type) {\n case VertexBuffer.BYTE:\n alignedData[i * alignedSize + j] = sourceData.getInt8(sourceOffset + j);\n break;\n case VertexBuffer.UNSIGNED_BYTE:\n alignedData[i * alignedSize + j] = sourceData.getUint8(sourceOffset + j);\n break;\n case VertexBuffer.SHORT:\n alignedData[i * alignedSize + j] = sourceData.getInt16(sourceOffset + j * 2, isLittleEndian);\n break;\n case VertexBuffer.UNSIGNED_SHORT:\n alignedData[i * alignedSize + j] = sourceData.getUint16(sourceOffset + j * 2, isLittleEndian);\n break;\n case VertexBuffer.INT:\n alignedData[i * alignedSize + j] = sourceData.getInt32(sourceOffset + j * 4, isLittleEndian);\n break;\n case VertexBuffer.UNSIGNED_INT:\n alignedData[i * alignedSize + j] = sourceData.getUint32(sourceOffset + j * 4, isLittleEndian);\n break;\n case VertexBuffer.FLOAT:\n alignedData[i * alignedSize + j] = sourceData.getFloat32(sourceOffset + j * 4, isLittleEndian);\n break;\n }\n }\n sourceOffset += this.byteStride;\n }\n this._alignedBuffer?.dispose();\n this._alignedBuffer = new Buffer(this.engine, alignedData, false, alignedByteStride, false, this.getIsInstanced(), true, this.instanceDivisor, (this._label ?? \"VertexBuffer\") + \"_aligned\");\n};\n//# sourceMappingURL=buffer.align.js.map","import { ExternalTexture } from \"../../Materials/Textures/externalTexture\";\n/**\n * Nothing specific to WebGPU in this class, but the spec is not final yet so let's remove it later on\n * if it is not needed\n * @internal\n **/\nexport class WebGPUExternalTexture extends ExternalTexture {\n constructor(video) {\n super(video);\n }\n}\n//# sourceMappingURL=webgpuExternalTexture.js.map","import { AbstractEngine } from \"core/Engines/abstractEngine\";\nimport { Constants } from \"../../constants\";\nimport \"../../AbstractEngine/abstractEngine.alpha\";\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\nThinWebGPUEngine.prototype.setAlphaMode = function (mode, noDepthWriteChange = false) {\n if (this._alphaMode === mode && ((mode === Constants.ALPHA_DISABLE && !this._alphaState.alphaBlend) || (mode !== Constants.ALPHA_DISABLE && this._alphaState.alphaBlend))) {\n if (!noDepthWriteChange) {\n // Make sure we still have the correct depth mask according to the alpha mode (a transparent material could have forced writting to the depth buffer, for instance)\n const depthMask = mode === Constants.ALPHA_DISABLE;\n if (this.depthCullingState.depthMask !== depthMask) {\n this.setDepthWrite(depthMask);\n this._cacheRenderPipeline.setDepthWriteEnabled(depthMask);\n }\n }\n return;\n }\n switch (mode) {\n case Constants.ALPHA_DISABLE:\n this._alphaState.alphaBlend = false;\n break;\n case Constants.ALPHA_PREMULTIPLIED:\n this._alphaState.setAlphaBlendFunctionParameters(1, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA, 1, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_PREMULTIPLIED_PORTERDUFF:\n this._alphaState.setAlphaBlendFunctionParameters(1, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA, 1, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_COMBINE:\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_SRC_ALPHA, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA, 1, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ONEONE:\n this._alphaState.setAlphaBlendFunctionParameters(1, 1, 0, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ADD:\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_SRC_ALPHA, 1, 0, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_SUBTRACT:\n this._alphaState.setAlphaBlendFunctionParameters(0, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR, 1, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_MULTIPLY:\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_DST_COLOR, 0, 1, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_MAXIMIZED:\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_SRC_ALPHA, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR, 1, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_INTERPOLATE:\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_CONSTANT_COLOR, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR, Constants.GL_ALPHA_FUNCTION_CONSTANT_ALPHA, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_SCREENMODE:\n this._alphaState.setAlphaBlendFunctionParameters(1, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR, 1, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ONEONE_ONEONE:\n this._alphaState.setAlphaBlendFunctionParameters(1, 1, 1, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ALPHATOCOLOR:\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_DST_ALPHA, 1, 0, 0);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_REVERSEONEMINUS:\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_SRC_DSTONEMINUSSRCALPHA:\n this._alphaState.setAlphaBlendFunctionParameters(1, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA, 1, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_ONEONE_ONEZERO:\n this._alphaState.setAlphaBlendFunctionParameters(1, 1, 1, 0);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_EXCLUSION:\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR, 0, 1);\n this._alphaState.alphaBlend = true;\n break;\n case Constants.ALPHA_LAYER_ACCUMULATE:\n // Same as ALPHA_COMBINE but accumulates (1 - alpha) values in the alpha channel for a later readout in order independant transparency\n this._alphaState.setAlphaBlendFunctionParameters(Constants.GL_ALPHA_FUNCTION_SRC_ALPHA, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA, 1, Constants.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA);\n this._alphaState.alphaBlend = true;\n break;\n }\n if (!noDepthWriteChange) {\n this.setDepthWrite(mode === Constants.ALPHA_DISABLE);\n this._cacheRenderPipeline.setDepthWriteEnabled(mode === Constants.ALPHA_DISABLE);\n }\n this._alphaMode = mode;\n this._cacheRenderPipeline.setAlphaBlendEnabled(this._alphaState.alphaBlend);\n this._cacheRenderPipeline.setAlphaBlendFactors(this._alphaState._blendFunctionParameters, this._alphaState._blendEquationParameters);\n};\nThinWebGPUEngine.prototype.setAlphaEquation = function (equation) {\n AbstractEngine.prototype.setAlphaEquation.call(this, equation);\n this._cacheRenderPipeline.setAlphaBlendFactors(this._alphaState._blendFunctionParameters, this._alphaState._blendEquationParameters);\n};\n//# sourceMappingURL=engine.alpha.js.map","import { InternalTexture } from \"../../../Materials/Textures/internalTexture\";\nimport { Constants } from \"../../constants\";\nimport { Logger } from \"../../../Misc/logger\";\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\nThinWebGPUEngine.prototype.createRawTexture = function (data, width, height, format, generateMipMaps, invertY, samplingMode, compression = null, type = Constants.TEXTURETYPE_UNSIGNED_BYTE, creationFlags = 0, useSRGBBuffer = false) {\n const texture = new InternalTexture(this, 3 /* InternalTextureSource.Raw */);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.width = width;\n texture.height = height;\n texture.format = format;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.invertY = invertY;\n texture._compression = compression;\n texture.type = type;\n texture._creationFlags = creationFlags;\n texture._useSRGBBuffer = useSRGBBuffer;\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, undefined, creationFlags);\n this.updateRawTexture(texture, data, format, invertY, compression, type, useSRGBBuffer);\n this._internalTexturesCache.push(texture);\n return texture;\n};\nThinWebGPUEngine.prototype.updateRawTexture = function (texture, bufferView, format, invertY, compression = null, type = Constants.TEXTURETYPE_UNSIGNED_BYTE, useSRGBBuffer = false) {\n if (!texture) {\n return;\n }\n if (!this._doNotHandleContextLost) {\n texture._bufferView = bufferView;\n texture.invertY = invertY;\n texture._compression = compression;\n texture._useSRGBBuffer = useSRGBBuffer;\n }\n if (bufferView) {\n const gpuTextureWrapper = texture._hardwareTexture;\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\n if (needConversion) {\n bufferView = _convertRGBtoRGBATextureData(bufferView, texture.width, texture.height, type);\n }\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\n this._textureHelper.updateTexture(data, texture, texture.width, texture.height, texture.depth, gpuTextureWrapper.format, 0, 0, invertY, false, 0, 0);\n if (texture.generateMipMaps) {\n this._generateMipmaps(texture, this._uploadEncoder);\n }\n }\n texture.isReady = true;\n};\nThinWebGPUEngine.prototype.createRawCubeTexture = function (data, size, format, type, generateMipMaps, invertY, samplingMode, compression = null) {\n const texture = new InternalTexture(this, 8 /* InternalTextureSource.CubeRaw */);\n if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {\n generateMipMaps = false;\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n Logger.Warn(\"Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\n }\n else if (type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.textureHalfFloatLinearFiltering) {\n generateMipMaps = false;\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n Logger.Warn(\"Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\n }\n else if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatRender) {\n generateMipMaps = false;\n Logger.Warn(\"Render to float textures is not supported. Mipmap generation forced to false.\");\n }\n else if (type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.colorBufferFloat) {\n generateMipMaps = false;\n Logger.Warn(\"Render to half float textures is not supported. Mipmap generation forced to false.\");\n }\n texture.isCube = true;\n texture._originalFormat = format;\n texture.format = format === Constants.TEXTUREFORMAT_RGB ? Constants.TEXTUREFORMAT_RGBA : format;\n texture.type = type;\n texture.generateMipMaps = generateMipMaps;\n texture.width = size;\n texture.height = size;\n texture.samplingMode = samplingMode;\n if (!this._doNotHandleContextLost) {\n texture._bufferViewArray = data;\n }\n texture.invertY = invertY;\n texture._compression = compression;\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n this._textureHelper.createGPUTextureForInternalTexture(texture);\n if (format === Constants.TEXTUREFORMAT_RGB) {\n const gpuTextureWrapper = texture._hardwareTexture;\n gpuTextureWrapper._originalFormatIsRGB = true;\n }\n if (data) {\n this.updateRawCubeTexture(texture, data, format, type, invertY, compression);\n }\n texture.isReady = true;\n return texture;\n};\nThinWebGPUEngine.prototype.updateRawCubeTexture = function (texture, bufferView, _format, type, invertY, compression = null) {\n texture._bufferViewArray = bufferView;\n texture.invertY = invertY;\n texture._compression = compression;\n const gpuTextureWrapper = texture._hardwareTexture;\n const needConversion = gpuTextureWrapper._originalFormatIsRGB;\n const faces = [0, 2, 4, 1, 3, 5];\n const data = [];\n for (let i = 0; i < bufferView.length; ++i) {\n let faceData = bufferView[faces[i]];\n if (needConversion) {\n faceData = _convertRGBtoRGBATextureData(faceData, texture.width, texture.height, type);\n }\n data.push(new Uint8Array(faceData.buffer, faceData.byteOffset, faceData.byteLength));\n }\n this._textureHelper.updateCubeTextures(data, gpuTextureWrapper.underlyingResource, texture.width, texture.height, gpuTextureWrapper.format, invertY, false, 0, 0);\n if (texture.generateMipMaps) {\n this._generateMipmaps(texture, this._uploadEncoder);\n }\n texture.isReady = true;\n};\nThinWebGPUEngine.prototype.createRawCubeTextureFromUrl = function (url, scene, size, format, type, noMipmap, callback, mipmapGenerator, onLoad = null, onError = null, samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE, invertY = false) {\n const texture = this.createRawCubeTexture(null, size, format, type, !noMipmap, invertY, samplingMode, null);\n scene?.addPendingData(texture);\n texture.url = url;\n texture.isReady = false;\n this._internalTexturesCache.push(texture);\n const onerror = (request, exception) => {\n scene?.removePendingData(texture);\n if (onError && request) {\n onError(request.status + \" \" + request.statusText, exception);\n }\n };\n const internalCallback = (data) => {\n const width = texture.width;\n const faceDataArrays = callback(data);\n if (!faceDataArrays) {\n return;\n }\n if (mipmapGenerator) {\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\n const mipData = mipmapGenerator(faceDataArrays);\n const gpuTextureWrapper = texture._hardwareTexture;\n const faces = [0, 1, 2, 3, 4, 5];\n for (let level = 0; level < mipData.length; level++) {\n const mipSize = width >> level;\n const allFaces = [];\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\n let mipFaceData = mipData[level][faces[faceIndex]];\n if (needConversion) {\n mipFaceData = _convertRGBtoRGBATextureData(mipFaceData, mipSize, mipSize, type);\n }\n allFaces.push(new Uint8Array(mipFaceData.buffer, mipFaceData.byteOffset, mipFaceData.byteLength));\n }\n this._textureHelper.updateCubeTextures(allFaces, gpuTextureWrapper.underlyingResource, mipSize, mipSize, gpuTextureWrapper.format, invertY, false, 0, 0);\n }\n }\n else {\n this.updateRawCubeTexture(texture, faceDataArrays, format, type, invertY);\n }\n texture.isReady = true;\n scene?.removePendingData(texture);\n if (onLoad) {\n onLoad();\n }\n };\n this._loadFile(url, (data) => {\n internalCallback(data);\n }, undefined, scene?.offlineProvider, true, onerror);\n return texture;\n};\nThinWebGPUEngine.prototype.createRawTexture3D = function (data, width, height, depth, format, generateMipMaps, invertY, samplingMode, compression = null, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE, creationFlags = 0) {\n const source = 10 /* InternalTextureSource.Raw3D */;\n const texture = new InternalTexture(this, source);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.baseDepth = depth;\n texture.width = width;\n texture.height = height;\n texture.depth = depth;\n texture.format = format;\n texture.type = textureType;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.is3D = true;\n texture._creationFlags = creationFlags;\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, undefined, creationFlags);\n this.updateRawTexture3D(texture, data, format, invertY, compression, textureType);\n this._internalTexturesCache.push(texture);\n return texture;\n};\nThinWebGPUEngine.prototype.updateRawTexture3D = function (texture, bufferView, format, invertY, compression = null, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\n if (!this._doNotHandleContextLost) {\n texture._bufferView = bufferView;\n texture.format = format;\n texture.invertY = invertY;\n texture._compression = compression;\n }\n if (bufferView) {\n const gpuTextureWrapper = texture._hardwareTexture;\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\n if (needConversion) {\n bufferView = _convertRGBtoRGBATextureData(bufferView, texture.width, texture.height, textureType);\n }\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\n this._textureHelper.updateTexture(data, texture, texture.width, texture.height, texture.depth, gpuTextureWrapper.format, 0, 0, invertY, false, 0, 0);\n if (texture.generateMipMaps) {\n this._generateMipmaps(texture, this._uploadEncoder);\n }\n }\n texture.isReady = true;\n};\nThinWebGPUEngine.prototype.createRawTexture2DArray = function (data, width, height, depth, format, generateMipMaps, invertY, samplingMode, compression = null, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE, creationFlags = 0) {\n const source = 11 /* InternalTextureSource.Raw2DArray */;\n const texture = new InternalTexture(this, source);\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.baseDepth = depth;\n texture.width = width;\n texture.height = height;\n texture.depth = depth;\n texture.format = format;\n texture.type = textureType;\n texture.generateMipMaps = generateMipMaps;\n texture.samplingMode = samplingMode;\n texture.is2DArray = true;\n texture._creationFlags = creationFlags;\n if (!this._doNotHandleContextLost) {\n texture._bufferView = data;\n }\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, depth, creationFlags);\n this.updateRawTexture2DArray(texture, data, format, invertY, compression, textureType);\n this._internalTexturesCache.push(texture);\n return texture;\n};\nThinWebGPUEngine.prototype.updateRawTexture2DArray = function (texture, bufferView, format, invertY, compression = null, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\n if (!this._doNotHandleContextLost) {\n texture._bufferView = bufferView;\n texture.format = format;\n texture.invertY = invertY;\n texture._compression = compression;\n }\n if (bufferView) {\n const gpuTextureWrapper = texture._hardwareTexture;\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\n if (needConversion) {\n bufferView = _convertRGBtoRGBATextureData(bufferView, texture.width, texture.height, textureType);\n }\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\n this._textureHelper.updateTexture(data, texture, texture.width, texture.height, texture.depth, gpuTextureWrapper.format, 0, 0, invertY, false, 0, 0);\n if (texture.generateMipMaps) {\n this._generateMipmaps(texture, this._uploadEncoder);\n }\n }\n texture.isReady = true;\n};\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _convertRGBtoRGBATextureData(rgbData, width, height, textureType) {\n // Create new RGBA data container.\n let rgbaData;\n let val1 = 1;\n if (textureType === Constants.TEXTURETYPE_FLOAT) {\n rgbaData = new Float32Array(width * height * 4);\n }\n else if (textureType === Constants.TEXTURETYPE_HALF_FLOAT) {\n rgbaData = new Uint16Array(width * height * 4);\n val1 = 15360; // 15360 is the encoding of 1 in half float\n }\n else if (textureType === Constants.TEXTURETYPE_UNSIGNED_INTEGER) {\n rgbaData = new Uint32Array(width * height * 4);\n }\n else {\n rgbaData = new Uint8Array(width * height * 4);\n }\n // Convert each pixel.\n for (let x = 0; x < width; x++) {\n for (let y = 0; y < height; y++) {\n const index = (y * width + x) * 3;\n const newIndex = (y * width + x) * 4;\n // Map Old Value to new value.\n rgbaData[newIndex + 0] = rgbData[index + 0];\n rgbaData[newIndex + 1] = rgbData[index + 1];\n rgbaData[newIndex + 2] = rgbData[index + 2];\n // Add fully opaque alpha channel.\n rgbaData[newIndex + 3] = val1;\n }\n }\n return rgbaData;\n}\n//# sourceMappingURL=engine.rawTexture.js.map","import { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\nThinWebGPUEngine.prototype._readTexturePixels = function (texture, width, height, faceIndex = -1, level = 0, buffer = null, flushRenderer = true, noDataConversion = false, x = 0, y = 0) {\n const gpuTextureWrapper = texture._hardwareTexture;\n if (flushRenderer) {\n this.flushFramebuffer();\n }\n return this._textureHelper.readPixels(gpuTextureWrapper.underlyingResource, x, y, width, height, gpuTextureWrapper.format, faceIndex, level, buffer, noDataConversion);\n};\nThinWebGPUEngine.prototype._readTexturePixelsSync = function () {\n // eslint-disable-next-line no-throw-literal\n throw \"_readTexturePixelsSync is unsupported in WebGPU!\";\n};\n//# sourceMappingURL=engine.readTexture.js.map","import { InternalTexture } from \"../../../Materials/Textures/internalTexture\";\nimport { Constants } from \"../../constants\";\nimport { WebGPUTextureHelper } from \"../webgpuTextureHelper\";\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\nThinWebGPUEngine.prototype._createDepthStencilCubeTexture = function (size, options) {\n const internalTexture = new InternalTexture(this, options.generateStencil ? 12 /* InternalTextureSource.DepthStencil */ : 14 /* InternalTextureSource.Depth */);\n internalTexture.isCube = true;\n internalTexture.label = options.label;\n const internalOptions = {\n bilinearFiltering: false,\n comparisonFunction: 0,\n generateStencil: false,\n samples: 1,\n depthTextureFormat: options.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\n ...options,\n };\n internalTexture.format = internalOptions.depthTextureFormat;\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\n // Now that the hardware texture is created, we can retrieve the GPU format and set the right type to the internal texture\n const gpuTextureWrapper = internalTexture._hardwareTexture;\n internalTexture.type = WebGPUTextureHelper.GetTextureTypeFromFormat(gpuTextureWrapper.format);\n this._internalTexturesCache.push(internalTexture);\n return internalTexture;\n};\nThinWebGPUEngine.prototype.createCubeTexture = function (rootUrl, scene, files, noMipmap, onLoad = null, onError = null, format, forcedExtension = null, createPolynomials = false, lodScale = 0, lodOffset = 0, fallback = null, loaderOptions, useSRGBBuffer = false, buffer = null) {\n return this.createCubeTextureBase(rootUrl, scene, files, !!noMipmap, onLoad, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, fallback, null, (texture, imgs) => {\n const imageBitmaps = imgs; // we will always get an ImageBitmap array in WebGPU\n const width = imageBitmaps[0].width;\n const height = width;\n this._setCubeMapTextureParams(texture, !noMipmap);\n texture.format = format ?? -1;\n const gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, width, height);\n this._textureHelper.updateCubeTextures(imageBitmaps, gpuTextureWrapper.underlyingResource, width, height, gpuTextureWrapper.format, false, false, 0, 0);\n if (!noMipmap) {\n this._generateMipmaps(texture, this._uploadEncoder);\n }\n texture.isReady = true;\n texture.onLoadedObservable.notifyObservers(texture);\n texture.onLoadedObservable.clear();\n if (onLoad) {\n onLoad();\n }\n }, !!useSRGBBuffer, buffer);\n};\nThinWebGPUEngine.prototype._setCubeMapTextureParams = function (texture, loadMipmap, maxLevel) {\n texture.samplingMode = loadMipmap ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n if (maxLevel) {\n texture._maxLodLevel = maxLevel;\n }\n};\nThinWebGPUEngine.prototype.generateMipMapsForCubemap = function (texture) {\n if (texture.generateMipMaps) {\n const gpuTexture = texture._hardwareTexture?.underlyingResource;\n if (!gpuTexture) {\n this._textureHelper.createGPUTextureForInternalTexture(texture);\n }\n this._generateMipmaps(texture);\n }\n};\n//# sourceMappingURL=engine.cubeTexture.js.map","import { RenderTargetWrapper } from \"../renderTargetWrapper\";\nimport { WebGPUPerfCounter } from \"./webgpuPerfCounter\";\n/**\n * Specialized class used to store a render target of a WebGPU engine\n */\nexport class WebGPURenderTargetWrapper extends RenderTargetWrapper {\n /**\n * Initializes the render target wrapper\n * @param isMulti true if the wrapper is a multi render target\n * @param isCube true if the wrapper should render to a cube texture\n * @param size size of the render target (width/height/layers)\n * @param engine engine used to create the render target\n * @param label defines the label to use for the wrapper (for debugging purpose only)\n */\n constructor(isMulti, isCube, size, engine, label) {\n super(isMulti, isCube, size, engine, label);\n if (engine.enableGPUTimingMeasurements) {\n this.gpuTimeInFrame = new WebGPUPerfCounter();\n }\n }\n}\n//# sourceMappingURL=webgpuRenderTargetWrapper.js.map","import { GetTypeForDepthTexture, InternalTexture } from \"../../../Materials/Textures/internalTexture\";\nimport { Constants } from \"../../constants\";\nimport { WebGPURenderTargetWrapper } from \"../webgpuRenderTargetWrapper\";\nimport \"../../AbstractEngine/abstractEngine.texture\";\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\nThinWebGPUEngine.prototype._createHardwareRenderTargetWrapper = function (isMulti, isCube, size) {\n const rtWrapper = new WebGPURenderTargetWrapper(isMulti, isCube, size, this);\n this._renderTargetWrapperCache.push(rtWrapper);\n return rtWrapper;\n};\nThinWebGPUEngine.prototype.createRenderTargetTexture = function (size, options) {\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, size);\n const fullOptions = {};\n if (options !== undefined && typeof options === \"object\") {\n fullOptions.generateMipMaps = options.generateMipMaps;\n fullOptions.generateDepthBuffer = options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && options.generateStencilBuffer;\n fullOptions.samplingMode = options.samplingMode === undefined ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : options.samplingMode;\n fullOptions.creationFlags = options.creationFlags ?? 0;\n fullOptions.noColorAttachment = !!options.noColorAttachment;\n fullOptions.colorAttachment = options.colorAttachment;\n fullOptions.samples = options.samples;\n fullOptions.label = options.label;\n fullOptions.format = options.format;\n fullOptions.type = options.type;\n }\n else {\n fullOptions.generateMipMaps = options;\n fullOptions.generateDepthBuffer = true;\n fullOptions.generateStencilBuffer = false;\n fullOptions.samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\n fullOptions.creationFlags = 0;\n fullOptions.noColorAttachment = false;\n }\n const texture = fullOptions.colorAttachment || (fullOptions.noColorAttachment ? null : this._createInternalTexture(size, fullOptions, true, 5 /* InternalTextureSource.RenderTarget */));\n rtWrapper.label = fullOptions.label ?? \"RenderTargetWrapper\";\n rtWrapper._samples = fullOptions.colorAttachment?.samples ?? fullOptions.samples ?? 1;\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer ? true : false;\n rtWrapper.setTextures(texture);\n if (rtWrapper._generateDepthBuffer || rtWrapper._generateStencilBuffer) {\n rtWrapper.createDepthStencilTexture(0, false, // force false as filtering is not supported for depth textures\n rtWrapper._generateStencilBuffer, rtWrapper.samples, fullOptions.generateStencilBuffer ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT, fullOptions.label ? fullOptions.label + \"-DepthStencil\" : undefined);\n }\n if (texture && !fullOptions.colorAttachment) {\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\n texture.generateMipMaps = true;\n }\n this._textureHelper.createGPUTextureForInternalTexture(texture, undefined, undefined, undefined, fullOptions.creationFlags);\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\n texture.generateMipMaps = false;\n }\n }\n return rtWrapper;\n};\nThinWebGPUEngine.prototype._createDepthStencilTexture = function (size, options, wrapper) {\n const internalOptions = {\n bilinearFiltering: false,\n comparisonFunction: 0,\n generateStencil: false,\n samples: 1,\n depthTextureFormat: options.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\n ...options,\n };\n const hasStencil = internalOptions.depthTextureFormat === Constants.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8 ||\n internalOptions.depthTextureFormat === Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 ||\n internalOptions.depthTextureFormat === Constants.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8;\n wrapper._depthStencilTextureWithStencil = hasStencil;\n const internalTexture = new InternalTexture(this, hasStencil ? 12 /* InternalTextureSource.DepthStencil */ : 14 /* InternalTextureSource.Depth */);\n internalTexture.label = options.label;\n internalTexture.format = internalOptions.depthTextureFormat;\n internalTexture.type = GetTypeForDepthTexture(internalTexture.format);\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\n this._internalTexturesCache.push(internalTexture);\n return internalTexture;\n};\nThinWebGPUEngine.prototype._setupDepthStencilTexture = function (internalTexture, size, bilinearFiltering, comparisonFunction, samples = 1) {\n const width = size.width ?? size;\n const height = size.height ?? size;\n const layers = size.layers || 0;\n const depth = size.depth || 0;\n internalTexture.baseWidth = width;\n internalTexture.baseHeight = height;\n internalTexture.width = width;\n internalTexture.height = height;\n internalTexture.is2DArray = layers > 0;\n internalTexture.is3D = depth > 0;\n internalTexture.depth = layers || depth;\n internalTexture.isReady = true;\n internalTexture.samples = samples;\n internalTexture.generateMipMaps = false;\n internalTexture.samplingMode = bilinearFiltering ? Constants.TEXTURE_BILINEAR_SAMPLINGMODE : Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n internalTexture.type = Constants.TEXTURETYPE_FLOAT; // the right type will be set later\n internalTexture._comparisonFunction = comparisonFunction;\n internalTexture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n internalTexture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n};\nThinWebGPUEngine.prototype.updateRenderTargetTextureSampleCount = function (rtWrapper, samples) {\n if (!rtWrapper || !rtWrapper.texture || rtWrapper.samples === samples) {\n return samples;\n }\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\n this._textureHelper.createMSAATexture(rtWrapper.texture, samples);\n if (rtWrapper._depthStencilTexture) {\n this._textureHelper.createMSAATexture(rtWrapper._depthStencilTexture, samples);\n rtWrapper._depthStencilTexture.samples = samples;\n }\n rtWrapper._samples = samples;\n rtWrapper.texture.samples = samples;\n return samples;\n};\n//# sourceMappingURL=engine.renderTarget.js.map","import { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\nThinWebGPUEngine.prototype.setDepthStencilTexture = function (channel, uniform, texture, name) {\n if (!texture || !texture.depthStencilTexture) {\n this._setTexture(channel, null, undefined, undefined, name);\n }\n else {\n this._setTexture(channel, texture, false, true, name);\n }\n};\n//# sourceMappingURL=engine.renderTargetTexture.js.map","import { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\nimport { InternalTexture } from \"../../../Materials/Textures/internalTexture\";\nimport { Constants } from \"../../constants\";\nThinWebGPUEngine.prototype.createRenderTargetCubeTexture = function (size, options) {\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, true, size);\n const fullOptions = {\n generateMipMaps: true,\n generateDepthBuffer: true,\n generateStencilBuffer: false,\n type: Constants.TEXTURETYPE_UNSIGNED_BYTE,\n samplingMode: Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\n format: Constants.TEXTUREFORMAT_RGBA,\n samples: 1,\n ...options,\n };\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && fullOptions.generateStencilBuffer;\n rtWrapper.label = fullOptions.label ?? \"RenderTargetWrapper\";\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer;\n const texture = new InternalTexture(this, 5 /* InternalTextureSource.RenderTarget */);\n texture.width = size;\n texture.height = size;\n texture.depth = 0;\n texture.isReady = true;\n texture.isCube = true;\n texture.samples = fullOptions.samples;\n texture.generateMipMaps = fullOptions.generateMipMaps;\n texture.samplingMode = fullOptions.samplingMode;\n texture.type = fullOptions.type;\n texture.format = fullOptions.format;\n this._internalTexturesCache.push(texture);\n rtWrapper.setTextures(texture);\n if (rtWrapper._generateDepthBuffer || rtWrapper._generateStencilBuffer) {\n rtWrapper.createDepthStencilTexture(0, fullOptions.samplingMode === undefined ||\n fullOptions.samplingMode === Constants.TEXTURE_BILINEAR_SAMPLINGMODE ||\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR ||\n fullOptions.samplingMode === Constants.TEXTURE_TRILINEAR_SAMPLINGMODE ||\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR ||\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST ||\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR ||\n fullOptions.samplingMode === Constants.TEXTURE_NEAREST_LINEAR ||\n fullOptions.samplingMode === Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST, rtWrapper._generateStencilBuffer, rtWrapper.samples);\n }\n if (options && options.createMipMaps && !fullOptions.generateMipMaps) {\n texture.generateMipMaps = true;\n }\n this._textureHelper.createGPUTextureForInternalTexture(texture);\n if (options && options.createMipMaps && !fullOptions.generateMipMaps) {\n texture.generateMipMaps = false;\n }\n return rtWrapper;\n};\n//# sourceMappingURL=engine.renderTargetCube.js.map","import { AbstractMesh } from \"core/Meshes/abstractMesh\";\nimport { AbstractEngine } from \"../abstractEngine\";\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class _OcclusionDataStorage {\n constructor() {\n /** @internal */\n this.occlusionInternalRetryCounter = 0;\n /** @internal */\n this.isOcclusionQueryInProgress = false;\n /** @internal */\n this.isOccluded = false;\n /** @internal */\n this.occlusionRetryCount = -1;\n /** @internal */\n this.occlusionType = AbstractMesh.OCCLUSION_TYPE_NONE;\n /** @internal */\n this.occlusionQueryAlgorithmType = AbstractMesh.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE;\n /** @internal */\n this.forceRenderingWhenOccluded = false;\n }\n}\nAbstractEngine.prototype.getGPUFrameTimeCounter = function () {\n return null;\n};\nAbstractEngine.prototype.captureGPUFrameTime = function (value) {\n // Do nothing. Must be implemented by child classes\n};\nAbstractEngine.prototype.createQuery = function () {\n return null;\n};\nAbstractEngine.prototype.deleteQuery = function (query) {\n // Do nothing. Must be implemented by child classes\n return this;\n};\nAbstractEngine.prototype.isQueryResultAvailable = function (query) {\n // Do nothing. Must be implemented by child classes\n return false;\n};\nAbstractEngine.prototype.getQueryResult = function (query) {\n // Do nothing. Must be implemented by child classes\n return 0;\n};\nAbstractEngine.prototype.beginOcclusionQuery = function (algorithmType, query) {\n // Do nothing. Must be implemented by child classes\n return false;\n};\nAbstractEngine.prototype.endOcclusionQuery = function (algorithmType) {\n // Do nothing. Must be implemented by child classes\n return this;\n};\nObject.defineProperty(AbstractMesh.prototype, \"isOcclusionQueryInProgress\", {\n get: function () {\n return this._occlusionDataStorage.isOcclusionQueryInProgress;\n },\n set: function (value) {\n this._occlusionDataStorage.isOcclusionQueryInProgress = value;\n },\n enumerable: false,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"_occlusionDataStorage\", {\n get: function () {\n if (!this.__occlusionDataStorage) {\n this.__occlusionDataStorage = new _OcclusionDataStorage();\n }\n return this.__occlusionDataStorage;\n },\n enumerable: false,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"isOccluded\", {\n get: function () {\n return this._occlusionDataStorage.isOccluded;\n },\n set: function (value) {\n this._occlusionDataStorage.isOccluded = value;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionQueryAlgorithmType\", {\n get: function () {\n return this._occlusionDataStorage.occlusionQueryAlgorithmType;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionQueryAlgorithmType = value;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionType\", {\n get: function () {\n return this._occlusionDataStorage.occlusionType;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionType = value;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionRetryCount\", {\n get: function () {\n return this._occlusionDataStorage.occlusionRetryCount;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionRetryCount = value;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"forceRenderingWhenOccluded\", {\n get: function () {\n return this._occlusionDataStorage.forceRenderingWhenOccluded;\n },\n set: function (value) {\n this._occlusionDataStorage.forceRenderingWhenOccluded = value;\n },\n enumerable: true,\n configurable: true,\n});\n// We also need to update AbstractMesh as there is a portion of the code there\nAbstractMesh.prototype._checkOcclusionQuery = function () {\n const dataStorage = this._occlusionDataStorage;\n if (dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_NONE) {\n dataStorage.isOccluded = false;\n return false;\n }\n const engine = this.getEngine();\n if (!engine.getCaps().supportOcclusionQuery) {\n dataStorage.isOccluded = false;\n return false;\n }\n if (!engine.isQueryResultAvailable) {\n // Occlusion query where not referenced\n dataStorage.isOccluded = false;\n return false;\n }\n if (this.isOcclusionQueryInProgress && this._occlusionQuery !== null && this._occlusionQuery !== undefined) {\n const isOcclusionQueryAvailable = engine.isQueryResultAvailable(this._occlusionQuery);\n if (isOcclusionQueryAvailable) {\n const occlusionQueryResult = engine.getQueryResult(this._occlusionQuery);\n dataStorage.isOcclusionQueryInProgress = false;\n dataStorage.occlusionInternalRetryCounter = 0;\n dataStorage.isOccluded = occlusionQueryResult > 0 ? false : true;\n }\n else {\n dataStorage.occlusionInternalRetryCounter++;\n if (dataStorage.occlusionRetryCount !== -1 && dataStorage.occlusionInternalRetryCounter > dataStorage.occlusionRetryCount) {\n dataStorage.isOcclusionQueryInProgress = false;\n dataStorage.occlusionInternalRetryCounter = 0;\n // if optimistic set isOccluded to false regardless of the status of isOccluded. (Render in the current render loop)\n // if strict continue the last state of the object.\n dataStorage.isOccluded = dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_OPTIMISTIC ? false : dataStorage.isOccluded;\n }\n else {\n return dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_OPTIMISTIC ? false : dataStorage.isOccluded;\n }\n }\n }\n const scene = this.getScene();\n if (scene.getBoundingBoxRenderer) {\n const occlusionBoundingBoxRenderer = scene.getBoundingBoxRenderer();\n if (this._occlusionQuery === null) {\n this._occlusionQuery = engine.createQuery();\n }\n if (this._occlusionQuery && engine.beginOcclusionQuery(dataStorage.occlusionQueryAlgorithmType, this._occlusionQuery)) {\n occlusionBoundingBoxRenderer.renderOcclusionBoundingBox(this);\n engine.endOcclusionQuery(dataStorage.occlusionQueryAlgorithmType);\n this._occlusionDataStorage.isOcclusionQueryInProgress = true;\n }\n }\n return dataStorage.isOccluded;\n};\n//# sourceMappingURL=abstractEngine.query.js.map","import { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\nimport { WebGPURenderItemBeginOcclusionQuery, WebGPURenderItemEndOcclusionQuery } from \"../webgpuBundleList\";\nimport \"../../../Engines/AbstractEngine/abstractEngine.query\";\nThinWebGPUEngine.prototype.getGPUFrameTimeCounter = function () {\n return this._timestampQuery.gpuFrameTimeCounter;\n};\nThinWebGPUEngine.prototype.captureGPUFrameTime = function (value) {\n this._timestampQuery.enable = value && !!this._caps.timerQuery;\n};\nThinWebGPUEngine.prototype.createQuery = function () {\n return this._occlusionQuery.createQuery();\n};\nThinWebGPUEngine.prototype.deleteQuery = function (query) {\n this._occlusionQuery.deleteQuery(query);\n return this;\n};\nThinWebGPUEngine.prototype.isQueryResultAvailable = function (query) {\n return this._occlusionQuery.isQueryResultAvailable(query);\n};\nThinWebGPUEngine.prototype.getQueryResult = function (query) {\n return this._occlusionQuery.getQueryResult(query);\n};\nThinWebGPUEngine.prototype.beginOcclusionQuery = function (algorithmType, query) {\n if (this.compatibilityMode) {\n if (this._occlusionQuery.canBeginQuery(query)) {\n this._currentRenderPass?.beginOcclusionQuery(query);\n return true;\n }\n }\n else {\n this._bundleList.addItem(new WebGPURenderItemBeginOcclusionQuery(query));\n return true;\n }\n return false;\n};\nThinWebGPUEngine.prototype.endOcclusionQuery = function () {\n if (this.compatibilityMode) {\n this._currentRenderPass?.endOcclusionQuery();\n }\n else {\n this._bundleList.addItem(new WebGPURenderItemEndOcclusionQuery());\n }\n return this;\n};\n//# sourceMappingURL=engine.query.js.map","/* eslint-disable babylonjs/available */\nimport { Logger } from \"../Misc/logger\";\nimport { ThinWebGPUEngine } from \"./thinWebGPUEngine\";\nimport { Color4 } from \"../Maths/math\";\nimport { InternalTexture } from \"../Materials/Textures/internalTexture\";\nimport { Effect } from \"../Materials/effect\";\nimport { Constants } from \"./constants\";\n// eslint-disable-next-line @typescript-eslint/naming-convention\nimport * as WebGPUConstants from \"./WebGPU/webgpuConstants\";\nimport { VertexBuffer } from \"../Buffers/buffer\";\nimport { WebGPUPipelineContext } from \"./WebGPU/webgpuPipelineContext\";\nimport { WebGPUShaderProcessorGLSL } from \"./WebGPU/webgpuShaderProcessorsGLSL\";\nimport { WebGPUShaderProcessorWGSL } from \"./WebGPU/webgpuShaderProcessorsWGSL\";\nimport { WebGPUShaderProcessingContext } from \"./WebGPU/webgpuShaderProcessingContext\";\nimport { Tools } from \"../Misc/tools\";\nimport { WebGPUTextureHelper } from \"./WebGPU/webgpuTextureHelper\";\nimport { WebGPUTextureManager } from \"./WebGPU/webgpuTextureManager\";\nimport { AbstractEngine } from \"./abstractEngine\";\nimport { WebGPUBufferManager } from \"./WebGPU/webgpuBufferManager\";\nimport { WebGPUHardwareTexture } from \"./WebGPU/webgpuHardwareTexture\";\nimport { UniformBuffer } from \"../Materials/uniformBuffer\";\nimport { WebGPUCacheSampler } from \"./WebGPU/webgpuCacheSampler\";\nimport { WebGPUCacheRenderPipelineTree } from \"./WebGPU/webgpuCacheRenderPipelineTree\";\nimport { WebGPUStencilStateComposer } from \"./WebGPU/webgpuStencilStateComposer\";\nimport { WebGPUDepthCullingState } from \"./WebGPU/webgpuDepthCullingState\";\nimport { WebGPUMaterialContext } from \"./WebGPU/webgpuMaterialContext\";\nimport { WebGPUDrawContext } from \"./WebGPU/webgpuDrawContext\";\nimport { WebGPUCacheBindGroups } from \"./WebGPU/webgpuCacheBindGroups\";\nimport { WebGPUClearQuad } from \"./WebGPU/webgpuClearQuad\";\nimport { WebGPURenderItemBlendColor, WebGPURenderItemScissor, WebGPURenderItemStencilRef, WebGPURenderItemViewport, WebGPUBundleList } from \"./WebGPU/webgpuBundleList\";\nimport { WebGPUTimestampQuery } from \"./WebGPU/webgpuTimestampQuery\";\nimport { WebGPUOcclusionQuery } from \"./WebGPU/webgpuOcclusionQuery\";\nimport { ShaderCodeInliner } from \"./Processors/shaderCodeInliner\";\nimport { WebGPUTintWASM } from \"./WebGPU/webgpuTintWASM\";\nimport { WebGPUShaderProcessor } from \"./WebGPU/webgpuShaderProcessor\";\nimport { WebGPUSnapshotRendering } from \"./WebGPU/webgpuSnapshotRendering\";\nimport \"../Buffers/buffer.align\";\nimport { SphericalPolynomial } from \"../Maths/sphericalPolynomial\";\nimport { PerformanceMonitor } from \"../Misc/performanceMonitor\";\nimport { CreateImageBitmapFromSource, ExitFullscreen, ExitPointerlock, GetFontOffset, RequestFullscreen, RequestPointerlock, ResizeImageBitmap, _CommonDispose, _CommonInit, } from \"./engine.common\";\nimport { IsWrapper } from \"../Materials/drawWrapper.functions\";\nimport { PerfCounter } from \"../Misc/perfCounter\";\nimport \"./AbstractEngine/abstractEngine.loadingScreen\";\nimport \"./AbstractEngine/abstractEngine.dom\";\nimport \"./AbstractEngine/abstractEngine.states\";\nimport \"./AbstractEngine/abstractEngine.renderPass\";\nimport \"../Audio/audioEngine\";\nimport { resetCachedPipeline } from \"../Materials/effect.functions\";\nimport { WebGPUExternalTexture } from \"./WebGPU/webgpuExternalTexture\";\nimport \"./WebGPU/Extensions/engine.alpha\";\nimport \"./WebGPU/Extensions/engine.rawTexture\";\nimport \"./WebGPU/Extensions/engine.readTexture\";\nimport \"./WebGPU/Extensions/engine.cubeTexture\";\nimport \"./WebGPU/Extensions/engine.renderTarget\";\nimport \"./WebGPU/Extensions/engine.renderTargetTexture\";\nimport \"./WebGPU/Extensions/engine.renderTargetCube\";\nimport \"./WebGPU/Extensions/engine.query\";\nconst viewDescriptorSwapChainAntialiasing = {\n label: `TextureView_SwapChain_ResolveTarget`,\n dimension: \"2d\" /* WebGPUConstants.TextureDimension.E2d */,\n format: undefined, // will be updated with the right value\n mipLevelCount: 1,\n arrayLayerCount: 1,\n};\nconst viewDescriptorSwapChain = {\n label: `TextureView_SwapChain`,\n dimension: \"2d\" /* WebGPUConstants.TextureDimension.E2d */,\n format: undefined, // will be updated with the right value\n mipLevelCount: 1,\n arrayLayerCount: 1,\n};\nconst tempColor4 = new Color4();\n/**\n * The web GPU engine class provides support for WebGPU version of babylon.js.\n * @since 5.0.0\n */\nexport class WebGPUEngine extends ThinWebGPUEngine {\n /**\n * Gets or sets the snapshot rendering mode\n */\n get snapshotRenderingMode() {\n return this._snapshotRendering.mode;\n }\n set snapshotRenderingMode(mode) {\n this._snapshotRendering.mode = mode;\n }\n /**\n * Creates a new snapshot at the next frame using the current snapshotRenderingMode\n */\n snapshotRenderingReset() {\n this._snapshotRendering.reset();\n }\n /**\n * Enables or disables the snapshot rendering mode\n * Note that the WebGL engine does not support snapshot rendering so setting the value won't have any effect for this engine\n */\n get snapshotRendering() {\n return this._snapshotRendering.enabled;\n }\n set snapshotRendering(activate) {\n this._snapshotRendering.enabled = activate;\n }\n /**\n * Sets this to true to disable the cache for the samplers. You should do it only for testing purpose!\n */\n get disableCacheSamplers() {\n return this._cacheSampler ? this._cacheSampler.disabled : false;\n }\n set disableCacheSamplers(disable) {\n if (this._cacheSampler) {\n this._cacheSampler.disabled = disable;\n }\n }\n /**\n * Sets this to true to disable the cache for the render pipelines. You should do it only for testing purpose!\n */\n get disableCacheRenderPipelines() {\n return this._cacheRenderPipeline ? this._cacheRenderPipeline.disabled : false;\n }\n set disableCacheRenderPipelines(disable) {\n if (this._cacheRenderPipeline) {\n this._cacheRenderPipeline.disabled = disable;\n }\n }\n /**\n * Sets this to true to disable the cache for the bind groups. You should do it only for testing purpose!\n */\n get disableCacheBindGroups() {\n return this._cacheBindGroups ? this._cacheBindGroups.disabled : false;\n }\n set disableCacheBindGroups(disable) {\n if (this._cacheBindGroups) {\n this._cacheBindGroups.disabled = disable;\n }\n }\n /**\n * Gets a boolean indicating if all created effects are ready\n * @returns true if all effects are ready\n */\n areAllEffectsReady() {\n return true;\n }\n /**\n * Get Font size information\n * @param font font name\n * @returns an object containing ascent, height and descent\n */\n getFontOffset(font) {\n return GetFontOffset(font);\n }\n /**\n * Gets a Promise<boolean> indicating if the engine can be instantiated (ie. if a WebGPU context can be found)\n */\n static get IsSupportedAsync() {\n return !navigator.gpu\n ? Promise.resolve(false)\n : navigator.gpu\n .requestAdapter()\n .then((adapter) => !!adapter, () => false)\n .catch(() => false);\n }\n /**\n * Not supported by WebGPU, you should call IsSupportedAsync instead!\n */\n static get IsSupported() {\n Logger.Warn(\"You must call IsSupportedAsync for WebGPU!\");\n return false;\n }\n /**\n * Gets a boolean indicating that the engine supports uniform buffers\n */\n get supportsUniformBuffers() {\n return true;\n }\n /** Gets the supported extensions by the WebGPU adapter */\n get supportedExtensions() {\n return this._adapterSupportedExtensions;\n }\n /** Gets the currently enabled extensions on the WebGPU device */\n get enabledExtensions() {\n return this._deviceEnabledExtensions;\n }\n /** Gets the supported limits by the WebGPU adapter */\n get supportedLimits() {\n return this._adapterSupportedLimits;\n }\n /** Gets the current limits of the WebGPU device */\n get currentLimits() {\n return this._deviceLimits;\n }\n /**\n * Returns a string describing the current engine\n */\n get description() {\n const description = this.name + this.version;\n return description;\n }\n /**\n * Returns the version of the engine\n */\n get version() {\n return 1;\n }\n /**\n * Gets an object containing information about the current engine context\n * @returns an object containing the vendor, the renderer and the version of the current engine context\n */\n getInfo() {\n return {\n vendor: this._adapterInfo.vendor || \"unknown vendor\",\n renderer: this._adapterInfo.architecture || \"unknown renderer\",\n version: this._adapterInfo.description || \"unknown version\",\n };\n }\n /**\n * (WebGPU only) True (default) to be in compatibility mode, meaning rendering all existing scenes without artifacts (same rendering than WebGL).\n * Setting the property to false will improve performances but may not work in some scenes if some precautions are not taken.\n * See https://doc.babylonjs.com/setup/support/webGPU/webGPUOptimization/webGPUNonCompatibilityMode for more details\n */\n get compatibilityMode() {\n return this._compatibilityMode;\n }\n set compatibilityMode(mode) {\n this._compatibilityMode = mode;\n }\n /** @internal */\n get currentSampleCount() {\n return this._currentRenderTarget ? this._currentRenderTarget.samples : this._mainPassSampleCount;\n }\n /**\n * Create a new instance of the gpu engine asynchronously\n * @param canvas Defines the canvas to use to display the result\n * @param options Defines the options passed to the engine to create the GPU context dependencies\n * @returns a promise that resolves with the created engine\n */\n static CreateAsync(canvas, options = {}) {\n const engine = new WebGPUEngine(canvas, options);\n return new Promise((resolve) => {\n engine.initAsync(options.glslangOptions, options.twgslOptions).then(() => resolve(engine));\n });\n }\n /**\n * Create a new instance of the gpu engine.\n * @param canvas Defines the canvas to use to display the result\n * @param options Defines the options passed to the engine to create the GPU context dependencies\n */\n constructor(canvas, options = {}) {\n super(options.antialias ?? true, options);\n /** A unique id to identify this instance */\n this.uniqueId = -1;\n // Page Life cycle and constants\n this._uploadEncoderDescriptor = { label: \"upload\" };\n this._renderEncoderDescriptor = { label: \"render\" };\n /** @internal */\n this._clearDepthValue = 1;\n /** @internal */\n this._clearReverseDepthValue = 0;\n /** @internal */\n this._clearStencilValue = 0;\n this._defaultSampleCount = 4; // Only supported value for now.\n this._glslang = null;\n this._tintWASM = null;\n this._glslangAndTintAreFullyLoaded = false;\n this._adapterInfo = {\n vendor: \"\",\n architecture: \"\",\n device: \"\",\n description: \"\",\n };\n /** @internal */\n this._compiledComputeEffects = {};\n /** @internal */\n this._counters = {\n numEnableEffects: 0,\n numEnableDrawWrapper: 0,\n numBundleCreationNonCompatMode: 0,\n numBundleReuseNonCompatMode: 0,\n };\n /**\n * Counters from last frame\n */\n this.countersLastFrame = {\n numEnableEffects: 0,\n numEnableDrawWrapper: 0,\n numBundleCreationNonCompatMode: 0,\n numBundleReuseNonCompatMode: 0,\n };\n /**\n * Max number of uncaptured error messages to log\n */\n this.numMaxUncapturedErrors = 20;\n /**\n * Gets the list of created scenes\n */\n this.scenes = [];\n /** @internal */\n this._virtualScenes = new Array();\n this._commandBuffers = [null, null];\n // Frame Buffer Life Cycle (recreated for each render target pass)\n this._mainRenderPassWrapper = {\n renderPassDescriptor: null,\n colorAttachmentViewDescriptor: null,\n depthAttachmentViewDescriptor: null,\n colorAttachmentGPUTextures: [],\n depthTextureFormat: undefined,\n };\n this._rttRenderPassWrapper = {\n renderPassDescriptor: null,\n colorAttachmentViewDescriptor: null,\n depthAttachmentViewDescriptor: null,\n colorAttachmentGPUTextures: [],\n depthTextureFormat: undefined,\n };\n /** @internal */\n this._pendingDebugCommands = [];\n this._currentOverrideVertexBuffers = null;\n this._currentIndexBuffer = null;\n this._colorWriteLocal = true;\n this._forceEnableEffect = false;\n /**\n * Indicates if the z range in NDC space is 0..1 (value: true) or -1..1 (value: false)\n */\n this.isNDCHalfZRange = true;\n /**\n * Indicates that the origin of the texture/framebuffer space is the bottom left corner. If false, the origin is top left\n */\n this.hasOriginBottomLeft = false;\n //------------------------------------------------------------------------------\n // Initialization\n //------------------------------------------------------------------------------\n this._workingGlslangAndTintPromise = null;\n //------------------------------------------------------------------------------\n // Dynamic WebGPU States\n //------------------------------------------------------------------------------\n // index 0 is for main render pass, 1 for RTT render pass\n this._viewportsCurrent = { x: 0, y: 0, w: 0, h: 0 };\n this._scissorsCurrent = { x: 0, y: 0, w: 0, h: 0 };\n this._scissorCached = { x: 0, y: 0, z: 0, w: 0 };\n this._stencilRefsCurrent = -1;\n this._blendColorsCurrent = [null, null, null, null];\n this._performanceMonitor = new PerformanceMonitor();\n this._name = \"WebGPU\";\n this._drawCalls = new PerfCounter();\n options.deviceDescriptor = options.deviceDescriptor || {};\n options.enableGPUDebugMarkers = options.enableGPUDebugMarkers ?? false;\n Logger.Log(`Babylon.js v${AbstractEngine.Version} - ${this.description} engine`);\n if (!navigator.gpu) {\n Logger.Error(\"WebGPU is not supported by your browser.\");\n return;\n }\n options.swapChainFormat = options.swapChainFormat || navigator.gpu.getPreferredCanvasFormat();\n this._isWebGPU = true;\n this._shaderPlatformName = \"WEBGPU\";\n this._renderingCanvas = canvas;\n this._options = options;\n this._mainPassSampleCount = options.antialias ? this._defaultSampleCount : 1;\n if (navigator && navigator.userAgent) {\n this._setupMobileChecks();\n }\n this._sharedInit(this._renderingCanvas);\n this._shaderProcessor = new WebGPUShaderProcessorGLSL();\n this._shaderProcessorWGSL = new WebGPUShaderProcessorWGSL();\n }\n /**\n * Load the glslang and tintWASM libraries and prepare them for use.\n * @returns a promise that resolves when the engine is ready to use the glslang and tintWASM\n */\n prepareGlslangAndTintAsync() {\n if (!this._workingGlslangAndTintPromise) {\n this._workingGlslangAndTintPromise = new Promise((resolve) => {\n this._initGlslang(this._glslangOptions ?? this._options?.glslangOptions).then((glslang) => {\n this._glslang = glslang;\n this._tintWASM = new WebGPUTintWASM();\n this._tintWASM.initTwgsl(this._twgslOptions ?? this._options?.twgslOptions).then(() => {\n this._glslangAndTintAreFullyLoaded = true;\n resolve();\n });\n });\n });\n }\n return this._workingGlslangAndTintPromise;\n }\n /**\n * Initializes the WebGPU context and dependencies.\n * @param glslangOptions Defines the GLSLang compiler options if necessary\n * @param twgslOptions Defines the Twgsl compiler options if necessary\n * @returns a promise notifying the readiness of the engine.\n */\n initAsync(glslangOptions, twgslOptions) {\n this.uniqueId = WebGPUEngine._InstanceId++;\n this._glslangOptions = glslangOptions;\n this._twgslOptions = twgslOptions;\n return navigator\n .gpu.requestAdapter(this._options)\n .then((adapter) => {\n if (!adapter) {\n // eslint-disable-next-line no-throw-literal\n throw \"Could not retrieve a WebGPU adapter (adapter is null).\";\n }\n else {\n this._adapter = adapter;\n this._adapterSupportedExtensions = [];\n this._adapter.features?.forEach((feature) => this._adapterSupportedExtensions.push(feature));\n this._adapterSupportedLimits = this._adapter.limits;\n this._adapterInfo = this._adapter.info;\n const deviceDescriptor = this._options.deviceDescriptor ?? {};\n const requiredFeatures = deviceDescriptor?.requiredFeatures ?? (this._options.enableAllFeatures ? this._adapterSupportedExtensions : undefined);\n if (requiredFeatures) {\n const requestedExtensions = requiredFeatures;\n const validExtensions = [];\n for (const extension of requestedExtensions) {\n if (this._adapterSupportedExtensions.indexOf(extension) !== -1) {\n validExtensions.push(extension);\n }\n }\n deviceDescriptor.requiredFeatures = validExtensions;\n }\n if (this._options.setMaximumLimits && !deviceDescriptor.requiredLimits) {\n deviceDescriptor.requiredLimits = {};\n for (const name in this._adapterSupportedLimits) {\n if (name === \"minSubgroupSize\" || name === \"maxSubgroupSize\") {\n // Chrome exposes these limits in \"webgpu developer\" mode, but these can't be set on the device.\n continue;\n }\n deviceDescriptor.requiredLimits[name] = this._adapterSupportedLimits[name];\n }\n }\n deviceDescriptor.label = `BabylonWebGPUDevice${this.uniqueId}`;\n return this._adapter.requestDevice(deviceDescriptor);\n }\n })\n .then((device) => {\n this._device = device;\n this._deviceEnabledExtensions = [];\n this._device.features?.forEach((feature) => this._deviceEnabledExtensions.push(feature));\n this._deviceLimits = device.limits;\n let numUncapturedErrors = -1;\n this._device.addEventListener(\"uncapturederror\", (event) => {\n if (++numUncapturedErrors < this.numMaxUncapturedErrors) {\n Logger.Warn(`WebGPU uncaptured error (${numUncapturedErrors + 1}): ${event.error} - ${event.error.message}`);\n }\n else if (numUncapturedErrors++ === this.numMaxUncapturedErrors) {\n Logger.Warn(`WebGPU uncaptured error: too many warnings (${this.numMaxUncapturedErrors}), no more warnings will be reported to the console for this engine.`);\n }\n });\n if (!this._doNotHandleContextLost) {\n this._device.lost?.then((info) => {\n if (this._isDisposed) {\n return;\n }\n this._contextWasLost = true;\n Logger.Warn(\"WebGPU context lost. \" + info);\n this.onContextLostObservable.notifyObservers(this);\n this._restoreEngineAfterContextLost(async () => {\n const snapshotRenderingMode = this.snapshotRenderingMode;\n const snapshotRendering = this.snapshotRendering;\n const disableCacheSamplers = this.disableCacheSamplers;\n const disableCacheRenderPipelines = this.disableCacheRenderPipelines;\n const disableCacheBindGroups = this.disableCacheBindGroups;\n const enableGPUTimingMeasurements = this.enableGPUTimingMeasurements;\n await this.initAsync(this._glslangOptions ?? this._options?.glslangOptions, this._twgslOptions ?? this._options?.twgslOptions);\n this.snapshotRenderingMode = snapshotRenderingMode;\n this.snapshotRendering = snapshotRendering;\n this.disableCacheSamplers = disableCacheSamplers;\n this.disableCacheRenderPipelines = disableCacheRenderPipelines;\n this.disableCacheBindGroups = disableCacheBindGroups;\n this.enableGPUTimingMeasurements = enableGPUTimingMeasurements;\n this._currentRenderPass = null;\n });\n });\n }\n })\n .then(() => {\n this._initializeLimits();\n this._bufferManager = new WebGPUBufferManager(this, this._device);\n this._textureHelper = new WebGPUTextureManager(this, this._device, this._bufferManager, this._deviceEnabledExtensions);\n this._cacheSampler = new WebGPUCacheSampler(this._device);\n this._cacheBindGroups = new WebGPUCacheBindGroups(this._device, this._cacheSampler, this);\n this._timestampQuery = new WebGPUTimestampQuery(this, this._device, this._bufferManager);\n this._occlusionQuery = this._device.createQuerySet ? new WebGPUOcclusionQuery(this, this._device, this._bufferManager) : undefined;\n this._bundleList = new WebGPUBundleList(this._device);\n this._snapshotRendering = new WebGPUSnapshotRendering(this, this._snapshotRenderingMode, this._bundleList);\n this._ubInvertY = this._bufferManager.createBuffer(new Float32Array([-1, 0]), WebGPUConstants.BufferUsage.Uniform | WebGPUConstants.BufferUsage.CopyDst, \"UBInvertY\");\n this._ubDontInvertY = this._bufferManager.createBuffer(new Float32Array([1, 0]), WebGPUConstants.BufferUsage.Uniform | WebGPUConstants.BufferUsage.CopyDst, \"UBDontInvertY\");\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n Logger.Log([\"%c frame #\" + this._count + \" - begin\", \"background: #ffff00\"]);\n }\n }\n this._uploadEncoder = this._device.createCommandEncoder(this._uploadEncoderDescriptor);\n this._renderEncoder = this._device.createCommandEncoder(this._renderEncoderDescriptor);\n this._emptyVertexBuffer = new VertexBuffer(this, [0], \"\", {\n stride: 1,\n offset: 0,\n size: 1,\n label: \"EmptyVertexBuffer\",\n });\n this._cacheRenderPipeline = new WebGPUCacheRenderPipelineTree(this._device, this._emptyVertexBuffer);\n this._depthCullingState = new WebGPUDepthCullingState(this._cacheRenderPipeline);\n this._stencilStateComposer = new WebGPUStencilStateComposer(this._cacheRenderPipeline);\n this._stencilStateComposer.stencilGlobal = this._stencilState;\n this._depthCullingState.depthTest = true;\n this._depthCullingState.depthFunc = Constants.LEQUAL;\n this._depthCullingState.depthMask = true;\n this._textureHelper.setCommandEncoder(this._uploadEncoder);\n this._clearQuad = new WebGPUClearQuad(this._device, this, this._emptyVertexBuffer);\n this._defaultDrawContext = this.createDrawContext();\n this._currentDrawContext = this._defaultDrawContext;\n this._defaultMaterialContext = this.createMaterialContext();\n this._currentMaterialContext = this._defaultMaterialContext;\n this._initializeContextAndSwapChain();\n this._initializeMainAttachments();\n this.resize();\n })\n .catch((e) => {\n Logger.Error(\"A fatal error occurred during WebGPU creation/initialization.\");\n throw e;\n });\n }\n _initGlslang(glslangOptions) {\n glslangOptions = glslangOptions || {};\n glslangOptions = {\n ...WebGPUEngine._GlslangDefaultOptions,\n ...glslangOptions,\n };\n if (glslangOptions.glslang) {\n return Promise.resolve(glslangOptions.glslang);\n }\n if (self.glslang) {\n return self.glslang(glslangOptions.wasmPath);\n }\n if (glslangOptions.jsPath && glslangOptions.wasmPath) {\n return Tools.LoadBabylonScriptAsync(glslangOptions.jsPath).then(() => {\n return self.glslang(Tools.GetBabylonScriptURL(glslangOptions.wasmPath));\n });\n }\n return Promise.reject(\"gslang is not available.\");\n }\n _initializeLimits() {\n // Init caps\n // TODO WEBGPU Real Capability check once limits will be working.\n this._caps = {\n maxTexturesImageUnits: this._deviceLimits.maxSampledTexturesPerShaderStage,\n maxVertexTextureImageUnits: this._deviceLimits.maxSampledTexturesPerShaderStage,\n maxCombinedTexturesImageUnits: this._deviceLimits.maxSampledTexturesPerShaderStage * 2,\n maxTextureSize: this._deviceLimits.maxTextureDimension2D,\n maxCubemapTextureSize: this._deviceLimits.maxTextureDimension2D,\n maxRenderTextureSize: this._deviceLimits.maxTextureDimension2D,\n maxVertexAttribs: this._deviceLimits.maxVertexAttributes,\n maxDrawBuffers: 8,\n maxVaryingVectors: this._deviceLimits.maxInterStageShaderVariables,\n maxFragmentUniformVectors: Math.floor(this._deviceLimits.maxUniformBufferBindingSize / 4),\n maxVertexUniformVectors: Math.floor(this._deviceLimits.maxUniformBufferBindingSize / 4),\n standardDerivatives: true,\n astc: (this._deviceEnabledExtensions.indexOf(\"texture-compression-astc\" /* WebGPUConstants.FeatureName.TextureCompressionASTC */) >= 0 ? true : undefined),\n s3tc: (this._deviceEnabledExtensions.indexOf(\"texture-compression-bc\" /* WebGPUConstants.FeatureName.TextureCompressionBC */) >= 0 ? true : undefined),\n pvrtc: null,\n etc1: null,\n etc2: (this._deviceEnabledExtensions.indexOf(\"texture-compression-etc2\" /* WebGPUConstants.FeatureName.TextureCompressionETC2 */) >= 0 ? true : undefined),\n bptc: this._deviceEnabledExtensions.indexOf(\"texture-compression-bc\" /* WebGPUConstants.FeatureName.TextureCompressionBC */) >= 0 ? true : undefined,\n maxAnisotropy: 16, // Most implementations support maxAnisotropy values in range between 1 and 16, inclusive. The used value of maxAnisotropy will be clamped to the maximum value that the platform supports.\n uintIndices: true,\n fragmentDepthSupported: true,\n highPrecisionShaderSupported: true,\n colorBufferFloat: true,\n supportFloatTexturesResolve: false, // See https://github.com/gpuweb/gpuweb/issues/3844\n rg11b10ufColorRenderable: this._deviceEnabledExtensions.indexOf(\"rg11b10ufloat-renderable\" /* WebGPUConstants.FeatureName.RG11B10UFloatRenderable */) >= 0,\n textureFloat: true,\n textureFloatLinearFiltering: this._deviceEnabledExtensions.indexOf(\"float32-filterable\" /* WebGPUConstants.FeatureName.Float32Filterable */) >= 0,\n textureFloatRender: true,\n textureHalfFloat: true,\n textureHalfFloatLinearFiltering: true,\n textureHalfFloatRender: true,\n textureLOD: true,\n texelFetch: true,\n drawBuffersExtension: true,\n depthTextureExtension: true,\n vertexArrayObject: false,\n instancedArrays: true,\n timerQuery: typeof BigUint64Array !== \"undefined\" && this._deviceEnabledExtensions.indexOf(\"timestamp-query\" /* WebGPUConstants.FeatureName.TimestampQuery */) !== -1 ? true : undefined,\n supportOcclusionQuery: typeof BigUint64Array !== \"undefined\",\n canUseTimestampForTimerQuery: true,\n multiview: false,\n oculusMultiview: false,\n parallelShaderCompile: undefined,\n blendMinMax: true,\n maxMSAASamples: 4, // the spec only supports values of 1 and 4\n canUseGLInstanceID: true,\n canUseGLVertexID: true,\n supportComputeShaders: true,\n supportSRGBBuffers: true,\n supportTransformFeedbacks: false,\n textureMaxLevel: true,\n texture2DArrayMaxLayerCount: this._deviceLimits.maxTextureArrayLayers,\n disableMorphTargetTexture: false,\n textureNorm16: false, // in the works: https://github.com/gpuweb/gpuweb/issues/3001\n };\n this._features = {\n forceBitmapOverHTMLImageElement: true,\n supportRenderAndCopyToLodForFloatTextures: true,\n supportDepthStencilTexture: true,\n supportShadowSamplers: true,\n uniformBufferHardCheckMatrix: false,\n allowTexturePrefiltering: true,\n trackUbosInFrame: true,\n checkUbosContentBeforeUpload: true,\n supportCSM: true,\n basisNeedsPOT: false,\n support3DTextures: true,\n needTypeSuffixInShaderConstants: true,\n supportMSAA: true,\n supportSSAO2: true,\n supportIBLShadows: true,\n supportExtendedTextureFormats: true,\n supportSwitchCaseInShader: true,\n supportSyncTextureRead: false,\n needsInvertingBitmap: false,\n useUBOBindingCache: false,\n needShaderCodeInlining: true,\n needToAlwaysBindUniformBuffers: true,\n supportRenderPasses: true,\n supportSpriteInstancing: true,\n forceVertexBufferStrideAndOffsetMultiple4Bytes: true,\n _checkNonFloatVertexBuffersDontRecreatePipelineContext: true,\n _collectUbosUpdatedInFrame: false,\n };\n }\n _initializeContextAndSwapChain() {\n if (!this._renderingCanvas) {\n // eslint-disable-next-line no-throw-literal\n throw \"The rendering canvas has not been set!\";\n }\n this._context = this._renderingCanvas.getContext(\"webgpu\");\n this._configureContext();\n this._colorFormat = this._options.swapChainFormat;\n this._mainRenderPassWrapper.colorAttachmentGPUTextures = [new WebGPUHardwareTexture(this)];\n this._mainRenderPassWrapper.colorAttachmentGPUTextures[0].format = this._colorFormat;\n this._setColorFormat(this._mainRenderPassWrapper);\n }\n // Set default values as WebGL with depth and stencil attachment for the broadest Compat.\n _initializeMainAttachments() {\n if (!this._bufferManager) {\n return;\n }\n this.flushFramebuffer();\n this._mainTextureExtends = {\n width: this.getRenderWidth(true),\n height: this.getRenderHeight(true),\n depthOrArrayLayers: 1,\n };\n const bufferDataUpdate = new Float32Array([this.getRenderHeight(true)]);\n this._bufferManager.setSubData(this._ubInvertY, 4, bufferDataUpdate);\n this._bufferManager.setSubData(this._ubDontInvertY, 4, bufferDataUpdate);\n let mainColorAttachments;\n if (this._options.antialias) {\n const mainTextureDescriptor = {\n label: `Texture_MainColor_${this._mainTextureExtends.width}x${this._mainTextureExtends.height}_antialiasing`,\n size: this._mainTextureExtends,\n mipLevelCount: 1,\n sampleCount: this._mainPassSampleCount,\n dimension: \"2d\" /* WebGPUConstants.TextureDimension.E2d */,\n format: this._options.swapChainFormat,\n usage: 16 /* WebGPUConstants.TextureUsage.RenderAttachment */,\n };\n if (this._mainTexture) {\n this._textureHelper.releaseTexture(this._mainTexture);\n }\n this._mainTexture = this._device.createTexture(mainTextureDescriptor);\n mainColorAttachments = [\n {\n view: this._mainTexture.createView({\n label: \"TextureView_MainColor_antialiasing\",\n dimension: \"2d\" /* WebGPUConstants.TextureDimension.E2d */,\n format: this._options.swapChainFormat,\n mipLevelCount: 1,\n arrayLayerCount: 1,\n }),\n clearValue: new Color4(0, 0, 0, 1),\n loadOp: \"clear\" /* WebGPUConstants.LoadOp.Clear */,\n storeOp: \"store\" /* WebGPUConstants.StoreOp.Store */, // don't use StoreOp.Discard, else using several cameras with different viewports or using scissors will fail because we call beginRenderPass / endPass several times for the same color attachment!\n },\n ];\n }\n else {\n mainColorAttachments = [\n {\n view: undefined,\n clearValue: new Color4(0, 0, 0, 1),\n loadOp: \"clear\" /* WebGPUConstants.LoadOp.Clear */,\n storeOp: \"store\" /* WebGPUConstants.StoreOp.Store */,\n },\n ];\n }\n this._mainRenderPassWrapper.depthTextureFormat = this.isStencilEnable ? \"depth24plus-stencil8\" /* WebGPUConstants.TextureFormat.Depth24PlusStencil8 */ : \"depth32float\" /* WebGPUConstants.TextureFormat.Depth32Float */;\n this._setDepthTextureFormat(this._mainRenderPassWrapper);\n this._setColorFormat(this._mainRenderPassWrapper);\n const depthTextureDescriptor = {\n label: `Texture_MainDepthStencil_${this._mainTextureExtends.width}x${this._mainTextureExtends.height}`,\n size: this._mainTextureExtends,\n mipLevelCount: 1,\n sampleCount: this._mainPassSampleCount,\n dimension: \"2d\" /* WebGPUConstants.TextureDimension.E2d */,\n format: this._mainRenderPassWrapper.depthTextureFormat,\n usage: 16 /* WebGPUConstants.TextureUsage.RenderAttachment */,\n };\n if (this._depthTexture) {\n this._textureHelper.releaseTexture(this._depthTexture);\n }\n this._depthTexture = this._device.createTexture(depthTextureDescriptor);\n const mainDepthAttachment = {\n view: this._depthTexture.createView({\n label: `TextureView_MainDepthStencil_${this._mainTextureExtends.width}x${this._mainTextureExtends.height}`,\n dimension: \"2d\" /* WebGPUConstants.TextureDimension.E2d */,\n format: this._depthTexture.format,\n mipLevelCount: 1,\n arrayLayerCount: 1,\n }),\n depthClearValue: this._clearDepthValue,\n depthLoadOp: \"clear\" /* WebGPUConstants.LoadOp.Clear */,\n depthStoreOp: \"store\" /* WebGPUConstants.StoreOp.Store */,\n stencilClearValue: this._clearStencilValue,\n stencilLoadOp: !this.isStencilEnable ? undefined : \"clear\" /* WebGPUConstants.LoadOp.Clear */,\n stencilStoreOp: !this.isStencilEnable ? undefined : \"store\" /* WebGPUConstants.StoreOp.Store */,\n };\n this._mainRenderPassWrapper.renderPassDescriptor = {\n label: \"MainRenderPass\",\n colorAttachments: mainColorAttachments,\n depthStencilAttachment: mainDepthAttachment,\n };\n }\n /**\n * Shared initialization across engines types.\n * @param canvas The canvas associated with this instance of the engine.\n */\n _sharedInit(canvas) {\n super._sharedInit(canvas);\n _CommonInit(this, canvas, this._creationOptions);\n }\n _configureContext() {\n this._context.configure({\n device: this._device,\n format: this._options.swapChainFormat,\n usage: 16 /* WebGPUConstants.TextureUsage.RenderAttachment */ | 1 /* WebGPUConstants.TextureUsage.CopySrc */,\n alphaMode: this.premultipliedAlpha ? \"premultiplied\" /* WebGPUConstants.CanvasAlphaMode.Premultiplied */ : \"opaque\" /* WebGPUConstants.CanvasAlphaMode.Opaque */,\n });\n }\n /**\n * Resize an image and returns the image data as an uint8array\n * @param image image to resize\n * @param bufferWidth destination buffer width\n * @param bufferHeight destination buffer height\n * @returns an uint8array containing RGBA values of bufferWidth * bufferHeight size\n */\n resizeImageBitmap(image, bufferWidth, bufferHeight) {\n return ResizeImageBitmap(this, image, bufferWidth, bufferHeight);\n }\n /**\n * Engine abstraction for loading and creating an image bitmap from a given source string.\n * @param imageSource source to load the image from.\n * @param options An object that sets options for the image's extraction.\n * @returns ImageBitmap\n */\n _createImageBitmapFromSource(imageSource, options) {\n return CreateImageBitmapFromSource(this, imageSource, options);\n }\n /**\n * Toggle full screen mode\n * @param requestPointerLock defines if a pointer lock should be requested from the user\n */\n switchFullscreen(requestPointerLock) {\n if (this.isFullscreen) {\n this.exitFullscreen();\n }\n else {\n this.enterFullscreen(requestPointerLock);\n }\n }\n /**\n * Enters full screen mode\n * @param requestPointerLock defines if a pointer lock should be requested from the user\n */\n enterFullscreen(requestPointerLock) {\n if (!this.isFullscreen) {\n this._pointerLockRequested = requestPointerLock;\n if (this._renderingCanvas) {\n RequestFullscreen(this._renderingCanvas);\n }\n }\n }\n /**\n * Exits full screen mode\n */\n exitFullscreen() {\n if (this.isFullscreen) {\n ExitFullscreen();\n }\n }\n /**\n * Enters Pointerlock mode\n */\n enterPointerlock() {\n if (this._renderingCanvas) {\n RequestPointerlock(this._renderingCanvas);\n }\n }\n /**\n * Exits Pointerlock mode\n */\n exitPointerlock() {\n ExitPointerlock();\n }\n _rebuildBuffers() {\n super._rebuildBuffers();\n for (const storageBuffer of this._storageBuffers) {\n // The buffer can already be rebuilt by the call to _rebuildGeometries(), which recreates the storage buffers for the ComputeShaderParticleSystem\n if (storageBuffer.getBuffer().engineId !== this.uniqueId) {\n storageBuffer._rebuild();\n }\n }\n }\n _restoreEngineAfterContextLost(initEngine) {\n WebGPUCacheRenderPipelineTree.ResetCache();\n WebGPUCacheBindGroups.ResetCache();\n // Clear the draw wrappers and material contexts\n const cleanScenes = (scenes) => {\n for (const scene of scenes) {\n for (const mesh of scene.meshes) {\n const subMeshes = mesh.subMeshes;\n if (!subMeshes) {\n continue;\n }\n for (const subMesh of subMeshes) {\n subMesh._drawWrappers = [];\n }\n }\n for (const material of scene.materials) {\n material._materialContext?.reset();\n }\n }\n };\n cleanScenes(this.scenes);\n cleanScenes(this._virtualScenes);\n // The leftOver uniform buffers are removed from the list because they will be recreated when we rebuild the effects\n const uboList = [];\n for (const uniformBuffer of this._uniformBuffers) {\n if (uniformBuffer.name.indexOf(\"leftOver\") < 0) {\n uboList.push(uniformBuffer);\n }\n }\n this._uniformBuffers = uboList;\n super._restoreEngineAfterContextLost(initEngine);\n }\n /**\n * Force a specific size of the canvas\n * @param width defines the new canvas' width\n * @param height defines the new canvas' height\n * @param forceSetSize true to force setting the sizes of the underlying canvas\n * @returns true if the size was changed\n */\n setSize(width, height, forceSetSize = false) {\n if (!super.setSize(width, height, forceSetSize)) {\n return false;\n }\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log([\"frame #\" + this._count + \" - setSize -\", width, height]);\n }\n }\n this._initializeMainAttachments();\n if (this.snapshotRendering) {\n // reset snapshot rendering so that the next frame will record a new list of bundles\n this.snapshotRenderingReset();\n }\n return true;\n }\n /**\n * @internal\n */\n _getShaderProcessor(shaderLanguage) {\n if (shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n return this._shaderProcessorWGSL;\n }\n return this._shaderProcessor;\n }\n /**\n * @internal\n */\n _getShaderProcessingContext(shaderLanguage, pureMode) {\n return new WebGPUShaderProcessingContext(shaderLanguage, pureMode);\n }\n _getCurrentRenderPass() {\n if (this._currentRenderTarget && !this._currentRenderPass) {\n // delayed creation of the render target pass, but we now need to create it as we are requested the render pass\n this._startRenderTargetRenderPass(this._currentRenderTarget, false, null, false, false);\n }\n else if (!this._currentRenderPass) {\n this._startMainRenderPass(false);\n }\n return this._currentRenderPass;\n }\n /** @internal */\n _getCurrentRenderPassWrapper() {\n return this._currentRenderTarget ? this._rttRenderPassWrapper : this._mainRenderPassWrapper;\n }\n //------------------------------------------------------------------------------\n // Static Pipeline WebGPU States\n //------------------------------------------------------------------------------\n /** @internal */\n applyStates() {\n this._stencilStateComposer.apply();\n this._cacheRenderPipeline.setAlphaBlendEnabled(this._alphaState.alphaBlend);\n }\n /**\n * Force the entire cache to be cleared\n * You should not have to use this function unless your engine needs to share the WebGPU context with another engine\n * @param bruteForce defines a boolean to force clearing ALL caches (including stencil, detoh and alpha states)\n */\n wipeCaches(bruteForce) {\n if (this.preventCacheWipeBetweenFrames && !bruteForce) {\n return;\n }\n //this._currentEffect = null; // can't reset _currentEffect, else some crashes can occur (for eg in ProceduralTexture which calls bindFrameBuffer (which calls wipeCaches) after having called enableEffect and before drawing into the texture)\n // _forceEnableEffect = true assumes the role of _currentEffect = null\n this._forceEnableEffect = true;\n this._currentIndexBuffer = null;\n this._currentOverrideVertexBuffers = null;\n this._cacheRenderPipeline.setBuffers(null, null, null);\n if (bruteForce) {\n this._stencilStateComposer.reset();\n this._depthCullingState.reset();\n this._depthCullingState.depthFunc = Constants.LEQUAL;\n this._alphaState.reset();\n this._alphaMode = Constants.ALPHA_ADD;\n this._alphaEquation = Constants.ALPHA_DISABLE;\n this._cacheRenderPipeline.setAlphaBlendFactors(this._alphaState._blendFunctionParameters, this._alphaState._blendEquationParameters);\n this._cacheRenderPipeline.setAlphaBlendEnabled(false);\n this.setColorWrite(true);\n }\n this._cachedVertexBuffers = null;\n this._cachedIndexBuffer = null;\n this._cachedEffectForVertexBuffers = null;\n }\n /**\n * Enable or disable color writing\n * @param enable defines the state to set\n */\n setColorWrite(enable) {\n this._colorWriteLocal = enable;\n this._cacheRenderPipeline.setWriteMask(enable ? 0xf : 0);\n }\n /**\n * Gets a boolean indicating if color writing is enabled\n * @returns the current color writing state\n */\n getColorWrite() {\n return this._colorWriteLocal;\n }\n _mustUpdateViewport() {\n const x = this._viewportCached.x, y = this._viewportCached.y, w = this._viewportCached.z, h = this._viewportCached.w;\n const update = this._viewportsCurrent.x !== x || this._viewportsCurrent.y !== y || this._viewportsCurrent.w !== w || this._viewportsCurrent.h !== h;\n if (update) {\n this._viewportsCurrent.x = this._viewportCached.x;\n this._viewportsCurrent.y = this._viewportCached.y;\n this._viewportsCurrent.w = this._viewportCached.z;\n this._viewportsCurrent.h = this._viewportCached.w;\n }\n return update;\n }\n _applyViewport(bundleList) {\n const x = Math.floor(this._viewportCached.x);\n const w = Math.floor(this._viewportCached.z);\n const h = Math.floor(this._viewportCached.w);\n let y = Math.floor(this._viewportCached.y);\n if (!this._currentRenderTarget) {\n y = this.getRenderHeight(true) - y - h;\n }\n if (bundleList) {\n bundleList.addItem(new WebGPURenderItemViewport(x, y, w, h));\n }\n else {\n this._getCurrentRenderPass().setViewport(x, y, w, h, 0, 1);\n }\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log([\n \"frame #\" + this._count + \" - viewport applied - (\",\n this._viewportCached.x,\n this._viewportCached.y,\n this._viewportCached.z,\n this._viewportCached.w,\n \") current pass is main pass=\" + this._currentPassIsMainPass(),\n ]);\n }\n }\n }\n /**\n * @internal\n */\n _viewport(x, y, width, height) {\n this._viewportCached.x = x;\n this._viewportCached.y = y;\n this._viewportCached.z = width;\n this._viewportCached.w = height;\n }\n _mustUpdateScissor() {\n const x = this._scissorCached.x, y = this._scissorCached.y, w = this._scissorCached.z, h = this._scissorCached.w;\n const update = this._scissorsCurrent.x !== x || this._scissorsCurrent.y !== y || this._scissorsCurrent.w !== w || this._scissorsCurrent.h !== h;\n if (update) {\n this._scissorsCurrent.x = this._scissorCached.x;\n this._scissorsCurrent.y = this._scissorCached.y;\n this._scissorsCurrent.w = this._scissorCached.z;\n this._scissorsCurrent.h = this._scissorCached.w;\n }\n return update;\n }\n _applyScissor(bundleList) {\n const y = this._currentRenderTarget ? this._scissorCached.y : this.getRenderHeight() - this._scissorCached.w - this._scissorCached.y;\n if (bundleList) {\n bundleList.addItem(new WebGPURenderItemScissor(this._scissorCached.x, y, this._scissorCached.z, this._scissorCached.w));\n }\n else {\n this._getCurrentRenderPass().setScissorRect(this._scissorCached.x, y, this._scissorCached.z, this._scissorCached.w);\n }\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log([\n \"frame #\" + this._count + \" - scissor applied - (\",\n this._scissorCached.x,\n this._scissorCached.y,\n this._scissorCached.z,\n this._scissorCached.w,\n \") current pass is main pass=\" + this._currentPassIsMainPass(),\n ]);\n }\n }\n }\n _scissorIsActive() {\n return this._scissorCached.x !== 0 || this._scissorCached.y !== 0 || this._scissorCached.z !== 0 || this._scissorCached.w !== 0;\n }\n enableScissor(x, y, width, height) {\n this._scissorCached.x = x;\n this._scissorCached.y = y;\n this._scissorCached.z = width;\n this._scissorCached.w = height;\n }\n disableScissor() {\n this._scissorCached.x = this._scissorCached.y = this._scissorCached.z = this._scissorCached.w = 0;\n this._scissorsCurrent.x = this._scissorsCurrent.y = this._scissorsCurrent.w = this._scissorsCurrent.h = 0;\n }\n _mustUpdateStencilRef() {\n const update = this._stencilStateComposer.funcRef !== this._stencilRefsCurrent;\n if (update) {\n this._stencilRefsCurrent = this._stencilStateComposer.funcRef;\n }\n return update;\n }\n _applyStencilRef(bundleList) {\n if (bundleList) {\n bundleList.addItem(new WebGPURenderItemStencilRef(this._stencilStateComposer.funcRef ?? 0));\n }\n else {\n this._getCurrentRenderPass().setStencilReference(this._stencilStateComposer.funcRef ?? 0);\n }\n }\n _mustUpdateBlendColor() {\n const colorBlend = this._alphaState._blendConstants;\n const update = colorBlend[0] !== this._blendColorsCurrent[0] ||\n colorBlend[1] !== this._blendColorsCurrent[1] ||\n colorBlend[2] !== this._blendColorsCurrent[2] ||\n colorBlend[3] !== this._blendColorsCurrent[3];\n if (update) {\n this._blendColorsCurrent[0] = colorBlend[0];\n this._blendColorsCurrent[1] = colorBlend[1];\n this._blendColorsCurrent[2] = colorBlend[2];\n this._blendColorsCurrent[3] = colorBlend[3];\n }\n return update;\n }\n _applyBlendColor(bundleList) {\n if (bundleList) {\n bundleList.addItem(new WebGPURenderItemBlendColor(this._alphaState._blendConstants.slice()));\n }\n else {\n this._getCurrentRenderPass().setBlendConstant(this._alphaState._blendConstants);\n }\n }\n _resetRenderPassStates() {\n this._viewportsCurrent.x = this._viewportsCurrent.y = this._viewportsCurrent.w = this._viewportsCurrent.h = 0;\n this._scissorsCurrent.x = this._scissorsCurrent.y = this._scissorsCurrent.w = this._scissorsCurrent.h = 0;\n this._stencilRefsCurrent = -1;\n this._blendColorsCurrent[0] = this._blendColorsCurrent[1] = this._blendColorsCurrent[2] = this._blendColorsCurrent[3] = null;\n }\n /**\n * Clear the current render buffer or the current render target (if any is set up)\n * @param color defines the color to use\n * @param backBuffer defines if the back buffer must be cleared\n * @param depth defines if the depth buffer must be cleared\n * @param stencil defines if the stencil buffer must be cleared\n */\n clear(color, backBuffer, depth, stencil = false) {\n // Some PGs are using color3...\n if (color && color.a === undefined) {\n color.a = 1;\n }\n const hasScissor = this._scissorIsActive();\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log([\"frame #\" + this._count + \" - clear - backBuffer=\", backBuffer, \" depth=\", depth, \" stencil=\", stencil, \" scissor is active=\", hasScissor]);\n }\n }\n // We need to recreate the render pass so that the new parameters for clear color / depth / stencil are taken into account\n if (this._currentRenderTarget) {\n if (hasScissor) {\n if (!this._currentRenderPass) {\n this._startRenderTargetRenderPass(this._currentRenderTarget, false, backBuffer ? color : null, depth, stencil);\n }\n this._applyScissor(!this.compatibilityMode ? this._bundleList : null);\n this._clearFullQuad(backBuffer ? color : null, depth, stencil);\n }\n else {\n if (this._currentRenderPass) {\n this._endCurrentRenderPass();\n }\n this._startRenderTargetRenderPass(this._currentRenderTarget, true, backBuffer ? color : null, depth, stencil);\n }\n }\n else {\n if (!this._currentRenderPass || !hasScissor) {\n this._startMainRenderPass(!hasScissor, backBuffer ? color : null, depth, stencil);\n }\n if (hasScissor) {\n this._applyScissor(!this.compatibilityMode ? this._bundleList : null);\n this._clearFullQuad(backBuffer ? color : null, depth, stencil);\n }\n }\n }\n _clearFullQuad(clearColor, clearDepth, clearStencil) {\n const renderPass = !this.compatibilityMode ? null : this._getCurrentRenderPass();\n this._clearQuad.setColorFormat(this._colorFormat);\n this._clearQuad.setDepthStencilFormat(this._depthTextureFormat);\n this._clearQuad.setMRTAttachments(this._cacheRenderPipeline.mrtAttachments ?? [], this._cacheRenderPipeline.mrtTextureArray ?? [], this._cacheRenderPipeline.mrtTextureCount);\n if (!this.compatibilityMode) {\n this._bundleList.addItem(new WebGPURenderItemStencilRef(this._clearStencilValue));\n }\n else {\n renderPass.setStencilReference(this._clearStencilValue);\n }\n const bundle = this._clearQuad.clear(renderPass, clearColor, clearDepth, clearStencil, this.currentSampleCount);\n if (!this.compatibilityMode) {\n this._bundleList.addBundle(bundle);\n this._applyStencilRef(this._bundleList);\n this._reportDrawCall();\n }\n else {\n this._applyStencilRef(null);\n }\n }\n //------------------------------------------------------------------------------\n // Vertex/Index/Storage Buffers\n //------------------------------------------------------------------------------\n /**\n * Creates a vertex buffer\n * @param data the data or the size for the vertex buffer\n * @param _updatable whether the buffer should be created as updatable\n * @param label defines the label of the buffer (for debug purpose)\n * @returns the new buffer\n */\n createVertexBuffer(data, _updatable, label) {\n let view;\n if (data instanceof Array) {\n view = new Float32Array(data);\n }\n else if (data instanceof ArrayBuffer) {\n view = new Uint8Array(data);\n }\n else {\n view = data;\n }\n const dataBuffer = this._bufferManager.createBuffer(view, WebGPUConstants.BufferUsage.Vertex | WebGPUConstants.BufferUsage.CopyDst, label);\n return dataBuffer;\n }\n /**\n * Creates a vertex buffer\n * @param data the data for the dynamic vertex buffer\n * @param label defines the label of the buffer (for debug purpose)\n * @returns the new buffer\n */\n createDynamicVertexBuffer(data, label) {\n return this.createVertexBuffer(data, undefined, label);\n }\n /**\n * Creates a new index buffer\n * @param indices defines the content of the index buffer\n * @param _updatable defines if the index buffer must be updatable\n * @param label defines the label of the buffer (for debug purpose)\n * @returns a new buffer\n */\n createIndexBuffer(indices, _updatable, label) {\n let is32Bits = true;\n let view;\n if (indices instanceof Uint32Array || indices instanceof Int32Array) {\n view = indices;\n }\n else if (indices instanceof Uint16Array) {\n view = indices;\n is32Bits = false;\n }\n else {\n if (indices.length > 65535) {\n view = new Uint32Array(indices);\n }\n else {\n view = new Uint16Array(indices);\n is32Bits = false;\n }\n }\n const dataBuffer = this._bufferManager.createBuffer(view, WebGPUConstants.BufferUsage.Index | WebGPUConstants.BufferUsage.CopyDst, label);\n dataBuffer.is32Bits = is32Bits;\n return dataBuffer;\n }\n /**\n * Update a dynamic index buffer\n * @param indexBuffer defines the target index buffer\n * @param indices defines the data to update\n * @param offset defines the offset in the target index buffer where update should start\n */\n updateDynamicIndexBuffer(indexBuffer, indices, offset = 0) {\n const gpuBuffer = indexBuffer;\n let view;\n if (indexBuffer.is32Bits) {\n view = indices instanceof Uint32Array ? indices : new Uint32Array(indices);\n }\n else {\n view = indices instanceof Uint16Array ? indices : new Uint16Array(indices);\n }\n this._bufferManager.setSubData(gpuBuffer, offset, view);\n }\n /**\n * Updates a dynamic vertex buffer.\n * @param vertexBuffer the vertex buffer to update\n * @param data the data used to update the vertex buffer\n * @param byteOffset the byte offset of the data\n * @param byteLength the byte length of the data\n */\n updateDynamicVertexBuffer(vertexBuffer, data, byteOffset, byteLength) {\n const dataBuffer = vertexBuffer;\n if (byteOffset === undefined) {\n byteOffset = 0;\n }\n let view;\n if (byteLength === undefined) {\n if (data instanceof Array) {\n view = new Float32Array(data);\n }\n else if (data instanceof ArrayBuffer) {\n view = new Uint8Array(data);\n }\n else {\n view = data;\n }\n byteLength = view.byteLength;\n }\n else {\n if (data instanceof Array) {\n view = new Float32Array(data);\n }\n else if (data instanceof ArrayBuffer) {\n view = new Uint8Array(data);\n }\n else {\n view = data;\n }\n }\n this._bufferManager.setSubData(dataBuffer, byteOffset, view, 0, byteLength);\n }\n /**\n * @internal\n */\n _createBuffer(data, creationFlags, label) {\n let view;\n if (data instanceof Array) {\n view = new Float32Array(data);\n }\n else if (data instanceof ArrayBuffer) {\n view = new Uint8Array(data);\n }\n else {\n view = data;\n }\n let flags = 0;\n if (creationFlags & Constants.BUFFER_CREATIONFLAG_READ) {\n flags |= WebGPUConstants.BufferUsage.CopySrc;\n }\n if (creationFlags & Constants.BUFFER_CREATIONFLAG_WRITE) {\n flags |= WebGPUConstants.BufferUsage.CopyDst;\n }\n if (creationFlags & Constants.BUFFER_CREATIONFLAG_UNIFORM) {\n flags |= WebGPUConstants.BufferUsage.Uniform;\n }\n if (creationFlags & Constants.BUFFER_CREATIONFLAG_VERTEX) {\n flags |= WebGPUConstants.BufferUsage.Vertex;\n }\n if (creationFlags & Constants.BUFFER_CREATIONFLAG_INDEX) {\n flags |= WebGPUConstants.BufferUsage.Index;\n }\n if (creationFlags & Constants.BUFFER_CREATIONFLAG_STORAGE) {\n flags |= WebGPUConstants.BufferUsage.Storage;\n }\n if (creationFlags & Constants.BUFFER_CREATIONFLAG_INDIRECT) {\n flags |= WebGPUConstants.BufferUsage.Indirect;\n }\n return this._bufferManager.createBuffer(view, flags, label);\n }\n /**\n * @internal\n */\n bindBuffersDirectly() {\n // eslint-disable-next-line no-throw-literal\n throw \"Not implemented on WebGPU\";\n }\n /**\n * @internal\n */\n updateAndBindInstancesBuffer() {\n // eslint-disable-next-line no-throw-literal\n throw \"Not implemented on WebGPU\";\n }\n /**\n * Unbind all instance attributes\n */\n unbindInstanceAttributes() {\n // Does nothing\n }\n /**\n * Bind a list of vertex buffers with the engine\n * @param vertexBuffers defines the list of vertex buffers to bind\n * @param indexBuffer defines the index buffer to bind\n * @param effect defines the effect associated with the vertex buffers\n * @param overrideVertexBuffers defines optional list of avertex buffers that overrides the entries in vertexBuffers\n */\n bindBuffers(vertexBuffers, indexBuffer, effect, overrideVertexBuffers) {\n this._currentIndexBuffer = indexBuffer;\n this._currentOverrideVertexBuffers = overrideVertexBuffers ?? null;\n this._cacheRenderPipeline.setBuffers(vertexBuffers, indexBuffer, this._currentOverrideVertexBuffers);\n }\n /**\n * @internal\n */\n _releaseBuffer(buffer) {\n return this._bufferManager.releaseBuffer(buffer);\n }\n //------------------------------------------------------------------------------\n // Uniform Buffers\n //------------------------------------------------------------------------------\n /**\n * Create an uniform buffer\n * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets\n * @param elements defines the content of the uniform buffer\n * @param label defines a name for the buffer (for debugging purpose)\n * @returns the webGL uniform buffer\n */\n createUniformBuffer(elements, label) {\n let view;\n if (elements instanceof Array) {\n view = new Float32Array(elements);\n }\n else {\n view = elements;\n }\n const dataBuffer = this._bufferManager.createBuffer(view, WebGPUConstants.BufferUsage.Uniform | WebGPUConstants.BufferUsage.CopyDst, label);\n return dataBuffer;\n }\n /**\n * Create a dynamic uniform buffer (no different from a non dynamic uniform buffer in WebGPU)\n * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets\n * @param elements defines the content of the uniform buffer\n * @param label defines a name for the buffer (for debugging purpose)\n * @returns the webGL uniform buffer\n */\n createDynamicUniformBuffer(elements, label) {\n return this.createUniformBuffer(elements, label);\n }\n /**\n * Update an existing uniform buffer\n * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets\n * @param uniformBuffer defines the target uniform buffer\n * @param elements defines the content to update\n * @param offset defines the offset in the uniform buffer where update should start\n * @param count defines the size of the data to update\n */\n updateUniformBuffer(uniformBuffer, elements, offset, count) {\n if (offset === undefined) {\n offset = 0;\n }\n const dataBuffer = uniformBuffer;\n let view;\n if (count === undefined) {\n if (elements instanceof Float32Array) {\n view = elements;\n }\n else {\n view = new Float32Array(elements);\n }\n count = view.byteLength;\n }\n else {\n if (elements instanceof Float32Array) {\n view = elements;\n }\n else {\n view = new Float32Array(elements);\n }\n }\n this._bufferManager.setSubData(dataBuffer, offset, view, 0, count);\n }\n /**\n * Bind a buffer to the current draw context\n * @param buffer defines the buffer to bind\n * @param _location not used in WebGPU\n * @param name Name of the uniform variable to bind\n */\n bindUniformBufferBase(buffer, _location, name) {\n this._currentDrawContext.setBuffer(name, buffer);\n }\n /**\n * Unused in WebGPU\n */\n bindUniformBlock() { }\n //------------------------------------------------------------------------------\n // Effects\n //------------------------------------------------------------------------------\n /**\n * Create a new effect (used to store vertex/fragment shaders)\n * @param baseName defines the base name of the effect (The name of file without .fragment.fx or .vertex.fx)\n * @param attributesNamesOrOptions defines either a list of attribute names or an IEffectCreationOptions object\n * @param uniformsNamesOrEngine defines either a list of uniform names or the engine to use\n * @param samplers defines an array of string used to represent textures\n * @param defines defines the string containing the defines to use to compile the shaders\n * @param fallbacks defines the list of potential fallbacks to use if shader compilation fails\n * @param onCompiled defines a function to call when the effect creation is successful\n * @param onError defines a function to call when the effect creation has failed\n * @param indexParameters defines an object containing the index values to use to compile shaders (like the maximum number of simultaneous lights)\n * @param shaderLanguage the language the shader is written in (default: GLSL)\n * @param extraInitializationsAsync additional async code to run before preparing the effect\n * @returns the new Effect\n */\n createEffect(baseName, attributesNamesOrOptions, uniformsNamesOrEngine, samplers, defines, fallbacks, onCompiled, onError, indexParameters, shaderLanguage = 0 /* ShaderLanguage.GLSL */, extraInitializationsAsync) {\n const vertex = typeof baseName === \"string\" ? baseName : baseName.vertexToken || baseName.vertexSource || baseName.vertexElement || baseName.vertex;\n const fragment = typeof baseName === \"string\" ? baseName : baseName.fragmentToken || baseName.fragmentSource || baseName.fragmentElement || baseName.fragment;\n const globalDefines = this._getGlobalDefines();\n let fullDefines = defines ?? attributesNamesOrOptions.defines ?? \"\";\n if (globalDefines) {\n fullDefines += \"\\n\" + globalDefines;\n }\n const name = vertex + \"+\" + fragment + \"@\" + fullDefines;\n if (this._compiledEffects[name]) {\n const compiledEffect = this._compiledEffects[name];\n if (onCompiled && compiledEffect.isReady()) {\n onCompiled(compiledEffect);\n }\n compiledEffect._refCount++;\n return compiledEffect;\n }\n const effect = new Effect(baseName, attributesNamesOrOptions, uniformsNamesOrEngine, samplers, this, defines, fallbacks, onCompiled, onError, indexParameters, name, attributesNamesOrOptions.shaderLanguage ?? shaderLanguage, attributesNamesOrOptions.extraInitializationsAsync ?? extraInitializationsAsync);\n this._compiledEffects[name] = effect;\n return effect;\n }\n _compileRawShaderToSpirV(source, type) {\n return this._glslang.compileGLSL(source, type);\n }\n _compileShaderToSpirV(source, type, defines, shaderVersion) {\n return this._compileRawShaderToSpirV(shaderVersion + (defines ? defines + \"\\n\" : \"\") + source, type);\n }\n _getWGSLShader(source, type, defines) {\n if (defines) {\n defines = \"//\" + defines.split(\"\\n\").join(\"\\n//\") + \"\\n\";\n }\n else {\n defines = \"\";\n }\n return defines + source;\n }\n _createPipelineStageDescriptor(vertexShader, fragmentShader, shaderLanguage, disableUniformityAnalysisInVertex, disableUniformityAnalysisInFragment) {\n if (this._tintWASM && shaderLanguage === 0 /* ShaderLanguage.GLSL */) {\n vertexShader = this._tintWASM.convertSpirV2WGSL(vertexShader, disableUniformityAnalysisInVertex);\n fragmentShader = this._tintWASM.convertSpirV2WGSL(fragmentShader, disableUniformityAnalysisInFragment);\n }\n return {\n vertexStage: {\n module: this._device.createShaderModule({\n label: \"vertex\",\n code: vertexShader,\n }),\n entryPoint: \"main\",\n },\n fragmentStage: {\n module: this._device.createShaderModule({\n label: \"fragment\",\n code: fragmentShader,\n }),\n entryPoint: \"main\",\n },\n };\n }\n _compileRawPipelineStageDescriptor(vertexCode, fragmentCode, shaderLanguage) {\n const disableUniformityAnalysisInVertex = vertexCode.indexOf(Constants.DISABLEUA) >= 0;\n const disableUniformityAnalysisInFragment = fragmentCode.indexOf(Constants.DISABLEUA) >= 0;\n const vertexShader = shaderLanguage === 0 /* ShaderLanguage.GLSL */ ? this._compileRawShaderToSpirV(vertexCode, \"vertex\") : vertexCode;\n const fragmentShader = shaderLanguage === 0 /* ShaderLanguage.GLSL */ ? this._compileRawShaderToSpirV(fragmentCode, \"fragment\") : fragmentCode;\n return this._createPipelineStageDescriptor(vertexShader, fragmentShader, shaderLanguage, disableUniformityAnalysisInVertex, disableUniformityAnalysisInFragment);\n }\n _compilePipelineStageDescriptor(vertexCode, fragmentCode, defines, shaderLanguage) {\n this.onBeforeShaderCompilationObservable.notifyObservers(this);\n const disableUniformityAnalysisInVertex = vertexCode.indexOf(Constants.DISABLEUA) >= 0;\n const disableUniformityAnalysisInFragment = fragmentCode.indexOf(Constants.DISABLEUA) >= 0;\n const shaderVersion = \"#version 450\\n\";\n const vertexShader = shaderLanguage === 0 /* ShaderLanguage.GLSL */ ? this._compileShaderToSpirV(vertexCode, \"vertex\", defines, shaderVersion) : this._getWGSLShader(vertexCode, \"vertex\", defines);\n const fragmentShader = shaderLanguage === 0 /* ShaderLanguage.GLSL */\n ? this._compileShaderToSpirV(fragmentCode, \"fragment\", defines, shaderVersion)\n : this._getWGSLShader(fragmentCode, \"fragment\", defines);\n const program = this._createPipelineStageDescriptor(vertexShader, fragmentShader, shaderLanguage, disableUniformityAnalysisInVertex, disableUniformityAnalysisInFragment);\n this.onAfterShaderCompilationObservable.notifyObservers(this);\n return program;\n }\n /**\n * @internal\n */\n createRawShaderProgram() {\n // eslint-disable-next-line no-throw-literal\n throw \"Not available on WebGPU\";\n }\n /**\n * @internal\n */\n createShaderProgram() {\n // eslint-disable-next-line no-throw-literal\n throw \"Not available on WebGPU\";\n }\n /**\n * Inline functions in shader code that are marked to be inlined\n * @param code code to inline\n * @returns inlined code\n */\n inlineShaderCode(code) {\n const sci = new ShaderCodeInliner(code);\n sci.debug = false;\n sci.processCode();\n return sci.code;\n }\n /**\n * Creates a new pipeline context\n * @param shaderProcessingContext defines the shader processing context used during the processing if available\n * @returns the new pipeline\n */\n createPipelineContext(shaderProcessingContext) {\n return new WebGPUPipelineContext(shaderProcessingContext, this);\n }\n /**\n * Creates a new material context\n * @returns the new context\n */\n createMaterialContext() {\n return new WebGPUMaterialContext();\n }\n /**\n * Creates a new draw context\n * @returns the new context\n */\n createDrawContext() {\n return new WebGPUDrawContext(this._bufferManager);\n }\n /**\n * @internal\n */\n async _preparePipelineContext(pipelineContext, vertexSourceCode, fragmentSourceCode, createAsRaw, rawVertexSourceCode, rawFragmentSourceCode, _rebuildRebind, defines, _transformFeedbackVaryings, _key, onReady) {\n const webGpuContext = pipelineContext;\n const shaderLanguage = webGpuContext.shaderProcessingContext.shaderLanguage;\n if (shaderLanguage === 0 /* ShaderLanguage.GLSL */ && !this._glslangAndTintAreFullyLoaded) {\n await this.prepareGlslangAndTintAsync();\n }\n if (this.dbgShowShaderCode) {\n Logger.Log([\"defines\", defines]);\n Logger.Log(vertexSourceCode);\n Logger.Log(fragmentSourceCode);\n Logger.Log(\"***********************************************\");\n }\n webGpuContext.sources = {\n fragment: fragmentSourceCode,\n vertex: vertexSourceCode,\n rawVertex: rawVertexSourceCode,\n rawFragment: rawFragmentSourceCode,\n };\n if (createAsRaw) {\n webGpuContext.stages = this._compileRawPipelineStageDescriptor(vertexSourceCode, fragmentSourceCode, shaderLanguage);\n }\n else {\n webGpuContext.stages = this._compilePipelineStageDescriptor(vertexSourceCode, fragmentSourceCode, defines, shaderLanguage);\n }\n onReady();\n }\n /**\n * Gets the list of active attributes for a given WebGPU program\n * @param pipelineContext defines the pipeline context to use\n * @param attributesNames defines the list of attribute names to get\n * @returns an array of indices indicating the offset of each attribute\n */\n getAttributes(pipelineContext, attributesNames) {\n const results = new Array(attributesNames.length);\n const gpuPipelineContext = pipelineContext;\n for (let i = 0; i < attributesNames.length; i++) {\n const attributeName = attributesNames[i];\n const attributeLocation = gpuPipelineContext.shaderProcessingContext.availableAttributes[attributeName];\n if (attributeLocation === undefined) {\n continue;\n }\n results[i] = attributeLocation;\n }\n return results;\n }\n /**\n * Activates an effect, making it the current one (ie. the one used for rendering)\n * @param effect defines the effect to activate\n */\n enableEffect(effect) {\n if (!effect) {\n return;\n }\n if (!IsWrapper(effect)) {\n this._currentEffect = effect;\n this._currentMaterialContext = this._defaultMaterialContext;\n this._currentDrawContext = this._defaultDrawContext;\n this._counters.numEnableEffects++;\n if (this.dbgLogIfNotDrawWrapper) {\n Logger.Warn(`enableEffect has been called with an Effect and not a Wrapper! effect.uniqueId=${effect.uniqueId}, effect.name=${effect.name}, effect.name.vertex=${typeof effect.name === \"string\" ? \"\" : effect.name.vertex}, effect.name.fragment=${typeof effect.name === \"string\" ? \"\" : effect.name.fragment}`, 10);\n }\n }\n else if (!effect.effect ||\n (effect.effect === this._currentEffect &&\n effect.materialContext === this._currentMaterialContext &&\n effect.drawContext === this._currentDrawContext &&\n !this._forceEnableEffect)) {\n if (!effect.effect && this.dbgShowEmptyEnableEffectCalls) {\n Logger.Log([\"drawWrapper=\", effect]);\n // eslint-disable-next-line no-throw-literal\n throw \"Invalid call to enableEffect: the effect property is empty!\";\n }\n return;\n }\n else {\n this._currentEffect = effect.effect;\n this._currentMaterialContext = effect.materialContext;\n this._currentDrawContext = effect.drawContext;\n this._counters.numEnableDrawWrapper++;\n if (!this._currentMaterialContext) {\n Logger.Log([\"drawWrapper=\", effect]);\n // eslint-disable-next-line no-throw-literal\n throw `Invalid call to enableEffect: the materialContext property is empty!`;\n }\n }\n this._stencilStateComposer.stencilMaterial = undefined;\n this._forceEnableEffect = false;\n if (this._currentEffect.onBind) {\n this._currentEffect.onBind(this._currentEffect);\n }\n if (this._currentEffect._onBindObservable) {\n this._currentEffect._onBindObservable.notifyObservers(this._currentEffect);\n }\n }\n /**\n * @internal\n */\n _releaseEffect(effect) {\n if (this._compiledEffects[effect._key]) {\n delete this._compiledEffects[effect._key];\n this._deletePipelineContext(effect.getPipelineContext());\n }\n }\n /**\n * Force the engine to release all cached effects. This means that next effect compilation will have to be done completely even if a similar effect was already compiled\n */\n releaseEffects() {\n for (const name in this._compiledEffects) {\n const webGPUPipelineContext = this._compiledEffects[name].getPipelineContext();\n this._deletePipelineContext(webGPUPipelineContext);\n }\n this._compiledEffects = {};\n }\n _deletePipelineContext(pipelineContext) {\n const webgpuPipelineContext = pipelineContext;\n if (webgpuPipelineContext) {\n resetCachedPipeline(webgpuPipelineContext);\n }\n }\n //------------------------------------------------------------------------------\n // Textures\n //------------------------------------------------------------------------------\n /**\n * Gets a boolean indicating that only power of 2 textures are supported\n * Please note that you can still use non power of 2 textures but in this case the engine will forcefully convert them\n */\n get needPOTTextures() {\n return false;\n }\n /** @internal */\n _createHardwareTexture() {\n return new WebGPUHardwareTexture(this);\n }\n /**\n * @internal\n */\n _releaseTexture(texture) {\n const index = this._internalTexturesCache.indexOf(texture);\n if (index !== -1) {\n this._internalTexturesCache.splice(index, 1);\n }\n this._textureHelper.releaseTexture(texture);\n }\n /**\n * @internal\n */\n _getRGBABufferInternalSizedFormat() {\n return Constants.TEXTUREFORMAT_RGBA;\n }\n updateTextureComparisonFunction(texture, comparisonFunction) {\n texture._comparisonFunction = comparisonFunction;\n }\n /**\n * Creates an internal texture without binding it to a framebuffer\n * @internal\n * @param size defines the size of the texture\n * @param options defines the options used to create the texture\n * @param delayGPUTextureCreation true to delay the texture creation the first time it is really needed. false to create it right away\n * @param source source type of the texture\n * @returns a new internal texture\n */\n _createInternalTexture(size, options, delayGPUTextureCreation = true, source = 0 /* InternalTextureSource.Unknown */) {\n const fullOptions = {};\n if (options !== undefined && typeof options === \"object\") {\n fullOptions.generateMipMaps = options.generateMipMaps;\n fullOptions.createMipMaps = options.createMipMaps;\n fullOptions.type = options.type === undefined ? Constants.TEXTURETYPE_UNSIGNED_BYTE : options.type;\n fullOptions.samplingMode = options.samplingMode === undefined ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : options.samplingMode;\n fullOptions.format = options.format === undefined ? Constants.TEXTUREFORMAT_RGBA : options.format;\n fullOptions.samples = options.samples ?? 1;\n fullOptions.creationFlags = options.creationFlags ?? 0;\n fullOptions.useSRGBBuffer = options.useSRGBBuffer ?? false;\n fullOptions.label = options.label;\n }\n else {\n fullOptions.generateMipMaps = options;\n fullOptions.type = Constants.TEXTURETYPE_UNSIGNED_BYTE;\n fullOptions.samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\n fullOptions.format = Constants.TEXTUREFORMAT_RGBA;\n fullOptions.samples = 1;\n fullOptions.creationFlags = 0;\n fullOptions.useSRGBBuffer = false;\n }\n if (fullOptions.type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {\n fullOptions.samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n }\n else if (fullOptions.type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.textureHalfFloatLinearFiltering) {\n fullOptions.samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\n }\n if (fullOptions.type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloat) {\n fullOptions.type = Constants.TEXTURETYPE_UNSIGNED_BYTE;\n Logger.Warn(\"Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE\");\n }\n const texture = new InternalTexture(this, source);\n const width = size.width || size;\n const height = size.height || size;\n const depth = size.depth || 0;\n const layers = size.layers || 0;\n texture.baseWidth = width;\n texture.baseHeight = height;\n texture.width = width;\n texture.height = height;\n texture.depth = depth || layers;\n texture.isReady = true;\n texture.samples = fullOptions.samples;\n texture.generateMipMaps = !!fullOptions.generateMipMaps;\n texture.samplingMode = fullOptions.samplingMode;\n texture.type = fullOptions.type;\n texture.format = fullOptions.format;\n texture.is2DArray = layers > 0;\n texture.is3D = depth > 0;\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\n texture._useSRGBBuffer = fullOptions.useSRGBBuffer;\n texture.label = fullOptions.label;\n this._internalTexturesCache.push(texture);\n if (!delayGPUTextureCreation) {\n const createMipMapsOnly = !fullOptions.generateMipMaps && fullOptions.createMipMaps;\n if (createMipMapsOnly) {\n // So that the call to createGPUTextureForInternalTexture creates the mipmaps\n texture.generateMipMaps = true;\n }\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, layers || 1, fullOptions.creationFlags);\n if (createMipMapsOnly) {\n // So that we don't automatically generate mipmaps when the render target is unbound\n texture.generateMipMaps = false;\n }\n }\n return texture;\n }\n /**\n * Usually called from Texture.ts.\n * Passed information to create a hardware texture\n * @param url defines a value which contains one of the following:\n * * A conventional http URL, e.g. 'http://...' or 'file://...'\n * * A base64 string of in-line texture data, e.g. 'data:image/jpg;base64,/...'\n * * An indicator that data being passed using the buffer parameter, e.g. 'data:mytexture.jpg'\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated. Ignored for compressed textures. They must be in the file\n * @param invertY when true, image is flipped when loaded. You probably want true. Certain compressed textures may invert this if their default is inverted (eg. ktx)\n * @param scene needed for loading to the correct scene\n * @param samplingMode mode with should be used sample / access the texture (Default: Texture.TRILINEAR_SAMPLINGMODE)\n * @param onLoad optional callback to be called upon successful completion\n * @param onError optional callback to be called upon failure\n * @param buffer a source of a file previously fetched as either a base64 string, an ArrayBuffer (compressed or image format), HTMLImageElement (image format), or a Blob\n * @param fallback an internal argument in case the function must be called again, due to etc1 not having alpha capabilities\n * @param format internal format. Default: RGB when extension is '.jpg' else RGBA. Ignored for compressed textures\n * @param forcedExtension defines the extension to use to pick the right loader\n * @param mimeType defines an optional mime type\n * @param loaderOptions options to be passed to the loader\n * @param creationFlags specific flags to use when creating the texture (Constants.TEXTURE_CREATIONFLAG_STORAGE for storage textures, for eg)\n * @param useSRGBBuffer defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU).\n * @returns a InternalTexture for assignment back into BABYLON.Texture\n */\n createTexture(url, noMipmap, invertY, scene, samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE, onLoad = null, onError = null, buffer = null, fallback = null, format = null, forcedExtension = null, mimeType, loaderOptions, creationFlags, useSRGBBuffer) {\n return this._createTextureBase(url, noMipmap, invertY, scene, samplingMode, onLoad, onError, (texture, extension, scene, img, invertY, noMipmap, isCompressed, processFunction) => {\n const imageBitmap = img; // we will never get an HTMLImageElement in WebGPU\n texture.baseWidth = imageBitmap.width;\n texture.baseHeight = imageBitmap.height;\n texture.width = imageBitmap.width;\n texture.height = imageBitmap.height;\n texture.format = texture.format !== -1 ? texture.format : (format ?? Constants.TEXTUREFORMAT_RGBA);\n texture.type = texture.type !== -1 ? texture.type : Constants.TEXTURETYPE_UNSIGNED_BYTE;\n texture._creationFlags = creationFlags ?? 0;\n processFunction(texture.width, texture.height, imageBitmap, extension, texture, () => { });\n if (!texture._hardwareTexture?.underlyingResource) {\n // the texture could have been created before reaching this point so don't recreate it if already existing\n const gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, imageBitmap.width, imageBitmap.height, undefined, creationFlags);\n if (WebGPUTextureHelper.IsImageBitmap(imageBitmap)) {\n this._textureHelper.updateTexture(imageBitmap, texture, imageBitmap.width, imageBitmap.height, texture.depth, gpuTextureWrapper.format, 0, 0, invertY, false, 0, 0);\n if (!noMipmap && !isCompressed) {\n this._generateMipmaps(texture, this._uploadEncoder);\n }\n }\n }\n else if (!noMipmap && !isCompressed) {\n this._generateMipmaps(texture, this._uploadEncoder);\n }\n if (scene) {\n scene.removePendingData(texture);\n }\n texture.isReady = true;\n texture.onLoadedObservable.notifyObservers(texture);\n texture.onLoadedObservable.clear();\n }, () => false, buffer, fallback, format, forcedExtension, mimeType, loaderOptions, useSRGBBuffer);\n }\n /**\n * Wraps an external web gpu texture in a Babylon texture.\n * @param texture defines the external texture\n * @returns the babylon internal texture\n */\n wrapWebGPUTexture(texture) {\n const hardwareTexture = new WebGPUHardwareTexture(this, texture);\n const internalTexture = new InternalTexture(this, 0 /* InternalTextureSource.Unknown */, true);\n internalTexture._hardwareTexture = hardwareTexture;\n internalTexture.isReady = true;\n return internalTexture;\n }\n // eslint-disable-next-line jsdoc/require-returns-check\n /**\n * Wraps an external web gl texture in a Babylon texture.\n * @returns the babylon internal texture\n */\n wrapWebGLTexture() {\n throw new Error(\"wrapWebGLTexture is not supported, use wrapWebGPUTexture instead.\");\n }\n /**\n * @internal\n */\n _getUseSRGBBuffer(useSRGBBuffer, _noMipmap) {\n return useSRGBBuffer && this._caps.supportSRGBBuffers;\n }\n /**\n * @internal\n */\n _unpackFlipY(value) { }\n /**\n * Update the sampling mode of a given texture\n * @param samplingMode defines the required sampling mode\n * @param texture defines the texture to update\n * @param generateMipMaps defines whether to generate mipmaps for the texture\n */\n updateTextureSamplingMode(samplingMode, texture, generateMipMaps = false) {\n if (generateMipMaps) {\n texture.generateMipMaps = true;\n this._generateMipmaps(texture);\n }\n texture.samplingMode = samplingMode;\n }\n /**\n * Update the sampling mode of a given texture\n * @param texture defines the texture to update\n * @param wrapU defines the texture wrap mode of the u coordinates\n * @param wrapV defines the texture wrap mode of the v coordinates\n * @param wrapR defines the texture wrap mode of the r coordinates\n */\n updateTextureWrappingMode(texture, wrapU, wrapV = null, wrapR = null) {\n if (wrapU !== null) {\n texture._cachedWrapU = wrapU;\n }\n if (wrapV !== null) {\n texture._cachedWrapV = wrapV;\n }\n if ((texture.is2DArray || texture.is3D) && wrapR !== null) {\n texture._cachedWrapR = wrapR;\n }\n }\n /**\n * Update the dimensions of a texture\n * @param texture texture to update\n * @param width new width of the texture\n * @param height new height of the texture\n * @param depth new depth of the texture\n */\n updateTextureDimensions(texture, width, height, depth = 1) {\n if (!texture._hardwareTexture) {\n // the gpu texture is not created yet, so when it is it will be created with the right dimensions\n return;\n }\n if (texture.width === width && texture.height === height && texture.depth === depth) {\n return;\n }\n const additionalUsages = texture._hardwareTexture.textureAdditionalUsages;\n texture._hardwareTexture.release(); // don't defer the releasing! Else we will release at the end of this frame the gpu texture we are about to create in the next line...\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, depth, additionalUsages);\n }\n /**\n * @internal\n */\n _setInternalTexture(name, texture, baseName) {\n baseName = baseName ?? name;\n if (this._currentEffect) {\n const webgpuPipelineContext = this._currentEffect._pipelineContext;\n const availableTexture = webgpuPipelineContext.shaderProcessingContext.availableTextures[baseName];\n this._currentMaterialContext.setTexture(name, texture);\n if (availableTexture && availableTexture.autoBindSampler) {\n const samplerName = baseName + Constants.AUTOSAMPLERSUFFIX;\n this._currentMaterialContext.setSampler(samplerName, texture); // we can safely cast to InternalTexture because ExternalTexture always has autoBindSampler = false\n }\n }\n }\n /**\n * Create a cube texture from prefiltered data (ie. the mipmaps contain ready to use data for PBR reflection)\n * @param rootUrl defines the url where the file to load is located\n * @param scene defines the current scene\n * @param lodScale defines scale to apply to the mip map selection\n * @param lodOffset defines offset to apply to the mip map selection\n * @param onLoad defines an optional callback raised when the texture is loaded\n * @param onError defines an optional callback raised if there is an issue to load the texture\n * @param format defines the format of the data\n * @param forcedExtension defines the extension to use to pick the right loader\n * @param createPolynomials defines wheter or not to create polynomails harmonics for the texture\n * @returns the cube texture as an InternalTexture\n */\n createPrefilteredCubeTexture(rootUrl, scene, lodScale, lodOffset, onLoad = null, onError = null, format, forcedExtension = null, createPolynomials = true) {\n const callback = (loadData) => {\n if (!loadData) {\n if (onLoad) {\n onLoad(null);\n }\n return;\n }\n const texture = loadData.texture;\n if (!createPolynomials) {\n texture._sphericalPolynomial = new SphericalPolynomial();\n }\n else if (loadData.info.sphericalPolynomial) {\n texture._sphericalPolynomial = loadData.info.sphericalPolynomial;\n }\n texture._source = 9 /* InternalTextureSource.CubePrefiltered */;\n if (onLoad) {\n onLoad(texture);\n }\n };\n return this.createCubeTexture(rootUrl, scene, null, false, callback, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset);\n }\n /**\n * Sets a texture to the according uniform.\n * @param channel The texture channel\n * @param unused unused parameter\n * @param texture The texture to apply\n * @param name The name of the uniform in the effect\n */\n setTexture(channel, unused, texture, name) {\n this._setTexture(channel, texture, false, false, name, name);\n }\n /**\n * Sets an array of texture to the WebGPU context\n * @param channel defines the channel where the texture array must be set\n * @param unused unused parameter\n * @param textures defines the array of textures to bind\n * @param name name of the channel\n */\n setTextureArray(channel, unused, textures, name) {\n for (let index = 0; index < textures.length; index++) {\n this._setTexture(-1, textures[index], true, false, name + index.toString(), name);\n }\n }\n /**\n * @internal\n */\n _setTexture(channel, texture, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isPartOfTextureArray = false, depthStencilTexture = false, name = \"\", baseName) {\n // name == baseName for a texture that is not part of a texture array\n // Else, name is something like 'myTexture0' / 'myTexture1' / ... and baseName is 'myTexture'\n // baseName is used to look up the texture in the shaderProcessingContext.availableTextures map\n // name is used to look up the texture in the _currentMaterialContext.textures map\n baseName = baseName ?? name;\n if (this._currentEffect) {\n if (!texture) {\n this._currentMaterialContext.setTexture(name, null);\n return false;\n }\n // Video\n if (texture.video) {\n texture.update();\n }\n else if (texture.delayLoadState === Constants.DELAYLOADSTATE_NOTLOADED) {\n // Delay loading\n texture.delayLoad();\n return false;\n }\n let internalTexture = null;\n if (depthStencilTexture) {\n internalTexture = texture.depthStencilTexture;\n }\n else if (texture.isReady()) {\n internalTexture = texture.getInternalTexture();\n }\n else if (texture.isCube) {\n internalTexture = this.emptyCubeTexture;\n }\n else if (texture.is3D) {\n internalTexture = this.emptyTexture3D;\n }\n else if (texture.is2DArray) {\n internalTexture = this.emptyTexture2DArray;\n }\n else {\n internalTexture = this.emptyTexture;\n }\n if (internalTexture && !internalTexture.isMultiview) {\n // CUBIC_MODE and SKYBOX_MODE both require CLAMP_TO_EDGE. All other modes use REPEAT.\n if (internalTexture.isCube && internalTexture._cachedCoordinatesMode !== texture.coordinatesMode) {\n internalTexture._cachedCoordinatesMode = texture.coordinatesMode;\n const textureWrapMode = texture.coordinatesMode !== Constants.TEXTURE_CUBIC_MODE && texture.coordinatesMode !== Constants.TEXTURE_SKYBOX_MODE\n ? Constants.TEXTURE_WRAP_ADDRESSMODE\n : Constants.TEXTURE_CLAMP_ADDRESSMODE;\n texture.wrapU = textureWrapMode;\n texture.wrapV = textureWrapMode;\n }\n internalTexture._cachedWrapU = texture.wrapU;\n internalTexture._cachedWrapV = texture.wrapV;\n if (internalTexture.is3D) {\n internalTexture._cachedWrapR = texture.wrapR;\n }\n this._setAnisotropicLevel(0, internalTexture, texture.anisotropicFilteringLevel);\n }\n this._setInternalTexture(name, internalTexture, baseName);\n }\n else {\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log([\"frame #\" + this._count + \" - _setTexture called with a null _currentEffect! texture=\", texture]);\n }\n }\n }\n return true;\n }\n /**\n * @internal\n */\n _setAnisotropicLevel(target, internalTexture, anisotropicFilteringLevel) {\n if (internalTexture._cachedAnisotropicFilteringLevel !== anisotropicFilteringLevel) {\n internalTexture._cachedAnisotropicFilteringLevel = Math.min(anisotropicFilteringLevel, this._caps.maxAnisotropy);\n }\n }\n /**\n * @internal\n */\n _bindTexture(channel, texture, name) {\n if (channel === undefined) {\n return;\n }\n this._setInternalTexture(name, texture);\n }\n /**\n * Generates the mipmaps for a texture\n * @param texture texture to generate the mipmaps for\n */\n generateMipmaps(texture) {\n this._generateMipmaps(texture);\n }\n /**\n * Update a portion of an internal texture\n * @param texture defines the texture to update\n * @param imageData defines the data to store into the texture\n * @param xOffset defines the x coordinates of the update rectangle\n * @param yOffset defines the y coordinates of the update rectangle\n * @param width defines the width of the update rectangle\n * @param height defines the height of the update rectangle\n * @param faceIndex defines the face index if texture is a cube (0 by default)\n * @param lod defines the lod level to update (0 by default)\n * @param generateMipMaps defines whether to generate mipmaps or not\n */\n updateTextureData(texture, imageData, xOffset, yOffset, width, height, faceIndex = 0, lod = 0, generateMipMaps = false) {\n let gpuTextureWrapper = texture._hardwareTexture;\n if (!texture._hardwareTexture?.underlyingResource) {\n gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture);\n }\n const data = new Uint8Array(imageData.buffer, imageData.byteOffset, imageData.byteLength);\n this._textureHelper.updateTexture(data, texture, width, height, texture.depth, gpuTextureWrapper.format, faceIndex, lod, texture.invertY, false, xOffset, yOffset);\n if (generateMipMaps) {\n this._generateMipmaps(texture);\n }\n }\n /**\n * @internal\n */\n _uploadCompressedDataToTextureDirectly(texture, internalFormat, width, height, imageData, faceIndex = 0, lod = 0) {\n let gpuTextureWrapper = texture._hardwareTexture;\n if (!texture._hardwareTexture?.underlyingResource) {\n texture.format = internalFormat;\n gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, width, height);\n }\n const data = new Uint8Array(imageData.buffer, imageData.byteOffset, imageData.byteLength);\n this._textureHelper.updateTexture(data, texture, width, height, texture.depth, gpuTextureWrapper.format, faceIndex, lod, false, false, 0, 0);\n }\n /**\n * @internal\n */\n _uploadDataToTextureDirectly(texture, imageData, faceIndex = 0, lod = 0, babylonInternalFormat, useTextureWidthAndHeight = false) {\n const lodMaxWidth = Math.round(Math.log(texture.width) * Math.LOG2E);\n const lodMaxHeight = Math.round(Math.log(texture.height) * Math.LOG2E);\n const width = useTextureWidthAndHeight ? texture.width : Math.pow(2, Math.max(lodMaxWidth - lod, 0));\n const height = useTextureWidthAndHeight ? texture.height : Math.pow(2, Math.max(lodMaxHeight - lod, 0));\n let gpuTextureWrapper = texture._hardwareTexture;\n if (!texture._hardwareTexture?.underlyingResource) {\n gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, width, height);\n }\n const data = new Uint8Array(imageData.buffer, imageData.byteOffset, imageData.byteLength);\n this._textureHelper.updateTexture(data, texture, width, height, texture.depth, gpuTextureWrapper.format, faceIndex, lod, texture.invertY, false, 0, 0);\n }\n /**\n * @internal\n */\n _uploadArrayBufferViewToTexture(texture, imageData, faceIndex = 0, lod = 0) {\n this._uploadDataToTextureDirectly(texture, imageData, faceIndex, lod);\n }\n /**\n * @internal\n */\n _uploadImageToTexture(texture, image, faceIndex = 0, lod = 0) {\n let gpuTextureWrapper = texture._hardwareTexture;\n if (!texture._hardwareTexture?.underlyingResource) {\n gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture);\n }\n if (image instanceof HTMLImageElement) {\n // eslint-disable-next-line no-throw-literal\n throw \"WebGPU engine: HTMLImageElement not supported in _uploadImageToTexture!\";\n }\n const bitmap = image; // in WebGPU we will always get an ImageBitmap, not an HTMLImageElement\n const width = Math.ceil(texture.width / (1 << lod));\n const height = Math.ceil(texture.height / (1 << lod));\n this._textureHelper.updateTexture(bitmap, texture, width, height, texture.depth, gpuTextureWrapper.format, faceIndex, lod, texture.invertY, false, 0, 0);\n }\n /**\n * Reads pixels from the current frame buffer. Please note that this function can be slow\n * @param x defines the x coordinate of the rectangle where pixels must be read\n * @param y defines the y coordinate of the rectangle where pixels must be read\n * @param width defines the width of the rectangle where pixels must be read\n * @param height defines the height of the rectangle where pixels must be read\n * @param hasAlpha defines whether the output should have alpha or not (defaults to true)\n * @param flushRenderer true to flush the renderer from the pending commands before reading the pixels\n * @returns a ArrayBufferView promise (Uint8Array) containing RGBA colors\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readPixels(x, y, width, height, hasAlpha = true, flushRenderer = true) {\n const renderPassWrapper = this._getCurrentRenderPassWrapper();\n const hardwareTexture = renderPassWrapper.colorAttachmentGPUTextures[0];\n if (!hardwareTexture) {\n // we are calling readPixels for a render pass with no color texture bound\n return Promise.resolve(new Uint8Array(0));\n }\n const gpuTexture = hardwareTexture.underlyingResource;\n const gpuTextureFormat = hardwareTexture.format;\n if (!gpuTexture) {\n // we are calling readPixels before startMainRenderPass has been called and no RTT is bound, so swapChainTexture is not setup yet!\n return Promise.resolve(new Uint8Array(0));\n }\n if (flushRenderer) {\n this.flushFramebuffer();\n }\n return this._textureHelper.readPixels(gpuTexture, x, y, width, height, gpuTextureFormat);\n }\n //------------------------------------------------------------------------------\n // Frame management\n //------------------------------------------------------------------------------\n _measureFps() {\n this._performanceMonitor.sampleFrame();\n this._fps = this._performanceMonitor.averageFPS;\n this._deltaTime = this._performanceMonitor.instantaneousFrameTime || 0;\n }\n /**\n * Gets the performance monitor attached to this engine\n * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimize_your_scene#engineinstrumentation\n */\n get performanceMonitor() {\n return this._performanceMonitor;\n }\n /**\n * Begin a new frame\n */\n beginFrame() {\n this._measureFps();\n super.beginFrame();\n }\n /**\n * End the current frame\n */\n endFrame() {\n this._endCurrentRenderPass();\n this._snapshotRendering.endFrame();\n this._timestampQuery.endFrame(this._renderEncoder);\n this._timestampIndex = 0;\n this.flushFramebuffer();\n this._textureHelper.destroyDeferredTextures();\n this._bufferManager.destroyDeferredBuffers();\n if (this._features._collectUbosUpdatedInFrame) {\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n const list = [];\n for (const name in UniformBuffer._UpdatedUbosInFrame) {\n list.push(name + \":\" + UniformBuffer._UpdatedUbosInFrame[name]);\n }\n Logger.Log([\"frame #\" + this._count + \" - updated ubos -\", list.join(\", \")]);\n }\n }\n UniformBuffer._UpdatedUbosInFrame = {};\n }\n this.countersLastFrame.numEnableEffects = this._counters.numEnableEffects;\n this.countersLastFrame.numEnableDrawWrapper = this._counters.numEnableDrawWrapper;\n this.countersLastFrame.numBundleCreationNonCompatMode = this._counters.numBundleCreationNonCompatMode;\n this.countersLastFrame.numBundleReuseNonCompatMode = this._counters.numBundleReuseNonCompatMode;\n this._counters.numEnableEffects = 0;\n this._counters.numEnableDrawWrapper = 0;\n this._counters.numBundleCreationNonCompatMode = 0;\n this._counters.numBundleReuseNonCompatMode = 0;\n this._cacheRenderPipeline.endFrame();\n this._cacheBindGroups.endFrame();\n this._pendingDebugCommands.length = 0;\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log([\"%c frame #\" + this._count + \" - end\", \"background: #ffff00\"]);\n }\n if (this._count < this.dbgVerboseLogsNumFrames) {\n this._count++;\n if (this._count !== this.dbgVerboseLogsNumFrames) {\n Logger.Log([\"%c frame #\" + this._count + \" - begin\", \"background: #ffff00\"]);\n }\n }\n }\n super.endFrame();\n }\n /**Gets driver info if available */\n extractDriverInfo() {\n return \"\";\n }\n /**\n * Force a WebGPU flush (ie. a flush of all waiting commands)\n */\n flushFramebuffer() {\n // we need to end the current render pass (main or rtt) if any as we are not allowed to submit the command buffers when being in a pass\n this._endCurrentRenderPass();\n this._commandBuffers[0] = this._uploadEncoder.finish();\n this._commandBuffers[1] = this._renderEncoder.finish();\n this._device.queue.submit(this._commandBuffers);\n this._uploadEncoder = this._device.createCommandEncoder(this._uploadEncoderDescriptor);\n this._renderEncoder = this._device.createCommandEncoder(this._renderEncoderDescriptor);\n this._timestampQuery.startFrame(this._uploadEncoder);\n this._textureHelper.setCommandEncoder(this._uploadEncoder);\n this._bundleList.reset();\n }\n /** @internal */\n _currentFrameBufferIsDefaultFrameBuffer() {\n return this._currentPassIsMainPass();\n }\n //------------------------------------------------------------------------------\n // Render Pass\n //------------------------------------------------------------------------------\n _startRenderTargetRenderPass(renderTargetWrapper, setClearStates, clearColor, clearDepth, clearStencil) {\n this._endCurrentRenderPass();\n const rtWrapper = renderTargetWrapper;\n const depthStencilTexture = rtWrapper._depthStencilTexture;\n const gpuDepthStencilWrapper = depthStencilTexture?._hardwareTexture;\n const gpuDepthStencilTexture = gpuDepthStencilWrapper?.underlyingResource;\n const gpuDepthStencilMSAATexture = gpuDepthStencilWrapper?.getMSAATexture(0);\n const depthTextureView = gpuDepthStencilTexture?.createView(this._rttRenderPassWrapper.depthAttachmentViewDescriptor);\n const depthMSAATextureView = gpuDepthStencilMSAATexture?.createView(this._rttRenderPassWrapper.depthAttachmentViewDescriptor);\n const depthTextureHasStencil = gpuDepthStencilWrapper ? WebGPUTextureHelper.HasStencilAspect(gpuDepthStencilWrapper.format) : false;\n const colorAttachments = [];\n if (this.useReverseDepthBuffer) {\n this.setDepthFunctionToGreaterOrEqual();\n }\n const clearColorForIntegerRT = tempColor4;\n if (clearColor) {\n clearColorForIntegerRT.r = clearColor.r * 255;\n clearColorForIntegerRT.g = clearColor.g * 255;\n clearColorForIntegerRT.b = clearColor.b * 255;\n clearColorForIntegerRT.a = clearColor.a * 255;\n }\n const mustClearColor = setClearStates && clearColor;\n const mustClearDepth = setClearStates && clearDepth;\n const mustClearStencil = setClearStates && clearStencil;\n if (rtWrapper._attachments && rtWrapper.isMulti) {\n // multi render targets\n if (!this._mrtAttachments || this._mrtAttachments.length === 0) {\n this._mrtAttachments = rtWrapper._defaultAttachments;\n }\n for (let i = 0; i < this._mrtAttachments.length; ++i) {\n const index = this._mrtAttachments[i]; // if index == 0 it means the texture should not be written to => at render pass creation time, it means we should not clear it\n const mrtTexture = rtWrapper.textures[i];\n const gpuMRTWrapper = mrtTexture?._hardwareTexture;\n const gpuMRTTexture = gpuMRTWrapper?.underlyingResource;\n if (gpuMRTWrapper && gpuMRTTexture) {\n const baseArrayLayer = rtWrapper.getBaseArrayLayer(i);\n const gpuMSAATexture = gpuMRTWrapper.getMSAATexture(baseArrayLayer);\n const viewDescriptor = {\n ...this._rttRenderPassWrapper.colorAttachmentViewDescriptor,\n dimension: mrtTexture.is3D ? \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */ : \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n format: gpuMRTWrapper.format,\n baseArrayLayer,\n };\n const msaaViewDescriptor = {\n ...this._rttRenderPassWrapper.colorAttachmentViewDescriptor,\n dimension: mrtTexture.is3D ? \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */ : \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n format: gpuMRTWrapper.format,\n baseArrayLayer: 0,\n };\n const isRTInteger = mrtTexture.type === Constants.TEXTURETYPE_UNSIGNED_INTEGER || mrtTexture.type === Constants.TEXTURETYPE_UNSIGNED_SHORT;\n const colorTextureView = gpuMRTTexture.createView(viewDescriptor);\n const colorMSAATextureView = gpuMSAATexture?.createView(msaaViewDescriptor);\n colorAttachments.push({\n view: colorMSAATextureView ? colorMSAATextureView : colorTextureView,\n resolveTarget: gpuMSAATexture ? colorTextureView : undefined,\n depthSlice: mrtTexture.is3D ? (rtWrapper.layerIndices?.[i] ?? 0) : undefined,\n clearValue: index !== 0 && mustClearColor ? (isRTInteger ? clearColorForIntegerRT : clearColor) : undefined,\n loadOp: index !== 0 && mustClearColor ? \"clear\" /* WebGPUConstants.LoadOp.Clear */ : \"load\" /* WebGPUConstants.LoadOp.Load */,\n storeOp: \"store\" /* WebGPUConstants.StoreOp.Store */,\n });\n }\n }\n this._cacheRenderPipeline.setMRT(rtWrapper.textures, this._mrtAttachments.length);\n this._cacheRenderPipeline.setMRTAttachments(this._mrtAttachments);\n }\n else {\n // single render target\n const internalTexture = rtWrapper.texture;\n if (internalTexture) {\n const gpuWrapper = internalTexture._hardwareTexture;\n const gpuTexture = gpuWrapper.underlyingResource;\n let depthSlice = undefined;\n if (rtWrapper.is3D) {\n depthSlice = this._rttRenderPassWrapper.colorAttachmentViewDescriptor.baseArrayLayer;\n this._rttRenderPassWrapper.colorAttachmentViewDescriptor.baseArrayLayer = 0;\n }\n const gpuMSAATexture = gpuWrapper.getMSAATexture(0);\n const colorTextureView = gpuTexture.createView(this._rttRenderPassWrapper.colorAttachmentViewDescriptor);\n const colorMSAATextureView = gpuMSAATexture?.createView(this._rttRenderPassWrapper.colorAttachmentViewDescriptor);\n const isRTInteger = internalTexture.type === Constants.TEXTURETYPE_UNSIGNED_INTEGER || internalTexture.type === Constants.TEXTURETYPE_UNSIGNED_SHORT;\n colorAttachments.push({\n view: colorMSAATextureView ? colorMSAATextureView : colorTextureView,\n resolveTarget: gpuMSAATexture ? colorTextureView : undefined,\n depthSlice,\n clearValue: mustClearColor ? (isRTInteger ? clearColorForIntegerRT : clearColor) : undefined,\n loadOp: mustClearColor ? \"clear\" /* WebGPUConstants.LoadOp.Clear */ : \"load\" /* WebGPUConstants.LoadOp.Load */,\n storeOp: \"store\" /* WebGPUConstants.StoreOp.Store */,\n });\n }\n else {\n colorAttachments.push(null);\n }\n }\n this._debugPushGroup?.(\"render target pass\" + (renderTargetWrapper.label ? \" (\" + renderTargetWrapper.label + \")\" : \"\"), 0);\n this._rttRenderPassWrapper.renderPassDescriptor = {\n label: (renderTargetWrapper.label ?? \"RTT\") + \" - RenderPass\",\n colorAttachments,\n depthStencilAttachment: depthStencilTexture && gpuDepthStencilTexture\n ? {\n view: depthMSAATextureView ? depthMSAATextureView : depthTextureView,\n depthClearValue: mustClearDepth ? (this.useReverseDepthBuffer ? this._clearReverseDepthValue : this._clearDepthValue) : undefined,\n depthLoadOp: mustClearDepth ? \"clear\" /* WebGPUConstants.LoadOp.Clear */ : \"load\" /* WebGPUConstants.LoadOp.Load */,\n depthStoreOp: \"store\" /* WebGPUConstants.StoreOp.Store */,\n stencilClearValue: rtWrapper._depthStencilTextureWithStencil && mustClearStencil ? this._clearStencilValue : undefined,\n stencilLoadOp: !depthTextureHasStencil\n ? undefined\n : rtWrapper._depthStencilTextureWithStencil && mustClearStencil\n ? \"clear\" /* WebGPUConstants.LoadOp.Clear */\n : \"load\" /* WebGPUConstants.LoadOp.Load */,\n stencilStoreOp: !depthTextureHasStencil ? undefined : \"store\" /* WebGPUConstants.StoreOp.Store */,\n }\n : undefined,\n occlusionQuerySet: this._occlusionQuery?.hasQueries ? this._occlusionQuery.querySet : undefined,\n };\n this._timestampQuery.startPass(this._rttRenderPassWrapper.renderPassDescriptor, this._timestampIndex);\n this._currentRenderPass = this._renderEncoder.beginRenderPass(this._rttRenderPassWrapper.renderPassDescriptor);\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n const internalTexture = rtWrapper.texture;\n Logger.Log([\n \"frame #\" +\n this._count +\n \" - render target begin pass - rtt name=\" +\n renderTargetWrapper.label +\n \", internalTexture.uniqueId=\" +\n internalTexture.uniqueId +\n \", width=\" +\n internalTexture.width +\n \", height=\" +\n internalTexture.height +\n \", setClearStates=\" +\n setClearStates,\n \"renderPassDescriptor=\",\n this._rttRenderPassWrapper.renderPassDescriptor,\n ]);\n }\n }\n this._debugFlushPendingCommands?.();\n this._resetRenderPassStates();\n if (!gpuDepthStencilWrapper || !WebGPUTextureHelper.HasStencilAspect(gpuDepthStencilWrapper.format)) {\n this._stencilStateComposer.enabled = false;\n }\n }\n _startMainRenderPass(setClearStates, clearColor, clearDepth, clearStencil) {\n this._endCurrentRenderPass();\n if (this.useReverseDepthBuffer) {\n this.setDepthFunctionToGreaterOrEqual();\n }\n const mustClearColor = setClearStates && clearColor;\n const mustClearDepth = setClearStates && clearDepth;\n const mustClearStencil = setClearStates && clearStencil;\n this._mainRenderPassWrapper.renderPassDescriptor.colorAttachments[0].clearValue = mustClearColor ? clearColor : undefined;\n this._mainRenderPassWrapper.renderPassDescriptor.colorAttachments[0].loadOp = mustClearColor ? \"clear\" /* WebGPUConstants.LoadOp.Clear */ : \"load\" /* WebGPUConstants.LoadOp.Load */;\n this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.depthClearValue = mustClearDepth\n ? this.useReverseDepthBuffer\n ? this._clearReverseDepthValue\n : this._clearDepthValue\n : undefined;\n this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.depthLoadOp = mustClearDepth ? \"clear\" /* WebGPUConstants.LoadOp.Clear */ : \"load\" /* WebGPUConstants.LoadOp.Load */;\n this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.stencilClearValue = mustClearStencil ? this._clearStencilValue : undefined;\n this._mainRenderPassWrapper.renderPassDescriptor.depthStencilAttachment.stencilLoadOp = !this.isStencilEnable\n ? undefined\n : mustClearStencil\n ? \"clear\" /* WebGPUConstants.LoadOp.Clear */\n : \"load\" /* WebGPUConstants.LoadOp.Load */;\n this._mainRenderPassWrapper.renderPassDescriptor.occlusionQuerySet = this._occlusionQuery?.hasQueries ? this._occlusionQuery.querySet : undefined;\n const swapChainTexture = this._context.getCurrentTexture();\n this._mainRenderPassWrapper.colorAttachmentGPUTextures[0].set(swapChainTexture);\n // Resolve in case of MSAA\n if (this._options.antialias) {\n viewDescriptorSwapChainAntialiasing.format = swapChainTexture.format;\n this._mainRenderPassWrapper.renderPassDescriptor.colorAttachments[0].resolveTarget = swapChainTexture.createView(viewDescriptorSwapChainAntialiasing);\n }\n else {\n viewDescriptorSwapChain.format = swapChainTexture.format;\n this._mainRenderPassWrapper.renderPassDescriptor.colorAttachments[0].view = swapChainTexture.createView(viewDescriptorSwapChain);\n }\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log([\n \"frame #\" + this._count + \" - main begin pass - texture width=\" + this._mainTextureExtends.width,\n \" height=\" + this._mainTextureExtends.height + \", setClearStates=\" + setClearStates,\n \"renderPassDescriptor=\",\n this._mainRenderPassWrapper.renderPassDescriptor,\n ]);\n }\n }\n this._debugPushGroup?.(\"main pass\", 0);\n this._timestampQuery.startPass(this._mainRenderPassWrapper.renderPassDescriptor, this._timestampIndex);\n this._currentRenderPass = this._renderEncoder.beginRenderPass(this._mainRenderPassWrapper.renderPassDescriptor);\n this._setDepthTextureFormat(this._mainRenderPassWrapper);\n this._setColorFormat(this._mainRenderPassWrapper);\n this._debugFlushPendingCommands?.();\n this._resetRenderPassStates();\n if (!this._isStencilEnable) {\n this._stencilStateComposer.enabled = false;\n }\n }\n /**\n * Binds the frame buffer to the specified texture.\n * @param texture The render target wrapper to render to\n * @param faceIndex The face of the texture to render to in case of cube texture\n * @param requiredWidth The width of the target to render to\n * @param requiredHeight The height of the target to render to\n * @param forceFullscreenViewport Forces the viewport to be the entire texture/screen if true\n * @param lodLevel defines the lod level to bind to the frame buffer\n * @param layer defines the 2d array index to bind to frame buffer to\n */\n bindFramebuffer(texture, faceIndex = 0, requiredWidth, requiredHeight, forceFullscreenViewport, lodLevel = 0, layer = 0) {\n const hardwareTexture = texture.texture?._hardwareTexture;\n if (this._currentRenderTarget) {\n this.unBindFramebuffer(this._currentRenderTarget);\n }\n else {\n this._endCurrentRenderPass();\n }\n this._currentRenderTarget = texture;\n const depthStencilTexture = this._currentRenderTarget._depthStencilTexture;\n this._rttRenderPassWrapper.colorAttachmentGPUTextures[0] = hardwareTexture;\n this._rttRenderPassWrapper.depthTextureFormat = depthStencilTexture ? WebGPUTextureHelper.GetWebGPUTextureFormat(-1, depthStencilTexture.format) : undefined;\n this._setDepthTextureFormat(this._rttRenderPassWrapper);\n this._setColorFormat(this._rttRenderPassWrapper);\n this._rttRenderPassWrapper.colorAttachmentViewDescriptor = {\n format: this._colorFormat,\n dimension: texture.is3D ? \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */ : \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n mipLevelCount: 1,\n baseArrayLayer: texture.isCube ? layer * 6 + faceIndex : layer,\n baseMipLevel: lodLevel,\n arrayLayerCount: 1,\n aspect: \"all\" /* WebGPUConstants.TextureAspect.All */,\n };\n this._rttRenderPassWrapper.depthAttachmentViewDescriptor = {\n format: this._depthTextureFormat,\n dimension: depthStencilTexture && depthStencilTexture.is3D ? \"3d\" /* WebGPUConstants.TextureViewDimension.E3d */ : \"2d\" /* WebGPUConstants.TextureViewDimension.E2d */,\n mipLevelCount: 1,\n baseArrayLayer: depthStencilTexture ? (depthStencilTexture.isCube ? layer * 6 + faceIndex : layer) : 0,\n baseMipLevel: 0,\n arrayLayerCount: 1,\n aspect: \"all\" /* WebGPUConstants.TextureAspect.All */,\n };\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log([\n \"frame #\" +\n this._count +\n \" - bindFramebuffer - rtt name=\" +\n texture.label +\n \", internalTexture.uniqueId=\" +\n texture.texture?.uniqueId +\n \", face=\" +\n faceIndex +\n \", lodLevel=\" +\n lodLevel +\n \", layer=\" +\n layer,\n \"colorAttachmentViewDescriptor=\",\n this._rttRenderPassWrapper.colorAttachmentViewDescriptor,\n \"depthAttachmentViewDescriptor=\",\n this._rttRenderPassWrapper.depthAttachmentViewDescriptor,\n ]);\n }\n }\n // We don't create the render pass just now, we do a lazy creation of the render pass, hoping the render pass will be created by a call to clear()...\n if (this._cachedViewport && !forceFullscreenViewport) {\n this.setViewport(this._cachedViewport, requiredWidth, requiredHeight);\n }\n else {\n if (!requiredWidth) {\n requiredWidth = texture.width;\n if (lodLevel) {\n requiredWidth = requiredWidth / Math.pow(2, lodLevel);\n }\n }\n if (!requiredHeight) {\n requiredHeight = texture.height;\n if (lodLevel) {\n requiredHeight = requiredHeight / Math.pow(2, lodLevel);\n }\n }\n this._viewport(0, 0, requiredWidth, requiredHeight);\n }\n this.wipeCaches();\n }\n /**\n * Unbind the current render target texture from the WebGPU context\n * @param texture defines the render target wrapper to unbind\n * @param disableGenerateMipMaps defines a boolean indicating that mipmaps must not be generated\n * @param onBeforeUnbind defines a function which will be called before the effective unbind\n */\n unBindFramebuffer(texture, disableGenerateMipMaps = false, onBeforeUnbind) {\n const saveCRT = this._currentRenderTarget;\n this._currentRenderTarget = null; // to be iso with abstractEngine, this._currentRenderTarget must be null when onBeforeUnbind is called\n if (onBeforeUnbind) {\n onBeforeUnbind();\n }\n this._currentRenderTarget = saveCRT;\n this._endCurrentRenderPass();\n if (!disableGenerateMipMaps) {\n if (texture.isMulti) {\n this.generateMipMapsMultiFramebuffer(texture);\n }\n else {\n this.generateMipMapsFramebuffer(texture);\n }\n }\n this._currentRenderTarget = null;\n if (this.dbgVerboseLogsForFirstFrames) {\n if (this._count === undefined) {\n this._count = 0;\n }\n if (!this._count || this._count < this.dbgVerboseLogsNumFrames) {\n Logger.Log(\"frame #\" + this._count + \" - unBindFramebuffer - rtt name=\" + texture.label + \", internalTexture.uniqueId=\", texture.texture?.uniqueId);\n }\n }\n this._mrtAttachments = [];\n this._cacheRenderPipeline.setMRT([]);\n this._cacheRenderPipeline.setMRTAttachments(this._mrtAttachments);\n }\n /**\n * Generates mipmaps for the texture of the (single) render target\n * @param texture The render target containing the texture to generate the mipmaps for\n */\n generateMipMapsFramebuffer(texture) {\n if (!texture.isMulti && texture.texture?.generateMipMaps && !texture.isCube) {\n this._generateMipmaps(texture.texture);\n }\n }\n /**\n * Resolves the MSAA texture of the (single) render target into its non-MSAA version.\n * Note that if \"texture\" is not a MSAA render target, no resolve is performed.\n * @param _texture The render target texture containing the MSAA texture to resolve\n */\n resolveFramebuffer(_texture) {\n throw new Error(\"resolveFramebuffer is not yet implemented in WebGPU!\");\n }\n /**\n * Unbind the current render target and bind the default framebuffer\n */\n restoreDefaultFramebuffer() {\n if (this._currentRenderTarget) {\n this.unBindFramebuffer(this._currentRenderTarget);\n }\n else if (!this._currentRenderPass) {\n this._startMainRenderPass(false);\n }\n if (this._cachedViewport) {\n this.setViewport(this._cachedViewport);\n }\n this.wipeCaches();\n }\n //------------------------------------------------------------------------------\n // Render\n //------------------------------------------------------------------------------\n /**\n * @internal\n */\n _setColorFormat(wrapper) {\n const format = wrapper.colorAttachmentGPUTextures[0]?.format ?? null;\n this._cacheRenderPipeline.setColorFormat(format);\n if (this._colorFormat === format) {\n return;\n }\n this._colorFormat = format;\n }\n /**\n * @internal\n */\n _setDepthTextureFormat(wrapper) {\n this._cacheRenderPipeline.setDepthStencilFormat(wrapper.depthTextureFormat);\n if (this._depthTextureFormat === wrapper.depthTextureFormat) {\n return;\n }\n this._depthTextureFormat = wrapper.depthTextureFormat;\n }\n setDitheringState() {\n // Does not exist in WebGPU\n }\n setRasterizerState() {\n // Does not exist in WebGPU\n }\n /**\n * @internal\n */\n _executeWhenRenderingStateIsCompiled(pipelineContext, action) {\n // No parallel shader compilation.\n // No Async, so direct launch\n action();\n }\n /**\n * @internal\n */\n bindSamplers() { }\n /** @internal */\n _getUnpackAlignement() {\n return 1;\n }\n /**\n * @internal\n */\n _bindTextureDirectly() {\n return false;\n }\n /**\n * Set various states to the webGL context\n * @param culling defines culling state: true to enable culling, false to disable it\n * @param zOffset defines the value to apply to zOffset (0 by default)\n * @param force defines if states must be applied even if cache is up to date\n * @param reverseSide defines if culling must be reversed (CCW if false, CW if true)\n * @param cullBackFaces true to cull back faces, false to cull front faces (if culling is enabled)\n * @param stencil stencil states to set\n * @param zOffsetUnits defines the value to apply to zOffsetUnits (0 by default)\n */\n setState(culling, zOffset = 0, force, reverseSide = false, cullBackFaces, stencil, zOffsetUnits = 0) {\n // Culling\n if (this._depthCullingState.cull !== culling || force) {\n this._depthCullingState.cull = culling;\n }\n // Cull face\n const cullFace = (this.cullBackFaces ?? cullBackFaces ?? true) ? 1 : 2;\n if (this._depthCullingState.cullFace !== cullFace || force) {\n this._depthCullingState.cullFace = cullFace;\n }\n // Z offset\n this.setZOffset(zOffset);\n this.setZOffsetUnits(zOffsetUnits);\n // Front face\n const frontFace = reverseSide ? (this._currentRenderTarget ? 1 : 2) : this._currentRenderTarget ? 2 : 1;\n if (this._depthCullingState.frontFace !== frontFace || force) {\n this._depthCullingState.frontFace = frontFace;\n }\n this._stencilStateComposer.stencilMaterial = stencil;\n }\n _applyRenderPassChanges(bundleList) {\n const mustUpdateStencilRef = !this._stencilStateComposer.enabled ? false : this._mustUpdateStencilRef();\n const mustUpdateBlendColor = !this._alphaState.alphaBlend ? false : this._mustUpdateBlendColor();\n if (this._mustUpdateViewport()) {\n this._applyViewport(bundleList);\n }\n if (this._mustUpdateScissor()) {\n this._applyScissor(bundleList);\n }\n if (mustUpdateStencilRef) {\n this._applyStencilRef(bundleList);\n }\n if (mustUpdateBlendColor) {\n this._applyBlendColor(bundleList);\n }\n }\n _draw(drawType, fillMode, start, count, instancesCount) {\n const renderPass = this._getCurrentRenderPass();\n const bundleList = this._bundleList;\n this.applyStates();\n const webgpuPipelineContext = this._currentEffect._pipelineContext;\n this.bindUniformBufferBase(this._currentRenderTarget ? this._ubInvertY : this._ubDontInvertY, 0, WebGPUShaderProcessor.InternalsUBOName);\n if (webgpuPipelineContext.uniformBuffer) {\n webgpuPipelineContext.uniformBuffer.update();\n this.bindUniformBufferBase(webgpuPipelineContext.uniformBuffer.getBuffer(), 0, WebGPUShaderProcessor.LeftOvertUBOName);\n }\n if (this._snapshotRendering.play) {\n this._reportDrawCall();\n return;\n }\n if (!this.compatibilityMode &&\n (this._currentDrawContext.isDirty(this._currentMaterialContext.updateId) || this._currentMaterialContext.isDirty || this._currentMaterialContext.forceBindGroupCreation)) {\n this._currentDrawContext.fastBundle = undefined;\n }\n const useFastPath = !this.compatibilityMode && this._currentDrawContext.fastBundle;\n let renderPass2 = renderPass;\n if (useFastPath || this._snapshotRendering.record) {\n this._applyRenderPassChanges(bundleList);\n if (!this._snapshotRendering.record) {\n this._counters.numBundleReuseNonCompatMode++;\n if (this._currentDrawContext.indirectDrawBuffer) {\n this._currentDrawContext.setIndirectData(count, instancesCount || 1, start);\n }\n bundleList.addBundle(this._currentDrawContext.fastBundle);\n this._reportDrawCall();\n return;\n }\n renderPass2 = bundleList.getBundleEncoder(this._cacheRenderPipeline.colorFormats, this._depthTextureFormat, this.currentSampleCount); // for snapshot recording mode\n bundleList.numDrawCalls++;\n }\n let textureState = 0;\n if (this._currentMaterialContext.hasFloatOrDepthTextures) {\n let bitVal = 1;\n for (let i = 0; i < webgpuPipelineContext.shaderProcessingContext.textureNames.length; ++i) {\n const textureName = webgpuPipelineContext.shaderProcessingContext.textureNames[i];\n const texture = this._currentMaterialContext.textures[textureName]?.texture;\n const textureIsDepth = texture && texture.format >= Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 && texture.format <= Constants.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8;\n if ((texture?.type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) || textureIsDepth) {\n textureState |= bitVal;\n }\n bitVal = bitVal << 1;\n }\n }\n this._currentMaterialContext.textureState = textureState;\n const pipeline = this._cacheRenderPipeline.getRenderPipeline(fillMode, this._currentEffect, this.currentSampleCount, textureState);\n const bindGroups = this._cacheBindGroups.getBindGroups(webgpuPipelineContext, this._currentDrawContext, this._currentMaterialContext);\n if (!this._snapshotRendering.record) {\n this._applyRenderPassChanges(!this.compatibilityMode ? bundleList : null);\n if (!this.compatibilityMode) {\n this._counters.numBundleCreationNonCompatMode++;\n renderPass2 = this._device.createRenderBundleEncoder({\n colorFormats: this._cacheRenderPipeline.colorFormats,\n depthStencilFormat: this._depthTextureFormat,\n sampleCount: WebGPUTextureHelper.GetSample(this.currentSampleCount),\n });\n }\n }\n // bind pipeline\n renderPass2.setPipeline(pipeline);\n // bind index/vertex buffers\n if (this._currentIndexBuffer) {\n renderPass2.setIndexBuffer(this._currentIndexBuffer.underlyingResource, this._currentIndexBuffer.is32Bits ? \"uint32\" /* WebGPUConstants.IndexFormat.Uint32 */ : \"uint16\" /* WebGPUConstants.IndexFormat.Uint16 */, 0);\n }\n const vertexBuffers = this._cacheRenderPipeline.vertexBuffers;\n for (let index = 0; index < vertexBuffers.length; index++) {\n const vertexBuffer = vertexBuffers[index];\n const buffer = vertexBuffer.effectiveBuffer;\n if (buffer) {\n renderPass2.setVertexBuffer(index, buffer.underlyingResource, vertexBuffer._validOffsetRange ? 0 : vertexBuffer.byteOffset);\n }\n }\n // bind bind groups\n for (let i = 0; i < bindGroups.length; i++) {\n renderPass2.setBindGroup(i, bindGroups[i]);\n }\n // draw\n const nonCompatMode = !this.compatibilityMode && !this._snapshotRendering.record;\n if (nonCompatMode && this._currentDrawContext.indirectDrawBuffer) {\n this._currentDrawContext.setIndirectData(count, instancesCount || 1, start);\n if (drawType === 0) {\n renderPass2.drawIndexedIndirect(this._currentDrawContext.indirectDrawBuffer, 0);\n }\n else {\n renderPass2.drawIndirect(this._currentDrawContext.indirectDrawBuffer, 0);\n }\n }\n else if (drawType === 0) {\n renderPass2.drawIndexed(count, instancesCount || 1, start, 0, 0);\n }\n else {\n renderPass2.draw(count, instancesCount || 1, start, 0);\n }\n if (nonCompatMode) {\n this._currentDrawContext.fastBundle = renderPass2.finish();\n bundleList.addBundle(this._currentDrawContext.fastBundle);\n }\n this._reportDrawCall();\n }\n /**\n * Draw a list of indexed primitives\n * @param fillMode defines the primitive to use\n * @param indexStart defines the starting index\n * @param indexCount defines the number of index to draw\n * @param instancesCount defines the number of instances to draw (if instantiation is enabled)\n */\n drawElementsType(fillMode, indexStart, indexCount, instancesCount = 1) {\n this._draw(0, fillMode, indexStart, indexCount, instancesCount);\n }\n /**\n * Draw a list of unindexed primitives\n * @param fillMode defines the primitive to use\n * @param verticesStart defines the index of first vertex to draw\n * @param verticesCount defines the count of vertices to draw\n * @param instancesCount defines the number of instances to draw (if instantiation is enabled)\n */\n drawArraysType(fillMode, verticesStart, verticesCount, instancesCount = 1) {\n this._currentIndexBuffer = null;\n this._draw(1, fillMode, verticesStart, verticesCount, instancesCount);\n }\n //------------------------------------------------------------------------------\n // Dispose\n //------------------------------------------------------------------------------\n /**\n * Dispose and release all associated resources\n */\n dispose() {\n this._isDisposed = true;\n this.hideLoadingUI();\n this._timestampQuery.dispose();\n this._mainTexture?.destroy();\n this._depthTexture?.destroy();\n this._textureHelper.destroyDeferredTextures();\n this._bufferManager.destroyDeferredBuffers();\n this._device.destroy();\n _CommonDispose(this, this._renderingCanvas);\n super.dispose();\n }\n //------------------------------------------------------------------------------\n // Misc\n //------------------------------------------------------------------------------\n /**\n * Gets the current render width\n * @param useScreen defines if screen size must be used (or the current render target if any)\n * @returns a number defining the current render width\n */\n getRenderWidth(useScreen = false) {\n if (!useScreen && this._currentRenderTarget) {\n return this._currentRenderTarget.width;\n }\n return this._renderingCanvas?.width ?? 0;\n }\n /**\n * Gets the current render height\n * @param useScreen defines if screen size must be used (or the current render target if any)\n * @returns a number defining the current render height\n */\n getRenderHeight(useScreen = false) {\n if (!useScreen && this._currentRenderTarget) {\n return this._currentRenderTarget.height;\n }\n return this._renderingCanvas?.height ?? 0;\n }\n //------------------------------------------------------------------------------\n // Errors\n //------------------------------------------------------------------------------\n /**\n * Get the current error code of the WebGPU context\n * @returns the error code\n */\n getError() {\n // TODO WEBGPU. from the webgpu errors.\n return 0;\n }\n //------------------------------------------------------------------------------\n // External Textures\n //------------------------------------------------------------------------------\n /**\n * Creates an external texture\n * @param video video element\n * @returns the external texture, or null if external textures are not supported by the engine\n */\n createExternalTexture(video) {\n const texture = new WebGPUExternalTexture(video);\n return texture;\n }\n /**\n * Sets an internal texture to the according uniform.\n * @param name The name of the uniform in the effect\n * @param texture The texture to apply\n */\n setExternalTexture(name, texture) {\n if (!texture) {\n this._currentMaterialContext.setTexture(name, null);\n return;\n }\n this._setInternalTexture(name, texture);\n }\n //------------------------------------------------------------------------------\n // Samplers\n //------------------------------------------------------------------------------\n /**\n * Sets a texture sampler to the according uniform.\n * @param name The name of the uniform in the effect\n * @param sampler The sampler to apply\n */\n setTextureSampler(name, sampler) {\n this._currentMaterialContext?.setSampler(name, sampler);\n }\n //------------------------------------------------------------------------------\n // Storage Buffers\n //------------------------------------------------------------------------------\n /**\n * Creates a storage buffer\n * @param data the data for the storage buffer or the size of the buffer\n * @param creationFlags flags to use when creating the buffer (see Constants.BUFFER_CREATIONFLAG_XXX). The BUFFER_CREATIONFLAG_STORAGE flag will be automatically added\n * @param label defines the label of the buffer (for debug purpose)\n * @returns the new buffer\n */\n createStorageBuffer(data, creationFlags, label) {\n return this._createBuffer(data, creationFlags | Constants.BUFFER_CREATIONFLAG_STORAGE, label);\n }\n /**\n * Updates a storage buffer\n * @param buffer the storage buffer to update\n * @param data the data used to update the storage buffer\n * @param byteOffset the byte offset of the data\n * @param byteLength the byte length of the data\n */\n updateStorageBuffer(buffer, data, byteOffset, byteLength) {\n const dataBuffer = buffer;\n if (byteOffset === undefined) {\n byteOffset = 0;\n }\n let view;\n if (byteLength === undefined) {\n if (data instanceof Array) {\n view = new Float32Array(data);\n }\n else if (data instanceof ArrayBuffer) {\n view = new Uint8Array(data);\n }\n else {\n view = data;\n }\n byteLength = view.byteLength;\n }\n else {\n if (data instanceof Array) {\n view = new Float32Array(data);\n }\n else if (data instanceof ArrayBuffer) {\n view = new Uint8Array(data);\n }\n else {\n view = data;\n }\n }\n this._bufferManager.setSubData(dataBuffer, byteOffset, view, 0, byteLength);\n }\n _readFromGPUBuffer(gpuBuffer, size, buffer, noDelay) {\n return new Promise((resolve, reject) => {\n const readFromBuffer = () => {\n gpuBuffer.mapAsync(1 /* WebGPUConstants.MapMode.Read */, 0, size).then(() => {\n const copyArrayBuffer = gpuBuffer.getMappedRange(0, size);\n let data = buffer;\n if (data === undefined) {\n data = new Uint8Array(size);\n data.set(new Uint8Array(copyArrayBuffer));\n }\n else {\n const ctor = data.constructor; // we want to create result data with the same type as buffer (Uint8Array, Float32Array, ...)\n data = new ctor(data.buffer);\n data.set(new ctor(copyArrayBuffer));\n }\n gpuBuffer.unmap();\n this._bufferManager.releaseBuffer(gpuBuffer);\n resolve(data);\n }, (reason) => {\n if (this.isDisposed) {\n resolve(new Uint8Array());\n }\n else {\n reject(reason);\n }\n });\n };\n if (noDelay) {\n this.flushFramebuffer();\n readFromBuffer();\n }\n else {\n // we are using onEndFrameObservable because we need to map the gpuBuffer AFTER the command buffers\n // have been submitted, else we get the error: \"Buffer used in a submit while mapped\"\n this.onEndFrameObservable.addOnce(() => {\n readFromBuffer();\n });\n }\n });\n }\n /**\n * Read data from a storage buffer\n * @param storageBuffer The storage buffer to read from\n * @param offset The offset in the storage buffer to start reading from (default: 0)\n * @param size The number of bytes to read from the storage buffer (default: capacity of the buffer)\n * @param buffer The buffer to write the data we have read from the storage buffer to (optional)\n * @param noDelay If true, a call to flushFramebuffer will be issued so that the data can be read back immediately and not in engine.onEndFrameObservable. This can speed up data retrieval, at the cost of a small perf penalty (default: false).\n * @returns If not undefined, returns the (promise) buffer (as provided by the 4th parameter) filled with the data, else it returns a (promise) Uint8Array with the data read from the storage buffer\n */\n readFromStorageBuffer(storageBuffer, offset, size, buffer, noDelay) {\n size = size || storageBuffer.capacity;\n const gpuBuffer = this._bufferManager.createRawBuffer(size, WebGPUConstants.BufferUsage.MapRead | WebGPUConstants.BufferUsage.CopyDst, undefined, \"TempReadFromStorageBuffer\");\n this._renderEncoder.copyBufferToBuffer(storageBuffer.underlyingResource, offset ?? 0, gpuBuffer, 0, size);\n return this._readFromGPUBuffer(gpuBuffer, size, buffer, noDelay);\n }\n /**\n * Read data from multiple storage buffers\n * @param storageBuffers The list of storage buffers to read from\n * @param offset The offset in the storage buffer to start reading from (default: 0). This is the same offset for all storage buffers!\n * @param size The number of bytes to read from each storage buffer (default: capacity of the first buffer)\n * @param buffer The buffer to write the data we have read from the storage buffers to (optional). If provided, the buffer should be large enough to hold the data from all storage buffers!\n * @param noDelay If true, a call to flushFramebuffer will be issued so that the data can be read back immediately and not in engine.onEndFrameObservable. This can speed up data retrieval, at the cost of a small perf penalty (default: false).\n * @returns If not undefined, returns the (promise) buffer (as provided by the 4th parameter) filled with the data, else it returns a (promise) Uint8Array with the data read from the storage buffer\n */\n readFromMultipleStorageBuffers(storageBuffers, offset, size, buffer, noDelay) {\n size = size || storageBuffers[0].capacity;\n const gpuBuffer = this._bufferManager.createRawBuffer(size * storageBuffers.length, WebGPUConstants.BufferUsage.MapRead | WebGPUConstants.BufferUsage.CopyDst, undefined, \"TempReadFromMultipleStorageBuffers\");\n for (let i = 0; i < storageBuffers.length; i++) {\n this._renderEncoder.copyBufferToBuffer(storageBuffers[i].underlyingResource, offset ?? 0, gpuBuffer, i * size, size);\n }\n return this._readFromGPUBuffer(gpuBuffer, size * storageBuffers.length, buffer, noDelay);\n }\n /**\n * Sets a storage buffer in the shader\n * @param name Defines the name of the storage buffer as defined in the shader\n * @param buffer Defines the value to give to the uniform\n */\n setStorageBuffer(name, buffer) {\n this._currentDrawContext?.setBuffer(name, buffer?.getBuffer() ?? null);\n }\n}\n// Default glslang options.\nWebGPUEngine._GlslangDefaultOptions = {\n jsPath: `${Tools._DefaultCdnUrl}/glslang/glslang.js`,\n wasmPath: `${Tools._DefaultCdnUrl}/glslang/glslang.wasm`,\n};\nWebGPUEngine._InstanceId = 0;\n//# sourceMappingURL=webgpuEngine.js.map"],"names":["WebGPUConstants.BufferUsage","name","shader"],"mappings":"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,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC7D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC7D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC9D,IAAI,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC/D,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAC3D,IAAI,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;AAChE,CAAC;AACD,6BAA6B,CAAC,UAAU,GAAG;AAC3C,IAAI,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC1D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAI,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC7D,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AACzD,IAAI,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;AAC9D,CAAC;;AChLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,qBAAqB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE;AAClF,IAAI,IAAI,OAAO,GAAG,UAAU,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,EAAE;AAC/D,IAAI,OAAO,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE;AACnC,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9C,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,QAAQ,QAAQ;AAC5B,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,WAAW,EAAE;AACjC,oBAAoB;AACpB,gBAAgB,KAAK,WAAW;AAChC,oBAAoB,WAAW,EAAE;AACjC,oBAAoB;AACpB,gBAAgB,KAAK,GAAG;AACxB,gBAAgB,KAAK,GAAG;AACxB,gBAAgB,KAAK,GAAG;AACxB,oBAAoB,WAAW,GAAG,QAAQ;AAC1C,oBAAoB;AACpB,gBAAgB,KAAK,GAAG;AACxB,oBAAoB,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AACpD,wBAAwB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AAClE,wBAAwB,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC9C,4BAA4B,WAAW,GAAG,IAAI;AAC9C;AACA,6BAA6B,IAAI,QAAQ,KAAK,GAAG,EAAE;AACnD,4BAA4B,WAAW,GAAG,IAAI;AAC9C;AACA;AACA,oBAAoB;AACpB;AACA;AACA,aAAa;AACb,YAAY,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC1C,gBAAgB,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,EAAE;AAChE,oBAAoB,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,WAAW,GAAG,EAAE,CAAC;AAC5E;AACA,qBAAqB;AACrB,oBAAoB,WAAW,GAAG,EAAE;AACpC;AACA;AACA,iBAAiB,IAAI,WAAW,KAAK,IAAI,IAAI,QAAQ,KAAK,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7F,gBAAgB,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,EAAE,CAAC;AACvE,gBAAgB,IAAI,WAAW,KAAK,EAAE,EAAE;AACxC,oBAAoB,OAAO,EAAE;AAC7B;AACA;AACA;AACA,QAAQ,OAAO,EAAE;AACjB,QAAQ,IAAI,WAAW,KAAK,CAAC,EAAE;AAC/B,YAAY;AACZ;AACA;AACA,IAAI,OAAO,WAAW,KAAK,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE;AAC1C,IAAI,OAAO,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE;AAC7B,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;AACrG,YAAY;AACZ;AACA,QAAQ,KAAK,EAAE;AACf;AACA,IAAI,OAAO,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,CAAC,EAAE;AACpC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7B,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAC/B,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;AAC7B,QAAQ,CAAC,IAAI,EAAE,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,IAAI,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,EAAE,EAAE,UAAU,GAAG,KAAK;AACzD,IAAI,MAAM,CAAC,GAAG,EAAE;AAChB,IAAI,OAAO,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE;AACnC,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9C,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,QAAQ,QAAQ;AAC5B,gBAAgB,KAAK,GAAG;AACxB,gBAAgB,KAAK,GAAG;AACxB,gBAAgB,KAAK,GAAG;AACxB,oBAAoB,WAAW,GAAG,QAAQ;AAC1C,oBAAoB;AACpB,gBAAgB,KAAK,GAAG;AACxB,oBAAoB,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AACpD,wBAAwB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AAClE,wBAAwB,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC9C,4BAA4B,WAAW,GAAG,IAAI;AAC9C,4BAA4B,UAAU,GAAG,IAAI;AAC7C;AACA,6BAA6B,IAAI,QAAQ,KAAK,GAAG,EAAE;AACnD,4BAA4B,WAAW,GAAG,IAAI;AAC9C,4BAA4B,UAAU,GAAG,IAAI;AAC7C;AACA;AACA,oBAAoB;AACpB;AACA,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAgB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChC;AACA;AACA,aAAa;AACb,YAAY,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC1C,gBAAgB,IAAI,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,EAAE;AAChE,oBAAoB,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,WAAW,GAAG,EAAE,CAAC;AAC5E,oBAAoB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC;AACA,qBAAqB;AACrB,oBAAoB,WAAW,GAAG,EAAE;AACpC,oBAAoB,UAAU,GAAG,KAAK;AACtC;AACA;AACA,iBAAiB,IAAI,WAAW,KAAK,IAAI,IAAI,QAAQ,KAAK,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AAC7F,gBAAgB,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,EAAE,CAAC;AACvE,gBAAgB,IAAI,WAAW,KAAK,EAAE,EAAE;AACxC,oBAAoB,UAAU,GAAG,KAAK;AACtC,oBAAoB,OAAO,EAAE;AAC7B;AACA;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC;AACA;AACA;AACA,QAAQ,OAAO,EAAE;AACjB;AACA,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;AAC9C,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE;AACnF,QAAQ,KAAK,EAAE;AACf;AACA,IAAI,OAAO,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,CAAC,EAAE;AAChC,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE;AAC1F,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE;AACjB,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,IAAI,YAAY,EAAE;AACtB;AACA,QAAQ,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;AAC/D,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AAC/B,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AACpD,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AACjD,YAAY,IAAI,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK;AAC/C;AACA;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACtD,QAAQ,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC;AAClD,QAAQ,IAAI,IAAI,UAAU,GAAG,KAAK;AAClC;AACA,IAAI,OAAO,IAAI;AACf;;ACvMA;AACO,MAAM,yBAAyB,SAAS,qBAAqB,CAAC;AACrE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAClC,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE;AACzC,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK;AACnC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK;AACrC,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC;AAC/B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE;AAC7C,QAAQ,IAAI,MAAM,GAAG,CAAC;AACtB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC5C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC1C,QAAQ,IAAI,UAAU,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC5C,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC;AAC3E,YAAY,MAAM,GAAG,CAAC,cAAc;AACpC,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC/B,gBAAgB,MAAM,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC9D;AACA,YAAY,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC;AAChD;AACA,QAAQ,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;AACnC;AACA,IAAI,iBAAiB,CAAC,iBAAiB,EAAE;AACzC,QAAQ,IAAI,CAAC,wBAAwB,GAAG,iBAAiB;AACzD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;AACxC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC;AAC/C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,SAAS;AAC7C,QAAQ,IAAI,CAAC,wBAAwB,GAAG,SAAS;AACjD,QAAQ,IAAI,CAAC,0BAA0B,GAAG,SAAS;AACnD;AACA,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE;AAC3C,QAAQ,MAAM,aAAa,GAAG,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,sDAAsD,CAAC;AACzJ,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACvE,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACrE,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvC,gBAAgB,IAAI,CAAC,0BAA0B,GAAG,IAAI;AACtD;AACA,YAAY,OAAO,eAAe,GAAG,IAAI,GAAG,aAAa,GAAG,kBAAkB,GAAG,IAAI;AACrF;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC/D,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAC5C,YAAY,IAAI,CAAC,wBAAwB,GAAG,KAAK;AACjD;AACA,QAAQ,OAAO,eAAe,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI;AAC5D;AACA,IAAI,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE;AACtC,QAAQ,MAAM,QAAQ,GAAG,qBAAqB;AAC9C,QAAQ,MAAM,OAAO,GAAG,oBAAoB;AAC5C,QAAQ,MAAM,YAAY,GAAG,yBAAyB;AACtD,QAAQ,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI,CAAC,gBAAgB,GAAG,OAAO,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,GAAG,QAAQ,GAAG,YAAY;AAClI,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE;AACzD,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,MAAM,QAAQ,GAAG,mEAAmE;AAC5F,QAAQ,MAAM,OAAO,GAAG,kEAAkE;AAC1F,QAAQ,MAAM,YAAY,GAAG,uEAAuE;AACpG,QAAQ,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI,CAAC,gBAAgB,GAAG,OAAO,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,GAAG,QAAQ,GAAG,YAAY;AAClI,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACzC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AACzD,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,QAAQ;AACxB,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChF,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE;AACpD,gBAAgB,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC5C,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,yEAAyE,CAAC,CAAC;AAC/J;AACA;AACA,iBAAiB;AACjB,gBAAgB,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,QAAQ;AAChF,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACvI;AACA,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9L;AACA,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE;AACjD,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,MAAM,OAAO,GAAG,6BAA6B;AACrD,QAAQ,MAAM,WAAW,GAAG,oCAAoC;AAChE,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,OAAO,GAAG,WAAW;AACjE,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3C,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7J,YAAY,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,QAAQ;AAC9E,YAAY,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI;AAC5E,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,oCAAoC,CAAC,IAAI,CAAC;AAC1G,YAAY,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7C;AACA,gBAAgB,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,aAAa,IAAI,aAAa,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa;AACpK,gBAAgB,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C,gBAAgB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5K;AACA,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACtH;AACA;AACA,QAAQ,OAAO,SAAS;AACxB;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE;AACzD,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,MAAM,YAAY,GAAG,6DAA6D;AAC1F,QAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAChD,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;AACtC,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC9F,gBAAgB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC;AACrG,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACvF,gBAAgB,IAAI,CAAC,WAAW,EAAE;AAClC,oBAAoB,WAAW,GAAG;AAClC,wBAAwB,eAAe,EAAE,IAAI;AAC7C,wBAAwB,cAAc,EAAE,SAAS,GAAG,CAAC;AACrD,wBAAwB,gBAAgB,EAAE,KAAK;AAC/C,wBAAwB,QAAQ,EAAE,EAAE;AACpC,wBAAwB,UAAU,EAAE,OAAO;AAC3C,qBAAqB;AACrB,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AAC/D,wBAAwB,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE,CAAC;AACxG;AACA;AACA,gBAAgB,MAAM,WAAW,GAAG,qBAAqB,CAAC,8BAA8B,CAAC,WAAW,CAAC,IAAI,SAAS;AAClH,gBAAgB,MAAM,mBAAmB,GAAG,CAAC,CAAC,qBAAqB,CAAC,uCAAuC,CAAC,WAAW,CAAC;AACxH,gBAAgB,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,YAAY,uDAAuD,WAAW;AAC/I,gBAAgB,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,iBAAiB;AACtE,gBAAgB,IAAI,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC9F,gBAAgB,IAAI,CAAC,WAAW,EAAE;AAClC,oBAAoB,WAAW,GAAG;AAClC,wBAAwB,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE;AACtF,wBAAwB,IAAI,EAAE,kBAAkB;AAChD,qBAAqB;AACrB;AACA,gBAAgB,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE;AACpH,gBAAgB,IAAI,aAAa,EAAE;AACnC,oBAAoB,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D;AACA,gBAAgB,MAAM,UAAU,GAAG;AACnC,sBAAsB,OAAO;AAC7B,sBAAsB,aAAa,KAAK;AACxC,0BAA0B,MAAM;AAChC,0BAA0B,aAAa,KAAK;AAC5C,8BAA8B,MAAM;AACpC,8BAA8B,OAAO;AACrC,gBAAgB,WAAW,CAAC,UAAU,GAAG,UAAU;AACnD,gBAAgB,MAAM,cAAc,GAAG,SAAS,GAAG,CAAC;AACpD,gBAAgB,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU;AACxE,gBAAgB,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY;AAC5E,gBAAgB,MAAM,eAAe,GAAG,qBAAqB,CAAC,kCAAkC,CAAC,WAAW,CAAC;AAC7G,gBAAgB,MAAM,WAAW,GAAG,qBAAqB,CAAC,8BAA8B,CAAC,WAAW,CAAC;AACrG,gBAAgB,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,2CAA2C,CAAC,WAAW,CAAC;AACvH;AACA,gBAAgB,IAAI,CAAC,cAAc,EAAE;AACrC,oBAAoB,SAAS,GAAG,CAAC;AACjC,oBAAoB,OAAO,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,YAAY,EAAE,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC;AACzI,qCAAqC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7K,gCAAgC,EAAE,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3G;AACA,qBAAqB;AACrB,oBAAoB,MAAM,OAAO,GAAG,EAAE;AACtC,oBAAoB,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,YAAY,EAAE,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/J,oBAAoB,OAAO,GAAG,CAAC,EAAE,CAAC;AAClC,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;AACxD,wBAAwB,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU;AAClF,wBAAwB,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY;AACxF,wBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,eAAe,CAAC,YAAY,EAAE,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,wBAAwB,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AACnJ;AACA,oBAAoB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO;AAC1D,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3D;AACA,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW;AACnF,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,WAAW;AAC1F,gBAAgB,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC;AACzF,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;AACpD,oBAAoB,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC;AACjH;AACA;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC;AAC/E,gBAAgB,OAAO,GAAG,EAAE;AAC5B;AACA;AACA,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,sBAAsB,CAAC,aAAa,EAAE,UAAU,EAAE;AACtD,QAAQ,MAAM,QAAQ,GAAG,mBAAmB;AAC5C,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AAClD,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACxF,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,gBAAgB,MAAM,QAAQ,GAAG,6BAA6B,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9E,gBAAgB,IAAI,OAAO;AAC3B,gBAAgB,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE;AACpE,oBAAoB,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC9C;AACA,qBAAqB;AACrB,oBAAoB,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE;AACnF;AACA,gBAAgB,iBAAiB,GAAG,EAAE,OAAO,EAAE;AAC/C,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,iBAAiB;AACxF;AACA,YAAY,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,kDAAkD,CAAC,UAAU,CAAC;AAC9I,YAAY,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAClL;AACA,QAAQ,OAAO,aAAa;AAC5B;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE;AAC9E,QAAQ,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC;AACtG;AACA,QAAQ,MAAM,KAAK,GAAG,gJAAgJ;AACtK,QAAQ,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACtC;AACA,QAAQ,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC;AAC1D,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;AAClE,YAAY,MAAM,aAAa,GAAG,CAAC;AACnC;AACA;AACA;AACA;AACA,YAAY,CAAC;AACb,YAAY,MAAM,UAAU,GAAG,YAAY,GAAG,sBAAsB,GAAG,EAAE;AACzE,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;AACpF,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,aAAa,CAAC;AACvE,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,aAAa,CAAC;AACzE,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC;AAChE,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC;AACnE,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC;AAC/D,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC;AAC7D,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC;AAChE,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxC,gBAAgB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,uBAAuB,IAAI,SAAS,GAAG,EAAE,GAAG,8CAA8C,IAAI,YAAY,CAAC;AACtK;AACA,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;AACpE,gBAAgB,IAAI,KAAK,KAAK,IAAI,EAAE;AACpC,oBAAoB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACjH;AACA;AACA,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC7D,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC;AAC7D,YAAY,IAAI,YAAY,EAAE;AAC9B,gBAAgB,IAAI,GAAG,2BAA2B,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC;AACpF;AACA;AACA,aAAa;AACb,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;AACrE,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC;AACjE,YAAY,MAAM,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACrF,YAAY,IAAI,qBAAqB,EAAE;AACvC,gBAAgB,OAAO,sEAAsE,GAAG,IAAI;AACpG;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAC1D,YAAY,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC;AACtD,YAAY,IAAI,IAAI,8BAA8B;AAClD;AACA,YAAY,IAAI,IAAI,GAAG;AACvB;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE;AAC7C;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,iBAAiB,EAAE,IAAI,CAAC;AAChE,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,QAAQ,OAAO,KAAK,KAAK,IAAI,EAAE;AAC/B,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAClC,YAAY,IAAI,MAAM,GAAG,CAAC,KAAK;AAC/B,YAAY,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACtD,gBAAgB,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC3D;AACA,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;AACxD,YAAY,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,wBAAwB,CAAC,IAAI,EAAE,wBAAwB,EAAE;AAC7D,QAAQ,IAAI,GAAG,GAAG,CAAC,aAAa,EAAE,wBAAwB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;AACpK,QAAQ,KAAK,MAAM,eAAe,IAAI,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE;AACtF,YAAY,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1G;AACA,iBAAiB;AACjB,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/E;AACA;AACA,QAAQ,GAAG,IAAI,QAAQ;AACvB,QAAQ,OAAO,GAAG;AAClB;AACA,IAAI,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE;AAC9C;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACtE,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACxD,YAAY,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,IAAI,CAAC;AAC5E,YAAY,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,IAAI,CAAC;AAChF;AACA;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC/D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjD,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,gBAAgB,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,YAAY;AACzD;AACA;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACpD,QAAQ,UAAU,GAAG,WAAW,GAAG,UAAU;AAC7C,QAAQ,YAAY,GAAG,WAAW,GAAG,YAAY;AACjD,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,QAAQ,IAAI,CAAC,0BAA0B,EAAE;AACzC,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;AAClC,QAAQ,IAAI,CAAC,wBAAwB,CAAC,oCAAoC,GAAG,EAAE;AAC/E,QAAQ,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE;AAC3C;AACA;;AC/TA,MAAM,sBAAsB,GAAG,2BAA2B;AAC1D,MAAM,eAAe,GAAG,UAAU;AAClC,MAAM,gBAAgB,GAAG,WAAW;AACpC,MAAM,8CAA8C,GAAG;AACvD,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,gBAAgB,EAAE,UAAU;AAChC,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,MAAM;AACxB,IAAI,kBAAkB,EAAE,YAAY;AACpC,IAAI,uBAAuB,EAAE,IAAI;AACjC,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,sBAAsB,EAAE,UAAU;AACtC,IAAI,kBAAkB,EAAE,MAAM;AAC9B,IAAI,wBAAwB,EAAE,YAAY;AAC1C,IAAI,6BAA6B,EAAE,IAAI;AACvC,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,wBAAwB,EAAE,UAAU;AACxC,IAAI,kBAAkB,EAAE,IAAI;AAC5B,IAAI,gBAAgB,EAAE,IAAI;AAC1B,CAAC;AACD;AACO,MAAM,yBAAyB,SAAS,qBAAqB,CAAC;AACrE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,GAAG,gCAAgC;AAC7D,QAAQ,IAAI,CAAC,aAAa,GAAG,sFAAsF;AACnH,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B;AACA,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAC9E;AACA,QAAQ,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;AACzC,YAAY,IAAI,GAAG,KAAK,aAAa,EAAE;AACvC,gBAAgB;AAChB;AACA,YAAY,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC;AAC5C,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AACtE,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;AAC1D;AACA;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE;AACpD,QAAQ,IAAI,MAAM,GAAG,CAAC;AACtB,QAAQ,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC;AACrD,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC/D,YAAY,IAAI,UAAU,GAAG,QAAQ;AACrC,YAAY,OAAO,UAAU,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AACvH,gBAAgB,UAAU,EAAE;AAC5B;AACA,YAAY,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC;AAClF,YAAY,MAAM,GAAG,CAAC,cAAc;AACpC,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC/B,gBAAgB,MAAM,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC9D;AACA,YAAY,OAAO,UAAU,GAAG,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE;AACzH,gBAAgB,UAAU,EAAE;AAC5B;AACA,YAAY,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;AAC7F;AACA,QAAQ,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC;AAC1C;AACA,IAAI,iBAAiB,CAAC,iBAAiB,EAAE;AACzC,QAAQ,IAAI,CAAC,wBAAwB,GAAG,iBAAiB;AACzD,QAAQ,IAAI,CAAC,oBAAoB,GAAG,EAAE;AACtC,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE;AACjC,QAAQ,IAAI,CAAC,6BAA6B,GAAG,EAAE;AAC/C,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC1C,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE;AAC/B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,EAAE;AACvC;AACA,IAAI,oBAAoB,CAAC,IAAI,EAAE;AAC/B;AACA,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC;AACnC,cAAc;AACd,cAAc,CAAC,OAAO,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,qEAAqE,EAAE,gBAAgB,CAAC,GAAG,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACvM,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClE,QAAQ,OAAO,eAAe,GAAG,IAAI,GAAG,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC;AAC5E;AACA,IAAI,YAAY,CAAC,OAAO,EAAE;AAC1B,QAAQ,MAAM,KAAK,GAAG,sEAAsE;AAC5F,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE;AACzD,QAAQ,MAAM,YAAY,GAAG,yHAAyH;AACtJ,QAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAChD,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,aAAa;AAC/D,YAAY,MAAM,qBAAqB,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ;AAC9D,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM,aAAa,GAAG,iBAAiB,KAAK,MAAM,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;AACtK,YAAY,IAAI,QAAQ;AACxB,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChF,gBAAgB,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC5C,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,yEAAyE,CAAC,CAAC;AAC/J;AACA;AACA,iBAAiB;AACjB,gBAAgB,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrJ,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,QAAQ;AAChF,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC9G,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD;AACA,YAAY,OAAO,GAAG,EAAE;AACxB;AACA,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE;AACjD,QAAQ,MAAM,WAAW,GAAG,uCAAuC;AACnE,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;AACjD,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7J,YAAY,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,QAAQ;AAC9E,YAAY,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI;AAC5E,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,oCAAoC,CAAC,IAAI,CAAC;AAC1G,YAAY,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7C;AACA,gBAAgB,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,aAAa,GAAG,OAAO,IAAI,aAAa,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa,GAAG,OAAO;AACrL,gBAAgB,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACjG,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AACxE,gBAAgB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7H,gBAAgB,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACjD;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AACpG,gBAAgB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AACxE,gBAAgB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACxG;AACA,YAAY,SAAS,GAAG,EAAE;AAC1B;AACA,QAAQ,OAAO,SAAS;AACxB;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE;AACzD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AACtD,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC;AAC3E,YAAY,OAAO,GAAG,EAAE;AACxB;AACA,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE;AACzD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AACtD,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;AACvE,YAAY,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI;AAChI,YAAY,IAAI,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnG,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACnF,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB,WAAW,GAAG;AAC9B,oBAAoB,cAAc,EAAE,SAAS,GAAG,CAAC;AACjD,oBAAoB,gBAAgB;AACpC,oBAAoB,QAAQ,EAAE,EAAE;AAChC,oBAAoB,UAAU,EAAE,OAAO;AACvC,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,SAAS,IAAI,CAAC;AAC1C,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;AACpD,oBAAoB,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE,CAAC;AACpG;AACA;AACA,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM;AACvD;AACA,YAAY,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW;AAC/E,YAAY,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AACnE,YAAY,MAAM,gBAAgB,GAAG,8CAA8C,CAAC,WAAW,CAAC;AAChG,YAAY,MAAM,UAAU,GAAG;AAC/B,kBAAkB,OAAO;AACzB,kBAAkB,aAAa,KAAK;AACpC,sBAAsB,MAAM;AAC5B,sBAAsB,aAAa,KAAK;AACxC,0BAA0B,MAAM;AAChC,0BAA0B,OAAO;AACjC,YAAY,WAAW,CAAC,UAAU,GAAG,UAAU;AAC/C,YAAY,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAChD;AACA,gBAAgB,MAAM,CAAC,uEAAuE,EAAE,WAAW,CAAC,EAAE,CAAC;AAC/G;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;AAChD,gBAAgB,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5E,gBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7B,oBAAoB,OAAO,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC1F;AACA,gBAAgB,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC,UAAU,CAAC;AAC7H;AACA;AACA,QAAQ,OAAO,OAAO;AACtB;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,MAAM,aAAa,GAAG,wBAAwB;AACtD,QAAQ,IAAI,KAAK;AACjB,QAAQ,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;AAC5D,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE;AAC9C,QAAQ,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5F,cAAc,CAAC;AACf;AACA;AACA;AACA,QAAQ;AACR,cAAc,EAAE;AAChB;AACA,QAAQ,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC;AAC5D,QAAQ,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC;AACjE;AACA,QAAQ,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC;AACjE,QAAQ,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC;AACtE;AACA,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACpD,QAAQ,UAAU,GAAG,WAAW,GAAG,UAAU;AAC7C,QAAQ,YAAY,GAAG,WAAW,GAAG,YAAY;AACjD;AACA,QAAQ,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,8BAA8B,EAAE,gBAAgB,CAAC;AACzF,QAAQ,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC;AAClE,QAAQ,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC;AAClE,QAAQ,IAAI,YAAY,GAAG,uHAAuH;AAClJ,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,YAAY,YAAY,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChE;AACA,QAAQ,YAAY,IAAI,iCAAiC,IAAI,IAAI,CAAC,qBAAqB,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,oBAAoB;AAC1H,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,YAAY,IAAI,qEAAqE;AACjG,YAAY,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3D,YAAY,YAAY,IAAI,oDAAoD;AAChF;AACA,QAAQ,IAAI,aAAa,GAAG,uEAAuE;AACnG,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAY,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1D;AACA,QAAQ,aAAa,IAAI,sDAAsD;AAC/E,QAAQ,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU;AAC9D,QAAQ,IAAI,sBAAsB,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,qBAAqB,GAAG,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC;AAC1G,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,sBAAsB,IAAI,oHAAoH;AAC1J,YAAY,sBAAsB,IAAI,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;AACnF,YAAY,sBAAsB,IAAI,IAAI;AAC1C;AACA,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAC1C,cAAc,CAAC,uBAAuB;AACtC,cAAc,CAAC,oGAAoG,CAAC;AACpH,QAAQ,IAAI,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9E,QAAQ,UAAU;AAClB,YAAY,CAAC,iBAAiB,GAAG,2CAA2C,GAAG,EAAE;AACjF,gBAAgB,+CAA+C;AAC/D,gBAAgB,2BAA2B,CAAC,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,oBAAoB,CAAC;AAChH;AACA,QAAQ,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,8BAA8B,EAAE,gBAAgB,CAAC;AAC7F,QAAQ,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC;AACtE,QAAQ,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC;AACtE,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;AACvF;AACA,QAAQ,IAAI,cAAc,GAAG,qHAAqH;AAClJ,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAY,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3D;AACA,QAAQ,cAAc,IAAI,uDAAuD;AACjF,QAAQ,IAAI,eAAe,GAAG,4BAA4B;AAC1D;AACA,QAAQ,MAAM,SAAS,GAAG,4BAA4B;AACtD,QAAQ,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACxE,QAAQ,IAAI,aAAa,GAAG,CAAC;AAC7B,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,eAAe,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,0BAA0B,CAAC;AACtF,YAAY,aAAa,EAAE;AAC3B,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;AACpD,gBAAgB,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9E,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,eAAe,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;AAC7G,oBAAoB,aAAa,EAAE;AACnC;AACA;AACA,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,gBAAgB,eAAe,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,sBAAsB,CAAC;AACvF,gBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,iBAAiB;AACvC,QAAQ,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,eAAe,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,sBAAsB,CAAC;AACpF,YAAY,eAAe,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,2BAA2B,CAAC;AACzF,YAAY,eAAe,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,0BAA0B,CAAC;AACxF;AACA,QAAQ,IAAI,aAAa,KAAK,CAAC,EAAE;AACjC,YAAY,eAAe,IAAI,qCAAqC;AACpE,YAAY,aAAa,EAAE;AAC3B;AACA;AACA,QAAQ,IAAI,YAAY,GAAG,KAAK;AAChC,QAAQ,IAAI,GAAG,GAAG,CAAC;AACnB,QAAQ,OAAO,CAAC,YAAY,EAAE;AAC9B,YAAY,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC;AACnE,YAAY,IAAI,GAAG,GAAG,CAAC,EAAE;AACzB,gBAAgB;AAChB;AACA,YAAY,MAAM,SAAS,GAAG,GAAG;AACjC,YAAY,YAAY,GAAG,IAAI;AAC/B,YAAY,OAAO,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AACjE,gBAAgB,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC9F,oBAAoB,YAAY,GAAG,KAAK;AACxC,oBAAoB;AACpB;AACA,gBAAgB,GAAG,EAAE;AACrB;AACA,YAAY,GAAG,GAAG,SAAS,GAAG,sBAAsB,CAAC,MAAM;AAC3D;AACA,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,eAAe,IAAI,0CAA0C;AACzE;AACA,QAAQ,eAAe,IAAI,uDAAuD;AAClF,QAAQ,YAAY,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY;AACtE,QAAQ,MAAM,oBAAoB,GAAG,+BAA+B,GAAG,aAAa;AACpF,QAAQ,MAAM,kBAAkB,GAAG,2BAA2B;AAC9D,QAAQ,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5E,QAAQ,YAAY;AACpB,YAAY,CAAC,iBAAiB,GAAG,2CAA2C,GAAG,EAAE;AACjF,gBAAgB,+CAA+C;AAC/D,gBAAgB,2BAA2B,CAAC,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;AAC9G,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,QAAQ,IAAI,CAAC,0BAA0B,EAAE;AACzC,QAAQ,IAAI,CAAC,wBAAwB,CAAC,oCAAoC,GAAG,EAAE;AAC/E,QAAQ,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE;AAC3C;AACA,IAAI,wBAAwB,CAAC,IAAI,EAAE,wBAAwB,EAAE;AAC7D,QAAQ,IAAI,aAAa,GAAG,EAAE;AAC9B,QAAQ,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;AACtC,QAAQ,KAAK,MAAM,eAAe,IAAI,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE;AACtF,YAAY,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAC7E,YAAY,MAAM,IAAI,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC;AACjE,YAAY,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,gBAAgB,IAAI,IAAI,IAAI,CAAC,EAAE;AAC/B,oBAAoB,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC;AACvG,oBAAoB,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;AAChE;AACA,4BAA4B,EAAE,IAAI,CAAC;AACnC,qBAAqB,CAAC;AACtB,oBAAoB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACzE,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3H;AACA,qBAAqB;AACrB,oBAAoB,GAAG,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;AACpH;AACA;AACA,iBAAiB;AACjB,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/E;AACA;AACA,QAAQ,GAAG,IAAI,MAAM;AACrB,QAAQ,GAAG,GAAG,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACxC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;AAC/K,QAAQ,OAAO,GAAG;AAClB;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACrC,QAAQ,MAAM,aAAa,GAAG,6DAA6D;AAC3F;AACA,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,YAAY,IAAI,KAAK,KAAK,IAAI,EAAE;AAChC,gBAAgB;AAChB;AACA,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM;AACrF,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,IAAI;AAC/I,YAAY,MAAM,kBAAkB,GAAG,WAAW,KAAK,oBAAoB,GAAG,YAAY,uDAAuD,WAAW;AAC5J,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAChG,gBAAgB,IAAI,WAAW,EAAE;AACjC,oBAAoB,WAAW,CAAC,eAAe,GAAG,IAAI;AACtD;AACA;AACA,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACnF,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB,WAAW,GAAG;AAC9B,oBAAoB,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE;AAClF,oBAAoB,IAAI,EAAE,kBAAkB;AAC5C,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW;AACnF;AACA,YAAY,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC;AAC3E,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;AACxD,YAAY,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;AACzH,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACrD,YAAY,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK;AAC7C,YAAY,aAAa,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM;AACxD;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC1C,QAAQ,MAAM,uBAAuB,GAAG,mFAAmF;AAC3H;AACA,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5D,YAAY,IAAI,KAAK,KAAK,IAAI,EAAE;AAChC,gBAAgB;AAChB;AACA,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;AACvC,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;AACvC,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACjF,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAgB,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,GAAG,6BAA6B,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI;AAChH,gBAAgB,IAAI,OAAO;AAC3B,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,IAAI,GAAG,UAAU;AACrC,oBAAoB,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC9C,oBAAoB,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE;AACnD,wBAAwB,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO;AAC/F,wBAAwB,IAAI,CAAC,OAAO,EAAE;AACtC,4BAA4B,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE;AAC3F;AACA;AACA;AACA,qBAAqB;AACrB,oBAAoB,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,EAAE;AACnF;AACA,gBAAgB,UAAU,GAAG,EAAE,OAAO,EAAE;AACxC,gBAAgB,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,UAAU;AACjF;AACA,YAAY,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK;AACzH,kBAAkB,SAAS;AAC3B,kBAAkB,IAAI,KAAK;AAC3B,sBAAsB,mBAAmB;AACzC,sBAAsB,SAAS,kDAAkD,QAAQ,CAAC;AAC1F,YAAY,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU;AAC5D,YAAY,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY;AAChE,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;AACxD,YAAY,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;AACjF,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACrD,YAAY,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK;AAC7C,YAAY,uBAAuB,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM;AAClE;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,4BAA4B,CAAC,IAAI,EAAE;AACvC,QAAQ,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACnE,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACpH;AACA,QAAQ,OAAO,IAAI;AACnB;AACA;;AC1dA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC;AACA,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,IAAI;AACvD;AACA,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACtC,YAAY,IAAI,CAAC,kBAAkB,GAAG,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,OAAO;AAChD;AACA,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,IAAI,KAAK,KAAK,SAAS,EAAE;AACrC,gBAAgB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC1F,gBAAgB,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACrD;AACA,iBAAiB;AACjB,gBAAgB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC/D,oBAAoB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC;AACvE;AACA,gBAAgB,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9C;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE;AACjD,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACzC,QAAQ,IAAI,CAAC,MAAM,GAAG,YAAY;AAClC,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC;AAC9B,QAAQ,IAAI,CAAC,uBAAuB,GAAG,CAAC;AACxC,QAAQ,IAAI,CAAC,cAAc,GAAG,eAAe;AAC7C,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACtC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;AAClC;AACA,IAAI,GAAG,CAAC,eAAe,EAAE;AACzB,QAAQ,IAAI,CAAC,cAAc,GAAG,eAAe;AAC7C;AACA,IAAI,QAAQ,CAAC,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AAC7F,QAAQ,IAAI,aAAa,GAAG,IAAI;AAChC,QAAQ,IAAI,eAAe,GAAG,CAAC;AAC/B,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,aAAa,GAAG,SAAS,GAAG,YAAY,wDAAwD,MAAM;AAClH,YAAY,eAAe,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC9C;AACA,aAAa,IAAI,IAAI,EAAE;AACvB,YAAY,aAAa,GAAG,IAAI;AAChC,YAAY,eAAe,GAAG,CAAC;AAC/B;AACA,aAAa,IAAI,SAAS,EAAE;AAC5B,YAAY,aAAa,GAAG,UAAU;AACtC,YAAY,eAAe,GAAG,KAAK;AACnC;AACA,QAAQ,MAAM,MAAM,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1E,QAAQ,MAAM,MAAM,GAAG,mBAAmB,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,YAAY,iDAAiD,KAAK;AACtJ,QAAQ,IAAI,CAAC,UAAU,CAAC;AACxB,YAAY,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAChN,YAAY,MAAM;AAClB,YAAY,SAAS,EAAE,aAAa;AACpC,YAAY,aAAa,EAAE,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACnF,YAAY,cAAc,EAAE,CAAC;AAC7B,YAAY,YAAY,EAAE,CAAC;AAC3B,YAAY,eAAe;AAC3B,YAAY,MAAM;AAClB,SAAS,CAAC;AACV;AACA,IAAI,UAAU,CAAC,UAAU,EAAE,oBAAoB,GAAG,KAAK,EAAE;AACzD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC;AAC9D,QAAQ,IAAI,oBAAoB,IAAI,UAAU,EAAE;AAChD,YAAY,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa;AAC3D,YAAY,UAAU,CAAC,aAAa,GAAG,CAAC;AACxC,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC;AAC5E,YAAY,UAAU,CAAC,aAAa,GAAG,cAAc;AACrD;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;AAClC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACtC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;AAClC;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC,QAAQ,IAAI,CAAC,uBAAuB,EAAE,OAAO,EAAE;AAC/C,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA,MAAM,kBAAkB,GAAG,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,oBAAoB,GAAG,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,mCAAmC,GAAG,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,qCAAqC,GAAG,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,2CAA2C,GAAG,mCAAmC;AACvF,MAAM,6CAA6C,GAAG,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,iBAAiB,GAAG,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,mBAAmB,GAAG,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,8BAA8B,GAAG,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,gCAAgC,GAAG,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,MAAM,uCAAuC,GAAG,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC;AACL,IAAI,YAAY;AAChB,CAAC,UAAU,YAAY,EAAE;AACzB,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ;AACvD,IAAI,YAAY,CAAC,YAAY,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,yBAAyB;AACzF,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AACrD,IAAI,YAAY,CAAC,YAAY,CAAC,iCAAiC,CAAC,GAAG,CAAC,CAAC,GAAG,iCAAiC;AACzG,CAAC,EAAE,YAAY,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC;AACvC,IAAI,iBAAiB;AACrB,CAAC,UAAU,iBAAiB,EAAE;AAC9B,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa;AAC3E,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;AACnE,CAAC,EAAE,iBAAiB,KAAK,iBAAiB,GAAG,EAAE,CAAC,CAAC;AACjD,MAAM,sBAAsB,GAAG;AAC/B,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAAE;AAClE,IAAI,EAAE,MAAM,EAAE,mCAAmC,EAAE,QAAQ,EAAE,qCAAqC,EAAE;AACpG,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AAChE,IAAI,EAAE,MAAM,EAAE,2CAA2C,EAAE,QAAQ,EAAE,6CAA6C,EAAE;AACpH,CAAC;AACD;AACA;AACA;AACA;AACO,MAAM,8BAA8B,GAAG;AAC9C,IAAI,EAAE,EAAE,CAAC;AACT,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,iBAAiB,EAAE,EAAE;AACzB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,iBAAiB,EAAE,EAAE;AACzB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,YAAY,EAAE,EAAE;AACpB;AACA,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,YAAY,EAAE,EAAE;AACpB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,sBAAsB,EAAE,EAAE;AAC9B,IAAI,YAAY,EAAE,EAAE;AACpB,IAAI,uBAAuB,EAAE,EAAE;AAC/B,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,WAAW,EAAE,EAAE;AACnB,CAAC;AACD;AACO,MAAM,oBAAoB,CAAC;AAClC;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE;AAClE,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAClC,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE;AACjC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,EAAE;AACvC,QAAQ,IAAI,CAAC,wBAAwB,GAAG,EAAE;AAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,IAAI,iBAAiB,CAAC,OAAO,CAAC,0BAA0B,2DAA2D,KAAK,CAAC,CAAC,EAAE;AACpI,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC;AACpE,YAAY,8BAA8B,CAAC,eAAe,mDAAmD,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACzK;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,0CAA0C,CAAC;AACnH,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,0CAA0C,CAAC;AAClH,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,kBAAkB;AACxL,QAAQ,IAAI,CAAC,YAAY,CAAC,YAAY,gDAAgD;AACtF,QAAQ,IAAI,CAAC,iBAAiB,CAAC,YAAY,gDAAgD;AAC3F;AACA,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;AAC7D,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,YAAY,CAAC;AAC5C,cAAc,CAAC,IAAI;AACnB,cAAc,IAAI,KAAK,YAAY,CAAC;AACpC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3F,kBAAkB,IAAI,KAAK,YAAY,CAAC;AACxC,sBAAsB,CAAC,IAAI;AAC3B,sBAAsB,IAAI,KAAK,YAAY,CAAC;AAC5C,0BAA0B,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AACnG,0BAA0B,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACtC,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE;AACxC;AACA,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,YAAY,IAAI,OAAO,GAAG,EAAE;AAC5B,YAAY,IAAI,IAAI,KAAK,YAAY,CAAC,uBAAuB,IAAI,IAAI,KAAK,YAAY,CAAC,+BAA+B,EAAE;AACxH,gBAAgB,IAAI,MAAM,CAAC,OAAO,EAAE;AACpC,oBAAoB,OAAO,IAAI,mBAAmB;AAClD;AACA,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC7C,oBAAoB,OAAO,IAAI,4BAA4B;AAC3D;AACA;AACA,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACtD,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,IAAI,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM;AACpE,gBAAgB,IAAI,YAAY,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,QAAQ;AACxE,gBAAgB,MAAM,gBAAgB,GAAG;AACzC,oBAAoB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAChD,oBAAoB,eAAe,EAAE,IAAI;AACzC,oBAAoB,UAAU,EAAE,KAAK;AACrC,oBAAoB,4BAA4B,EAAE,IAAI;AACtD,oBAAoB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,2BAA2B;AAC5F,oBAAoB,sBAAsB,EAAE,IAAI;AAChD,oBAAoB,iBAAiB,EAAE,EAAE;AACzC,oBAAoB,oBAAoB,EAAE,EAAE;AAC5C,oBAAoB,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,QAAQ,EAAE;AACpE,oBAAoB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB;AACjE,oBAAoB,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,4BAA4B,IAAI,CAAC;AAClH,oBAAoB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AACjE,oBAAoB,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB;AAC7E,iBAAiB;AACjB,gBAAgB,UAAU,CAAC,gBAAgB,CAAC;AAC5C;AACA,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI;AAC1D,gBAAgB,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC,kBAAkB,KAAK;AAC9E,oBAAoB,UAAU,GAAG,kBAAkB;AACnD,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC;AAChC,gBAAgB,gBAAgB,CAAC,UAAU,GAAG,IAAI;AAClD,gBAAgB,OAAO,CAAC,YAAY,EAAE,gBAAgB,EAAE,CAAC,oBAAoB,KAAK;AAClF,oBAAoB,YAAY,GAAG,oBAAoB;AACvD,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC;AAChC,gBAAgB,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,gBAAgB,CAAC;AAClF;AACA,gBAAgB,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK;AAC3D,gBAAgB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACrE,oBAAoB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACtG,oBAAoB,IAAI,EAAE,KAAK,CAAC,UAAU;AAC1C,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACvE,oBAAoB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACxG,oBAAoB,IAAI,EAAE,KAAK,CAAC,YAAY;AAC5C,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC;AACvF;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC/D,gBAAgB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxG,gBAAgB,MAAM,EAAE,MAAM;AAC9B,gBAAgB,MAAM,EAAE;AACxB,oBAAoB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACtC,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACtC,oBAAoB,UAAU,EAAE,MAAM;AACtC,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB;AACxB,4BAA4B,MAAM;AAClC,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,QAAQ,EAAE,gBAAgB;AAC9C,oBAAoB,gBAAgB,EAAE,QAAQ;AAC9C,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACxG;AACA,QAAQ,OAAO,cAAc;AAC7B;AACA,IAAI,iBAAiB,CAAC,MAAM,EAAE,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE;AACpE,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,iBAAiB,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACrE,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;AAC3C,YAAY,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE;AAC7C;AACA,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AAChE,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAC3D,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACrE,oBAAoB,IAAI,EAAE,8BAA8B;AACxD,oBAAoB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAC;AACxG,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACvE,oBAAoB,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,gCAAgC,GAAG,uCAAuC;AAClH,oBAAoB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,mCAAmC,EAAE,KAAK,KAAK,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;AACrJ,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC;AAC5F;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC/D,gBAAgB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;AAC/I,gBAAgB,MAAM,EAAE,MAAM;AAC9B,gBAAgB,MAAM,EAAE;AACxB,oBAAoB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACtC,oBAAoB,UAAU,EAAE,MAAM;AACtC,iBAAiB;AACjB,gBAAgB,QAAQ,EAAE;AAC1B,oBAAoB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACtC,oBAAoB,UAAU,EAAE,MAAM;AACtC,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB;AACxB,4BAA4B,MAAM;AAClC,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,QAAQ,EAAE,gBAAgB;AAC9C,oBAAoB,gBAAgB,EAAE,QAAQ;AAC9C,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC7G;AACA,QAAQ,OAAO,cAAc;AAC7B;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,0BAA0B,GAAG,OAAO;AACjD;AACA,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,cAAc,EAAE;AAChF,QAAQ,MAAM,oBAAoB,GAAG,cAAc,KAAK,SAAS;AACjE,QAAQ,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAAC,OAAO,GAAG,iBAAiB,CAAC,WAAW,CAAC;AAC/I,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AAClE;AACA,QAAQ,cAAc,CAAC,cAAc,GAAG,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC,CAAC;AACrF,QAAQ,MAAM,qBAAqB,GAAG,OAAO,CAAC,gBAAgB;AAC9D,QAAQ,MAAM,oBAAoB,GAAG;AACrC,YAAY,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC/K,YAAY,gBAAgB,EAAE;AAC9B,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,UAAU,CAAC;AAC9E,wBAAwB,MAAM;AAC9B,wBAAwB,SAAS,EAAE,IAAI;AACvC,wBAAwB,aAAa,EAAE,CAAC;AACxC,wBAAwB,cAAc,EAAE,CAAC;AACzC,wBAAwB,YAAY,EAAE,CAAC;AACvC,wBAAwB,eAAe,EAAE,CAAC;AAC1C,wBAAwB,MAAM,EAAE,KAAK;AACrC,qBAAqB,CAAC;AACtB,oBAAoB,MAAM,EAAE,MAAM;AAClC,oBAAoB,OAAO,EAAE,OAAO;AACpC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC;AAChF,QAAQ,MAAM,UAAU,GAAG;AAC3B,YAAY,MAAM,EAAE,eAAe;AACnC,YAAY,OAAO,EAAE;AACrB,gBAAgB;AAChB,oBAAoB,OAAO,EAAE,CAAC;AAC9B,oBAAoB,QAAQ,EAAE,IAAI,CAAC,aAAa;AAChD,iBAAiB;AACjB,gBAAgB;AAChB,oBAAoB,OAAO,EAAE,CAAC;AAC9B,oBAAoB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACjE,wBAAwB,MAAM,EAAE,KAAK,CAAC,kBAAkB;AACxD,qBAAqB,CAAC;AACtB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC;AAClE,QAAQ,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzC,QAAQ,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC;AAC9C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,QAAQ,WAAW,CAAC,GAAG,EAAE;AACzB,QAAQ,cAAc,CAAC,aAAa,IAAI;AACxC,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AAChE,YAAY,cAAc,GAAG,IAAI;AACjC;AACA;AACA,IAAI,uBAAuB,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,cAAc;AAC3N;AACA,IAAI,oBAAoB,EAAE;AAC1B,QAAQ,MAAM,OAAO,GAAG,SAAS,KAAK,CAAC;AACvC,QAAQ,MAAM,oBAAoB,GAAG,cAAc,KAAK,SAAS;AACjE,QAAQ,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAAC,+BAA+B,GAAG,YAAY,CAAC,uBAAuB,EAAE;AACrK,YAAY,OAAO;AACnB,YAAY,gBAAgB;AAC5B,SAAS,CAAC;AACV,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1C,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AAClE;AACA,QAAQ,cAAc,CAAC,cAAc,GAAG,CAAC,mCAAmC,EAAE,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC7H,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE;AACpE,YAAY,UAAU,GAAG,eAAe,CAAC,kBAAkB;AAC3D,YAAY,IAAI,EAAE,OAAO,IAAI,CAAC,gBAAgB,IAAI,MAAM,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AACpF;AACA,gBAAgB,eAAe,GAAG,SAAS;AAC3C;AACA;AACA,aAAa;AACb,YAAY,UAAU,GAAG,eAAe;AACxC,YAAY,eAAe,GAAG,SAAS;AACvC;AACA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY;AACZ;AACA,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACtI;AACA,QAAQ,MAAM,qBAAqB,GAAG,eAAe;AACrD,QAAQ,MAAM,aAAa,GAAG,qBAAqB,EAAE,uBAAuB;AAC5E,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,8CAA8C,EAAE,uDAAuD,CAAC,oDAAoD,SAAS,EAAE,+BAA+B,CAAC;AACnU,QAAQ,MAAM,oBAAoB,GAAG,qBAAqB,EAAE,2BAA2B,IAAI;AAC3F,YAAY,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,sBAAsB,CAAC,CAAC;AAC3M,YAAY,gBAAgB,EAAE;AAC9B,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC;AACnD,wBAAwB,MAAM;AAC9B,wBAAwB,SAAS,EAAE,IAAI;AACvC,wBAAwB,YAAY,EAAE,CAAC;AACvC,wBAAwB,aAAa,EAAE,CAAC;AACxC,wBAAwB,eAAe,EAAE,CAAC;AAC1C,wBAAwB,cAAc,EAAE,CAAC;AACzC,qBAAqB,CAAC;AACtB,oBAAoB,MAAM,EAAE,MAAM;AAClC,oBAAoB,OAAO,EAAE,OAAO;AACpC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC;AAChF,QAAQ,IAAI,SAAS,GAAG,OAAO,GAAG,qBAAqB,EAAE,6BAA6B,GAAG,qBAAqB,EAAE,qBAAqB;AACrI,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,MAAM,UAAU,GAAG;AAC/B,gBAAgB,MAAM,EAAE,eAAe;AACvC,gBAAgB,OAAO,EAAE;AACzB,oBAAoB;AACpB,wBAAwB,OAAO,EAAE,CAAC;AAClC,wBAAwB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;AACxD,4BAA4B,MAAM;AAClC,4BAA4B,SAAS,EAAE,IAAI;AAC3C,4BAA4B,YAAY,EAAE,QAAQ;AAClD,4BAA4B,aAAa,EAAE,CAAC;AAC5C,4BAA4B,eAAe,EAAE,MAAM;AACnD,4BAA4B,cAAc,EAAE,SAAS;AACrD,yBAAyB,CAAC;AAC1B,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AACxC,oBAAoB,OAAO,EAAE,CAAC;AAC9B,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,MAAM,EAAE,IAAI,CAAC,eAAe;AACpD,qBAAqB;AACrB,iBAAiB,CAAC;AAClB;AACA,YAAY,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC;AAChE;AACA,QAAQ,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzC,QAAQ,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC;AAC9C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,QAAQ,WAAW,CAAC,GAAG,EAAE;AACzB,QAAQ,cAAc,CAAC,oBAAoB,CAAC;AAC5C,YAAY,OAAO,EAAE,aAAa;AAClC,SAAS,EAAE;AACX,YAAY,OAAO,EAAE,UAAU;AAC/B,YAAY,QAAQ;AACpB,YAAY,MAAM,EAAE;AACpB,gBAAgB,CAAC,EAAE,CAAC;AACpB,gBAAgB,CAAC,EAAE,CAAC;AACpB,gBAAgB,CAAC,EAAE,SAAS;AAC5B,aAAa;AACb,SAAS,EAAE;AACX,YAAY,KAAK;AACjB,YAAY,MAAM;AAClB,YAAY,kBAAkB,EAAE,CAAC;AACjC,SAAS,CAAC;AACV,QAAQ,IAAI,qBAAqB,EAAE;AACnC,YAAY,qBAAqB,CAAC,uBAAuB,GAAG,aAAa;AACzE,YAAY,qBAAqB,CAAC,2BAA2B,GAAG,oBAAoB;AACpF,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,qBAAqB,CAAC,6BAA6B,GAAG,SAAS;AAC/E;AACA,iBAAiB;AACjB,gBAAgB,qBAAqB,CAAC,qBAAqB,GAAG,SAAS;AACvE;AACA;AACA,aAAa;AACb,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACrE;AACA,QAAQ,cAAc,CAAC,aAAa,IAAI;AACxC,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AAChE,YAAY,cAAc,GAAG,IAAI;AACjC;AACA;AACA,IAAI,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAE;AAClF,QAAQ,MAAM,oBAAoB,GAAG,cAAc,KAAK,SAAS;AACjE,QAAQ,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;AACvJ,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AAClE;AACA,QAAQ,cAAc,CAAC,cAAc,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAC7E,QAAQ,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC;AAChF,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AACvD,YAAY,MAAM,EAAE,eAAe;AACnC,YAAY,OAAO,EAAE;AACrB,gBAAgB;AAChB,oBAAoB,OAAO,EAAE,CAAC;AAC9B,oBAAoB,QAAQ,EAAE,cAAc;AAC5C,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzC,QAAQ,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC;AAC9C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,QAAQ,WAAW,CAAC,GAAG,EAAE;AACzB,QAAQ,cAAc,CAAC,aAAa,IAAI;AACxC,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AAChE,YAAY,cAAc,GAAG,IAAI;AACjC;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,WAAW,EAAE,UAAU,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,MAAM,GAAG,YAAY,iDAAiD,WAAW,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE;AACrR,QAAQ,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC;AAChE,QAAQ,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;AAClD,QAAQ,MAAM,WAAW,GAAG;AAC5B,YAAY,KAAK,EAAE,WAAW,CAAC,KAAK;AACpC,YAAY,MAAM,EAAE,WAAW,CAAC,MAAM;AACtC,YAAY,kBAAkB,EAAE,UAAU;AAC1C,SAAS;AACT,QAAQ,MAAM,oBAAoB,GAAG,8BAA8B,CAAC,MAAM,CAAC,GAAG,EAAE,uDAAuD,CAAC;AACxI,QAAQ,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACjF,QAAQ,MAAM,aAAa,GAAG,UAAU,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;AAChI,QAAQ,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,8CAA8C,CAAC,8CAA8C,CAAC;AAC3I,QAAQ,gBAAgB,IAAI,UAAU,IAAI,CAAC,kBAAkB,GAAG,CAAC,8CAA8C,oBAAoB,GAAG,CAAC;AACvI,QAAQ,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,EAAE;AAC1C;AACA,YAAY,gBAAgB,IAAI,oBAAoB,GAAG,CAAC;AACxD;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD,YAAY,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACxQ,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,SAAS,EAAE,IAAI,GAAG,IAAI,8CAA8C,IAAI;AACpF,YAAY,MAAM;AAClB,YAAY,KAAK,EAAE,MAAM,GAAG,gBAAgB;AAC5C,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,SAAS,CAAC;AACV,QAAQ,IAAI,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;AAC5D,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC;AACzJ,YAAY,IAAI,UAAU,IAAI,eAAe,EAAE;AAC/C,gBAAgB,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC;AAChG;AACA;AACA,QAAQ,OAAO,UAAU;AACzB;AACA,IAAI,iBAAiB,CAAC,YAAY,EAAE,UAAU,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,MAAM,GAAG,YAAY,iDAAiD,WAAW,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE;AAC5Q,QAAQ,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC;AAChE,QAAQ,MAAM,KAAK,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK;AACvH,QAAQ,MAAM,MAAM,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;AAC1H,QAAQ,MAAM,oBAAoB,GAAG,8BAA8B,CAAC,MAAM,CAAC,GAAG,EAAE,uDAAuD,CAAC;AACxI,QAAQ,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACjF,QAAQ,MAAM,aAAa,GAAG,UAAU,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AACxG,QAAQ,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,8CAA8C,CAAC,8CAA8C,CAAC;AAC3I,QAAQ,gBAAgB,IAAI,UAAU,IAAI,CAAC,kBAAkB,GAAG,CAAC,8CAA8C,oBAAoB,GAAG,CAAC;AACvI,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC;AACA,YAAY,gBAAgB,IAAI,oBAAoB,GAAG,CAAC;AACxD;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD,YAAY,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC/L,YAAY,IAAI,EAAE;AAClB,gBAAgB,KAAK;AACrB,gBAAgB,MAAM;AACtB,gBAAgB,kBAAkB,EAAE,CAAC;AACrC,aAAa;AACb,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,MAAM;AAClB,YAAY,KAAK,EAAE,MAAM,GAAG,gBAAgB;AAC5C,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB,SAAS,CAAC;AACV,QAAQ,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;AAClE,YAAY,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC;AACrH,YAAY,IAAI,UAAU,IAAI,eAAe,EAAE;AAC/C,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC;AAC3F;AACA;AACA,QAAQ,OAAO,UAAU;AACzB;AACA,IAAI,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE;AAC3E,QAAQ,MAAM,oBAAoB,GAAG,cAAc,KAAK,SAAS;AACjE,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AAClE;AACA,QAAQ,cAAc,CAAC,cAAc,GAAG,CAAC,sBAAsB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;AACxF,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AACpC,YAAY,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC;AAC7F;AACA,QAAQ,cAAc,CAAC,aAAa,IAAI;AACxC,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AAChE,YAAY,cAAc,GAAG,IAAI;AACjC;AACA;AACA,IAAI,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,cAAc,EAAE;AACzG,QAAQ,MAAM,oBAAoB,GAAG,cAAc,KAAK,SAAS;AACjE,QAAQ,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACrE,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1C,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AAClE;AACA,QAAQ,cAAc,CAAC,cAAc,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;AAC1G,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE;AACpE,YAAY,UAAU,GAAG,eAAe,CAAC,kBAAkB;AAC3D,YAAY,eAAe,CAAC,yBAAyB,GAAG,eAAe,CAAC,yBAAyB,IAAI,EAAE;AACvG,YAAY,eAAe,CAAC,mBAAmB,GAAG,eAAe,CAAC,mBAAmB,IAAI,EAAE;AAC3F;AACA,aAAa;AACb,YAAY,UAAU,GAAG,eAAe;AACxC,YAAY,eAAe,GAAG,SAAS;AACvC;AACA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY;AACZ;AACA,QAAQ,MAAM,qBAAqB,GAAG,eAAe;AACrD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,EAAE,CAAC,EAAE;AAChD,YAAY,MAAM,oBAAoB,GAAG,qBAAqB,EAAE,yBAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI;AACjH,gBAAgB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9H,gBAAgB,gBAAgB,EAAE;AAClC,oBAAoB;AACpB,wBAAwB,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC;AACpD,4BAA4B,MAAM;AAClC,4BAA4B,SAAS,EAAE,IAAI,GAAG,IAAI,kDAAkD,IAAI;AACxG,4BAA4B,YAAY,EAAE,CAAC;AAC3C,4BAA4B,aAAa,EAAE,CAAC;AAC5C,4BAA4B,eAAe,EAAE,CAAC;AAC9C,4BAA4B,cAAc,EAAE,SAAS;AACrD,yBAAyB,CAAC;AAC1B,wBAAwB,MAAM,EAAE,MAAM;AACtC,wBAAwB,OAAO,EAAE,OAAO;AACxC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,qBAAqB,EAAE;AACvC,gBAAgB,qBAAqB,CAAC,yBAAyB,CAAC,SAAS,CAAC,GAAG,qBAAqB,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,EAAE;AAC7I,gBAAgB,qBAAqB,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB;AACxG;AACA,YAAY,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC;AACpF,YAAY,MAAM,SAAS,GAAG,qBAAqB,EAAE,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5F,gBAAgB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AAC7C,oBAAoB,MAAM,EAAE,eAAe;AAC3C,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,CAAC;AACtC,4BAA4B,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;AAC5D,gCAAgC,MAAM;AACtC,gCAAgC,SAAS,EAAE,IAAI,GAAG,IAAI,kDAAkD,IAAI;AAC5G,gCAAgC,YAAY,EAAE,CAAC,GAAG,CAAC;AACnD,gCAAgC,aAAa,EAAE,CAAC;AAChD,gCAAgC,eAAe,EAAE,CAAC;AAClD,gCAAgC,cAAc,EAAE,SAAS;AACzD,6BAA6B,CAAC;AAC9B,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,CAAC;AACtC,4BAA4B,QAAQ,EAAE,IAAI,CAAC,cAAc;AACzD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB,CAAC;AAClB,YAAY,IAAI,qBAAqB,EAAE;AACvC,gBAAgB,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE;AACjI,gBAAgB,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;AACvF;AACA,YAAY,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC7C,YAAY,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC;AAClD,YAAY,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxC,YAAY,WAAW,CAAC,GAAG,EAAE;AAC7B;AACA,QAAQ,cAAc,CAAC,aAAa,IAAI;AACxC,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AAChE,YAAY,cAAc,GAAG,IAAI;AACjC;AACA;AACA,IAAI,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE;AAC5G,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACvC,YAAY,OAAO,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9E;AACA,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,KAAK,GAAG,OAAO,CAAC,KAAK;AACjC;AACA,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AAClC,YAAY,MAAM,GAAG,OAAO,CAAC,MAAM;AACnC;AACA,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,KAAK,GAAG,OAAO,CAAC,KAAK;AACjC;AACA,QAAQ,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AAC1D,QAAQ,MAAM,gBAAgB,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,SAAS,CAAC,4BAA4B,MAAM,CAAC;AACtG,QAAQ,iBAAiB,CAAC,MAAM,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC;AACnI,QAAQ,iBAAiB,CAAC,aAAa;AACvC,YAAY,OAAO,CAAC,OAAO,KAAK,CAAC,6CAA6C,OAAO,CAAC,MAAM,KAAK,CAAC;AAClG,kBAAkB,CAAC,qDAAqD,CAAC,8CAA8C,EAAE;AACzH,kBAAkB,OAAO,CAAC,OAAO,KAAK,EAAE;AACxC,sBAAsB,CAAC,qDAAqD,EAAE;AAC9E,sBAAsB,CAAC,CAAC;AACxB,QAAQ,iBAAiB,CAAC,uBAAuB,GAAG,gBAAgB,GAAG,CAAC,qDAAqD,CAAC;AAC9H,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe;AAClD,QAAQ,MAAM,UAAU,GAAG,KAAK,IAAI,CAAC;AACrC,QAAQ,IAAI,WAAW;AACvB,QAAQ,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE;AAC3C,YAAY,WAAW,GAAG,OAAO,CAAC,YAAY;AAC9C;AACA,aAAa;AACb,YAAY,WAAW,GAAG,UAAU,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AACpG;AACA,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,aAAa,EAAE,iBAAiB,CAAC,uBAAuB,EAAE,OAAO,CAAC,KAAK,CAAC;AAC3S,YAAY,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC7C,YAAY,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,UAAU;AACjE,YAAY,MAAM,MAAM,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC3F,YAAY,MAAM,MAAM,GAAG,mBAAmB,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,YAAY,iDAAiD,KAAK;AACvK,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,wDAAwD,MAAM;AAC5H,YAAY,iBAAiB,CAAC,UAAU,CAAC;AACzC,gBAAgB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,GAAG,QAAQ,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC9P,gBAAgB,MAAM;AACtB,gBAAgB,SAAS;AACzB,gBAAgB,aAAa,EAAE,WAAW;AAC1C,gBAAgB,cAAc,EAAE,CAAC;AACjC,gBAAgB,YAAY,EAAE,CAAC;AAC/B,gBAAgB,eAAe,EAAE,CAAC;AAClC,gBAAgB,MAAM;AACtB,aAAa,EAAE,gBAAgB,CAAC;AAChC;AACA,aAAa;AACb,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,aAAa,EAAE,iBAAiB,CAAC,uBAAuB,EAAE,OAAO,CAAC,KAAK,CAAC;AACzU,YAAY,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC7C,YAAY,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,UAAU;AACjE,YAAY,MAAM,MAAM,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC3F,YAAY,MAAM,MAAM,GAAG,mBAAmB,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,YAAY,iDAAiD,KAAK;AACvK,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC;AACtC,kBAAkB,UAAU;AAC5B,kBAAkB,OAAO,CAAC;AAC1B,sBAAsB,IAAI;AAC1B,sBAAsB,IAAI;AAC1B,YAAY,iBAAiB,CAAC,UAAU,CAAC;AACzC,gBAAgB,KAAK,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,GAAG,QAAQ,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC9T,gBAAgB,MAAM;AACtB,gBAAgB,SAAS;AACzB,gBAAgB,aAAa,EAAE,WAAW;AAC1C,gBAAgB,cAAc,EAAE,CAAC;AACjC,gBAAgB,YAAY,EAAE,CAAC;AAC/B,gBAAgB,eAAe;AAC/B,gBAAgB,MAAM;AACtB,aAAa,EAAE,gBAAgB,CAAC;AAChC;AACA,QAAQ,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK;AACjD,QAAQ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,MAAM;AACpD,QAAQ,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK;AACjD,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,YAAY,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;AAC5D;AACA,QAAQ,OAAO,iBAAiB;AAChC;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE;AAC3E,QAAQ,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AAC1D,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,iBAAiB,EAAE,kBAAkB,EAAE;AACnD;AACA,QAAQ,IAAI,CAAC,iBAAiB,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;AACvD,YAAY;AACZ;AACA,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AACnC,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;AACrC,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,EAAE,sDAAsD,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACnS,QAAQ,iBAAiB,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC;AAC/D;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE;AAC7I,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC/C,YAAY,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC;AACpI;AACA;AACA;AACA,IAAI,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,oBAAoB,EAAE;AAC/L,QAAQ,MAAM,UAAU,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,OAAO;AACjI,QAAQ,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,6BAA6B,CAAC,MAAM,CAAC;AAC1F,QAAQ,MAAM,eAAe,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,OAAO;AACnH,QAAQ,MAAM,eAAe,GAAG;AAChC,YAAY,OAAO,EAAE,UAAU;AAC/B,YAAY,MAAM,EAAE;AACpB,gBAAgB,CAAC,EAAE,OAAO;AAC1B,gBAAgB,CAAC,EAAE,OAAO;AAC1B,gBAAgB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACzC,aAAa;AACb,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,kBAAkB,EAAE,gBAAgB;AAChD,SAAS;AACT,QAAQ,MAAM,aAAa,GAAG;AAC9B,YAAY,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,KAAK;AACrF,YAAY,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM;AACzF,YAAY,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE;AAClD,YAAY,WAAW,GAAG,WAAW;AACrC,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,MAAM;AACnG,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,WAAW;AAC9E,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AAC5E,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,EAAEA,WAA2B,CAAC,QAAQ,GAAGA,WAA2B,CAAC,OAAO,EAAE,IAAI,EAAE,4BAA4B,IAAI,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACvP,gBAAgB,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE;AAC3D,gBAAgB,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;AAC5D,gBAAgB,MAAM,CAAC,KAAK,EAAE;AAC9B,gBAAgB,cAAc,CAAC,mBAAmB,CAAC;AACnD,oBAAoB,MAAM,EAAE,MAAM;AAClC,oBAAoB,MAAM,EAAE,CAAC;AAC7B,oBAAoB,WAAW;AAC/B,oBAAoB,YAAY,EAAE,MAAM;AACxC,iBAAiB,EAAE,eAAe,EAAE,aAAa,CAAC;AAClD,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AACpE,gBAAgB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC;AACzD;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,EAAE;AAC9E,oBAAoB,MAAM,EAAE,CAAC;AAC7B,oBAAoB,WAAW;AAC/B,oBAAoB,YAAY,EAAE,MAAM;AACxC,iBAAiB,EAAE,aAAa,CAAC;AACjC;AACA,YAAY,IAAI,OAAO,IAAI,gBAAgB,EAAE;AAC7C,gBAAgB,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;AACpE,oBAAoB,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,KAAK,OAAO,CAAC,MAAM;AAC9H,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,GAAG,KAAK,EAAE,WAAW,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC;AAC3Q;AACA,qBAAqB;AACrB;AACA;AACA,oBAAoB,MAAM,gHAAgH;AAC1I;AACA;AACA;AACA,aAAa;AACb,YAAY,WAAW,GAAG,WAAW;AACrC,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,eAAe,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAC3D;AACA,gBAAgB,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE;AAC9J;AACA;AACA,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC;AAC1H,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,oBAAoB,CAAC;AAClM;AACA,qBAAqB;AACrB;AACA,oBAAoB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AAChF;AACA,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,8CAA8C,CAAC,oDAAoD,SAAS,EAAE,6BAA6B,CAAC;AACnS,oBAAoB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC1E,oBAAoB,aAAa,CAAC,kBAAkB,GAAG,CAAC;AACxD,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC;AAClI,oBAAoB,aAAa,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC;AAClE;AACA,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,oBAAoB,CAAC;AAClM;AACA,oBAAoB,cAAc,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC;AAChH,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AACxE;AACA;AACA,iBAAiB;AACjB;AACA,gBAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC;AACtH;AACA;AACA;AACA,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,gBAAgB,GAAG,KAAK,EAAE;AAC3H,QAAQ,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,6BAA6B,CAAC,MAAM,CAAC;AAC1F,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,MAAM;AAC/F,QAAQ,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,GAAG;AACrE,QAAQ,MAAM,IAAI,GAAG,kBAAkB,GAAG,MAAM;AAChD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,yBAAyB,IAAI,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACjO,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;AACpE,QAAQ,cAAc,CAAC,mBAAmB,CAAC;AAC3C,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,MAAM,EAAE;AACpB,gBAAgB,CAAC;AACjB,gBAAgB,CAAC;AACjB,gBAAgB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACzC,aAAa;AACb,SAAS,EAAE;AACX,YAAY,MAAM,EAAE,SAAS;AAC7B,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,WAAW,EAAE,kBAAkB;AAC3C,SAAS,EAAE;AACX,YAAY,KAAK;AACjB,YAAY,MAAM;AAClB,YAAY,kBAAkB,EAAE,CAAC;AACjC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5D,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC;AAC/M;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;AAC5D,YAAY,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB;AAC5D,YAAY,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAkB;AAChE;AACA,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AACpF;AACA,aAAa;AACb,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/D;AACA;AACA,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACvE,YAAY,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACzF,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE;AAC5E,oBAAoB,eAAe,CAAC,OAAO,EAAE;AAC7C;AACA,qBAAqB;AACrB,oBAAoB,eAAe,CAAC,OAAO,EAAE;AAC7C;AACA;AACA,YAAY,iBAAiB,EAAE,OAAO,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC;AAChD;AACA;;AC7gCA;AACO,MAAM,gBAAgB,SAAS,UAAU,CAAC;AACjD,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,EAAE;AACxC,QAAQ,KAAK,EAAE;AACf;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI,CAAC,OAAO,GAAG,QAAQ;AACnC;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO;AAC3B;AACA;;ACZA;AACO,MAAM,mBAAmB,CAAC;AACjC,IAAI,OAAO,YAAY,CAAC,MAAM,EAAE;AAChC,QAAQ,OAAO,MAAM,CAAC,kBAAkB,KAAK,SAAS;AACtD;AACA,IAAI,OAAO,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE;AAC9C,QAAQ,IAAI,MAAM,GAAG,MAAM;AAC3B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AACrC,YAAY,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AAClC,gBAAgB,IAAI,MAAM,EAAE;AAC5B,oBAAoB,MAAM,IAAI,GAAG;AACjC;AACA,gBAAgB,MAAM,IAAIA,WAA2B,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7D;AACA;AACA,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AAChC,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE;AACzC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B;AACA,IAAI,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,KAAK,EAAE;AACxE,QAAQ,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,KAAK,SAAS,GAAG,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7H,QAAQ,MAAM,wBAAwB,GAAG;AACzC,YAAY,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,mBAAmB,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,IAAI,QAAQ,CAAC,GAAG,OAAO,GAAG,aAAa;AAC/J,YAAY,gBAAgB;AAC5B,YAAY,IAAI,EAAE,aAAa;AAC/B,YAAY,KAAK,EAAE,KAAK;AACxB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC;AAClE;AACA,IAAI,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3C,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,KAAK,SAAS;AAC1D,QAAQ,MAAM,UAAU,GAAG,IAAI,gBAAgB,EAAE;AACjD,QAAQ,MAAM,OAAO,GAAG,qBAAqB,GAAG,UAAU,CAAC,QAAQ;AACnE,QAAQ,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC;AACvH,QAAQ,UAAU,CAAC,UAAU,GAAG,CAAC;AACjC,QAAQ,UAAU,CAAC,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC,UAAU,GAAG,UAAU;AACzE,QAAQ,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AACnD,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC;AACtD;AACA,QAAQ,OAAO,UAAU;AACzB;AACA,IAAI,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE;AACtE,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC;AACpG;AACA,IAAI,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE;AAClF,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB;AACpD,QAAQ,UAAU,GAAG,UAAU,IAAI,GAAG,CAAC,UAAU;AACjD,QAAQ,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,aAAa,CAAC;AAC9E;AACA,QAAQ,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,GAAG,aAAa;AACvD,QAAQ,IAAI,QAAQ,GAAG,UAAU,GAAG,UAAU;AAC9C;AACA,QAAQ,MAAM,aAAa,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC;AACnD,QAAQ,IAAI,aAAa,KAAK,UAAU,EAAE;AAC1C,YAAY,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnF,YAAY,GAAG,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC;AAC/C,YAAY,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,YAAY,aAAa,GAAG,CAAC;AAC7B,YAAY,UAAU,GAAG,CAAC;AAC1B,YAAY,QAAQ,GAAG,aAAa;AACpC,YAAY,UAAU,GAAG,aAAa;AACtC;AACA;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;AACzC,QAAQ,IAAI,MAAM,GAAG,CAAC;AACtB,QAAQ,OAAO,QAAQ,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,QAAQ,EAAE;AAC5D,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,QAAQ,CAAC;AACrH,YAAY,MAAM,IAAI,QAAQ;AAC9B;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;AAC5H;AACA,IAAI,mCAAmC,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE;AAC5E,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,SAAS,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC;AACpD;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC;AACpD,QAAQ,OAAO,UAAU,EAAE,EAAE;AAC7B,YAAY,SAAS,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACtE;AACA,QAAQ,OAAO,SAAS;AACxB;AACA,IAAI,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,GAAG,SAAS,CAAC,yBAAyB,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,gBAAgB,GAAG,KAAK,EAAE;AAC/M,QAAQ,MAAM,WAAW,GAAG,IAAI,KAAK,SAAS,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,sBAAsB,GAAG,CAAC,GAAG,CAAC;AACxH,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC9C,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,SAAS,CAAC,QAAQ,CAAC,CAAC,qCAAqC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM;AAC9F,gBAAgB,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;AAC9E,gBAAgB,IAAI,IAAI,GAAG,MAAM;AACjC,gBAAgB,IAAI,gBAAgB,EAAE;AACtC,oBAAoB,IAAI,IAAI,KAAK,IAAI,EAAE;AACvC,wBAAwB,IAAI,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC;AAC5F;AACA,yBAAyB;AACzB,wBAAwB,IAAI,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC;AACxG;AACA;AACA,qBAAqB;AACrB,oBAAoB,IAAI,IAAI,KAAK,IAAI,EAAE;AACvC,wBAAwB,QAAQ,WAAW;AAC3C,4BAA4B,KAAK,CAAC;AAClC,gCAAgC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AAC3D,gCAAgC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;AACzE,gCAAgC;AAChC,4BAA4B,KAAK,CAAC;AAClC;AACA,gCAAgC,IAAI,GAAG,IAAI,CAAC,mCAAmC,CAAC,IAAI,GAAG,CAAC,EAAE,eAAe,CAAC;AAC1G,gCAAgC;AAChC,4BAA4B,KAAK,CAAC;AAClC,gCAAgC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;AACjE,gCAAgC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC;AAC3E,gCAAgC;AAChC;AACA;AACA,yBAAyB;AACzB,wBAAwB,QAAQ,WAAW;AAC3C,4BAA4B,KAAK,CAAC;AAClC,gCAAgC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAClE,gCAAgC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;AACzE,gCAAgC;AAChC,4BAA4B,KAAK,CAAC;AAClC;AACA,gCAAgC,IAAI,GAAG,IAAI,CAAC,mCAAmC,CAAC,IAAI,GAAG,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC;AAClH,gCAAgC;AAChC,4BAA4B,KAAK,CAAC;AAClC,gCAAgC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACpE,gCAAgC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC;AAC3E,gCAAgC;AAChC;AACA;AACA;AACA,gBAAgB,IAAI,WAAW,KAAK,kBAAkB,EAAE;AACxD;AACA,oBAAoB,IAAI,WAAW,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChE;AACA,wBAAwB,WAAW,IAAI,CAAC;AACxC,wBAAwB,kBAAkB,IAAI,CAAC;AAC/C;AACA,oBAAoB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7D,oBAAoB,IAAI,MAAM,GAAG,WAAW,EAAE,OAAO,GAAG,CAAC;AACzD,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;AACrD,wBAAwB,OAAO,GAAG,CAAC,GAAG,kBAAkB;AACxD,wBAAwB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;AAC9D,4BAA4B,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC9D;AACA;AACA,oBAAoB,IAAI,WAAW,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAChE,wBAAwB,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AAC5E;AACA,yBAAyB;AACzB,wBAAwB,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;AACtE;AACA;AACA,gBAAgB,SAAS,CAAC,KAAK,EAAE;AACjC,gBAAgB,IAAI,aAAa,EAAE;AACnC,oBAAoB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AACjD;AACA,gBAAgB,OAAO,CAAC,IAAI,CAAC;AAC7B,aAAa,EAAE,CAAC,MAAM,KAAK;AAC3B,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACnF;AACA,oBAAoB,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;AAC7C;AACA,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,MAAM,CAAC;AAClC;AACA,aAAa,CAAC;AACd,SAAS,CAAC;AACV;AACA,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AACtD,YAAY,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,MAAM,CAAC,UAAU,EAAE;AAC3B,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE;AACrC,YAAY,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACxE,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACtE,YAAY,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AACrD;AACA,QAAQ,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC;AAC/C;AACA;;ACnMA,MAAM,YAAY,GAAG;AACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AACD;AACA,MAAM,wBAAwB,GAAG;AACjC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AACD,MAAM,iBAAiB,GAAG;AAC1B,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,IAAI,CAAC,IAAI,CAAC;AACV,CAAC;AACD;AACO,MAAM,kBAAkB,CAAC;AAChC,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B;AACA,IAAI,OAAO,kBAAkB,CAAC,OAAO,EAAE;AACvC;AACA,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,gCAAgC,GAAG,OAAO,CAAC,gCAAgC,GAAG,CAAC;AAClH,QAAQ,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;AACvD,YAAY,wBAAwB,CAAC,CAAC,OAAO,CAAC,mBAAmB,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;AAC1F,YAAY,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC;AACnD,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/C,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/C,aAAa,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AAChD,aAAa,UAAU,IAAI,EAAE,CAAC;AAC9B,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE;AAC5D,QAAQ,IAAI,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW;AACxE,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;AAC7C,QAAQ,QAAQ,OAAO,CAAC,YAAY;AACpC,YAAY,KAAK,SAAS,CAAC,gCAAgC;AAC3D,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,WAAW,GAAG,WAAW,GAAG,CAAC;AACjD;AACA,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,+BAA+B;AAC1D,YAAY,KAAK,SAAS,CAAC,8BAA8B;AACzD,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,YAAY,GAAG,SAAS;AAC5C,oBAAoB,WAAW,GAAG,WAAW,GAAG,CAAC;AACjD;AACA,qBAAqB;AACrB,oBAAoB,YAAY,GAAG,QAAQ;AAC3C;AACA,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,iCAAiC;AAC5D,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,YAAY,GAAG,SAAS;AAC5C,oBAAoB,WAAW,GAAG,WAAW,GAAG,CAAC;AACjD;AACA,qBAAqB;AACrB,oBAAoB,YAAY,GAAG,QAAQ;AAC3C;AACA,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,kCAAkC;AAC7D,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,WAAW,GAAG,WAAW,GAAG,CAAC;AACjD;AACA,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,iCAAiC;AAC5D,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,WAAW,GAAG,WAAW,GAAG,CAAC;AACjD;AACA,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,gCAAgC;AAC3D,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,YAAY,GAAG,SAAS;AAC5C,oBAAoB,WAAW,GAAG,WAAW,GAAG,CAAC;AACjD;AACA,qBAAqB;AACrB,oBAAoB,YAAY,GAAG,QAAQ;AAC3C;AACA,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,sBAAsB;AACjD,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,WAAW,GAAG,WAAW,GAAG,CAAC;AAC7C,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,uBAAuB;AAClD,YAAY,KAAK,SAAS,CAAC,4BAA4B;AACvD,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,WAAW,GAAG,WAAW,GAAG,CAAC;AAC7C,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,iCAAiC;AAC5D,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,WAAW,GAAG,WAAW,GAAG,CAAC;AACjD;AACA,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,gCAAgC;AAC3D,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,oBAAoB,YAAY,GAAG,SAAS;AAC5C,oBAAoB,WAAW,GAAG,WAAW,GAAG,CAAC;AACjD;AACA,qBAAqB;AACrB,oBAAoB,YAAY,GAAG,QAAQ;AAC3C;AACA,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,qBAAqB;AAChD,YAAY,KAAK,SAAS,CAAC,6BAA6B;AACxD,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,WAAW,GAAG,WAAW,GAAG,CAAC;AAC7C,gBAAgB;AAChB,YAAY,KAAK,SAAS,CAAC,sBAAsB;AACjD,gBAAgB,SAAS,GAAG,QAAQ;AACpC,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,WAAW,GAAG,WAAW,GAAG,CAAC;AAC7C,gBAAgB;AAChB,YAAY;AACZ,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,SAAS,GAAG,SAAS;AACrC,gBAAgB,YAAY,GAAG,SAAS;AACxC,gBAAgB,WAAW,GAAG,WAAW,GAAG,CAAC;AAC7C,gBAAgB;AAChB;AACA,QAAQ,IAAI,UAAU,GAAG,CAAC,KAAK,WAAW,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,YAAY,KAAK,SAAS,2CAA2C;AAC/I,YAAY,OAAO;AACnB,gBAAgB,SAAS,EAAE,QAAQ;AACnC,gBAAgB,SAAS,EAAE,QAAQ;AACnC,gBAAgB,YAAY,EAAE,QAAQ;AACtC,gBAAgB,iBAAiB,EAAE,IAAI;AACvC,aAAa;AACb;AACA,QAAQ,OAAO;AACf,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,SAAS;AACT;AACA,IAAI,OAAO,gBAAgB,CAAC,IAAI,EAAE;AAClC,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,SAAS,CAAC,wBAAwB;AACnD,gBAAgB,OAAO,QAAQ;AAC/B,YAAY,KAAK,SAAS,CAAC,yBAAyB;AACpD,gBAAgB,OAAO,eAAe;AACtC,YAAY,KAAK,SAAS,CAAC,0BAA0B;AACrD,gBAAgB,OAAO,eAAe;AACtC;AACA,QAAQ,OAAO,QAAQ;AACvB;AACA,IAAI,OAAO,6BAA6B,CAAC,OAAO,EAAE;AAClD,QAAQ,OAAO;AACf,YAAY,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC;AACrE,YAAY,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC;AACrE,YAAY,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC;AACrE,SAAS;AACT;AACA,IAAI,OAAO,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE;AACjD,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,gCAAgC,GAAG,OAAO,CAAC,gCAAgC,GAAG,CAAC;AACxI,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,UAAU,CAAC;AACtF,QAAQ,OAAO;AACf,YAAY,KAAK;AACjB,YAAY,GAAG,gBAAgB;AAC/B,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;AAC1D,YAAY,OAAO,EAAE,OAAO,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAAS;AACjI,YAAY,aAAa,EAAE,gBAAgB,CAAC,iBAAiB,GAAG,UAAU,GAAG,CAAC;AAC9E,SAAS;AACT;AACA,IAAI,OAAO,kBAAkB,CAAC,eAAe,EAAE;AAC/C,QAAQ,QAAQ,eAAe;AAC/B,YAAY,KAAK,SAAS,CAAC,MAAM;AACjC,gBAAgB,OAAO,QAAQ;AAC/B,YAAY,KAAK,SAAS,CAAC,KAAK;AAChC,gBAAgB,OAAO,OAAO;AAC9B,YAAY,KAAK,SAAS,CAAC,OAAO;AAClC,gBAAgB,OAAO,SAAS;AAChC,YAAY,KAAK,SAAS,CAAC,MAAM;AACjC,gBAAgB,OAAO,eAAe;AACtC,YAAY,KAAK,SAAS,CAAC,IAAI;AAC/B,gBAAgB,OAAO,MAAM;AAC7B,YAAY,KAAK,SAAS,CAAC,MAAM;AACjC,gBAAgB,OAAO,YAAY;AACnC,YAAY,KAAK,SAAS,CAAC,KAAK;AAChC,gBAAgB,OAAO,OAAO;AAC9B,YAAY,KAAK,SAAS,CAAC,QAAQ;AACnC,gBAAgB,OAAO,WAAW;AAClC,YAAY;AACZ,gBAAgB,OAAO,MAAM;AAC7B;AACA;AACA,IAAI,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE;AAC9D,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACvG;AACA,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,IAAI,GAAG,CAAC;AACpB;AACA,aAAa,IAAI,IAAI,KAAK,CAAC,EAAE;AAC7B,YAAY,IAAI,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACjE;AACA,QAAQ,IAAI,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACvE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7G,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU;AACjD;AACA;AACA,QAAQ,OAAO,UAAU;AACzB;AACA;;ACtQA,MAAM,qCAAqC,GAAG;AAC9C,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI;AACrC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI;AACnC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI;AACpC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI;AAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI;AAChC,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI;AAChC,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI;AAChC,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI;AAChC,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI;AAChC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI;AAClC,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI;AAC1C,IAAI,CAAC,YAAY,CAAC,mBAAmB,GAAG,IAAI;AAC5C,IAAI,CAAC,YAAY,CAAC,mBAAmB,GAAG,IAAI;AAC5C,IAAI,CAAC,YAAY,CAAC,wBAAwB,GAAG,IAAI;AACjD,IAAI,CAAC,YAAY,CAAC,wBAAwB,GAAG,IAAI;AACjD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,IAAI,QAAQ,IAAI;AAChB,QAAQ,KAAK,YAAY,CAAC,IAAI;AAC9B,QAAQ,KAAK,YAAY,CAAC,KAAK;AAC/B,QAAQ,KAAK,YAAY,CAAC,GAAG;AAC7B,QAAQ,KAAK,YAAY,CAAC,KAAK;AAC/B,YAAY,OAAO,IAAI;AACvB,QAAQ,KAAK,YAAY,CAAC,aAAa;AACvC,QAAQ,KAAK,YAAY,CAAC,cAAc;AACxC,QAAQ,KAAK,YAAY,CAAC,YAAY;AACtC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE;AAClE,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB;AACnD,IAAI,IAAI,CAAC,eAAe,EAAE,sBAAsB,EAAE;AAClD,QAAQ;AACR;AACA,IAAI,IAAI,uBAAuB,GAAG,IAAI;AACtC,IAAI,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;AACtC,QAAQ,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAAC;AACvD,QAAQ,IAAI,CAAC,mBAAmB,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,EAAE;AAClF,YAAY;AACZ;AACA,QAAQ,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,UAAU,GAAG,YAAY,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI;AACtH,QAAQ,MAAM,gBAAgB,GAAG,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC7E,QAAQ,IAAI,CAAC,uBAAuB,KAAK,YAAY,CAAC,KAAK,IAAI,gBAAgB,KAAK,SAAS;AAC7F,aAAa,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,uBAAuB,CAAC,EAAE;AAC9F,YAAY,IAAI,CAAC,uBAAuB,EAAE;AAC1C,gBAAgB,uBAAuB,GAAG,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC;AAC1G;AACA,YAAY,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,uBAAuB;AAClF,YAAY,IAAI,uBAAuB,KAAK,YAAY,CAAC,KAAK,EAAE;AAChE,gBAAgB,uBAAuB,CAAC,oCAAoC,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC;AACpH,gBAAgB,IAAI,YAAY,CAAC,uBAAuB,CAAC,EAAE;AAC3D,oBAAoB,uBAAuB,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5F;AACA;AACA;AACA;AACA,IAAI,IAAI,uBAAuB,EAAE;AACjC;AACA;AACA,QAAQ,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB;AACxE,QAAQ,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,SAAS;AACtD,QAAQ,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,sDAAsD,EAAE,uBAAuB,CAAC;AAC9I,QAAQ,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,qBAAqB;AAClE;AACA;;AChFA;AACA;AACA;AAOA,IAAI,aAAa;AACjB,CAAC,UAAU,aAAa,EAAE;AAC1B,IAAI,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB;AAC3E,IAAI,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB;AAC7E;AACA,IAAI,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;AAC/D,IAAI,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB;AACnF,IAAI,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB;AAC/E,IAAI,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB;AAC3E,IAAI,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB;AAC3E,IAAI,aAAa,CAAC,aAAa,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB;AACjF,IAAI,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa;AACnE,IAAI,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa;AACnE,IAAI,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,cAAc;AACtE,IAAI,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,aAAa;AACpE,IAAI,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,WAAW;AAChE,CAAC,EAAE,aAAa,KAAK,aAAa,GAAG,EAAE,CAAC,CAAC;AACzC,MAAM,uBAAuB,GAAG;AAChC,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,MAAM,EAAE,EAAE;AACd,CAAC;AACD,MAAM,gBAAgB,GAAG;AACzB,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,CAAC;AACD;AACO,MAAM,yBAAyB,CAAC;AACvC,IAAI,WAAW,CAAC,MAAM,EAAE,iBAAiB,EAAE;AAC3C,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC;AAC9B,QAAQ,IAAI,CAAC,sBAAsB,GAAG,CAAC;AACvC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;AACnD,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC9D,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE;AAC/B,QAAQ,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,0BAA0B,IAAI,IAAI;AACvF,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;AACrC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACtC,QAAQ,IAAI,CAAC,sBAAsB,EAAE;AACrC,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5B;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,YAAY,gDAAgD;AAC/F,QAAQ,IAAI,CAAC,cAAc,CAAC,YAAY,gDAAgD;AACxF,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACxC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACzE,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AAC9B,QAAQ,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,yDAAyD;AAClH,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACrC,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACzC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAChC;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB;AACrF;AACA,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE;AACvE,QAAQ,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC;AAChE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,MAAM,QAAQ,GAAG,yBAAyB,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC7E,YAAY,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;AAC/C,YAAY,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC;AAChG,YAAY,yBAAyB,CAAC,YAAY,EAAE;AACpD,YAAY,yBAAyB,CAAC,gCAAgC,EAAE;AACxE,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ;AAC3C;AACA,QAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7C,QAAQ,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1D,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,QAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;AAC3C,QAAQ,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,sBAAsB;AACpE,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACxD,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa;AAC5D,YAAY,yBAAyB,CAAC,sBAAsB,EAAE;AAC9D,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ;AAC3C;AACA,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa;AACxD,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACtC,YAAY,yBAAyB,CAAC,mBAAmB,EAAE;AAC3D,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ;AAC3C;AACA,QAAQ,MAAM,QAAQ,GAAG,yBAAyB,CAAC,YAAY,CAAC,QAAQ,CAAC;AACzE,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC;AAC5F,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,QAAQ,yBAAyB,CAAC,YAAY,EAAE;AAChD,QAAQ,yBAAyB,CAAC,gCAAgC,EAAE;AACpE,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ;AACvC;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,yBAAyB,CAAC,4BAA4B,GAAG,yBAAyB,CAAC,gCAAgC;AAC3H,QAAQ,yBAAyB,CAAC,gCAAgC,GAAG,CAAC;AACtE;AACA,IAAI,kBAAkB,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,CAAC,uBAAuB,GAAG,OAAO;AAC9C;AACA,IAAI,YAAY,CAAC,SAAS,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC;AACA,IAAI,cAAc,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO;AACnC;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ;AACjC;AACA,IAAI,aAAa,CAAC,UAAU,EAAE;AAC9B,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU;AACrC;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;AAClF;AACA,IAAI,oBAAoB,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE;AACrI,QAAQ,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;AACnD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;AACjD,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM;AACxE,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ;AACjC,QAAQ,IAAI,CAAC,YAAY,GAAG,WAAW;AACvC,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAC5C,QAAQ,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AACvC;AACA,IAAI,YAAY,CAAC,SAAS,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC3C,YAAY,IAAI,CAAC,UAAU,GAAG,SAAS;AACvC,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS;AAC7D,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,SAAS,CAAC;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,mBAAmB,EAAE;AAChD,QAAQ,IAAI,IAAI,CAAC,oBAAoB,KAAK,mBAAmB,EAAE;AAC/D,YAAY,IAAI,CAAC,oBAAoB,GAAG,mBAAmB;AAC3D,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,mBAAmB;AACjF,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,mBAAmB,CAAC;AAClH;AACA;AACA,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,QAAQ,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,8BAA8B,CAAC,MAAM,IAAI,EAAE,CAAC;AACxE;AACA,IAAI,iBAAiB,CAAC,WAAW,EAAE;AACnC,QAAQ,IAAI,CAAC,cAAc,GAAG,WAAW;AACzC,QAAQ,IAAI,IAAI,GAAG,CAAC;AACpB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACrD,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACtC,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC;AAC9B;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AAC3C,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI;AACvC,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,eAAe,CAAC;AAC9G;AACA;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE;AACvC,QAAQ,YAAY,GAAG,YAAY,IAAI,YAAY,CAAC,MAAM;AAC1D,QAAQ,IAAI,YAAY,GAAG,EAAE,EAAE;AAC/B;AACA;AACA;AACA;AACA,YAAY,MAAM,2EAA2E;AAC7F;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,eAAe,GAAG,YAAY;AAC3C,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;AACtC,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;AAC9C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE;AAC/C,YAAY,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AAC3C,YAAY,MAAM,UAAU,GAAG,OAAO,EAAE,gBAAgB;AACxD,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtF,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,8BAA8B,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI;AACpG,YAAY,IAAI,IAAI,CAAC;AACrB,YAAY,KAAK,EAAE;AACnB,YAAY,IAAI,IAAI,IAAI,EAAE,EAAE;AAC5B,gBAAgB,IAAI,GAAG,CAAC;AACxB,gBAAgB,SAAS,EAAE;AAC3B;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK;AACvC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACpF,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjE,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjE,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,eAAe,CAAC;AAC9G;AACA;AACA,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAClC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,OAAO;AACzC;AACA,IAAI,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE;AAC9C,QAAQ,IAAI,CAAC,qBAAqB,GAAG,OAAO;AAC5C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,UAAU;AAC7C;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B;AACA,IAAI,qBAAqB,CAAC,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,yBAAyB,GAAG,MAAM;AAC/C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,KAAK,SAAS,GAAG,CAAC,GAAG,8BAA8B,CAAC,MAAM,CAAC;AACpG;AACA,IAAI,mBAAmB,CAAC,OAAO,EAAE;AACjC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,OAAO;AACxC;AACA,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAClC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,OAAO;AACzC;AACA,IAAI,eAAe,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM;AAChE;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,eAAe,GAAG,OAAO;AACtC;AACA,IAAI,iBAAiB,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM;AACvE;AACA,IAAI,qBAAqB,CAAC,EAAE,EAAE;AAC9B,QAAQ,IAAI,CAAC,wBAAwB,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,cAAc,gBAAgB,CAAC,EAAE,CAAC;AACzF;AACA,IAAI,gBAAgB,CAAC,EAAE,EAAE;AACzB,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,iBAAiB,gBAAgB,CAAC,EAAE,CAAC;AACvF;AACA,IAAI,gBAAgB,CAAC,EAAE,EAAE;AACzB,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,cAAc,gBAAgB,CAAC,EAAE,CAAC;AACpF;AACA,IAAI,kBAAkB,CAAC,IAAI,EAAE;AAC7B,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;AAC5C,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACxC,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI;AAC9D,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,eAAe,CAAC;AAC9G;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AAC7C,YAAY,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACzC,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;AAC/D,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,gBAAgB,CAAC;AAC/G;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpH;AACA,IAAI,eAAe,CAAC,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE;AAC/F,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc;AAC7C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM;AAC1E,QAAQ,IAAI,CAAC,wBAAwB,GAAG,WAAW,KAAK,IAAI,GAAG,CAAC,cAAc,gBAAgB,CAAC,WAAW,CAAC;AAC3G,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,KAAK,IAAI,GAAG,CAAC,iBAAiB,gBAAgB,CAAC,MAAM,CAAC;AAC/F,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,KAAK,IAAI,GAAG,CAAC,cAAc,gBAAgB,CAAC,MAAM,CAAC;AAC5F,QAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AACzC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAC3C;AACA,IAAI,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE;AAClE,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,IAAI,CAAC,sBAAsB,GAAG,qBAAqB;AAC3D,QAAQ,IAAI,CAAC,YAAY,GAAG,WAAW;AACvC;AACA,IAAI,OAAO,YAAY,CAAC,QAAQ,EAAE;AAClC,QAAQ,QAAQ,QAAQ;AACxB;AACA,YAAY,KAAK,SAAS,CAAC,yBAAyB;AACpD,gBAAgB,OAAO,eAAe;AACtC,YAAY,KAAK,SAAS,CAAC,sBAAsB;AACjD,gBAAgB,OAAO,YAAY;AACnC,YAAY,KAAK,SAAS,CAAC,0BAA0B;AACrD,gBAAgB,OAAO,WAAW;AAClC;AACA,YAAY,KAAK,SAAS,CAAC,0BAA0B;AACrD,gBAAgB,OAAO,YAAY;AACnC,YAAY,KAAK,SAAS,CAAC,yBAAyB;AACpD,gBAAgB,OAAO,WAAW;AAClC,YAAY,KAAK,SAAS,CAAC,yBAAyB;AACpD;AACA;AACA;AACA,gBAAgB,MAAM,+CAA+C;AACrE,YAAY,KAAK,SAAS,CAAC,0BAA0B;AACrD,gBAAgB,OAAO,YAAY;AACnC,YAAY,KAAK,SAAS,CAAC,8BAA8B;AACzD,gBAAgB,OAAO,gBAAgB;AACvC,YAAY,KAAK,SAAS,CAAC,4BAA4B;AACvD;AACA;AACA;AACA,gBAAgB,MAAM,kDAAkD;AACxE,YAAY;AACZ,gBAAgB,OAAO,eAAe;AACtC;AACA;AACA,IAAI,OAAO,sBAAsB,CAAC,SAAS,EAAE;AAC7C,QAAQ,QAAQ,SAAS;AACzB,YAAY,KAAK,SAAS,CAAC,qBAAqB;AAChD,gBAAgB,OAAO,KAAK;AAC5B,YAAY,KAAK,SAAS,CAAC,0BAA0B;AACrD,gBAAgB,OAAO,UAAU;AACjC,YAAY,KAAK,SAAS,CAAC,kCAAkC;AAC7D,gBAAgB,OAAO,kBAAkB;AACzC,YAAY,KAAK,SAAS,CAAC,qBAAqB;AAChD,gBAAgB,OAAO,KAAK;AAC5B,YAAY,KAAK,SAAS,CAAC,qBAAqB;AAChD,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,gBAAgB,OAAO,KAAK;AAC5B;AACA;AACA,IAAI,OAAO,mBAAmB,CAAC,MAAM,EAAE;AACvC,QAAQ,QAAQ,MAAM;AACtB,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,MAAM;AAC7B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,KAAK;AAC5B,YAAY,KAAK,SAAS,CAAC,qBAAqB;AAChD,gBAAgB,OAAO,KAAK;AAC5B,YAAY,KAAK,SAAS,CAAC,qCAAqC;AAChE,gBAAgB,OAAO,eAAe;AACtC,YAAY,KAAK,SAAS,CAAC,2BAA2B;AACtD,gBAAgB,OAAO,WAAW;AAClC,YAAY,KAAK,SAAS,CAAC,qCAAqC;AAChE,gBAAgB,OAAO,qBAAqB;AAC5C,YAAY,KAAK,SAAS,CAAC,2BAA2B;AACtD,gBAAgB,OAAO,WAAW;AAClC,YAAY,KAAK,SAAS,CAAC,qCAAqC;AAChE,gBAAgB,OAAO,qBAAqB;AAC5C,YAAY,KAAK,SAAS,CAAC,2BAA2B;AACtD,gBAAgB,OAAO,KAAK;AAC5B,YAAY,KAAK,SAAS,CAAC,qCAAqC;AAChE,gBAAgB,OAAO,eAAe;AACtC,YAAY,KAAK,SAAS,CAAC,qCAAqC;AAChE,gBAAgB,OAAO,qBAAqB;AAC5C,YAAY,KAAK,SAAS,CAAC,gCAAgC;AAC3D,gBAAgB,OAAO,UAAU;AACjC,YAAY,KAAK,SAAS,CAAC,0CAA0C;AACrE,gBAAgB,OAAO,oBAAoB;AAC3C,YAAY,KAAK,SAAS,CAAC,gCAAgC;AAC3D,gBAAgB,OAAO,UAAU;AACjC,YAAY,KAAK,SAAS,CAAC,0CAA0C;AACrE,gBAAgB,OAAO,oBAAoB;AAC3C,YAAY,KAAK,SAAS,CAAC,4BAA4B;AACvD,gBAAgB,OAAO,MAAM;AAC7B,YAAY,KAAK,SAAS,CAAC,sCAAsC;AACjE,gBAAgB,OAAO,gBAAgB;AACvC,YAAY,KAAK,SAAS,CAAC,4BAA4B;AACvD,gBAAgB,OAAO,YAAY;AACnC,YAAY,KAAK,SAAS,CAAC,sCAAsC;AACjE,gBAAgB,OAAO,sBAAsB;AAC7C,YAAY;AACZ,gBAAgB,OAAO,KAAK;AAC5B;AACA;AACA,IAAI,OAAO,mBAAmB,CAAC,eAAe,EAAE;AAChD,QAAQ,QAAQ,eAAe;AAC/B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,OAAO;AAC9B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,MAAM;AAC7B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,OAAO;AAC9B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,YAAY;AACnC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,SAAS;AAChC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,WAAW;AAClC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,eAAe;AACtC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,QAAQ;AAC/B;AACA,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,OAAO,qBAAqB,CAAC,SAAS,EAAE;AAC5C,QAAQ,QAAQ,SAAS;AACzB,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,MAAM;AAC7B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,MAAM;AAC7B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,SAAS;AAChC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,iBAAiB;AACxC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,iBAAiB;AACxC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,QAAQ;AAC/B,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,gBAAgB;AACvC,YAAY,KAAK,CAAC;AAClB,gBAAgB,OAAO,gBAAgB;AACvC;AACA,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,OAAO,+BAA+B,CAAC,YAAY,EAAE;AACzD,QAAQ,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI;AACtC,QAAQ,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU;AAClD,QAAQ,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE;AAC3C,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,YAAY,CAAC,IAAI;AAClC,gBAAgB,QAAQ,IAAI;AAC5B,oBAAoB,KAAK,CAAC;AAC1B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU,GAAG,UAAU,+CAA+C,SAAS;AAC9G,oBAAoB,KAAK,CAAC;AAC1B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU,GAAG,UAAU,+CAA+C,SAAS;AAC9G;AACA,gBAAgB;AAChB,YAAY,KAAK,YAAY,CAAC,aAAa;AAC3C,gBAAgB,QAAQ,IAAI;AAC5B,oBAAoB,KAAK,CAAC;AAC1B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU,GAAG,UAAU,+CAA+C,SAAS;AAC9G,oBAAoB,KAAK,CAAC;AAC1B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU,GAAG,UAAU,+CAA+C,SAAS;AAC9G;AACA,gBAAgB;AAChB,YAAY,KAAK,YAAY,CAAC,KAAK;AACnC,gBAAgB,QAAQ,IAAI;AAC5B,oBAAoB,KAAK,CAAC;AAC1B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU,GAAG,WAAW,gDAAgD,UAAU;AACjH,oBAAoB,KAAK,CAAC;AAC1B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU,GAAG,WAAW,gDAAgD,UAAU;AACjH;AACA,gBAAgB;AAChB,YAAY,KAAK,YAAY,CAAC,cAAc;AAC5C,gBAAgB,QAAQ,IAAI;AAC5B,oBAAoB,KAAK,CAAC;AAC1B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU,GAAG,WAAW,gDAAgD,UAAU;AACjH,oBAAoB,KAAK,CAAC;AAC1B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU,GAAG,WAAW,gDAAgD,UAAU;AACjH;AACA,gBAAgB;AAChB,YAAY,KAAK,YAAY,CAAC,GAAG;AACjC,gBAAgB,QAAQ,IAAI;AAC5B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,QAAQ;AACvC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU;AACzC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU;AACzC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU;AACzC;AACA,gBAAgB;AAChB,YAAY,KAAK,YAAY,CAAC,YAAY;AAC1C,gBAAgB,QAAQ,IAAI;AAC5B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,QAAQ;AACvC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU;AACzC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU;AACzC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,UAAU;AACzC;AACA,gBAAgB;AAChB,YAAY,KAAK,YAAY,CAAC,KAAK;AACnC,gBAAgB,QAAQ,IAAI;AAC5B,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,SAAS;AACxC,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,WAAW;AAC1C,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,WAAW;AAC1C,oBAAoB,KAAK,CAAC;AAC1B,wBAAwB,OAAO,WAAW;AAC1C;AACA,gBAAgB;AAChB;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5H;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACtC,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACnG,YAAY,SAAS,EAAE,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACnG,YAAY,SAAS,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACpG,SAAS;AACT;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACtC,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,OAAO;AACf,YAAY,SAAS,EAAE,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACnG,YAAY,SAAS,EAAE,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACnG,YAAY,SAAS,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACpG,SAAS;AACT;AACA,IAAI,eAAe,CAAC,EAAE,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;AACnC,YAAY,IAAI,CAAC,SAAS,GAAG,EAAE;AAC/B,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE;AACxD,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,WAAW,CAAC;AAC1G;AACA;AACA,IAAI,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE;AAClD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;AACzC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC;AAC/D,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC;AACnD,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,GAAG,CAAC;AACpE,QAAQ,MAAM,kBAAkB,GAAG,SAAS,GAAG,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC;AACtJ,QAAQ,IAAI,IAAI,CAAC,mBAAmB,KAAK,kBAAkB,EAAE;AAC7D,YAAY,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;AACzD,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,mBAAmB;AACrF,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,kBAAkB,CAAC;AACjH;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AACpI,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,WAAW;AACvB,gBAAgB,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3H,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChI,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChI,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACjI,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC;AAC7G,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC;AAC7G;AACA,QAAQ,IAAI,WAAW,KAAK,IAAI,CAAC,YAAY,EAAE;AAC/C,YAAY,IAAI,CAAC,YAAY,GAAG,WAAW;AAC3C,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY;AACvE,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,WAAW,CAAC;AAC1G;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC;AACnC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7F,cAAc,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,wBAAwB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC;AAClJ,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;AAC1J,QAAQ,IAAI,IAAI,CAAC,kBAAkB,KAAK,iBAAiB,EAAE;AAC3D,YAAY,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;AACvD,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,kBAAkB;AACnF,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,iBAAiB,CAAC;AAChH;AACA;AACA,IAAI,eAAe,CAAC,MAAM,EAAE;AAC5B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa;AAC/C,QAAQ,IAAI,YAAY,GAAG,aAAa,CAAC,WAAW;AACpD,QAAQ,MAAM,qBAAqB,GAAG,MAAM,CAAC,gBAAgB;AAC7D,QAAQ,MAAM,UAAU,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,wBAAwB;AACjG,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,4BAA4B;AACpG,QAAQ,IAAI,gBAAgB;AAC5B,QAAQ,IAAI,gBAAgB,GAAG,CAAC;AAChC,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAChE,YAAY,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;AAC7C,YAAY,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxJ,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B;AACA;AACA,gBAAgB,YAAY,GAAG,IAAI,CAAC,kBAAkB;AACtD,gBAAgB,IAAI,yBAAyB,CAAC,wBAAwB,EAAE;AACxE,oBAAoB,MAAM,CAAC,KAAK,CAAC,CAAC,sCAAsC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,uGAAuG,CAAC,CAAC;AACrM;AACA;AACA,YAAY,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,EAAE,kBAAkB;AAC3E;AACA;AACA;AACA,YAAY,IAAI,YAAY,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC9D,gBAAgB,MAAM,MAAM,GAAG,YAAY,CAAC,mBAAmB;AAC/D,gBAAgB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7D,gBAAgB,MAAM,UAAU,GAAG,YAAY,CAAC,mBAAmB;AACnE,gBAAgB,YAAY,CAAC,iBAAiB;AAC9C,oBAAoB,CAAC,MAAM,GAAG,UAAU,IAAI,IAAI,CAAC,uBAAuB,IAAI,UAAU,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,IAAI,MAAM,GAAG,UAAU,IAAI,UAAU,CAAC;AACxJ;AACA,YAAY,IAAI,EAAE,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,IAAI,YAAY,CAAC,iBAAiB,CAAC,EAAE;AACtG;AACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,GAAG,YAAY;AACrE,gBAAgB,gBAAgB,GAAG,YAAY,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI;AACjF;AACA,YAAY,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;AAC/D,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,GAAG;AAC/E,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,GAAG;AAC9C;AACA,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,gBAAgB;AACpD,QAAQ,IAAI,CAAC,aAAa,GAAG,YAAY;AACzC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,KAAK,YAAY;AACtE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,WAAW,CAAC;AAC1G;AACA;AACA,IAAI,gBAAgB,CAAC,YAAY,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,YAAY,EAAE;AACjD,YAAY,IAAI,CAAC,aAAa,GAAG,YAAY;AAC7C,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa;AACzE,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,YAAY,CAAC;AAC3G;AACA;AACA,IAAI,qBAAqB,CAAC,qBAAqB,EAAE;AACjD,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,OAAO,IAAI,CAAC,qCAAqC,CAAC,qBAAqB,CAAC;AACpF;AACA,QAAQ,MAAM,gBAAgB,GAAG,EAAE;AACnC,QAAQ,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,sBAAsB;AAC3G,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChE,YAAY,MAAM,aAAa,GAAG,sBAAsB,CAAC,CAAC,CAAC;AAC3D,YAAY,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACrE,gBAAgB,OAAO,EAAE,aAAa;AACtC,aAAa,CAAC;AACd;AACA,QAAQ,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB;AACpE,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC;AACtE;AACA,IAAI,qCAAqC,CAAC,qBAAqB,EAAE;AACjE,QAAQ,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,uBAAuB;AACrF,QAAQ,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,sBAAsB;AACrF,QAAQ,IAAI,MAAM,GAAG,CAAC;AACtB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChE,YAAY,MAAM,aAAa,GAAG,sBAAsB,CAAC,CAAC,CAAC;AAC3D,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,gBAAgB,MAAM,KAAK,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,gBAAgB,IAAI,KAAK,CAAC,OAAO,EAAE;AACnC,oBAAoB,MAAM,IAAI,GAAG,uBAAuB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI;AACxG,oBAAoB,MAAM,WAAW,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACvF,oBAAoB,MAAM,WAAW,GAAG,WAAW,CAAC,eAAe,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;AAC1J,oBAAoB,IAAI,UAAU,GAAG,WAAW,CAAC,UAAU;AAC3D,oBAAoB,IAAI,WAAW,GAAG,WAAW,EAAE,IAAI,IAAI,WAAW;AACtE,oBAAoB,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,UAAU,KAAK,OAAO,gDAAgD;AAC7H;AACA;AACA,wBAAwB,IAAI,WAAW,CAAC,eAAe,EAAE;AACzD,4BAA4B,WAAW,GAAG,eAAe;AACzD;AACA,wBAAwB,UAAU,GAAG,oBAAoB;AACzD;AACA,oBAAoB,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU;AACzD,oBAAoB,IAAI,WAAW,EAAE;AACrC,wBAAwB,MAAM,OAAO,GAAG,uBAAuB,CAAC,wBAAwB,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK;AAChK,wBAAwB,sBAAsB,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW;AAClH;AACA,oBAAoB,MAAM,GAAG,MAAM,IAAI,CAAC;AACxC;AACA;AACA;AACA,QAAQ,MAAM,gBAAgB,GAAG,EAAE;AACnC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAChE,YAAY,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACrE,gBAAgB,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAClD,aAAa,CAAC;AACd;AACA,QAAQ,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,gBAAgB;AACrF,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,CAAC;AACtE;AACA,IAAI,yBAAyB,CAAC,MAAM,EAAE;AACtC,QAAQ,MAAM,WAAW,GAAG,EAAE;AAC9B,QAAQ,MAAM,qBAAqB,GAAG,MAAM,CAAC,gBAAgB;AAC7D,QAAQ,MAAM,UAAU,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,wBAAwB;AACjG,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,4BAA4B;AACpG,QAAQ,IAAI,gBAAgB;AAC5B,QAAQ,IAAI,oBAAoB;AAChC,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAChE,YAAY,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;AAC7C,YAAY,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxJ,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B;AACA;AACA,gBAAgB,YAAY,GAAG,IAAI,CAAC,kBAAkB;AACtD;AACA,YAAY,IAAI,MAAM,GAAG,YAAY,CAAC,eAAe,EAAE,kBAAkB;AACzE;AACA,YAAY,IAAI,MAAM,GAAG,YAAY,CAAC,mBAAmB;AACzD,YAAY,MAAM,kBAAkB,GAAG,CAAC,YAAY,CAAC,iBAAiB;AACtE,YAAY,IAAI,EAAE,gBAAgB,IAAI,oBAAoB,IAAI,gBAAgB,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE;AAClH,gBAAgB,MAAM,sBAAsB,GAAG;AAC/C,oBAAoB,WAAW,EAAE,YAAY,CAAC,mBAAmB;AACjE,oBAAoB,QAAQ,EAAE,YAAY,CAAC,cAAc,EAAE,GAAG,UAAU,iDAAiD,QAAQ;AACjI,oBAAoB,UAAU,EAAE,EAAE;AAClC,iBAAiB;AACjB,gBAAgB,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACxD,gBAAgB,oBAAoB,GAAG,sBAAsB,CAAC,UAAU;AACxE,gBAAgB,IAAI,kBAAkB,EAAE;AACxC,oBAAoB,MAAM,GAAG,CAAC,CAAC;AAC/B,oBAAoB,MAAM,GAAG,IAAI,CAAC;AAClC;AACA;AACA,YAAY,oBAAoB,CAAC,IAAI,CAAC;AACtC,gBAAgB,cAAc,EAAE,QAAQ;AACxC,gBAAgB,MAAM;AACtB,gBAAgB,MAAM,EAAE,yBAAyB,CAAC,+BAA+B,CAAC,YAAY,CAAC;AAC/F,aAAa,CAAC;AACd,YAAY,gBAAgB,GAAG,MAAM;AACrC;AACA,QAAQ,OAAO,WAAW;AAC1B;AACA,IAAI,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;AACzD,QAAQ,MAAM,qBAAqB,GAAG,MAAM,CAAC,gBAAgB;AAC7D,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;AAC3E,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC;AAChF,QAAQ,MAAM,WAAW,GAAG,EAAE;AAC9B,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACpD,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACrD,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,0BAA0B,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;AACnE;AACA,QAAQ,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;AACvC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC9D,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAClD,gBAAgB,IAAI,MAAM,EAAE;AAC5B,oBAAoB,MAAM,KAAK,GAAG;AAClC,wBAAwB,MAAM;AAC9B,wBAAwB,SAAS,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAChG,qBAAqB;AACrB,oBAAoB,IAAI,UAAU,IAAI,UAAU,EAAE;AAClD,wBAAwB,KAAK,CAAC,KAAK,GAAG;AACtC,4BAA4B,KAAK,EAAE,UAAU;AAC7C,4BAA4B,KAAK,EAAE,UAAU;AAC7C,yBAAyB;AACzB;AACA,oBAAoB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C;AACA,qBAAqB;AACrB,oBAAoB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C;AACA;AACA;AACA,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;AAC5C,gBAAgB,MAAM,KAAK,GAAG;AAC9B,oBAAoB,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtD,oBAAoB,SAAS,EAAE,IAAI,CAAC,UAAU;AAC9C,iBAAiB;AACjB,gBAAgB,IAAI,UAAU,IAAI,UAAU,EAAE;AAC9C,oBAAoB,KAAK,CAAC,KAAK,GAAG;AAClC,wBAAwB,KAAK,EAAE,UAAU;AACzC,wBAAwB,KAAK,EAAE,UAAU;AACzC,qBAAqB;AACrB;AACA,gBAAgB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC;AACA,iBAAiB;AACjB,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC;AACA;AACA,QAAQ,MAAM,gBAAgB,GAAG;AACjC,YAAY,OAAO,EAAE,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,cAAc;AACrI,YAAY,WAAW,EAAE,yBAAyB,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,wBAAwB,GAAG,CAAC,YAAY;AAC7I,YAAY,MAAM,EAAE,yBAAyB,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,YAAY;AACnI,YAAY,MAAM,EAAE,yBAAyB,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,YAAY;AACnI,SAAS;AACT,QAAQ,MAAM,kBAAkB,GAAG,QAAQ,KAAK,eAAe,yDAAyD,QAAQ,KAAK,gBAAgB;AACrJ,QAAQ,IAAI,gBAAgB,GAAG,SAAS;AACxC,QAAQ,IAAI,QAAQ,KAAK,YAAY,sDAAsD,QAAQ,KAAK,gBAAgB,wDAAwD;AAChL,YAAY,gBAAgB,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,4CAA4C,QAAQ;AAC9I;AACA,QAAQ,MAAM,4BAA4B,GAAG,IAAI,CAAC,yBAAyB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,KAAK;AAC1J,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACjD,YAAY,KAAK,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,yBAAyB,IAAI,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAClL,YAAY,MAAM,EAAE,cAAc;AAClC,YAAY,MAAM,EAAE;AACpB,gBAAgB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM;AACvE,gBAAgB,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU;AAC/E,gBAAgB,OAAO,EAAE,oBAAoB;AAC7C,aAAa;AACb,YAAY,SAAS,EAAE;AACvB,gBAAgB,QAAQ;AACxB,gBAAgB,gBAAgB;AAChC,gBAAgB,SAAS,EAAE,IAAI,CAAC,UAAU,KAAK,CAAC,GAAG,KAAK,uCAAuC,IAAI;AACnG,gBAAgB,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,MAAM,uCAAuC,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,OAAO,wCAAwC,MAAM;AACxK,aAAa;AACb,YAAY,QAAQ,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACpD,kBAAkB;AAClB,kBAAkB;AAClB,oBAAoB,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM;AAC7E,oBAAoB,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU;AACrF,oBAAoB,OAAO,EAAE,WAAW;AACxC,iBAAiB;AACjB,YAAY,WAAW,EAAE;AACzB,gBAAgB,KAAK,EAAE,WAAW;AAClC;AACA;AACA,aAAa;AACb,YAAY,YAAY,EAAE,IAAI,CAAC,yBAAyB,KAAK;AAC7D,kBAAkB;AAClB,kBAAkB;AAClB,oBAAoB,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;AAC9D,oBAAoB,YAAY,EAAE,IAAI,CAAC,iBAAiB,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,QAAQ;AACvI,oBAAoB,MAAM,EAAE,IAAI,CAAC,yBAAyB;AAC1D,oBAAoB,YAAY,EAAE,IAAI,CAAC,eAAe,IAAI,4BAA4B,GAAG,gBAAgB,GAAG,SAAS;AACrH,oBAAoB,WAAW,EAAE,IAAI,CAAC,eAAe,IAAI,4BAA4B,GAAG,gBAAgB,GAAG,SAAS;AACpH,oBAAoB,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,4BAA4B,GAAG,IAAI,CAAC,gBAAgB,GAAG,SAAS;AAC7H,oBAAoB,gBAAgB,EAAE,IAAI,CAAC,eAAe,IAAI,4BAA4B,GAAG,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAC/H,oBAAoB,SAAS,EAAE,IAAI,CAAC,UAAU;AAC9C,oBAAoB,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC;AACjF,oBAAoB,mBAAmB,EAAE,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAC3F,iBAAiB;AACjB,SAAS,CAAC;AACV;AACA;AACA,yBAAyB,CAAC,wBAAwB,GAAG,KAAK;AAC1D,yBAAyB,CAAC,sBAAsB,GAAG,CAAC;AACpD,yBAAyB,CAAC,mBAAmB,GAAG,CAAC;AACjD,yBAAyB,CAAC,YAAY,GAAG,CAAC;AAC1C,yBAAyB,CAAC,4BAA4B,GAAG,CAAC;AAC1D,yBAAyB,CAAC,gCAAgC,GAAG,CAAC;;ACz1B9D;AACA,MAAM,SAAS,CAAC;AAChB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC;AAChE,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACzC,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3C,YAAY,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtE,YAAY,SAAS,IAAI,eAAe;AACxC,YAAY,aAAa,IAAI,kBAAkB;AAC/C,YAAY,SAAS,EAAE;AACvB;AACA,QAAQ,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC;AACzC;AACA;AACA;AACO,MAAM,6BAA6B,SAAS,yBAAyB,CAAC;AAC7E,IAAI,OAAO,aAAa,GAAG;AAC3B,QAAQ,MAAM,MAAM,GAAG,6BAA6B,CAAC,MAAM,CAAC,KAAK,EAAE;AACnE,QAAQ,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACjE;AACA,IAAI,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE;AAC/D,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE;AACxC,YAAY,IAAI,CAAC,MAAM,GAAG,UAAU;AACpC,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC;AACA,QAAQ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACzC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5C,YAAY,OAAO,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACjD,YAAY,6BAA6B,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC;AAClG;AACA;AACA,IAAI,OAAO,YAAY,GAAG;AAC1B,QAAQ,MAAM,SAAS,GAAG,EAAE;AAC5B,QAAQ,6BAA6B,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3G,QAAQ,OAAO,SAAS;AACxB;AACA,IAAI,OAAO,UAAU,GAAG;AACxB,QAAQ,6BAA6B,CAAC,MAAM,GAAG,IAAI,SAAS,EAAE;AAC9D;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC,MAAM;AACjE,QAAQ,KAAK,CAAC,KAAK,EAAE;AACrB;AACA,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAC/D,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;AAC/E,YAAY,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,IAAI,CAAC,EAAE,EAAE;AACrB,gBAAgB,EAAE,GAAG,IAAI,SAAS,EAAE;AACpC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACjD;AACA,YAAY,IAAI,GAAG,EAAE;AACrB,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;AACzC;AACA,QAAQ,KAAK,CAAC,KAAK,GAAG,IAAI;AAC1B,QAAQ,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACtC;AACA,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,QAAQ,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;AAC7C;AACA;AACA,6BAA6B,CAAC,MAAM,GAAG,IAAI,SAAS,EAAE;;AClEtD;AACA;AACA;AACO,MAAM,0BAA0B,SAAS,oBAAoB,CAAC;AACrE,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC;AACpB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB;AACA,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AAClC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC5C;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS;AAC7B;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AACtC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;AAC9B,QAAQ,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC7C;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC;AACA,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;AAC3C,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK;AACnC,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3C;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY;AAChC;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AACzC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK;AACjC,QAAQ,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAChD;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,mBAAmB;AACvC;AACA,IAAI,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAClC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,KAAK,KAAK,EAAE;AAChD,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,KAAK;AACxC,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC3C;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB;AACA,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AAClC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC9C;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AACrC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC5C;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;AACvC;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,sBAAsB,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO;AACpE,QAAQ,IAAI,CAAC,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;AACzG,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI;AAChG,QAAQ,IAAI,CAAC,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;AACzG,QAAQ,IAAI,CAAC,QAAQ,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;AAC5G,QAAQ,IAAI,CAAC,aAAa,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa;AAC3H,QAAQ,IAAI,CAAC,WAAW,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;AACrH,QAAQ,IAAI,CAAC,kBAAkB,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB;AAC1I,QAAQ,IAAI,CAAC,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI;AAChG;AACA;;ACjGA;AACA;AACA;AACO,MAAM,uBAAuB,SAAS,iBAAiB,CAAC;AAC/D;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC;AACpB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AACrC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC,QAAQ,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACjD;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC;AACA,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AAC1C,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;AACvC;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS;AAC7B;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AACtC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;AAC9B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB;AACA,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AAClC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI;AAChC,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU;AAC9B;AACA,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AACvC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;AAC1C;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU;AAC9B;AACA,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AACvC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC/C;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU;AAC9B;AACA,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AACvC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC9C;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU;AAC9B;AACA,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AACvC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC;AAC5C;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;AAC5C;AACA,IAAI,KAAK,GAAG;AACZ;AACA;AACA;;AC3GA;AACA;AACA;AACO,MAAM,eAAe,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,iBAAiB,CAAC,OAAO,EAAE;AACtC,QAAQ,OAAO,OAAO,CAAC,kBAAkB,KAAK,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,iBAAiB;AAChC;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,qBAAqB;AACnD;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,uBAAuB;AACvD,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB;AACtE;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd;;AC1DA;AACA;AAIA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,IAAI,sBAAsB,GAAG;AACjC;AACA;AACA,QAAQ,OAAO,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAC5C;AACA,IAAI,IAAI,uBAAuB,GAAG;AAClC,QAAQ,OAAO,IAAI,CAAC,wBAAwB,GAAG,CAAC;AAChD;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE;AACxD,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC;AACzB,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B,QAAQ,IAAI,CAAC,wBAAwB,GAAG,CAAC;AACzC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC;AACrC;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9B,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9C,QAAQ,IAAI,eAAe,GAAG,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE;AACzE;AACA,aAAa;AACb,YAAY,eAAe,GAAG,YAAY,CAAC,QAAQ;AACnD;AACA,QAAQ,YAAY,CAAC,OAAO,GAAG,OAAO;AACtC,QAAQ,YAAY,CAAC,QAAQ,GAAG,OAAO,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC;AAC5F,QAAQ,MAAM,OAAO,GAAG,eAAe,KAAK,YAAY,CAAC,QAAQ;AACjE,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B;AACA,QAAQ,IAAI,CAAC,OAAO,KAAK,OAAO;AAChC;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9B,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9C,QAAQ,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE;AACpH;AACA,aAAa;AACb,YAAY,gBAAgB,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;AACnE;AACA,QAAQ,IAAI,YAAY,CAAC,iBAAiB,EAAE;AAC5C,YAAY,IAAI,CAAC,oBAAoB,EAAE;AACvC;AACA,QAAQ,IAAI,YAAY,CAAC,qBAAqB,EAAE;AAChD,YAAY,IAAI,CAAC,wBAAwB,EAAE;AAC3C;AACA,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,YAAY,CAAC,qBAAqB;AAC9C,gBAAgB,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB;AAC5D,qBAAqB,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,8BAA8B,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC;AACnJ,YAAY,YAAY,CAAC,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACvF,YAAY,IAAI,YAAY,CAAC,qBAAqB,EAAE;AACpD,gBAAgB,IAAI,CAAC,wBAAwB,EAAE;AAC/C;AACA,YAAY,IAAI,YAAY,CAAC,iBAAiB,EAAE;AAChD,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C;AACA;AACA,aAAa;AACb,YAAY,YAAY,CAAC,qBAAqB,GAAG,KAAK;AACtD,YAAY,YAAY,CAAC,iBAAiB,GAAG,KAAK;AAClD;AACA,QAAQ,YAAY,CAAC,OAAO,GAAG,OAAO;AACtC,QAAQ,MAAM,OAAO,GAAG,gBAAgB,MAAM,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC;AACtE,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B;AACA,QAAQ,IAAI,CAAC,OAAO,KAAK,OAAO;AAChC;AACA;AACA,qBAAqB,CAAC,QAAQ,GAAG,CAAC;;ACnFlC;AACO,MAAM,iBAAiB,CAAC;AAC/B,IAAI,OAAO,CAAC,uBAAuB,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,wBAAwB,KAAK,uBAAuB;AACzF;AACA,IAAI,YAAY,CAAC,uBAAuB,EAAE;AAC1C,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,wBAAwB,GAAG,uBAAuB;AAC/D;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC;AACA,IAAI,IAAI,aAAa,CAAC,GAAG,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,EAAE;AACzC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,GAAG,EAAE;AAClB,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzC,gBAAgB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC1E;AACA,YAAY,IAAI,CAAC,kBAAkB,GAAG,SAAS;AAC/C,YAAY,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAC9C;AACA,aAAa;AACb,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,QAAQ,GAAGA,WAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC;AAChO,YAAY,IAAI,CAAC,iBAAiB,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC;AACzC,YAAY,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC;AACzC;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,GAAG;AACjC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;AACvC;AACA,IAAI,WAAW,CAAC,aAAa,EAAE;AAC/B,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE;AACpD,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK;AACnC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC;AACtC,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,IAAI,CAAC,wBAAwB,GAAG,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5B,QAAQ,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ;AAC3E,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM;AACnC;AACA,IAAI,eAAe,CAAC,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE;AAC3E,QAAQ,IAAI,aAAa,KAAK,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACjH;AACA;AACA;AACA,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,aAAa;AAClD,QAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,kBAAkB;AACtD,QAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa;AACjD,QAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,kBAAkB;AACtD,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;AACjG;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACtE,YAAY,IAAI,CAAC,kBAAkB,GAAG,SAAS;AAC/C,YAAY,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAC9C;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS;AAChC;AACA;AACA,iBAAiB,CAAC,QAAQ,GAAG,CAAC;;AC3E9B;AACA;AAEA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE;AAC9B,MAAM,wBAAwB,CAAC;AAC/B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB;AACA;AACA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,WAAW,UAAU,GAAG;AAC5B,QAAQ,OAAO;AACf,YAAY,YAAY,EAAE,qBAAqB,CAAC,yBAAyB;AACzE,YAAY,gBAAgB,EAAE,qBAAqB,CAAC,6BAA6B;AACjF,YAAY,eAAe,EAAE,qBAAqB,CAAC,4BAA4B;AAC/E,YAAY,iBAAiB,EAAE,qBAAqB,CAAC,8BAA8B;AACnF,SAAS;AACT;AACA,IAAI,OAAO,UAAU,GAAG;AACxB,QAAQ,qBAAqB,CAAC,MAAM,GAAG,IAAI,wBAAwB,EAAE;AACrE,QAAQ,qBAAqB,CAAC,yBAAyB,GAAG,CAAC;AAC3D,QAAQ,qBAAqB,CAAC,6BAA6B,GAAG,CAAC;AAC/D,QAAQ,qBAAqB,CAAC,4BAA4B,GAAG,CAAC;AAC9D,QAAQ,qBAAqB,CAAC,8BAA8B,GAAG,CAAC;AAChE,QAAQ,qBAAqB,CAAC,iCAAiC,GAAG,CAAC;AACnE,QAAQ,qBAAqB,CAAC,gCAAgC,GAAG,CAAC;AAClE,QAAQ,qBAAqB,CAAC,kCAAkC,GAAG,CAAC;AACpE;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE;AAC9C,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,aAAa,GAAG,YAAY;AACzC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,qBAAqB,CAAC,6BAA6B,GAAG,qBAAqB,CAAC,iCAAiC;AACrH,QAAQ,qBAAqB,CAAC,4BAA4B,GAAG,qBAAqB,CAAC,gCAAgC;AACnH,QAAQ,qBAAqB,CAAC,8BAA8B,GAAG,qBAAqB,CAAC,kCAAkC;AACvH,QAAQ,qBAAqB,CAAC,iCAAiC,GAAG,CAAC;AACnE,QAAQ,qBAAqB,CAAC,gCAAgC,GAAG,CAAC;AAClE,QAAQ,qBAAqB,CAAC,kCAAkC,GAAG,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,qBAAqB,EAAE,WAAW,EAAE,eAAe,EAAE;AACvE,QAAQ,IAAI,UAAU,GAAG,SAAS;AAClC,QAAQ,IAAI,IAAI,GAAG,qBAAqB,CAAC,MAAM;AAC/C,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC,sBAAsB;AACvF,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;AAC5F,gBAAgB,qBAAqB,CAAC,kCAAkC,EAAE;AAC1E,gBAAgB,OAAO,WAAW,CAAC,UAAU;AAC7C;AACA,YAAY,KAAK,MAAM,UAAU,IAAI,qBAAqB,CAAC,uBAAuB,CAAC,WAAW,EAAE;AAChG,gBAAgB,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,IAAI,CAAC,IAAI,aAAa;AAC9F,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACjD,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC/B,oBAAoB,QAAQ,GAAG,IAAI,wBAAwB,EAAE;AAC7D,oBAAoB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ;AACjD;AACA,gBAAgB,IAAI,GAAG,QAAQ;AAC/B;AACA,YAAY,KAAK,MAAM,WAAW,IAAI,qBAAqB,CAAC,uBAAuB,CAAC,YAAY,EAAE;AAClG,gBAAgB,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,IAAI,CAAC;AAC5F,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;AAC3D,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC/B,oBAAoB,QAAQ,GAAG,IAAI,wBAAwB,EAAE;AAC7D,oBAAoB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,QAAQ;AAC3D;AACA,gBAAgB,IAAI,GAAG,QAAQ;AAC/B;AACA,YAAY,KAAK,MAAM,WAAW,IAAI,qBAAqB,CAAC,uBAAuB,CAAC,YAAY,EAAE;AAClG,gBAAgB,MAAM,SAAS,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,IAAI,cAAc;AAClH,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AACrD,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC/B,oBAAoB,QAAQ,GAAG,IAAI,wBAAwB,EAAE;AAC7D,oBAAoB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ;AACrD;AACA,gBAAgB,IAAI,GAAG,QAAQ;AAC/B;AACA,YAAY,UAAU,GAAG,IAAI,CAAC,UAAU;AACxC;AACA,QAAQ,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC1D,QAAQ,eAAe,CAAC,OAAO,GAAG,KAAK;AACvC,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,WAAW,CAAC,UAAU,GAAG,UAAU;AAC/C,YAAY,qBAAqB,CAAC,gCAAgC,EAAE;AACpE,YAAY,OAAO,UAAU;AAC7B;AACA,QAAQ,UAAU,GAAG,EAAE;AACvB,QAAQ,WAAW,CAAC,UAAU,GAAG,UAAU;AAC3C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,IAAI,CAAC,UAAU,GAAG,UAAU;AACxC;AACA,QAAQ,qBAAqB,CAAC,yBAAyB,EAAE;AACzD,QAAQ,qBAAqB,CAAC,iCAAiC,EAAE;AACjE,QAAQ,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC;AACrG,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9G,YAAY,MAAM,aAAa,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACzG,YAAY,MAAM,OAAO,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC7F,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,gBAAgB,MAAM,KAAK,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,gBAAgB,MAAM,SAAS,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1H,gBAAgB,MAAM,IAAI,GAAG,SAAS,CAAC,oBAAoB,IAAI,SAAS,CAAC,IAAI;AAC7E,gBAAgB,IAAI,KAAK,CAAC,OAAO,EAAE;AACnC,oBAAoB,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtE,oBAAoB,IAAI,WAAW,EAAE;AACrC,wBAAwB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO;AAC3D,wBAAwB,IAAI,CAAC,OAAO,EAAE;AACtC,4BAA4B,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAC9D,gCAAgC,MAAM,CAAC,KAAK,CAAC,CAAC,qCAAqC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,MAAM,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,2BAA2B,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5R;AACA,4BAA4B;AAC5B;AACA,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC;AAChI;AACA,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAClP;AACA;AACA,qBAAqB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,cAAc,EAAE;AAChE,oBAAoB,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtE,oBAAoB,IAAI,WAAW,EAAE;AACrC,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE;AAC1F,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,qCAAqC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,2BAA2B,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AACxQ,4BAA4B;AAC5B;AACA,wBAAwB,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB;AACpF,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe;AACxD,6BAA6B,CAAC,eAAe,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,cAAc,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,EAAE;AACzJ,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,iDAAiD,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,MAAM,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,2BAA2B,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7U,4BAA4B;AAC5B;AACA,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,IAAI;AAC1H;AACA,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAClP;AACA;AACA,qBAAqB,IAAI,KAAK,CAAC,eAAe,EAAE;AAChD,oBAAoB,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtE,oBAAoB,IAAI,WAAW,EAAE;AACrC,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE;AAC1F,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,8CAA8C,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,MAAM,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,2BAA2B,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AACjS,4BAA4B;AAC5B;AACA,wBAAwB,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB;AACtF,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,eAAe,EAAE;AAC9E,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,kDAAkD,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,MAAM,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,2BAA2B,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9U,4BAA4B;AAC5B;AACA,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AAC7G;AACA,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAClP;AACA;AACA,qBAAqB,IAAI,KAAK,CAAC,MAAM,EAAE;AACvC,oBAAoB,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;AAChE,oBAAoB,IAAI,UAAU,EAAE;AACpC,wBAAwB,MAAM,YAAY,GAAG,UAAU,CAAC,kBAAkB;AAC1E,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY;AACjE,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,QAAQ;AACtE;AACA,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,uBAAuB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AACrM;AACA;AACA;AACA,YAAY,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACnD,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AACzD,gBAAgB,MAAM,EAAE,WAAW;AACnC,gBAAgB,OAAO;AACvB,aAAa,CAAC;AACd;AACA,QAAQ,OAAO,UAAU;AACzB;AACA;AACA,qBAAqB,CAAC,yBAAyB,GAAG,CAAC;AACnD,qBAAqB,CAAC,6BAA6B,GAAG,CAAC;AACvD,qBAAqB,CAAC,4BAA4B,GAAG,CAAC;AACtD,qBAAqB,CAAC,8BAA8B,GAAG,CAAC;AACxD,qBAAqB,CAAC,MAAM,GAAG,IAAI,wBAAwB,EAAE;AAC7D,qBAAqB,CAAC,iCAAiC,GAAG,CAAC;AAC3D,qBAAqB,CAAC,gCAAgC,GAAG,CAAC;AAC1D,qBAAqB,CAAC,kCAAkC,GAAG,CAAC;;AC3M5D;AAEA,MAAMC,MAAI,GAAG,uBAAuB;AACpC,MAAMC,QAAM,GAAG,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,CAAC,gBAAgB,CAACD,MAAI,CAAC,GAAGC,QAAM;;AClB3C;AAEA,MAAM,IAAI,GAAG,sBAAsB;AACnC,MAAM,MAAM,GAAG,CAAC;AAChB;AACA,CAAC;AACD;AACA,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM;;ACA3C;AACO,MAAM,eAAe,CAAC;AAC7B,IAAI,qBAAqB,CAAC,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM;AACzC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAC/D;AACA,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,QAAQ,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC;AACxD;AACA,IAAI,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE;AAC/D,QAAQ,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC;AACpE,QAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAChE;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE;AACnD,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;AACtG,QAAQ,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC5D,QAAQ,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC1D,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,2BAA2B;AACnL;AACA,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,GAAG,CAAC,EAAE;AAC7E,QAAQ,IAAI,WAAW;AACvB,QAAQ,IAAI,MAAM,GAAG,IAAI;AACzB,QAAQ,IAAI,SAAS;AACrB,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB;AAC7D,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,WAAW,GAAG,UAAU;AACpC;AACA,aAAa;AACb,YAAY,IAAI,GAAG,GAAG,CAAC;AACvB,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AACpC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACpF,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACtH;AACA,YAAY,MAAM,uBAAuB,GAAG,8BAA8B,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC;AACzG,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC9B,gBAAgB,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC/H,qBAAqB,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9C,qBAAqB,YAAY,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAChD,qBAAqB,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtE,qBAAqB,SAAS,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC7C,qBAAqB,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnD,oBAAoB,uBAAuB,GAAG,CAAC,IAAI,EAAE;AACrD,YAAY,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/C,YAAY,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACjD,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,OAAO,MAAM;AAC7B;AACA,YAAY,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;AACjE,gBAAgB,KAAK,EAAE,uBAAuB;AAC9C,gBAAgB,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY;AACpE,gBAAgB,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;AAC5D,gBAAgB,WAAW,EAAE,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC;AACvE,aAAa,CAAC;AACd;AACA,QAAQ,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC;AACpE,QAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnK,QAAQ,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9E,QAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;AACtG,QAAQ,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,YAAY,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;AACrG,QAAQ,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;AACpE,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,SAAS,CAAC,8BAA8B,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;AACzI,QAAQ,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;AACnE,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC;AAC7D;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACtJ,QAAQ,qBAAqB,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,QAAQ,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;AACjG,QAAQ,MAAM,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC,SAAS,EAAE;AAC9E,QAAQ,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,GAAG,GAAG,GAAG,eAAe,CAAC,QAAQ;AAC5E,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAC9C,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC9E,YAAY,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;AACnD,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AACzD,gBAAgB,KAAK,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;AACnD,gBAAgB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC3C,gBAAgB,OAAO,EAAE,EAAE;AAC3B,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,6BAA6B,CAAC,wBAAwB,EAAE;AACzE,gBAAgB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AAC7D,oBAAoB,KAAK,EAAE,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;AACvD,oBAAoB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC/C,oBAAoB,OAAO,EAAE,EAAE;AAC/B,iBAAiB,CAAC,CAAC;AACnB;AACA,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AACzD,gBAAgB,KAAK,EAAE,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnH,gBAAgB,MAAM,EAAE,gBAAgB,CAAC,6BAA6B,CAAC,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;AACxG,gBAAgB,OAAO,EAAE;AACzB,oBAAoB;AACpB,wBAAwB,OAAO,EAAE,CAAC;AAClC,wBAAwB,QAAQ,EAAE;AAClC,4BAA4B,MAAM,EAAE,eAAe,CAAC,kBAAkB;AACtE,4BAA4B,IAAI,EAAE,eAAe,CAAC,QAAQ;AAC1D,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB;AACpB,wBAAwB,OAAO,EAAE,CAAC;AAClC,wBAAwB,QAAQ,EAAE;AAClC,4BAA4B,MAAM,EAAE,cAAc,CAAC,kBAAkB;AACrE,4BAA4B,IAAI,EAAE,cAAc,CAAC,QAAQ;AACzD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf;AACA,QAAQ,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACpD,YAAY,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACtD;AACA,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE;AACzC,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM;AACjD;AACA,QAAQ,OAAO,MAAM;AACrB;AACA;;ACjIA;AACO,MAAM,wBAAwB,CAAC;AACtC,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5B,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B;AACA,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpE;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3E;AACA;AACA;AACO,MAAM,uBAAuB,CAAC;AACrC,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5B,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;AAClB;AACA,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACjE;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1E;AACA;AACA;AACO,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB;AACA,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AAChD;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;AACvD;AACA;AACA;AACO,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B;AACA,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD;AACA;AACA;AACO,MAAM,mCAAmC,CAAC;AACjD,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B;AACA,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AAClD;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,mCAAmC,CAAC,IAAI,CAAC,KAAK,CAAC;AAClE;AACA;AACA;AACO,MAAM,iCAAiC,CAAC;AAC/C,IAAI,WAAW,GAAG;AAClB,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,UAAU,CAAC,iBAAiB,EAAE;AACtC;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,iCAAiC,EAAE;AACtD;AACA;AACA,MAAM,uBAAuB,CAAC;AAC9B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB;AACA,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/C;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,MAAM,GAAG,IAAI,uBAAuB,EAAE;AACpD,QAAQ,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AACrC,QAAQ,OAAO,MAAM;AACrB;AACA;AACA;AACO,MAAM,gBAAgB,CAAC;AAC9B,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B;AACA,IAAI,SAAS,CAAC,MAAM,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACxC,YAAY,MAAM,IAAI,GAAG,IAAI,uBAAuB,EAAE;AACtD,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI;AACjD,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO;AAClD,YAAY,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAC5C;AACA,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;AAChD;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,cAAc,EAAE;AAC9D,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AACtE,YAAY,IAAI,CAAC,cAAc,GAAG,SAAS;AAC3C,YAAY,IAAI,CAAC,oBAAoB,GAAG,KAAK;AAC7C;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI;AAC7C,QAAQ,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACzC;AACA,IAAI,gBAAgB,CAAC,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE;AACpE,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACxC,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;AACzE,gBAAgB,YAAY;AAC5B,gBAAgB,kBAAkB;AAClC,gBAAgB,WAAW,EAAE,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC;AACvE,aAAa,CAAC;AACd;AACA,QAAQ,OAAO,IAAI,CAAC,cAAc;AAClC;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B;AACA,IAAI,GAAG,CAAC,UAAU,EAAE;AACpB,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;AACnD,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACzC;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B,QAAQ,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACzC,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC;AAC7B;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACzD,QAAQ,MAAM,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AAClD,QAAQ,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AAC7C,QAAQ,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAC/C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;AACnD,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACnD;AACA,QAAQ,OAAO,MAAM;AACrB;AACA;;AC5JA;AACO,MAAM,cAAc,CAAC;AAC5B,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS;AAC7B;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,GAAG,IAAI,EAAE,KAAK,EAAE;AACjG,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAQ,IAAI,CAAC,sBAAsB,GAAG,qBAAqB;AAC3D,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/C,YAAY,KAAK,EAAE,KAAK,IAAI,UAAU;AACtC,YAAY,IAAI;AAChB,YAAY,KAAK;AACjB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC,GAAG,KAAK,EAAEF,WAA2B,CAAC,YAAY,GAAGA,WAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC;AAC9K,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,8BAA8B,CAAC,CAAC;AAC7M;AACA;AACA,IAAI,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3E,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;AACjE,QAAQ,IAAI,MAAM;AAClB,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,YAAY,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,6BAA6B,CAAC;AAC9L;AACA,aAAa;AACb,YAAY,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAClE,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACrC;AACA,QAAQ,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACnG,QAAQ,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;AACzF,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3D,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,MAAM,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE;AACrD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;AAC9D,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC9C,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,oCAAoC,CAAC,IAAI,CAAC,MAAM;AAChF,YAAY,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE;AAChF,YAAY,MAAM,CAAC,KAAK,EAAE;AAC1B,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM;AAC9D,YAAY,OAAO,QAAQ;AAC3B,SAAS,EAAE,CAAC,GAAG,KAAK;AACpB,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC/E;AACA,gBAAgB,OAAO,IAAI;AAC3B;AACA,YAAY,MAAM,GAAG;AACrB,SAAS,CAAC;AACV;AACA,IAAI,MAAM,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE;AACpC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC9C,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,oCAAoC,CAAC,IAAI,CAAC,MAAM;AAChF,YAAY,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AACxE,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,KAAK,EAAE;AAC1B,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM;AAC9D,YAAY,OAAO,KAAK;AACxB,SAAS,EAAE,CAAC,GAAG,KAAK;AACpB,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC/E;AACA,gBAAgB,OAAO,CAAC;AACxB;AACA,YAAY,MAAM,GAAG;AACrB,SAAS,CAAC;AACV;AACA,IAAI,MAAM,wBAAwB,CAAC,UAAU,GAAG,CAAC,EAAE;AACnD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC9C,QAAQ,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,oCAAoC,CAAC,IAAI,CAAC,MAAM;AAChF,YAAY,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;AACxE,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3D,YAAY,MAAM,CAAC,KAAK,EAAE;AAC1B,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM;AAC9D,YAAY,OAAO,KAAK;AACxB,SAAS,EAAE,CAAC,GAAG,KAAK;AACpB,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC/E;AACA,gBAAgB,OAAO,CAAC;AACxB;AACA,YAAY,MAAM,GAAG;AACrB,SAAS,CAAC;AACV;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC1D,YAAY,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClE;AACA;AACA;;ACxGA;AACO,MAAM,oBAAoB,CAAC;AAClC,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,oBAAoB;AACxC;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE;AAC/C,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,WAAW,EAAE;AACrD,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC;AACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B;AACA,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AACrC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC;AACtC,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,yBAAyB,CAAC;AACnJ;AACA,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrC,gBAAgB,MAAM,CAAC,KAAK,CAAC,oDAAoD,GAAG,CAAC,CAAC,OAAO,GAAG,uEAAuE,CAAC;AACxK,gBAAgB;AAChB;AACA;AACA,aAAa;AACb,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC3C;AACA;AACA,IAAI,UAAU,CAAC,cAAc,EAAE;AAC/B,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE;AAC/D,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC;AACvD,YAAY,IAAI,CAAC,qBAAqB,GAAG,CAAC;AAC1C;AACA;AACA,IAAI,QAAQ,CAAC,cAAc,EAAE;AAC7B,QAAQ,IAAI,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE;AAC9C,YAAY,IAAI,CAAC,qBAAqB,GAAG,CAAC;AAC1C,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AAC1E,gBAAgB,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,IAAI,CAAC,EAAE;AACxD,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;AAC7D,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AACtE;AACA,gBAAgB,IAAI,CAAC,qBAAqB,GAAG,CAAC;AAC9C,aAAa,CAAC;AACd;AACA;AACA,IAAI,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;AAC9D;AACA,aAAa;AACb,YAAY,UAAU,CAAC,eAAe,GAAG,SAAS;AAClD;AACA;AACA,IAAI,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC/C,YAAY;AACZ;AACA,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AACnD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK;AAClE,YAAY,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,SAAS,KAAK,IAAI,IAAI,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;AAC5G,SAAS,CAAC;AACV;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE;AACxC;AACA;AACA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE;AACzE,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,4CAA4C,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC;AAC7J;AACA,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,QAAQ,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5D;AACA,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;AACxB,QAAQ,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5D,QAAQ,OAAO,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC;AACtF;AACA,IAAI,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE;AACjC,QAAQ,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,KAAK,GAAG,GAAG,CAAC;AACxF;AACA,QAAQ,UAAU,CAAC,eAAe,GAAG;AACrC,YAAY,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC7C,YAAY,yBAAyB,EAAE,KAAK,GAAG,CAAC;AAChD,YAAY,mBAAmB,EAAE,KAAK,GAAG,CAAC;AAC1C,SAAS;AACT;AACA,IAAI,MAAM,QAAQ,CAAC,KAAK,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,KAAK,GAAG,CAAC,CAAC;AACjE;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAChC;AACA;;AC1GA;AACO,MAAM,oBAAoB,CAAC;AAClC,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;AACtC;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM;AAC1E;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACvH,YAAY,OAAO,KAAK;AACxB;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,oBAAoB,CAAC,iBAAiB,KAAK,SAAS;AACzH,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC5D;AACA,QAAQ,OAAO,QAAQ;AACvB;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,cAAc,GAAG,GAAG,EAAE;AACtF,QAAQ,IAAI,CAAC,iBAAiB,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE;AAC/B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC;AACrC,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc;AAC7C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;AAC5C;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;AACjD,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AACvC,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,KAAK;AACrE;AACA,IAAI,sBAAsB,CAAC,KAAK,EAAE;AAClC,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACpE;AACA,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAChF,YAAY;AACZ;AACA,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC5D,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AACxD,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK;AAC1F,gBAAgB,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9C,aAAa,CAAC;AACd;AACA;AACA,IAAI,mBAAmB,CAAC,UAAU,EAAE;AACpC,QAAQ,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,eAAe;AACvD,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;AAC7C,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;AACtE;AACA,QAAQ,IAAI,CAAC,oBAAoB,IAAI,UAAU;AAC/C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,4CAA4C,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,gCAAgC,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACnP,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AACzD;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;AACvC,QAAQ,IAAI,QAAQ,EAAE;AACtB;AACA,YAAY,UAAU,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;AACpD;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;AACjC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;AACzC;AACA;;AC/EA;AACA;AACA;AACO,MAAM,iBAAiB,CAAC;AAC/B;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,UAAU,EAAE,gBAAgB,GAAG,EAAE,EAAE;AACnD;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU;AACrC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;AACjD,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE;AAChC,QAAQ,IAAI,CAAC,WAAW,GAAG,gBAAgB;AAC3C;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,kCAAkC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1F;AACA,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACrD,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAClD;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,UAAU,GAAG,CAAC;AAC1B,QAAQ,OAAO,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACrD;AACA,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;AAC3F,YAAY,IAAI,gBAAgB,GAAG,CAAC,EAAE;AACtC,gBAAgB;AAChB;AACA,YAAY,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClH,YAAY,IAAI,oBAAoB,GAAG,CAAC,EAAE;AAC1C,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,mEAAmE,EAAE,UAAU,CAAC,CAAC,CAAC;AACnH;AACA,gBAAgB,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACvE,gBAAgB;AAChB;AACA,YAAY,MAAM,aAAa,GAAG,iBAAiB,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;AACrL,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,sDAAsD,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACxL;AACA,gBAAgB,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACvE,gBAAgB;AAChB;AACA,YAAY,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAC7E;AACA,YAAY,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC;AAC9G,YAAY,IAAI,kBAAkB,GAAG,CAAC,EAAE;AACxC,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,+CAA+C,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC/J;AACA,gBAAgB,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACvE,gBAAgB;AAChB;AACA,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,oBAAoB,GAAG,CAAC,EAAE,kBAAkB,CAAC;AACvG;AACA,YAAY,MAAM,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,GAAG,CAAC,CAAC;AAChG,YAAY,IAAI,kBAAkB,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAChE,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACxJ;AACA,gBAAgB,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACvE,gBAAgB;AAChB;AACA,YAAY,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1G,YAAY,IAAI,gBAAgB,GAAG,CAAC,EAAE;AACtC,gBAAgB,IAAI,IAAI,CAAC,KAAK,EAAE;AAChC,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACxJ;AACA,gBAAgB,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AACvE,gBAAgB;AAChB;AACA,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,GAAG,CAAC,CAAC;AACjG;AACA,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAChE,YAAY,MAAM,UAAU,GAAG,EAAE;AACjC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACpD,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9C,gBAAgB,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;AAClD,gBAAgB,IAAI,GAAG,IAAI,CAAC,EAAE;AAC9B,oBAAoB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7D;AACA;AACA,YAAY,IAAI,QAAQ,KAAK,MAAM,EAAE;AACrC;AACA,gBAAgB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzC;AACA;AACA,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACrC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,UAAU,EAAE,UAAU;AACtC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,SAAS,EAAE,CAAC;AAC5B,aAAa,CAAC;AACd,YAAY,UAAU,GAAG,gBAAgB,GAAG,CAAC;AAC7C;AACA,YAAY,MAAM,UAAU,GAAG,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,EAAE;AAC1G,YAAY,MAAM,SAAS,GAAG,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,EAAE;AACxI,YAAY,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,SAAS;AACrD,YAAY,UAAU,IAAI,gBAAgB,GAAG,CAAC,GAAG,gBAAgB;AACjE;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,gCAAgC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAChI;AACA;AACA,IAAI,gBAAgB,CAAC,gBAAgB,GAAG,EAAE,EAAE;AAC5C,QAAQ,OAAO,gBAAgB,EAAE,IAAI,CAAC,EAAE;AACxC,YAAY,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE;AACrD,gBAAgB;AAChB;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;AACxF;AACA,QAAQ,OAAO,gBAAgB,IAAI,CAAC;AACpC;AACA,IAAI,2BAA2B,GAAG;AAClC,QAAQ,IAAI,OAAO,GAAG,KAAK;AAC3B,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAChD,YAAY,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI;AACzD,YAAY,IAAI,UAAU,GAAG,CAAC;AAC9B,YAAY,OAAO,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACzD;AACA,gBAAgB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;AACpF,gBAAgB,IAAI,iBAAiB,GAAG,CAAC,EAAE;AAC3C,oBAAoB;AACpB;AACA;AACA,gBAAgB,IAAI,iBAAiB,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE;AACjH,oBAAoB,UAAU,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM;AAChE,oBAAoB;AACpB;AACA;AACA,gBAAgB,MAAM,oBAAoB,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/G,gBAAgB,IAAI,oBAAoB,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,GAAG,EAAE;AAC/H,oBAAoB,UAAU,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM;AAChE,oBAAoB;AACpB;AACA;AACA,gBAAgB,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC;AAClH,gBAAgB,IAAI,kBAAkB,GAAG,CAAC,EAAE;AAC5C,oBAAoB,IAAI,IAAI,CAAC,KAAK,EAAE;AACpC,wBAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,iEAAiE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC7K;AACA,oBAAoB,UAAU,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM;AAChE,oBAAoB;AACpB;AACA,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,oBAAoB,GAAG,CAAC,EAAE,kBAAkB,CAAC;AAC3G;AACA;AACA;AACA,gBAAgB,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK;AAClD,oBAAoB,MAAM,UAAU,GAAG,EAAE;AACzC,oBAAoB,IAAI,MAAM,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC;AACrD,oBAAoB,OAAO,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE;AAC9C,wBAAwB,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;AACtD,4BAA4B,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC;AACnF,4BAA4B,IAAI,IAAI,GAAG,CAAC,EAAE;AAC1C,gCAAgC,OAAO,IAAI;AAC3C;AACA,4BAA4B,MAAM,GAAG,IAAI;AACzC;AACA,6BAA6B,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;AAC3D,4BAA4B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/E,4BAA4B,aAAa,GAAG,MAAM,GAAG,CAAC;AACtD;AACA,wBAAwB,MAAM,EAAE;AAChC;AACA,oBAAoB,IAAI,aAAa,GAAG,MAAM,EAAE;AAChD,wBAAwB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC3E;AACA,oBAAoB,OAAO,UAAU;AACrC,iBAAiB;AACjB,gBAAgB,MAAM,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAC7E,gBAAgB,IAAI,MAAM,KAAK,IAAI,EAAE;AACrC,oBAAoB,IAAI,IAAI,CAAC,KAAK,EAAE;AACpC,wBAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,oFAAoF,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,aAAa,CAAC;AAC5M,4BAA4B,UAAU,CAAC;AACvC;AACA,oBAAoB,UAAU,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM;AAChE,oBAAoB;AACpB;AACA,gBAAgB,MAAM,UAAU,GAAG,EAAE;AACrC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxD,oBAAoB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAClD,oBAAoB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C;AACA,gBAAgB,MAAM,YAAY,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI;AAC3F,gBAAgB,IAAI,YAAY,EAAE;AAClC,oBAAoB,UAAU,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACxD;AACA,gBAAgB,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;AAC7D,oBAAoB,IAAI,IAAI,CAAC,KAAK,EAAE;AACpC,wBAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,0HAA0H,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1P;AACA,oBAAoB,UAAU,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM;AAChE,oBAAoB;AACpB;AACA,gBAAgB,UAAU,GAAG,kBAAkB,GAAG,CAAC;AACnD;AACA,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC;AACjF,gBAAgB,IAAI,UAAU,GAAG,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,EAAE;AAC9G,gBAAgB,MAAM,SAAS,GAAG,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,EAAE;AAChJ,gBAAgB,IAAI,YAAY,EAAE;AAClC;AACA;AACA;AACA;AACA,oBAAoB,MAAM,sBAAsB,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC;AACnH,oBAAoB,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,sBAAsB,GAAG,CAAC,CAAC;AAC1F,oBAAoB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,sBAAsB,GAAG,CAAC,EAAE,iBAAiB,CAAC;AACjH,oBAAoB,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,GAAG,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS;AAChJ,oBAAoB,IAAI,IAAI,CAAC,KAAK,EAAE;AACpC,wBAAwB,MAAM,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,0BAA0B,EAAE,sBAAsB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;AACvL;AACA;AACA,qBAAqB;AACrB;AACA,oBAAoB,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS;AACxE,oBAAoB,UAAU,IAAI,QAAQ,CAAC,MAAM,IAAI,kBAAkB,GAAG,CAAC,GAAG,iBAAiB,CAAC;AAChG,oBAAoB,IAAI,IAAI,CAAC,KAAK,EAAE;AACpC,wBAAwB,MAAM,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;AAC7K;AACA;AACA,gBAAgB,OAAO,GAAG,IAAI;AAC9B;AACA;AACA,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE;AAC/C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACjD,YAAY,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;AAClI,YAAY,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,KAAK;AAC5D,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AACtC;AACA,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE;AACpH,oBAAoB,OAAO,OAAO,CAAC,CAAC,CAAC;AACrC;AACA,gBAAgB,OAAO,WAAW;AAClC,aAAa,CAAC;AACd;AACA,QAAQ,OAAO,IAAI;AACnB;AACA;AACA,iBAAiB,CAAC,8BAA8B,GAAG,4BAA4B;;ACnQ/E;AACO,MAAM,cAAc,CAAC;AAC5B,IAAI,MAAM,SAAS,CAAC,YAAY,EAAE;AAClC,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE;AACnC,YAAY;AACZ;AACA,QAAQ,YAAY,GAAG,YAAY,IAAI,EAAE;AACzC,QAAQ,YAAY,GAAG;AACvB,YAAY,GAAG,cAAc,CAAC,oBAAoB;AAClD,YAAY,GAAG,YAAY;AAC3B,SAAS;AACT,QAAQ,IAAI,YAAY,CAAC,KAAK,EAAE;AAChC,YAAY,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK;AACtD,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE;AACpC;AACA,QAAQ,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE;AAC1D,YAAY,MAAM,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,CAAC;AACnE;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,cAAc,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACtG,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE;AACpC;AACA,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;AACxD;AACA,IAAI,iBAAiB,CAAC,IAAI,EAAE,yBAAyB,GAAG,KAAK,EAAE;AAC/D,QAAQ,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,CAAC;AAC1I,QAAQ,IAAI,cAAc,CAAC,kBAAkB,EAAE;AAC/C,YAAY,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAY,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC;AACzE;AACA,QAAQ,OAAO,cAAc,CAAC,yBAAyB,IAAI,yBAAyB,GAAG,2CAA2C,GAAG,KAAK,GAAG,KAAK;AAClJ;AACA;AACA;AACA,cAAc,CAAC,oBAAoB,GAAG;AACtC,IAAI,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;AACpD,IAAI,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC;AACxD,CAAC;AACD,cAAc,CAAC,kBAAkB,GAAG,KAAK;AACzC,cAAc,CAAC,yBAAyB,GAAG,KAAK;AAChD,cAAc,CAAC,MAAM,GAAG,IAAI;;ACzC5B;AACO,MAAM,uBAAuB,CAAC;AACrC,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE;AACnD,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC;AACrC,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE;AACjC,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,aAAa;AAClC,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU;AACrC;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,QAAQ;AAC5B;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO;AAC3B;AACA,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;AACvC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC/C,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK;AACxC,YAAY,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,0BAA0B,CAAC;AAC9D;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB;AACA,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI;AAClC;AACA,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI;AAC7B;AACA;AACA,IAAI,aAAa,CAAC,iBAAiB,EAAE;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC1C;AACA,YAAY,OAAO,KAAK;AACxB;AACA,QAAQ,IAAI,UAAU;AACtB,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACjD,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;AACjD,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACpC;AACA,aAAa;AACb;AACA,YAAY,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC1E,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,wIAAwI,EAAE,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9P;AACA,YAAY,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC1E;AACA,QAAQ,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACzC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,sBAAsB,EAAE;AAC7D,YAAY,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC;AACjE;AACA,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B;AACA,YAAY,IAAI,CAAC,OAAO,GAAG,KAAK;AAChC,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI;AAC7B,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AACxC;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,CAAC;AACrC;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AACxC;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B;AACA;;ACjFA,MAAM,cAAc,GAAG,CAAC,MAAM;AAC9B,IAAI,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9C,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC,GAAG;AACJ,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,qBAAqB,EAAE;AACrE,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;AACzF,KAAK;AACL,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,qBAAqB,EAAE;AACrE,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU;AACxD,KAAK;AACL,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,iBAAiB,EAAE;AACjE,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACnG,KAAK;AACL,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,YAAY,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AAC9C,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC5B,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE;AACnC,CAAC;AACD,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC7C,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC9B;AACA,IAAI,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE;AAClC,IAAI,IAAI,CAAC,cAAc,GAAG,SAAS;AACnC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI;AAC3B,CAAC;AACD,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAY;AACtD,IAAI,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO;AAC9C,CAAC;AACD,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;AAClD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACvC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,8CAA8C,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AACpJ,QAAQ;AACR;AACA,IAAI,MAAM,cAAc,GAAG,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACpE,IAAI,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC;AACxD,IAAI,MAAM,WAAW,GAAG,iBAAiB,GAAG,cAAc;AAC1D,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB;AAChD,IAAI,MAAM,eAAe,GAAG,aAAa,GAAG,iBAAiB;AAC7D,IAAI,MAAM,WAAW,GAAG,eAAe,GAAG,cAAc;AACxD,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC7B,QAAQ,MAAM,iBAAiB,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AACxD,QAAQ,UAAU,GAAG,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC;AACvH;AACA,SAAS,IAAI,IAAI,YAAY,WAAW,EAAE;AAC1C,QAAQ,UAAU,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AAC3D;AACA,SAAS;AACT,QAAQ,UAAU,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AAChF;AACA,IAAI,IAAI,WAAW;AACnB,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE;AACzC,QAAQ,WAAW,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC;AAChD;AACA,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,EAAE;AACvD,QAAQ,WAAW,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;AACjD;AACA,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE;AAC/C,QAAQ,WAAW,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;AACjD;AACA,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE;AACxD,QAAQ,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC;AAClD;AACA,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,GAAG,EAAE;AAC7C,QAAQ,WAAW,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;AACjD;AACA,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY,EAAE;AACtD,QAAQ,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC;AAClD;AACA,SAAS;AACT,QAAQ,WAAW,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC;AACnD;AACA,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE;AACxC,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU;AACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,EAAE,CAAC,EAAE;AAC5C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,EAAE,CAAC,EAAE;AAChD,YAAY,QAAQ,IAAI,CAAC,IAAI;AAC7B,gBAAgB,KAAK,YAAY,CAAC,IAAI;AACtC,oBAAoB,WAAW,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;AAC3F,oBAAoB;AACpB,gBAAgB,KAAK,YAAY,CAAC,aAAa;AAC/C,oBAAoB,WAAW,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC;AAC5F,oBAAoB;AACpB,gBAAgB,KAAK,YAAY,CAAC,KAAK;AACvC,oBAAoB,WAAW,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;AAChH,oBAAoB;AACpB,gBAAgB,KAAK,YAAY,CAAC,cAAc;AAChD,oBAAoB,WAAW,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;AACjH,oBAAoB;AACpB,gBAAgB,KAAK,YAAY,CAAC,GAAG;AACrC,oBAAoB,WAAW,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;AAChH,oBAAoB;AACpB,gBAAgB,KAAK,YAAY,CAAC,YAAY;AAC9C,oBAAoB,WAAW,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;AACjH,oBAAoB;AACpB,gBAAgB,KAAK,YAAY,CAAC,KAAK;AACvC,oBAAoB,WAAW,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;AAClH,oBAAoB;AACpB;AACA;AACA,QAAQ,YAAY,IAAI,IAAI,CAAC,UAAU;AACvC;AACA,IAAI,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE;AAClC,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,cAAc,IAAI,UAAU,CAAC;AAChM,CAAC;;ACrHD;AACA;AACA;AACA;AACA;AACO,MAAM,qBAAqB,SAAS,eAAe,CAAC;AAC3D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC;AACpB;AACA;;ACNA,gBAAgB,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE,kBAAkB,GAAG,KAAK,EAAE;AACtF,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,MAAM,IAAI,KAAK,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE;AAC/K,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC;AACA,YAAY,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC,aAAa;AAC9D,YAAY,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,KAAK,SAAS,EAAE;AAChE,gBAAgB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC7C,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,SAAS,CAAC;AACzE;AACA;AACA,QAAQ;AACR;AACA,IAAI,QAAQ,IAAI;AAChB,QAAQ,KAAK,SAAS,CAAC,aAAa;AACpC,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK;AAC/C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,mBAAmB;AAC1C,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtH,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,8BAA8B;AACrD,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,SAAS,CAAC,qCAAqC,CAAC;AACpK,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,aAAa;AACpC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,2BAA2B,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1J,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,YAAY;AACnC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxE,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,SAAS;AAChC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,2BAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5G,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,cAAc;AACrC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtH,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,cAAc;AACrC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,2BAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5G,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,eAAe;AACtC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,2BAA2B,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1J,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,iBAAiB;AACxC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,gCAAgC,EAAE,SAAS,CAAC,0CAA0C,EAAE,SAAS,CAAC,gCAAgC,EAAE,SAAS,CAAC,0CAA0C,CAAC;AAChQ,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,gBAAgB;AACvC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,SAAS,CAAC,qCAAqC,CAAC;AACpK,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,mBAAmB;AAC1C,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxE,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,kBAAkB;AACzC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,2BAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5G,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,qBAAqB;AAC5C,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,qCAAqC,EAAE,SAAS,CAAC,qCAAqC,EAAE,SAAS,CAAC,qCAAqC,EAAE,SAAS,CAAC,qCAAqC,CAAC;AAChQ,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,6BAA6B;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,SAAS,CAAC,qCAAqC,CAAC;AACpK,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,oBAAoB;AAC3C,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxE,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,eAAe;AACtC,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,qCAAqC,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpK,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ,QAAQ,KAAK,SAAS,CAAC,sBAAsB;AAC7C;AACA,YAAY,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,SAAS,CAAC,2BAA2B,EAAE,SAAS,CAAC,qCAAqC,EAAE,CAAC,EAAE,SAAS,CAAC,qCAAqC,CAAC;AACxM,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI;AAC9C,YAAY;AACZ;AACA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC7B,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,CAAC;AAC5D,QAAQ,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,CAAC;AACxF;AACA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI;AAC1B,IAAI,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AAC/E,IAAI,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC;AACxI,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,QAAQ,EAAE;AAClE,IAAI,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AAClE,IAAI,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC;AACxI,CAAC;;ACjGD,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,yBAAyB,EAAE,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,KAAK,EAAE;AACvO,IAAI,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC,iCAAiC;AAChF,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM;AAC/B,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK;AACzB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAI,OAAO,CAAC,eAAe,GAAG,eAAe;AAC7C,IAAI,OAAO,CAAC,YAAY,GAAG,YAAY;AACvC,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO;AAC7B,IAAI,OAAO,CAAC,YAAY,GAAG,WAAW;AACtC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI;AACvB,IAAI,OAAO,CAAC,cAAc,GAAG,aAAa;AAC1C,IAAI,OAAO,CAAC,cAAc,GAAG,aAAa;AAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACvC,QAAQ,OAAO,CAAC,WAAW,GAAG,IAAI;AAClC;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;AAC5G,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC;AAC3F,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7C,IAAI,OAAO,OAAO;AAClB,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC,yBAAyB,EAAE,aAAa,GAAG,KAAK,EAAE;AACrL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ;AACR;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACvC,QAAQ,OAAO,CAAC,WAAW,GAAG,UAAU;AACxC,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO;AACjC,QAAQ,OAAO,CAAC,YAAY,GAAG,WAAW;AAC1C,QAAQ,OAAO,CAAC,cAAc,GAAG,aAAa;AAC9C;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AAC1D,QAAQ,MAAM,cAAc,GAAG,MAAM,KAAK,SAAS,CAAC,iBAAiB;AACrE,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,UAAU,GAAG,4BAA4B,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AACtG;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;AACpG,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5J,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE;AACrC,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAC/D;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;AAC1B,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAG,IAAI,EAAE;AAClJ,IAAI,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC,qCAAqC;AACpF,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE;AACzF,QAAQ,eAAe,GAAG,KAAK;AAC/B,QAAQ,YAAY,GAAG,SAAS,CAAC,4BAA4B;AAC7D,QAAQ,MAAM,CAAC,IAAI,CAAC,mJAAmJ,CAAC;AACxK;AACA,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,+BAA+B,EAAE;AACvG,QAAQ,eAAe,GAAG,KAAK;AAC/B,QAAQ,YAAY,GAAG,SAAS,CAAC,4BAA4B;AAC7D,QAAQ,MAAM,CAAC,IAAI,CAAC,wJAAwJ,CAAC;AAC7K;AACA,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;AACrF,QAAQ,eAAe,GAAG,KAAK;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC;AACpG;AACA,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACxF,QAAQ,eAAe,GAAG,KAAK;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC;AACzG;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;AACzB,IAAI,OAAO,CAAC,eAAe,GAAG,MAAM;AACpC,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,kBAAkB,GAAG,MAAM;AACnG,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI;AACvB,IAAI,OAAO,CAAC,eAAe,GAAG,eAAe;AAC7C,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI;AACxB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;AACzB,IAAI,OAAO,CAAC,YAAY,GAAG,YAAY;AACvC,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACvC,QAAQ,OAAO,CAAC,gBAAgB,GAAG,IAAI;AACvC;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO;AAC7B,IAAI,OAAO,CAAC,YAAY,GAAG,WAAW;AACtC,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,yBAAyB;AAC9D,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,yBAAyB;AAC9D,IAAI,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,CAAC;AACnE,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,iBAAiB,EAAE;AAChD,QAAQ,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AAC1D,QAAQ,iBAAiB,CAAC,oBAAoB,GAAG,IAAI;AACrD;AACA,IAAI,IAAI,IAAI,EAAE;AACd,QAAQ,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC;AACpF;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;AAC1B,IAAI,OAAO,OAAO;AAClB,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE;AAC7H,IAAI,OAAO,CAAC,gBAAgB,GAAG,UAAU;AACzC,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO;AAC7B,IAAI,OAAO,CAAC,YAAY,GAAG,WAAW;AACtC,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AACtD,IAAI,MAAM,cAAc,GAAG,iBAAiB,CAAC,oBAAoB;AACjE,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,MAAM,IAAI,GAAG,EAAE;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAChD,QAAQ,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,QAAQ,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AAClG;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5F;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACrK,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE;AACjC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAC3D;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;AAC1B,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,2BAA2B,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,8BAA8B,EAAE,OAAO,GAAG,KAAK,EAAE;AACjP,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC;AAC/G,IAAI,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC;AAClC,IAAI,OAAO,CAAC,GAAG,GAAG,GAAG;AACrB,IAAI,OAAO,CAAC,OAAO,GAAG,KAAK;AAC3B,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK;AAC5C,QAAQ,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC;AACzC,QAAQ,IAAI,OAAO,IAAI,OAAO,EAAE;AAChC,YAAY,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;AACzE;AACA,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,CAAC,IAAI,KAAK;AACvC,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AACnC,QAAQ,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,YAAY;AACZ;AACA,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,MAAM,cAAc,GAAG,MAAM,KAAK,SAAS,CAAC,iBAAiB;AACzE,YAAY,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC;AAC3D,YAAY,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AAC9D,YAAY,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5C,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjE,gBAAgB,MAAM,OAAO,GAAG,KAAK,IAAI,KAAK;AAC9C,gBAAgB,MAAM,QAAQ,GAAG,EAAE;AACnC,gBAAgB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;AACpE,oBAAoB,IAAI,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACtE,oBAAoB,IAAI,cAAc,EAAE;AACxC,wBAAwB,WAAW,GAAG,4BAA4B,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AACvG;AACA,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;AACrH;AACA,gBAAgB,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACxK;AACA;AACA,aAAa;AACb,YAAY,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;AACrF;AACA,QAAQ,OAAO,CAAC,OAAO,GAAG,IAAI;AAC9B,QAAQ,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC;AACzC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,MAAM,EAAE;AACpB;AACA,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK;AAClC,QAAQ,gBAAgB,CAAC,IAAI,CAAC;AAC9B,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC;AACxD,IAAI,OAAO,OAAO;AAClB,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAG,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC,yBAAyB,EAAE,aAAa,GAAG,CAAC,EAAE;AAChO,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;AACrD,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM;AAC/B,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK;AACzB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK;AACzB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAI,OAAO,CAAC,IAAI,GAAG,WAAW;AAC9B,IAAI,OAAO,CAAC,eAAe,GAAG,eAAe;AAC7C,IAAI,OAAO,CAAC,YAAY,GAAG,YAAY;AACvC,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI;AACvB,IAAI,OAAO,CAAC,cAAc,GAAG,aAAa;AAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACvC,QAAQ,OAAO,CAAC,WAAW,GAAG,IAAI;AAClC;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;AAC5G,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;AACrF,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7C,IAAI,OAAO,OAAO;AAClB,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC,yBAAyB,EAAE;AACvK,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACvC,QAAQ,OAAO,CAAC,WAAW,GAAG,UAAU;AACxC,QAAQ,OAAO,CAAC,MAAM,GAAG,MAAM;AAC/B,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO;AACjC,QAAQ,OAAO,CAAC,YAAY,GAAG,WAAW;AAC1C;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AAC1D,QAAQ,MAAM,cAAc,GAAG,MAAM,KAAK,SAAS,CAAC,iBAAiB;AACrE,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,UAAU,GAAG,4BAA4B,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC;AAC7G;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;AACpG,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5J,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE;AACrC,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAC/D;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;AAC1B,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAG,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC,yBAAyB,EAAE,aAAa,GAAG,CAAC,EAAE;AACrO,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;AACrD,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM;AAC/B,IAAI,OAAO,CAAC,SAAS,GAAG,KAAK;AAC7B,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK;AACzB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK;AACzB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;AAC3B,IAAI,OAAO,CAAC,IAAI,GAAG,WAAW;AAC9B,IAAI,OAAO,CAAC,eAAe,GAAG,eAAe;AAC7C,IAAI,OAAO,CAAC,YAAY,GAAG,YAAY;AACvC,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI;AAC5B,IAAI,OAAO,CAAC,cAAc,GAAG,aAAa;AAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACvC,QAAQ,OAAO,CAAC,WAAW,GAAG,IAAI;AAClC;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;AACxG,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;AAC1F,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7C,IAAI,OAAO,OAAO;AAClB,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,uBAAuB,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC,yBAAyB,EAAE;AAC5K,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACvC,QAAQ,OAAO,CAAC,WAAW,GAAG,UAAU;AACxC,QAAQ,OAAO,CAAC,MAAM,GAAG,MAAM;AAC/B,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO;AACjC,QAAQ,OAAO,CAAC,YAAY,GAAG,WAAW;AAC1C;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AAC1D,QAAQ,MAAM,cAAc,GAAG,MAAM,KAAK,SAAS,CAAC,iBAAiB;AACrE,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,UAAU,GAAG,4BAA4B,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC;AAC7G;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;AACpG,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5J,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE;AACrC,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAC/D;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,4BAA4B,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE;AAC3E;AACA,IAAI,IAAI,QAAQ;AAChB,IAAI,IAAI,IAAI,GAAG,CAAC;AAChB,IAAI,IAAI,WAAW,KAAK,SAAS,CAAC,iBAAiB,EAAE;AACrD,QAAQ,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACvD;AACA,SAAS,IAAI,WAAW,KAAK,SAAS,CAAC,sBAAsB,EAAE;AAC/D,QAAQ,QAAQ,GAAG,IAAI,WAAW,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACtD,QAAQ,IAAI,GAAG,KAAK,CAAC;AACrB;AACA,SAAS,IAAI,WAAW,KAAK,SAAS,CAAC,4BAA4B,EAAE;AACrE,QAAQ,QAAQ,GAAG,IAAI,WAAW,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACtD;AACA,SAAS;AACT,QAAQ,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACrD;AACA;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACpC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAY,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AAC7C,YAAY,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AAChD;AACA,YAAY,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AACvD,YAAY,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AACvD,YAAY,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;AACvD;AACA,YAAY,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI;AACzC;AACA;AACA,IAAI,OAAO,QAAQ;AACnB;;ACjSA,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,gBAAgB,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAC1L,IAAI,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AACtD,IAAI,IAAI,aAAa,EAAE;AACvB,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B;AACA,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC;AAC1K,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG,YAAY;AAChE;AACA,IAAI,MAAM,kDAAkD;AAC5D,CAAC;;ACPD,gBAAgB,CAAC,SAAS,CAAC,8BAA8B,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AACrF,IAAI,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,GAAG,EAAE,4CAA4C,EAAE,mCAAmC;AACnK,IAAI,eAAe,CAAC,MAAM,GAAG,IAAI;AACjC,IAAI,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AACzC,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,iBAAiB,EAAE,KAAK;AAChC,QAAQ,kBAAkB,EAAE,CAAC;AAC7B,QAAQ,eAAe,EAAE,KAAK;AAC9B,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,kBAAkB,EAAE,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,8BAA8B,GAAG,SAAS,CAAC,2BAA2B;AACtI,QAAQ,GAAG,OAAO;AAClB,KAAK;AACL,IAAI,eAAe,CAAC,MAAM,GAAG,eAAe,CAAC,kBAAkB;AAC/D,IAAI,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,IAAI,EAAE,eAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC;AACzJ,IAAI,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,eAAe,CAAC;AAC3E;AACA,IAAI,MAAM,iBAAiB,GAAG,eAAe,CAAC,gBAAgB;AAC9D,IAAI,eAAe,CAAC,IAAI,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACjG,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC;AACrD,IAAI,OAAO,eAAe;AAC1B,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,EAAE,iBAAiB,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,aAAa,EAAE,aAAa,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;AACvR,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK;AAC9L,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC;AAClC,QAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;AAC3C,QAAQ,MAAM,MAAM,GAAG,KAAK;AAC5B,QAAQ,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;AACzD,QAAQ,OAAO,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;AACrC,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AAChH,QAAQ,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/J,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAC/D;AACA,QAAQ,OAAO,CAAC,OAAO,GAAG,IAAI;AAC9B,QAAQ,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC;AAC3D,QAAQ,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC1C,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,MAAM,EAAE;AACpB;AACA,KAAK,EAAE,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC;AAC/B,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,wBAAwB,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE;AAC/F,IAAI,OAAO,CAAC,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC,8BAA8B,GAAG,SAAS,CAAC,6BAA6B;AAC1H,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,yBAAyB;AAC9D,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,yBAAyB;AAC9D,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,OAAO,CAAC,YAAY,GAAG,QAAQ;AACvC;AACA,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,yBAAyB,GAAG,UAAU,OAAO,EAAE;AAC1E,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE;AACjC,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,kBAAkB;AACvE,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,CAAC;AAC3E;AACA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACtC;AACA,CAAC;;AC3DD;AACA;AACA;AACO,MAAM,yBAAyB,SAAS,mBAAmB,CAAC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AACtD,QAAQ,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;AACnD,QAAQ,IAAI,MAAM,CAAC,2BAA2B,EAAE;AAChD,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,iBAAiB,EAAE;AACzD;AACA;AACA;;ACfA,gBAAgB,CAAC,SAAS,CAAC,kCAAkC,GAAG,UAAU,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;AACjG,IAAI,MAAM,SAAS,GAAG,IAAI,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AAChF,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC;AAClD,IAAI,OAAO,SAAS;AACpB,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,yBAAyB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AAChF,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;AACjF,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC9D,QAAQ,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe;AAC7D,QAAQ,WAAW,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,KAAK,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,mBAAmB;AACxH,QAAQ,WAAW,CAAC,qBAAqB,GAAG,WAAW,CAAC,mBAAmB,IAAI,OAAO,CAAC,qBAAqB;AAC5G,QAAQ,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS,GAAG,SAAS,CAAC,8BAA8B,GAAG,OAAO,CAAC,YAAY;AACvI,QAAQ,WAAW,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC;AAC9D,QAAQ,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB;AACnE,QAAQ,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe;AAC7D,QAAQ,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AAC7C,QAAQ,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AACzC,QAAQ,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AAC3C,QAAQ,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACvC;AACA,SAAS;AACT,QAAQ,WAAW,CAAC,eAAe,GAAG,OAAO;AAC7C,QAAQ,WAAW,CAAC,mBAAmB,GAAG,IAAI;AAC9C,QAAQ,WAAW,CAAC,qBAAqB,GAAG,KAAK;AACjD,QAAQ,WAAW,CAAC,YAAY,GAAG,SAAS,CAAC,8BAA8B;AAC3E,QAAQ,WAAW,CAAC,aAAa,GAAG,CAAC;AACrC,QAAQ,WAAW,CAAC,iBAAiB,GAAG,KAAK;AAC7C;AACA,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,KAAK,WAAW,CAAC,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,0CAA0C,CAAC;AAC5L,IAAI,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,qBAAqB;AAChE,IAAI,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC,eAAe,EAAE,OAAO,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC;AACzF,IAAI,SAAS,CAAC,oBAAoB,GAAG,WAAW,CAAC,mBAAmB;AACpE,IAAI,SAAS,CAAC,sBAAsB,GAAG,WAAW,CAAC,qBAAqB,GAAG,IAAI,GAAG,KAAK;AACvF,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;AAClC,IAAI,IAAI,SAAS,CAAC,oBAAoB,IAAI,SAAS,CAAC,sBAAsB,EAAE;AAC5E,QAAQ,SAAS,CAAC,yBAAyB,CAAC,CAAC,EAAE,KAAK;AACpD,QAAQ,SAAS,CAAC,sBAAsB,EAAE,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,qBAAqB,GAAG,SAAS,CAAC,8BAA8B,GAAG,SAAS,CAAC,2BAA2B,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;AACvP;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AACjD,QAAQ,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAC3H,YAAY,OAAO,CAAC,eAAe,GAAG,IAAI;AAC1C;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,aAAa,CAAC;AACnI,QAAQ,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAC3H,YAAY,OAAO,CAAC,eAAe,GAAG,KAAK;AAC3C;AACA;AACA,IAAI,OAAO,SAAS;AACpB,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,0BAA0B,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AAC1F,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,iBAAiB,EAAE,KAAK;AAChC,QAAQ,kBAAkB,EAAE,CAAC;AAC7B,QAAQ,eAAe,EAAE,KAAK;AAC9B,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,kBAAkB,EAAE,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,8BAA8B,GAAG,SAAS,CAAC,2BAA2B;AACtI,QAAQ,GAAG,OAAO;AAClB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,eAAe,CAAC,kBAAkB,KAAK,SAAS,CAAC,mCAAmC;AAC3G,QAAQ,eAAe,CAAC,kBAAkB,KAAK,SAAS,CAAC,8BAA8B;AACvF,QAAQ,eAAe,CAAC,kBAAkB,KAAK,SAAS,CAAC,mCAAmC;AAC5F,IAAI,OAAO,CAAC,+BAA+B,GAAG,UAAU;AACxD,IAAI,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,4CAA4C,EAAE,mCAAmC;AACtJ,IAAI,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AACzC,IAAI,eAAe,CAAC,MAAM,GAAG,eAAe,CAAC,kBAAkB;AAC/D,IAAI,eAAe,CAAC,IAAI,GAAG,sBAAsB,CAAC,eAAe,CAAC,MAAM,CAAC;AACzE,IAAI,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,IAAI,EAAE,eAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC;AACzJ,IAAI,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,eAAe,CAAC;AAC3E,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC;AACrD,IAAI,OAAO,eAAe;AAC1B,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,yBAAyB,GAAG,UAAU,eAAe,EAAE,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,OAAO,GAAG,CAAC,EAAE;AAC5I,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI;AACpC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI;AACtC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;AACnC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;AACjC,IAAI,eAAe,CAAC,SAAS,GAAG,KAAK;AACrC,IAAI,eAAe,CAAC,UAAU,GAAG,MAAM;AACvC,IAAI,eAAe,CAAC,KAAK,GAAG,KAAK;AACjC,IAAI,eAAe,CAAC,MAAM,GAAG,MAAM;AACnC,IAAI,eAAe,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC;AAC1C,IAAI,eAAe,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC;AACpC,IAAI,eAAe,CAAC,KAAK,GAAG,MAAM,IAAI,KAAK;AAC3C,IAAI,eAAe,CAAC,OAAO,GAAG,IAAI;AAClC,IAAI,eAAe,CAAC,OAAO,GAAG,OAAO;AACrC,IAAI,eAAe,CAAC,eAAe,GAAG,KAAK;AAC3C,IAAI,eAAe,CAAC,YAAY,GAAG,iBAAiB,GAAG,SAAS,CAAC,6BAA6B,GAAG,SAAS,CAAC,4BAA4B;AACvI,IAAI,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC,iBAAiB,CAAC;AACvD,IAAI,eAAe,CAAC,mBAAmB,GAAG,kBAAkB;AAC5D,IAAI,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC,yBAAyB;AACtE,IAAI,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC,yBAAyB;AACtE,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,oCAAoC,GAAG,UAAU,SAAS,EAAE,OAAO,EAAE;AAChG,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,KAAK,OAAO,EAAE;AAC3E,QAAQ,OAAO,OAAO;AACtB;AACA,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC;AAC9D,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;AACrE,IAAI,IAAI,SAAS,CAAC,oBAAoB,EAAE;AACxC,QAAQ,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC;AACtF,QAAQ,SAAS,CAAC,oBAAoB,CAAC,OAAO,GAAG,OAAO;AACxD;AACA,IAAI,SAAS,CAAC,QAAQ,GAAG,OAAO;AAChC,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO;AACvC,IAAI,OAAO,OAAO;AAClB,CAAC;;AC9GD,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/F,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAClD,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC;AACnE;AACA,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7D;AACA,CAAC;;ACLD,gBAAgB,CAAC,SAAS,CAAC,6BAA6B,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AACpF,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;AAChF,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,eAAe,EAAE,IAAI;AAC7B,QAAQ,mBAAmB,EAAE,IAAI;AACjC,QAAQ,qBAAqB,EAAE,KAAK;AACpC,QAAQ,IAAI,EAAE,SAAS,CAAC,yBAAyB;AACjD,QAAQ,YAAY,EAAE,SAAS,CAAC,8BAA8B;AAC9D,QAAQ,MAAM,EAAE,SAAS,CAAC,kBAAkB;AAC5C,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,GAAG,OAAO;AAClB,KAAK;AACL,IAAI,WAAW,CAAC,qBAAqB,GAAG,WAAW,CAAC,mBAAmB,IAAI,WAAW,CAAC,qBAAqB;AAC5G,IAAI,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,qBAAqB;AAChE,IAAI,SAAS,CAAC,oBAAoB,GAAG,WAAW,CAAC,mBAAmB;AACpE,IAAI,SAAS,CAAC,sBAAsB,GAAG,WAAW,CAAC,qBAAqB;AACxE,IAAI,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC,0CAA0C;AACzF,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI;AACxB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;AACzB,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC;AACrB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI;AAC1B,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;AACzB,IAAI,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO;AACzC,IAAI,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe;AACzD,IAAI,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY;AACnD,IAAI,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;AACnC,IAAI,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AACvC,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7C,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;AAClC,IAAI,IAAI,SAAS,CAAC,oBAAoB,IAAI,SAAS,CAAC,sBAAsB,EAAE;AAC5E,QAAQ,SAAS,CAAC,yBAAyB,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,KAAK,SAAS;AACrF,YAAY,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,6BAA6B;AAChF,YAAY,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,qBAAqB;AACxE,YAAY,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,8BAA8B;AACjF,YAAY,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,+BAA+B;AAClF,YAAY,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,iCAAiC;AACpF,YAAY,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,gCAAgC;AACnF,YAAY,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,sBAAsB;AACzE,YAAY,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,gCAAgC,EAAE,SAAS,CAAC,sBAAsB,EAAE,SAAS,CAAC,OAAO,CAAC;AACzI;AACA,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAC1E,QAAQ,OAAO,CAAC,eAAe,GAAG,IAAI;AACtC;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,CAAC;AACnE,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAC1E,QAAQ,OAAO,CAAC,eAAe,GAAG,KAAK;AACvC;AACA,IAAI,OAAO,SAAS;AACpB,CAAC;;ACjDD;AACA;AACO,MAAM,qBAAqB,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,6BAA6B,GAAG,CAAC;AAC9C;AACA,QAAQ,IAAI,CAAC,0BAA0B,GAAG,KAAK;AAC/C;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACrC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,mBAAmB;AAC7D;AACA,QAAQ,IAAI,CAAC,2BAA2B,GAAG,YAAY,CAAC,qCAAqC;AAC7F;AACA,QAAQ,IAAI,CAAC,0BAA0B,GAAG,KAAK;AAC/C;AACA;AACA,cAAc,CAAC,SAAS,CAAC,sBAAsB,GAAG,YAAY;AAC9D,IAAI,OAAO,IAAI;AACf,CAAC;AACD,cAAc,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;AAChE;AACA,CAAC;AACD,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;AACnD,IAAI,OAAO,IAAI;AACf,CAAC;AACD,cAAc,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;AACxD;AACA,IAAI,OAAO,IAAI;AACf,CAAC;AACD,cAAc,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,KAAK,EAAE;AACnE;AACA,IAAI,OAAO,KAAK;AAChB,CAAC;AACD,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;AAC3D;AACA,IAAI,OAAO,CAAC;AACZ,CAAC;AACD,cAAc,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,aAAa,EAAE,KAAK,EAAE;AAC/E;AACA,IAAI,OAAO,KAAK;AAChB,CAAC;AACD,cAAc,CAAC,SAAS,CAAC,iBAAiB,GAAG,UAAU,aAAa,EAAE;AACtE;AACA,IAAI,OAAO,IAAI;AACf,CAAC;AACD,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,4BAA4B,EAAE;AAC5E,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,0BAA0B;AACpE,KAAK;AACL,IAAI,GAAG,EAAE,UAAU,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,GAAG,KAAK;AACrE,KAAK;AACL,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,uBAAuB,EAAE;AACvE,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC1C,YAAY,IAAI,CAAC,sBAAsB,GAAG,IAAI,qBAAqB,EAAE;AACrE;AACA,QAAQ,OAAO,IAAI,CAAC,sBAAsB;AAC1C,KAAK;AACL,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE;AAC5D,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU;AACpD,KAAK;AACL,IAAI,GAAG,EAAE,UAAU,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,qBAAqB,CAAC,UAAU,GAAG,KAAK;AACrD,KAAK;AACL,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,6BAA6B,EAAE;AAC7E,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,2BAA2B;AACrE,KAAK;AACL,IAAI,GAAG,EAAE,UAAU,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,GAAG,KAAK;AACtE,KAAK;AACL,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE;AAC/D,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,aAAa;AACvD,KAAK;AACL,IAAI,GAAG,EAAE,UAAU,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,KAAK;AACxD,KAAK;AACL,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,qBAAqB,EAAE;AACrE,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,mBAAmB;AAC7D,KAAK;AACL,IAAI,GAAG,EAAE,UAAU,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,GAAG,KAAK;AAC9D,KAAK;AACL,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,4BAA4B,EAAE;AAC5E,IAAI,GAAG,EAAE,YAAY;AACrB,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,0BAA0B;AACpE,KAAK;AACL,IAAI,GAAG,EAAE,UAAU,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,GAAG,KAAK;AACrE,KAAK;AACL,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,YAAY,EAAE,IAAI;AACtB,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;AAC1D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB;AAClD,IAAI,IAAI,WAAW,CAAC,aAAa,KAAK,YAAY,CAAC,mBAAmB,EAAE;AACxE,QAAQ,WAAW,CAAC,UAAU,GAAG,KAAK;AACtC,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AACnC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,qBAAqB,EAAE;AACjD,QAAQ,WAAW,CAAC,UAAU,GAAG,KAAK;AACtC,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;AACxC;AACA,QAAQ,WAAW,CAAC,UAAU,GAAG,KAAK;AACtC,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;AAChH,QAAQ,MAAM,yBAAyB,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7F,QAAQ,IAAI,yBAAyB,EAAE;AACvC,YAAY,MAAM,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;AACpF,YAAY,WAAW,CAAC,0BAA0B,GAAG,KAAK;AAC1D,YAAY,WAAW,CAAC,6BAA6B,GAAG,CAAC;AACzD,YAAY,WAAW,CAAC,UAAU,GAAG,oBAAoB,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI;AAC5E;AACA,aAAa;AACb,YAAY,WAAW,CAAC,6BAA6B,EAAE;AACvD,YAAY,IAAI,WAAW,CAAC,mBAAmB,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,6BAA6B,GAAG,WAAW,CAAC,mBAAmB,EAAE;AACvI,gBAAgB,WAAW,CAAC,0BAA0B,GAAG,KAAK;AAC9D,gBAAgB,WAAW,CAAC,6BAA6B,GAAG,CAAC;AAC7D;AACA;AACA,gBAAgB,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,aAAa,KAAK,YAAY,CAAC,yBAAyB,GAAG,KAAK,GAAG,WAAW,CAAC,UAAU;AAC9I;AACA,iBAAiB;AACjB,gBAAgB,OAAO,WAAW,CAAC,aAAa,KAAK,YAAY,CAAC,yBAAyB,GAAG,KAAK,GAAG,WAAW,CAAC,UAAU;AAC5H;AACA;AACA;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,IAAI,IAAI,KAAK,CAAC,sBAAsB,EAAE;AACtC,QAAQ,MAAM,4BAA4B,GAAG,KAAK,CAAC,sBAAsB,EAAE;AAC3E,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AAC3C,YAAY,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE;AACvD;AACA,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,2BAA2B,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE;AAC/H,YAAY,4BAA4B,CAAC,0BAA0B,CAAC,IAAI,CAAC;AACzE,YAAY,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,2BAA2B,CAAC;AAC7E,YAAY,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,GAAG,IAAI;AACxE;AACA;AACA,IAAI,OAAO,WAAW,CAAC,UAAU;AACjC,CAAC;;AC1KD,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG,YAAY;AAChE,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB;AACnD,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAK,EAAE;AAClE,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;AAClE,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;AACrD,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AAC7C,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAK,EAAE;AAC1D,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3C,IAAI,OAAO,IAAI;AACf,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,KAAK,EAAE;AACrE,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAC7D,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE;AAC7D,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC;AACrD,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,aAAa,EAAE,KAAK,EAAE;AACjF,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AACvD,YAAY,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,KAAK,CAAC;AAC/D,YAAY,OAAO,IAAI;AACvB;AACA;AACA,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,mCAAmC,CAAC,KAAK,CAAC,CAAC;AAChF,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,OAAO,KAAK;AAChB,CAAC;AACD,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG,YAAY;AAC3D,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAQ,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,EAAE;AACpD;AACA,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,iCAAiC,EAAE,CAAC;AACzE;AACA,IAAI,OAAO,IAAI;AACf,CAAC;;AC3CD;AAyDA,MAAM,mCAAmC,GAAG;AAC5C,IAAI,KAAK,EAAE,CAAC,mCAAmC,CAAC;AAChD,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,aAAa,EAAE,CAAC;AACpB,IAAI,eAAe,EAAE,CAAC;AACtB,CAAC;AACD,MAAM,uBAAuB,GAAG;AAChC,IAAI,KAAK,EAAE,CAAC,qBAAqB,CAAC;AAClC,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,aAAa,EAAE,CAAC;AACpB,IAAI,eAAe,EAAE,CAAC;AACtB,CAAC;AACD,MAAM,UAAU,GAAG,IAAI,MAAM,EAAE;AAC/B;AACA;AACA;AACA;AACO,MAAM,YAAY,SAAS,gBAAgB,CAAC;AACnD;AACA;AACA;AACA,IAAI,IAAI,qBAAqB,GAAG;AAChC,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI;AAC3C;AACA,IAAI,IAAI,qBAAqB,CAAC,IAAI,EAAE;AACpC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,IAAI;AAC3C;AACA;AACA;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO;AAC9C;AACA,IAAI,IAAI,iBAAiB,CAAC,QAAQ,EAAE;AACpC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,QAAQ;AAClD;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK;AACvE;AACA,IAAI,IAAI,oBAAoB,CAAC,OAAO,EAAE;AACtC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,2BAA2B,GAAG;AACtC,QAAQ,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,KAAK;AACrF;AACA,IAAI,IAAI,2BAA2B,CAAC,OAAO,EAAE;AAC7C,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,KAAK;AAC7E;AACA,IAAI,IAAI,sBAAsB,CAAC,OAAO,EAAE;AACxC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,OAAO,IAAI;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,OAAO,aAAa,CAAC,IAAI,CAAC;AAClC;AACA;AACA;AACA;AACA,IAAI,WAAW,gBAAgB,GAAG;AAClC,QAAQ,OAAO,CAAC,SAAS,CAAC;AAC1B,cAAc,OAAO,CAAC,OAAO,CAAC,KAAK;AACnC,cAAc,SAAS,CAAC;AACxB,iBAAiB,cAAc;AAC/B,iBAAiB,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACzD,iBAAiB,KAAK,CAAC,MAAM,KAAK,CAAC;AACnC;AACA;AACA;AACA;AACA,IAAI,WAAW,WAAW,GAAG;AAC7B,QAAQ,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC;AACjE,QAAQ,OAAO,KAAK;AACpB;AACA;AACA;AACA;AACA,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI;AACnB;AACA;AACA,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,2BAA2B;AAC/C;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,wBAAwB;AAC5C;AACA;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,uBAAuB;AAC3C;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;AACpD,QAAQ,OAAO,WAAW;AAC1B;AACA;AACA;AACA;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,gBAAgB;AAChE,YAAY,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,kBAAkB;AAC1E,YAAY,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,iBAAiB;AACvE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,kBAAkB;AACtC;AACA,IAAI,IAAI,iBAAiB,CAAC,IAAI,EAAE;AAChC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACtC;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AAC7C,QAAQ,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;AACxD,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACxC,YAAY,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AACtG,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AACtC,QAAQ,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE,OAAO,CAAC;AACjD;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1B;AACA,QAAQ,IAAI,CAAC,wBAAwB,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3D,QAAQ,IAAI,CAAC,wBAAwB,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3D;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,CAAC;AACjC;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,CAAC;AACxC;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAQ,IAAI,CAAC,6BAA6B,GAAG,KAAK;AAClD,QAAQ,IAAI,CAAC,YAAY,GAAG;AAC5B,YAAY,MAAM,EAAE,EAAE;AACtB,YAAY,YAAY,EAAE,EAAE;AAC5B,YAAY,MAAM,EAAE,EAAE;AACtB,YAAY,WAAW,EAAE,EAAE;AAC3B,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE;AACzC;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG;AACzB,YAAY,gBAAgB,EAAE,CAAC;AAC/B,YAAY,oBAAoB,EAAE,CAAC;AACnC,YAAY,8BAA8B,EAAE,CAAC;AAC7C,YAAY,2BAA2B,EAAE,CAAC;AAC1C,SAAS;AACT;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG;AACjC,YAAY,gBAAgB,EAAE,CAAC;AAC/B,YAAY,oBAAoB,EAAE,CAAC;AACnC,YAAY,8BAA8B,EAAE,CAAC;AAC7C,YAAY,2BAA2B,EAAE,CAAC;AAC1C,SAAS;AACT;AACA;AACA;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,EAAE;AACxC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,EAAE;AACzC,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3C;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG;AACtC,YAAY,oBAAoB,EAAE,IAAI;AACtC,YAAY,6BAA6B,EAAE,IAAI;AAC/C,YAAY,6BAA6B,EAAE,IAAI;AAC/C,YAAY,0BAA0B,EAAE,EAAE;AAC1C,YAAY,kBAAkB,EAAE,SAAS;AACzC,SAAS;AACT,QAAQ,IAAI,CAAC,qBAAqB,GAAG;AACrC,YAAY,oBAAoB,EAAE,IAAI;AACtC,YAAY,6BAA6B,EAAE,IAAI;AAC/C,YAAY,6BAA6B,EAAE,IAAI;AAC/C,YAAY,0BAA0B,EAAE,EAAE;AAC1C,YAAY,kBAAkB,EAAE,SAAS;AACzC,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,EAAE;AACvC,QAAQ,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACjD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,KAAK;AACvC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,KAAK;AACxC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACjD;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3D,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1D,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC3D,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,kBAAkB,EAAE;AAC3D,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ;AAC7B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,EAAE;AAC3C,QAAQ,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,EAAE;AACjE,QAAQ,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,IAAI,KAAK;AAC9E,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACxF,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;AAC5B,YAAY,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC;AACpE,YAAY;AACZ;AACA,QAAQ,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,SAAS,CAAC,GAAG,CAAC,wBAAwB,EAAE;AACrG,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAQ,IAAI,CAAC,mBAAmB,GAAG,QAAQ;AAC3C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM;AACtC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,QAAQ,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC;AACpF,QAAQ,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,EAAE;AAC9C,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC;AACA,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,yBAAyB,EAAE;AAC/D,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,yBAAyB,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE;AACjD,YAAY,IAAI,CAAC,6BAA6B,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAC1E,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK;AAC3G,oBAAoB,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC3C,oBAAoB,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE;AACzD,oBAAoB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM;AAC3G,wBAAwB,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACjE,wBAAwB,OAAO,EAAE;AACjC,qBAAqB,CAAC;AACtB,iBAAiB,CAAC;AAClB,aAAa,CAAC;AACd;AACA,QAAQ,OAAO,IAAI,CAAC,6BAA6B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE;AAC5C,QAAQ,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE;AAClD,QAAQ,IAAI,CAAC,eAAe,GAAG,cAAc;AAC7C,QAAQ,IAAI,CAAC,aAAa,GAAG,YAAY;AACzC,QAAQ,OAAO;AACf,aAAa,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ;AAC7C,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK;AAC/B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B;AACA,gBAAgB,MAAM,wDAAwD;AAC9E;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvC,gBAAgB,IAAI,CAAC,2BAA2B,GAAG,EAAE;AACrD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5G,gBAAgB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;AACnE,gBAAgB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;AACtD,gBAAgB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE;AAC7E,gBAAgB,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,2BAA2B,GAAG,SAAS,CAAC;AAC/J,gBAAgB,IAAI,gBAAgB,EAAE;AACtC,oBAAoB,MAAM,mBAAmB,GAAG,gBAAgB;AAChE,oBAAoB,MAAM,eAAe,GAAG,EAAE;AAC9C,oBAAoB,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE;AACjE,wBAAwB,IAAI,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AACxF,4BAA4B,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3D;AACA;AACA,oBAAoB,gBAAgB,CAAC,gBAAgB,GAAG,eAAe;AACvE;AACA,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;AACxF,oBAAoB,gBAAgB,CAAC,cAAc,GAAG,EAAE;AACxD,oBAAoB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACrE,wBAAwB,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,EAAE;AACtF;AACA,4BAA4B;AAC5B;AACA,wBAAwB,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAClG;AACA;AACA,gBAAgB,gBAAgB,CAAC,KAAK,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9E,gBAAgB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC;AACpE;AACA,SAAS;AACT,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK;AAC9B,YAAY,IAAI,CAAC,OAAO,GAAG,MAAM;AACjC,YAAY,IAAI,CAAC,wBAAwB,GAAG,EAAE;AAC9C,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpG,YAAY,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM;AAC9C,YAAY,IAAI,mBAAmB,GAAG,CAAC,CAAC;AACxC,YAAY,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,KAAK,KAAK;AACxE,gBAAgB,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACzE,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,mBAAmB,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChI;AACA,qBAAqB,IAAI,mBAAmB,EAAE,KAAK,IAAI,CAAC,sBAAsB,EAAE;AAChF,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,sBAAsB,CAAC,oEAAoE,CAAC,CAAC;AACjL;AACA,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/C,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK;AAClD,oBAAoB,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1C,wBAAwB;AACxB;AACA,oBAAoB,IAAI,CAAC,eAAe,GAAG,IAAI;AAC/C,oBAAoB,MAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAC/D,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC;AACtE,oBAAoB,IAAI,CAAC,8BAA8B,CAAC,YAAY;AACpE,wBAAwB,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;AAChF,wBAAwB,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AACxE,wBAAwB,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AAC9E,wBAAwB,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B;AAC5F,wBAAwB,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB;AAClF,wBAAwB,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B;AAC5F,wBAAwB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AACtJ,wBAAwB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB;AAC1E,wBAAwB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAClE,wBAAwB,IAAI,CAAC,oBAAoB,GAAG,oBAAoB;AACxE,wBAAwB,IAAI,CAAC,2BAA2B,GAAG,2BAA2B;AACtF,wBAAwB,IAAI,CAAC,sBAAsB,GAAG,sBAAsB;AAC5E,wBAAwB,IAAI,CAAC,2BAA2B,GAAG,2BAA2B;AACtF,wBAAwB,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACtD,qBAAqB,CAAC;AACtB,iBAAiB,CAAC;AAClB;AACA,SAAS;AACT,aAAa,IAAI,CAAC,MAAM;AACxB,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;AAC7E,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC;AAClI,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AACrE,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;AACrG,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AACpG,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,SAAS;AAC9I,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACjE,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,WAAW,CAAC;AACtH,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,WAAW,CAAC;AACjL,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,eAAe,CAAC;AACxL,YAAY,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACnD,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC/C,oBAAoB,IAAI,CAAC,MAAM,GAAG,CAAC;AACnC,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,qBAAqB,CAAC,CAAC;AAChG;AACA;AACA,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAClG,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAClG,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;AACtE,gBAAgB,MAAM,EAAE,CAAC;AACzB,gBAAgB,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAE,CAAC;AACvB,gBAAgB,KAAK,EAAE,mBAAmB;AAC1C,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,oBAAoB,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAChH,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC5F,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAClG,YAAY,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AACzE,YAAY,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,IAAI;AACpD,YAAY,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM;AAChE,YAAY,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,IAAI;AACpD,YAAY,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC;AACtE,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC9F,YAAY,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC/D,YAAY,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AAC/D,YAAY,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACvE,YAAY,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB;AACvE,YAAY,IAAI,CAAC,8BAA8B,EAAE;AACjD,YAAY,IAAI,CAAC,0BAA0B,EAAE;AAC7C,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,SAAS;AACT,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK;AAC1B,YAAY,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC;AACzF,YAAY,MAAM,CAAC;AACnB,SAAS,CAAC;AACV;AACA,IAAI,YAAY,CAAC,cAAc,EAAE;AACjC,QAAQ,cAAc,GAAG,cAAc,IAAI,EAAE;AAC7C,QAAQ,cAAc,GAAG;AACzB,YAAY,GAAG,YAAY,CAAC,sBAAsB;AAClD,YAAY,GAAG,cAAc;AAC7B,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC,OAAO,EAAE;AACpC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;AAC1D;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;AACxD;AACA,QAAQ,IAAI,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC9D,YAAY,OAAO,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM;AAClF,gBAAgB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACvF,aAAa,CAAC;AACd;AACA,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC;AACzD;AACA,IAAI,iBAAiB,GAAG;AACxB;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG;AACrB,YAAY,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,gCAAgC;AACtF,YAAY,0BAA0B,EAAE,IAAI,CAAC,aAAa,CAAC,gCAAgC;AAC3F,YAAY,6BAA6B,EAAE,IAAI,CAAC,aAAa,CAAC,gCAAgC,GAAG,CAAC;AAClG,YAAY,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,qBAAqB;AACpE,YAAY,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,qBAAqB;AAC3E,YAAY,oBAAoB,EAAE,IAAI,CAAC,aAAa,CAAC,qBAAqB;AAC1E,YAAY,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB;AACpE,YAAY,cAAc,EAAE,CAAC;AAC7B,YAAY,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,4BAA4B;AAC9E,YAAY,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,2BAA2B,GAAG,CAAC,CAAC;AACrG,YAAY,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,2BAA2B,GAAG,CAAC,CAAC;AACnG,YAAY,mBAAmB,EAAE,IAAI;AACrC,YAAY,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,0BAA0B,0DAA0D,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AACtK,YAAY,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,wBAAwB,wDAAwD,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAClK,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,0BAA0B,0DAA0D,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AACtK,YAAY,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,wBAAwB,wDAAwD,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS;AAChK,YAAY,aAAa,EAAE,EAAE;AAC7B,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,sBAAsB,EAAE,IAAI;AACxC,YAAY,4BAA4B,EAAE,IAAI;AAC9C,YAAY,gBAAgB,EAAE,IAAI;AAClC,YAAY,2BAA2B,EAAE,KAAK;AAC9C,YAAY,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,0BAA0B,2DAA2D,IAAI,CAAC;AACtK,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,2BAA2B,EAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,oBAAoB,qDAAqD,IAAI,CAAC;AAC7J,YAAY,kBAAkB,EAAE,IAAI;AACpC,YAAY,gBAAgB,EAAE,IAAI;AAClC,YAAY,+BAA+B,EAAE,IAAI;AACjD,YAAY,sBAAsB,EAAE,IAAI;AACxC,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,oBAAoB,EAAE,IAAI;AACtC,YAAY,qBAAqB,EAAE,IAAI;AACvC,YAAY,iBAAiB,EAAE,KAAK;AACpC,YAAY,eAAe,EAAE,IAAI;AACjC,YAAY,UAAU,EAAE,OAAO,cAAc,KAAK,WAAW,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,iBAAiB,kDAAkD,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS;AACpM,YAAY,qBAAqB,EAAE,OAAO,cAAc,KAAK,WAAW;AACxE,YAAY,4BAA4B,EAAE,IAAI;AAC9C,YAAY,SAAS,EAAE,KAAK;AAC5B,YAAY,eAAe,EAAE,KAAK;AAClC,YAAY,qBAAqB,EAAE,SAAS;AAC5C,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,cAAc,EAAE,CAAC;AAC7B,YAAY,kBAAkB,EAAE,IAAI;AACpC,YAAY,gBAAgB,EAAE,IAAI;AAClC,YAAY,qBAAqB,EAAE,IAAI;AACvC,YAAY,kBAAkB,EAAE,IAAI;AACpC,YAAY,yBAAyB,EAAE,KAAK;AAC5C,YAAY,eAAe,EAAE,IAAI;AACjC,YAAY,2BAA2B,EAAE,IAAI,CAAC,aAAa,CAAC,qBAAqB;AACjF,YAAY,yBAAyB,EAAE,KAAK;AAC5C,YAAY,aAAa,EAAE,KAAK;AAChC,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG;AACzB,YAAY,+BAA+B,EAAE,IAAI;AACjD,YAAY,yCAAyC,EAAE,IAAI;AAC3D,YAAY,0BAA0B,EAAE,IAAI;AAC5C,YAAY,qBAAqB,EAAE,IAAI;AACvC,YAAY,4BAA4B,EAAE,KAAK;AAC/C,YAAY,wBAAwB,EAAE,IAAI;AAC1C,YAAY,gBAAgB,EAAE,IAAI;AAClC,YAAY,4BAA4B,EAAE,IAAI;AAC9C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,aAAa,EAAE,KAAK;AAChC,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,+BAA+B,EAAE,IAAI;AACjD,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,6BAA6B,EAAE,IAAI;AAC/C,YAAY,yBAAyB,EAAE,IAAI;AAC3C,YAAY,sBAAsB,EAAE,KAAK;AACzC,YAAY,oBAAoB,EAAE,KAAK;AACvC,YAAY,kBAAkB,EAAE,KAAK;AACrC,YAAY,sBAAsB,EAAE,IAAI;AACxC,YAAY,8BAA8B,EAAE,IAAI;AAChD,YAAY,mBAAmB,EAAE,IAAI;AACrC,YAAY,uBAAuB,EAAE,IAAI;AACzC,YAAY,8CAA8C,EAAE,IAAI;AAChE,YAAY,sDAAsD,EAAE,IAAI;AACxE,YAAY,0BAA0B,EAAE,KAAK;AAC7C,SAAS;AACT;AACA,IAAI,8BAA8B,GAAG;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpC;AACA,YAAY,MAAM,wCAAwC;AAC1D;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC;AAClE,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;AACzD,QAAQ,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,GAAG,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAClG,QAAQ,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY;AAC5F,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzD;AACA;AACA,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,QAAQ,IAAI,CAAC,mBAAmB,GAAG;AACnC,YAAY,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC5C,YAAY,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC9C,YAAY,kBAAkB,EAAE,CAAC;AACjC,SAAS;AACT,QAAQ,MAAM,gBAAgB,GAAG,IAAI,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,gBAAgB,CAAC;AAC5E,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB,CAAC;AAChF,QAAQ,IAAI,oBAAoB;AAChC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACrC,YAAY,MAAM,qBAAqB,GAAG;AAC1C,gBAAgB,KAAK,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,CAAC;AAC5H,gBAAgB,IAAI,EAAE,IAAI,CAAC,mBAAmB;AAC9C,gBAAgB,aAAa,EAAE,CAAC;AAChC,gBAAgB,WAAW,EAAE,IAAI,CAAC,oBAAoB;AACtD,gBAAgB,SAAS,EAAE,IAAI;AAC/B,gBAAgB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;AACrD,gBAAgB,KAAK,EAAE,EAAE;AACzB,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;AACnC,gBAAgB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;AACrE;AACA,YAAY,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC;AACjF,YAAY,oBAAoB,GAAG;AACnC,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;AACvD,wBAAwB,KAAK,EAAE,oCAAoC;AACnE,wBAAwB,SAAS,EAAE,IAAI;AACvC,wBAAwB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;AAC7D,wBAAwB,aAAa,EAAE,CAAC;AACxC,wBAAwB,eAAe,EAAE,CAAC;AAC1C,qBAAqB,CAAC;AACtB,oBAAoB,UAAU,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,oBAAoB,MAAM,EAAE,OAAO;AACnC,oBAAoB,OAAO,EAAE,OAAO;AACpC,iBAAiB;AACjB,aAAa;AACb;AACA,aAAa;AACb,YAAY,oBAAoB,GAAG;AACnC,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,SAAS;AACnC,oBAAoB,UAAU,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,oBAAoB,MAAM,EAAE,OAAO;AACnC,oBAAoB,OAAO,EAAE,OAAO;AACpC,iBAAiB;AACjB,aAAa;AACb;AACA,QAAQ,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,GAAG,sBAAsB,2DAA2D,cAAc;AAC/K,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAChE,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzD,QAAQ,MAAM,sBAAsB,GAAG;AACvC,YAAY,KAAK,EAAE,CAAC,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAClH,YAAY,IAAI,EAAE,IAAI,CAAC,mBAAmB;AAC1C,YAAY,aAAa,EAAE,CAAC;AAC5B,YAAY,WAAW,EAAE,IAAI,CAAC,oBAAoB;AAClD,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,kBAAkB;AAClE,YAAY,KAAK,EAAE,EAAE;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,YAAY,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;AAClE;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC;AAC/E,QAAQ,MAAM,mBAAmB,GAAG;AACpC,YAAY,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAChD,gBAAgB,KAAK,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC1H,gBAAgB,SAAS,EAAE,IAAI;AAC/B,gBAAgB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AACjD,gBAAgB,aAAa,EAAE,CAAC;AAChC,gBAAgB,eAAe,EAAE,CAAC;AAClC,aAAa,CAAC;AACd,YAAY,eAAe,EAAE,IAAI,CAAC,gBAAgB;AAClD,YAAY,WAAW,EAAE,OAAO;AAChC,YAAY,YAAY,EAAE,OAAO;AACjC,YAAY,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;AACtD,YAAY,aAAa,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG,SAAS,GAAG,OAAO;AACtE,YAAY,cAAc,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG,SAAS,GAAG,OAAO;AACvE,SAAS;AACT,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,GAAG;AAC3D,YAAY,KAAK,EAAE,gBAAgB;AACnC,YAAY,gBAAgB,EAAE,oBAAoB;AAClD,YAAY,sBAAsB,EAAE,mBAAmB;AACvD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;AACjC,QAAQ,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACxD;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAChC,YAAY,MAAM,EAAE,IAAI,CAAC,OAAO;AAChC,YAAY,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;AACjD,YAAY,KAAK,EAAE,EAAE,uDAAuD,CAAC;AAC7E,YAAY,SAAS,EAAE,IAAI,CAAC,kBAAkB,GAAG,eAAe,uDAAuD,QAAQ;AAC/H,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE;AACxD,QAAQ,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,4BAA4B,CAAC,WAAW,EAAE,OAAO,EAAE;AACvD,QAAQ,OAAO,2BAA2B,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC;AACtE;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,kBAAkB,EAAE;AACzC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC;AACA,aAAa;AACb,YAAY,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,kBAAkB,EAAE;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,IAAI,CAAC,qBAAqB,GAAG,kBAAkB;AAC3D,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvC,gBAAgB,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,cAAc,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,eAAe,EAAE;AACzB;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,KAAK,CAAC,eAAe,EAAE;AAC/B,QAAQ,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1D;AACA,YAAY,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE;AACtE,gBAAgB,aAAa,CAAC,QAAQ,EAAE;AACxC;AACA;AACA;AACA,IAAI,8BAA8B,CAAC,UAAU,EAAE;AAC/C,QAAQ,6BAA6B,CAAC,UAAU,EAAE;AAClD,QAAQ,qBAAqB,CAAC,UAAU,EAAE;AAC1C;AACA,QAAQ,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK;AACxC,YAAY,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxC,gBAAgB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;AACjD,oBAAoB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;AACpD,oBAAoB,IAAI,CAAC,SAAS,EAAE;AACpC,wBAAwB;AACxB;AACA,oBAAoB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;AACrD,wBAAwB,OAAO,CAAC,aAAa,GAAG,EAAE;AAClD;AACA;AACA,gBAAgB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;AACxD,oBAAoB,QAAQ,CAAC,gBAAgB,EAAE,KAAK,EAAE;AACtD;AACA;AACA,SAAS;AACT,QAAQ,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAQ,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC;AACA,QAAQ,MAAM,OAAO,GAAG,EAAE;AAC1B,QAAQ,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1D,YAAY,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5D,gBAAgB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC3C;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,OAAO;AACtC,QAAQ,KAAK,CAAC,8BAA8B,CAAC,UAAU,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE;AACjD,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE;AACzD,YAAY,OAAO,KAAK;AACxB;AACA,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5E,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrF;AACA;AACA,QAAQ,IAAI,CAAC,0BAA0B,EAAE;AACzC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC;AACA,YAAY,IAAI,CAAC,sBAAsB,EAAE;AACzC;AACA,QAAQ,OAAO,IAAI;AACnB;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,cAAc,EAAE;AACxC,QAAQ,IAAI,cAAc,KAAK,CAAC,4BAA4B;AAC5D,YAAY,OAAO,IAAI,CAAC,oBAAoB;AAC5C;AACA,QAAQ,OAAO,IAAI,CAAC,gBAAgB;AACpC;AACA;AACA;AACA;AACA,IAAI,2BAA2B,CAAC,cAAc,EAAE,QAAQ,EAAE;AAC1D,QAAQ,OAAO,IAAI,6BAA6B,CAAC,cAAc,EAAE,QAAQ,CAAC;AAC1E;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACnE;AACA,YAAY,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;AACnG;AACA,aAAa,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAY,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC5C;AACA,QAAQ,OAAO,IAAI,CAAC,kBAAkB;AACtC;AACA;AACA,IAAI,4BAA4B,GAAG;AACnC,QAAQ,OAAO,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB;AACnG;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAC1C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,6BAA6B,IAAI,CAAC,UAAU,EAAE;AAC/D,YAAY;AACZ;AACA;AACA;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACtC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACjD,QAAQ,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC9D,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAC9C,YAAY,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC3C,YAAY,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM;AAChE,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACpC,YAAY,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,SAAS;AACjD,YAAY,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,aAAa;AACzD,YAAY,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC;AAChJ,YAAY,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACjE,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACpC;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI;AACxC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI;AACtC,QAAQ,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACjD;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM;AACtC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;AAChE;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,gBAAgB;AACpC;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5H,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC;AAC3J,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7D,YAAY,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7D,YAAY,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7D,YAAY,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7D;AACA,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,cAAc,CAAC,UAAU,EAAE;AAC/B,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AACpD,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AACpD,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACxC,YAAY,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClD;AACA,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,UAAU,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE;AACA,aAAa;AACb,YAAY,IAAI,CAAC,qBAAqB,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE;AACA,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5E,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,oBAAoB,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,yBAAyB;AACvE,oBAAoB,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,oBAAoB,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,oBAAoB,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,oBAAoB,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,oBAAoB,8BAA8B,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAClF,iBAAiB,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;AACnC,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,KAAK;AACtC,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,MAAM;AACvC;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACxH,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC;AACvJ,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3D;AACA,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,aAAa,CAAC,UAAU,EAAE;AAC9B,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AAC5I,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,UAAU,CAAC,OAAO,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACnI;AACA,aAAa;AACb,YAAY,IAAI,CAAC,qBAAqB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAC/H;AACA,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5E,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,oBAAoB,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,wBAAwB;AACtE,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC;AACzC,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC;AACzC,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC;AACzC,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC;AACzC,oBAAoB,8BAA8B,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAClF,iBAAiB,CAAC;AAClB;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;AACvI;AACA,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;AACvC,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK;AACrC,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM;AACtC;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC;AACzG,QAAQ,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC;AACjH;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,KAAK,IAAI,CAAC,mBAAmB;AACtF,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO;AACzE;AACA,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,gBAAgB,CAAC,UAAU,EAAE;AACjC,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,UAAU,CAAC,OAAO,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;AACvG;AACA,aAAa;AACb,YAAY,IAAI,CAAC,qBAAqB,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,IAAI,CAAC,CAAC;AACrG;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe;AAC3D,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACpE,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACzD,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACzD,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACzD,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;AACvD;AACA,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,gBAAgB,CAAC,UAAU,EAAE;AACjC,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,UAAU,CAAC,OAAO,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AACxG;AACA,aAAa;AACb,YAAY,IAAI,CAAC,qBAAqB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AAC3F;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC;AACrH,QAAQ,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC;AACjH,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE;AACrD;AACA,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS,EAAE;AAC5C,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC;AACvB;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAClD,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5E,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;AACvK;AACA;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC9C,oBAAoB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAClI;AACA,gBAAgB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACrF,gBAAgB,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC9E;AACA,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC7C,oBAAoB,IAAI,CAAC,qBAAqB,EAAE;AAChD;AACA,gBAAgB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,UAAU,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC7H;AACA;AACA,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,EAAE;AACzD,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AACjG;AACA,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACrF,gBAAgB,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAC9E;AACA;AACA;AACA,IAAI,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE;AACzD,QAAQ,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACxF,QAAQ,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;AACzD,QAAQ,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACvE,QAAQ,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,IAAI,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,IAAI,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;AACrL,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACrC,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC7F;AACA,aAAa;AACb,YAAY,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACnE;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACvH,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACrC,YAAY,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;AACnD,YAAY,IAAI,CAAC,eAAe,EAAE;AAClC;AACA,aAAa;AACb,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;AAChD,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,IAAI,YAAY,KAAK,EAAE;AACnC,YAAY,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AACzC;AACA,aAAa,IAAI,IAAI,YAAY,WAAW,EAAE;AAC9C,YAAY,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AACvC;AACA,aAAa;AACb,YAAY,IAAI,GAAG,IAAI;AACvB;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAEA,WAA2B,CAAC,MAAM,GAAGA,WAA2B,CAAC,OAAO,EAAE,KAAK,CAAC;AAClJ,QAAQ,OAAO,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3C,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;AAClD,QAAQ,IAAI,QAAQ,GAAG,IAAI;AAC3B,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,OAAO,YAAY,WAAW,IAAI,OAAO,YAAY,UAAU,EAAE;AAC7E,YAAY,IAAI,GAAG,OAAO;AAC1B;AACA,aAAa,IAAI,OAAO,YAAY,WAAW,EAAE;AACjD,YAAY,IAAI,GAAG,OAAO;AAC1B,YAAY,QAAQ,GAAG,KAAK;AAC5B;AACA,aAAa;AACb,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE;AACxC,gBAAgB,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;AAC/C;AACA,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;AAC/C,gBAAgB,QAAQ,GAAG,KAAK;AAChC;AACA;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAEA,WAA2B,CAAC,KAAK,GAAGA,WAA2B,CAAC,OAAO,EAAE,KAAK,CAAC;AACjJ,QAAQ,UAAU,CAAC,QAAQ,GAAG,QAAQ;AACtC,QAAQ,OAAO,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE;AAC/D,QAAQ,MAAM,SAAS,GAAG,WAAW;AACrC,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAE;AAClC,YAAY,IAAI,GAAG,OAAO,YAAY,WAAW,GAAG,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;AACtF;AACA,aAAa;AACb,YAAY,IAAI,GAAG,OAAO,YAAY,WAAW,GAAG,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;AACtF;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAyB,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE;AAC1E,QAAQ,MAAM,UAAU,GAAG,YAAY;AACvC,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,UAAU,GAAG,CAAC;AAC1B;AACA,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AAC7C;AACA,iBAAiB,IAAI,IAAI,YAAY,WAAW,EAAE;AAClD,gBAAgB,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AAC3C;AACA,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI;AAC3B;AACA,YAAY,UAAU,GAAG,IAAI,CAAC,UAAU;AACxC;AACA,aAAa;AACb,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AAC7C;AACA,iBAAiB,IAAI,IAAI,YAAY,WAAW,EAAE;AAClD,gBAAgB,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AAC3C;AACA,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI;AAC3B;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;AACnF;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;AAC9C,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,IAAI,YAAY,KAAK,EAAE;AACnC,YAAY,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AACzC;AACA,aAAa,IAAI,IAAI,YAAY,WAAW,EAAE;AAC9C,YAAY,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AACvC;AACA,aAAa;AACb,YAAY,IAAI,GAAG,IAAI;AACvB;AACA,QAAQ,IAAI,KAAK,GAAG,CAAC;AACrB,QAAQ,IAAI,aAAa,GAAG,SAAS,CAAC,wBAAwB,EAAE;AAChE,YAAY,KAAK,IAAIA,WAA2B,CAAC,OAAO;AACxD;AACA,QAAQ,IAAI,aAAa,GAAG,SAAS,CAAC,yBAAyB,EAAE;AACjE,YAAY,KAAK,IAAIA,WAA2B,CAAC,OAAO;AACxD;AACA,QAAQ,IAAI,aAAa,GAAG,SAAS,CAAC,2BAA2B,EAAE;AACnE,YAAY,KAAK,IAAIA,WAA2B,CAAC,OAAO;AACxD;AACA,QAAQ,IAAI,aAAa,GAAG,SAAS,CAAC,0BAA0B,EAAE;AAClE,YAAY,KAAK,IAAIA,WAA2B,CAAC,MAAM;AACvD;AACA,QAAQ,IAAI,aAAa,GAAG,SAAS,CAAC,yBAAyB,EAAE;AACjE,YAAY,KAAK,IAAIA,WAA2B,CAAC,KAAK;AACtD;AACA,QAAQ,IAAI,aAAa,GAAG,SAAS,CAAC,2BAA2B,EAAE;AACnE,YAAY,KAAK,IAAIA,WAA2B,CAAC,OAAO;AACxD;AACA,QAAQ,IAAI,aAAa,GAAG,SAAS,CAAC,4BAA4B,EAAE;AACpE,YAAY,KAAK,IAAIA,WAA2B,CAAC,QAAQ;AACzD;AACA,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;AACnE;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B;AACA,QAAQ,MAAM,2BAA2B;AACzC;AACA;AACA;AACA;AACA,IAAI,4BAA4B,GAAG;AACnC;AACA,QAAQ,MAAM,2BAA2B;AACzC;AACA;AACA;AACA;AACA,IAAI,wBAAwB,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,EAAE;AAC3E,QAAQ,IAAI,CAAC,mBAAmB,GAAG,WAAW;AAC9C,QAAQ,IAAI,CAAC,6BAA6B,GAAG,qBAAqB,IAAI,IAAI;AAC1E,QAAQ,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,6BAA6B,CAAC;AAC5G;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACzC,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,QAAQ,YAAY,KAAK,EAAE;AACvC,YAAY,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC;AAC7C;AACA,aAAa;AACb,YAAY,IAAI,GAAG,QAAQ;AAC3B;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,KAAK,CAAC;AACnJ,QAAQ,OAAO,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B,CAAC,QAAQ,EAAE,KAAK,EAAE;AAChD,QAAQ,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;AAChE,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AAClC,YAAY,MAAM,GAAG,CAAC;AACtB;AACA,QAAQ,MAAM,UAAU,GAAG,aAAa;AACxC,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,IAAI,QAAQ,YAAY,YAAY,EAAE;AAClD,gBAAgB,IAAI,GAAG,QAAQ;AAC/B;AACA,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC;AACjD;AACA,YAAY,KAAK,GAAG,IAAI,CAAC,UAAU;AACnC;AACA,aAAa;AACb,YAAY,IAAI,QAAQ,YAAY,YAAY,EAAE;AAClD,gBAAgB,IAAI,GAAG,QAAQ;AAC/B;AACA,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC;AACjD;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;AACnD,QAAQ,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;AACxD;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,QAAQ,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,GAAG,CAAC,4BAA4B,yBAAyB,EAAE;AACzN,QAAQ,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM;AAC3J,QAAQ,MAAM,QAAQ,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,QAAQ;AACrK,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACtD,QAAQ,IAAI,WAAW,GAAG,OAAO,IAAI,wBAAwB,CAAC,OAAO,IAAI,EAAE;AAC3E,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,WAAW,IAAI,IAAI,GAAG,aAAa;AAC/C;AACA,QAAQ,MAAM,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,WAAW;AAChE,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AACzC,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC9D,YAAY,IAAI,UAAU,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE;AACxD,gBAAgB,UAAU,CAAC,cAAc,CAAC;AAC1C;AACA,YAAY,cAAc,CAAC,SAAS,EAAE;AACtC,YAAY,OAAO,cAAc;AACjC;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,wBAAwB,CAAC,cAAc,IAAI,cAAc,EAAE,wBAAwB,CAAC,yBAAyB,IAAI,yBAAyB,CAAC;AACxT,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM;AAC5C,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE;AAC3C,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;AACtD;AACA,IAAI,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE;AAChE,QAAQ,OAAO,IAAI,CAAC,wBAAwB,CAAC,aAAa,IAAI,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC;AAC5G;AACA,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAC1C,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;AACpE;AACA,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB;AACA,QAAQ,OAAO,OAAO,GAAG,MAAM;AAC/B;AACA,IAAI,8BAA8B,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,iCAAiC,EAAE,mCAAmC,EAAE;AACzJ,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,cAAc,KAAK,CAAC,4BAA4B;AAC9E,YAAY,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,EAAE,iCAAiC,CAAC;AAC5G,YAAY,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,cAAc,EAAE,mCAAmC,CAAC;AAClH;AACA,QAAQ,OAAO;AACf,YAAY,WAAW,EAAE;AACzB,gBAAgB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACxD,oBAAoB,KAAK,EAAE,QAAQ;AACnC,oBAAoB,IAAI,EAAE,YAAY;AACtC,iBAAiB,CAAC;AAClB,gBAAgB,UAAU,EAAE,MAAM;AAClC,aAAa;AACb,YAAY,aAAa,EAAE;AAC3B,gBAAgB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACxD,oBAAoB,KAAK,EAAE,UAAU;AACrC,oBAAoB,IAAI,EAAE,cAAc;AACxC,iBAAiB,CAAC;AAClB,gBAAgB,UAAU,EAAE,MAAM;AAClC,aAAa;AACb,SAAS;AACT;AACA,IAAI,kCAAkC,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE;AACjF,QAAQ,MAAM,iCAAiC,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9F,QAAQ,MAAM,mCAAmC,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;AAClG,QAAQ,MAAM,YAAY,GAAG,cAAc,KAAK,CAAC,6BAA6B,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,UAAU;AAC9I,QAAQ,MAAM,cAAc,GAAG,cAAc,KAAK,CAAC,6BAA6B,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,YAAY;AACtJ,QAAQ,OAAO,IAAI,CAAC,8BAA8B,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,iCAAiC,EAAE,mCAAmC,CAAC;AACxK;AACA,IAAI,+BAA+B,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE;AACvF,QAAQ,IAAI,CAAC,mCAAmC,CAAC,eAAe,CAAC,IAAI,CAAC;AACtE,QAAQ,MAAM,iCAAiC,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9F,QAAQ,MAAM,mCAAmC,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;AAClG,QAAQ,MAAM,aAAa,GAAG,gBAAgB;AAC9C,QAAQ,MAAM,YAAY,GAAG,cAAc,KAAK,CAAC,6BAA6B,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC3M,QAAQ,MAAM,cAAc,GAAG,cAAc,KAAK,CAAC;AACnD,cAAc,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa;AACzF,cAAc,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC;AACpE,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,iCAAiC,EAAE,mCAAmC,CAAC;AACjL,QAAQ,IAAI,CAAC,kCAAkC,CAAC,eAAe,CAAC,IAAI,CAAC;AACrE,QAAQ,OAAO,OAAO;AACtB;AACA;AACA;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B;AACA,QAAQ,MAAM,yBAAyB;AACvC;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B;AACA,QAAQ,MAAM,yBAAyB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC;AAC/C,QAAQ,GAAG,CAAC,KAAK,GAAG,KAAK;AACzB,QAAQ,GAAG,CAAC,WAAW,EAAE;AACzB,QAAQ,OAAO,GAAG,CAAC,IAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,uBAAuB,EAAE;AACnD,QAAQ,OAAO,IAAI,qBAAqB,CAAC,uBAAuB,EAAE,IAAI,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,OAAO,IAAI,qBAAqB,EAAE;AAC1C;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC;AACzD;AACA;AACA;AACA;AACA,IAAI,MAAM,uBAAuB,CAAC,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,cAAc,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,OAAO,EAAE;AACtN,QAAQ,MAAM,aAAa,GAAG,eAAe;AAC7C,QAAQ,MAAM,cAAc,GAAG,aAAa,CAAC,uBAAuB,CAAC,cAAc;AACnF,QAAQ,IAAI,cAAc,KAAK,CAAC,8BAA8B,CAAC,IAAI,CAAC,6BAA6B,EAAE;AACnG,YAAY,MAAM,IAAI,CAAC,0BAA0B,EAAE;AACnD;AACA,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACxC,YAAY,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC1C,YAAY,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC;AACzE;AACA,QAAQ,aAAa,CAAC,OAAO,GAAG;AAChC,YAAY,QAAQ,EAAE,kBAAkB;AACxC,YAAY,MAAM,EAAE,gBAAgB;AACpC,YAAY,SAAS,EAAE,mBAAmB;AAC1C,YAAY,WAAW,EAAE,qBAAqB;AAC9C,SAAS;AACT,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,kCAAkC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,CAAC;AAChI;AACA,aAAa;AACb,YAAY,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,+BAA+B,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,CAAC;AACtI;AACA,QAAQ,OAAO,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE;AACpD,QAAQ,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;AACzD,QAAQ,MAAM,kBAAkB,GAAG,eAAe;AAClD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,YAAY,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,aAAa,CAAC;AACnH,YAAY,IAAI,iBAAiB,KAAK,SAAS,EAAE;AACjD,gBAAgB;AAChB;AACA,YAAY,OAAO,CAAC,CAAC,CAAC,GAAG,iBAAiB;AAC1C;AACA,QAAQ,OAAO,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,MAAM,EAAE;AACzB,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAChC,YAAY,IAAI,CAAC,cAAc,GAAG,MAAM;AACxC,YAAY,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB;AACvE,YAAY,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AAC/D,YAAY,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;AAC7C,YAAY,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7C,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,+EAA+E,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AACtU;AACA;AACA,aAAa,IAAI,CAAC,MAAM,CAAC,MAAM;AAC/B,aAAa,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc;AAClD,gBAAgB,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC,uBAAuB;AACvE,gBAAgB,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,mBAAmB;AAC/D,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAC3C,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtE,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACpD;AACA,gBAAgB,MAAM,6DAA6D;AACnF;AACA,YAAY;AACZ;AACA,aAAa;AACb,YAAY,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM;AAC/C,YAAY,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,eAAe;AACjE,YAAY,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,WAAW;AACzD,YAAY,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;AACjD,YAAY,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/C,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACpD;AACA,gBAAgB,MAAM,CAAC,oEAAoE,CAAC;AAC5F;AACA;AACA,QAAQ,IAAI,CAAC,qBAAqB,CAAC,eAAe,GAAG,SAAS;AAC9D,QAAQ,IAAI,CAAC,kBAAkB,GAAG,KAAK;AACvC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACxC,YAAY,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AAC3D;AACA,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;AACnD,YAAY,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;AACtF;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,MAAM,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAChD,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;AACrD,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAClD,YAAY,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE;AAC1F,YAAY,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC;AAC9D;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAClC;AACA,IAAI,sBAAsB,CAAC,eAAe,EAAE;AAC5C,QAAQ,MAAM,qBAAqB,GAAG,eAAe;AACrD,QAAQ,IAAI,qBAAqB,EAAE;AACnC,YAAY,mBAAmB,CAAC,qBAAqB,CAAC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,KAAK;AACpB;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC;AAC9C;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC;AAClE,QAAQ,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAC1B,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxD;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC;AACnD;AACA;AACA;AACA;AACA,IAAI,iCAAiC,GAAG;AACxC,QAAQ,OAAO,SAAS,CAAC,kBAAkB;AAC3C;AACA,IAAI,+BAA+B,CAAC,OAAO,EAAE,kBAAkB,EAAE;AACjE,QAAQ,OAAO,CAAC,mBAAmB,GAAG,kBAAkB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,uBAAuB,GAAG,IAAI,EAAE,MAAM,GAAG,CAAC,sCAAsC;AAC1H,QAAQ,MAAM,WAAW,GAAG,EAAE;AAC9B,QAAQ,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAClE,YAAY,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe;AACjE,YAAY,WAAW,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;AAC7D,YAAY,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,SAAS,CAAC,yBAAyB,GAAG,OAAO,CAAC,IAAI;AAC9G,YAAY,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS,GAAG,SAAS,CAAC,8BAA8B,GAAG,OAAO,CAAC,YAAY;AAC3I,YAAY,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM;AAC7G,YAAY,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC;AACtD,YAAY,WAAW,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC;AAClE,YAAY,WAAW,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK;AACtE,YAAY,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC7C;AACA,aAAa;AACb,YAAY,WAAW,CAAC,eAAe,GAAG,OAAO;AACjD,YAAY,WAAW,CAAC,IAAI,GAAG,SAAS,CAAC,yBAAyB;AAClE,YAAY,WAAW,CAAC,YAAY,GAAG,SAAS,CAAC,8BAA8B;AAC/E,YAAY,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,kBAAkB;AAC7D,YAAY,WAAW,CAAC,OAAO,GAAG,CAAC;AACnC,YAAY,WAAW,CAAC,aAAa,GAAG,CAAC;AACzC,YAAY,WAAW,CAAC,aAAa,GAAG,KAAK;AAC7C;AACA,QAAQ,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE;AACzG,YAAY,WAAW,CAAC,YAAY,GAAG,SAAS,CAAC,4BAA4B;AAC7E;AACA,aAAa,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,+BAA+B,EAAE;AACvH,YAAY,WAAW,CAAC,YAAY,GAAG,SAAS,CAAC,4BAA4B;AAC7E;AACA,QAAQ,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AAC1F,YAAY,WAAW,CAAC,IAAI,GAAG,SAAS,CAAC,yBAAyB;AAClE,YAAY,MAAM,CAAC,IAAI,CAAC,4EAA4E,CAAC;AACrG;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;AACzD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI;AACxC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI;AAC1C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;AACrC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;AACvC,QAAQ,OAAO,CAAC,SAAS,GAAG,KAAK;AACjC,QAAQ,OAAO,CAAC,UAAU,GAAG,MAAM;AACnC,QAAQ,OAAO,CAAC,KAAK,GAAG,KAAK;AAC7B,QAAQ,OAAO,CAAC,MAAM,GAAG,MAAM;AAC/B,QAAQ,OAAO,CAAC,KAAK,GAAG,KAAK,IAAI,MAAM;AACvC,QAAQ,OAAO,CAAC,OAAO,GAAG,IAAI;AAC9B,QAAQ,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO;AAC7C,QAAQ,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe;AAC/D,QAAQ,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY;AACvD,QAAQ,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;AACvC,QAAQ,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AAC3C,QAAQ,OAAO,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC;AACtC,QAAQ,OAAO,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC;AAChC,QAAQ,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,yBAAyB;AAClE,QAAQ,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,yBAAyB;AAClE,QAAQ,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC,aAAa;AAC1D,QAAQ,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;AACzC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AACjD,QAAQ,IAAI,CAAC,uBAAuB,EAAE;AACtC,YAAY,MAAM,iBAAiB,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,WAAW,CAAC,aAAa;AAC/F,YAAY,IAAI,iBAAiB,EAAE;AACnC;AACA,gBAAgB,OAAO,CAAC,eAAe,GAAG,IAAI;AAC9C;AACA,YAAY,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC;AAClI,YAAY,IAAI,iBAAiB,EAAE;AACnC;AACA,gBAAgB,OAAO,CAAC,eAAe,GAAG,KAAK;AAC/C;AACA;AACA,QAAQ,OAAO,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC,8BAA8B,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE;AACvQ,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,KAAK;AAC3L,YAAY,MAAM,WAAW,GAAG,GAAG,CAAC;AACpC,YAAY,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,KAAK;AACjD,YAAY,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM;AACnD,YAAY,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;AAC7C,YAAY,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AAC/C,YAAY,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC;AAC9G,YAAY,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,yBAAyB;AACnG,YAAY,OAAO,CAAC,cAAc,GAAG,aAAa,IAAI,CAAC;AACvD,YAAY,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AACtG,YAAY,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;AAC/D;AACA,gBAAgB,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;AAC1K,gBAAgB,IAAI,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;AACpE,oBAAoB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACvL,oBAAoB,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE;AACpD,wBAAwB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AAC3E;AACA;AACA;AACA,iBAAiB,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE;AACjD,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;AACnE;AACA,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAChD;AACA,YAAY,OAAO,CAAC,OAAO,GAAG,IAAI;AAClC,YAAY,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC;AAC/D,YAAY,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC9C,SAAS,EAAE,MAAM,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC/B,QAAQ,MAAM,eAAe,GAAG,IAAI,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC;AACxE,QAAQ,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC,sCAAsC,IAAI,CAAC;AACtG,QAAQ,eAAe,CAAC,gBAAgB,GAAG,eAAe;AAC1D,QAAQ,eAAe,CAAC,OAAO,GAAG,IAAI;AACtC,QAAQ,OAAO,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC;AAC5F;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,aAAa,EAAE,SAAS,EAAE;AAChD,QAAQ,OAAO,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB;AAC7D;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAyB,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK,EAAE;AAC9E,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,OAAO,CAAC,eAAe,GAAG,IAAI;AAC1C,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC1C;AACA,QAAQ,OAAO,CAAC,YAAY,GAAG,YAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAyB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE;AAC1E,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,OAAO,CAAC,YAAY,GAAG,KAAK;AACxC;AACA,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC5B,YAAY,OAAO,CAAC,YAAY,GAAG,KAAK;AACxC;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE;AACnE,YAAY,OAAO,CAAC,YAAY,GAAG,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE;AAC/D,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACvC;AACA,YAAY;AACZ;AACA,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;AAC7F,YAAY;AACZ;AACA,QAAQ,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,uBAAuB;AACjF,QAAQ,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC;AAC/G;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;AACjD,QAAQ,QAAQ,GAAG,QAAQ,IAAI,IAAI;AACnC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB;AAC9E,YAAY,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC9G,YAAY,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAClE,YAAY,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,eAAe,EAAE;AACtE,gBAAgB,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC,iBAAiB;AAC1E,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,4BAA4B,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAAE;AAC/J,QAAQ,MAAM,QAAQ,GAAG,CAAC,QAAQ,KAAK;AACvC,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,IAAI,MAAM,EAAE;AAC5B,oBAAoB,MAAM,CAAC,IAAI,CAAC;AAChC;AACA,gBAAgB;AAChB;AACA,YAAY,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC5C,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,gBAAgB,OAAO,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,EAAE;AACxE;AACA,iBAAiB,IAAI,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACxD,gBAAgB,OAAO,CAAC,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB;AAChF;AACA,YAAY,OAAO,CAAC,OAAO,GAAG,CAAC;AAC/B,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,MAAM,CAAC,OAAO,CAAC;AAC/B;AACA,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,CAAC;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/C,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC9D,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC;AAC7F;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO;AAChC;AACA,IAAI,oBAAoB,GAAG,KAAK,EAAE,mBAAmB,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE;AACpF;AACA;AACA;AACA;AACA,QAAQ,QAAQ,GAAG,QAAQ,IAAI,IAAI;AACnC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;AACnE,gBAAgB,OAAO,KAAK;AAC5B;AACA;AACA,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;AAC/B,gBAAgB,OAAO,CAAC,MAAM,EAAE;AAChC;AACA,iBAAiB,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,wBAAwB,EAAE;AACpF;AACA,gBAAgB,OAAO,CAAC,SAAS,EAAE;AACnC,gBAAgB,OAAO,KAAK;AAC5B;AACA,YAAY,IAAI,eAAe,GAAG,IAAI;AACtC,YAAY,IAAI,mBAAmB,EAAE;AACrC,gBAAgB,eAAe,GAAG,OAAO,CAAC,mBAAmB;AAC7D;AACA,iBAAiB,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;AACxC,gBAAgB,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE;AAC9D;AACA,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE;AACrC,gBAAgB,eAAe,GAAG,IAAI,CAAC,gBAAgB;AACvD;AACA,iBAAiB,IAAI,OAAO,CAAC,IAAI,EAAE;AACnC,gBAAgB,eAAe,GAAG,IAAI,CAAC,cAAc;AACrD;AACA,iBAAiB,IAAI,OAAO,CAAC,SAAS,EAAE;AACxC,gBAAgB,eAAe,GAAG,IAAI,CAAC,mBAAmB;AAC1D;AACA,iBAAiB;AACjB,gBAAgB,eAAe,GAAG,IAAI,CAAC,YAAY;AACnD;AACA,YAAY,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AACjE;AACA,gBAAgB,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,sBAAsB,KAAK,OAAO,CAAC,eAAe,EAAE;AAClH,oBAAoB,eAAe,CAAC,sBAAsB,GAAG,OAAO,CAAC,eAAe;AACpF,oBAAoB,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,kBAAkB,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC;AAC9I,0BAA0B,SAAS,CAAC;AACpC,0BAA0B,SAAS,CAAC,yBAAyB;AAC7D,oBAAoB,OAAO,CAAC,KAAK,GAAG,eAAe;AACnD,oBAAoB,OAAO,CAAC,KAAK,GAAG,eAAe;AACnD;AACA,gBAAgB,eAAe,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK;AAC5D,gBAAgB,eAAe,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK;AAC5D,gBAAgB,IAAI,eAAe,CAAC,IAAI,EAAE;AAC1C,oBAAoB,eAAe,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK;AAChE;AACA,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,yBAAyB,CAAC;AAChG;AACA,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC;AACrE;AACA,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACnD,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC/C,oBAAoB,IAAI,CAAC,MAAM,GAAG,CAAC;AACnC;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAChF,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,4DAA4D,EAAE,OAAO,CAAC,CAAC;AACjI;AACA;AACA;AACA,QAAQ,OAAO,IAAI;AACnB;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,yBAAyB,EAAE;AAC7E,QAAQ,IAAI,eAAe,CAAC,gCAAgC,KAAK,yBAAyB,EAAE;AAC5F,YAAY,eAAe,CAAC,gCAAgC,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC5H;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AACzC,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AACnC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,OAAO,EAAE;AAC7B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,eAAe,GAAG,KAAK,EAAE;AAC5H,QAAQ,IAAI,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;AAC3D,YAAY,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,CAAC;AAC/F;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;AACjG,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC1K,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA,IAAI,sCAAsC,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE;AACtH,QAAQ,IAAI,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;AAC3D,YAAY,OAAO,CAAC,MAAM,GAAG,cAAc;AAC3C,YAAY,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AAC9G;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;AACjG,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACpJ;AACA;AACA;AACA;AACA,IAAI,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,qBAAqB,EAAE,wBAAwB,GAAG,KAAK,EAAE;AACtI,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5E,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9E,QAAQ,MAAM,KAAK,GAAG,wBAAwB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5G,QAAQ,MAAM,MAAM,GAAG,wBAAwB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/G,QAAQ,IAAI,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;AAC3D,YAAY,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AAC9G;AACA,QAAQ,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;AACjG,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9J;AACA;AACA;AACA;AACA,IAAI,+BAA+B,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE;AAChF,QAAQ,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;AAC7E;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE;AAClE,QAAQ,IAAI,iBAAiB,GAAG,OAAO,CAAC,gBAAgB;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,EAAE;AAC3D,YAAY,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,OAAO,CAAC;AAC/F;AACA,QAAQ,IAAI,KAAK,YAAY,gBAAgB,EAAE;AAC/C;AACA,YAAY,MAAM,yEAAyE;AAC3F;AACA,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC;AAC7B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAC3D,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAChK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE;AAC3E,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACrE,QAAQ,MAAM,eAAe,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAC/E,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B;AACA,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACrD;AACA,QAAQ,MAAM,UAAU,GAAG,eAAe,CAAC,kBAAkB;AAC7D,QAAQ,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM;AACvD,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB;AACA,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACrD;AACA,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,IAAI,CAAC,gBAAgB,EAAE;AACnC;AACA,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC;AAChG;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AACvD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,IAAI,CAAC;AAC9E;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,mBAAmB;AACvC;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,QAAQ,KAAK,CAAC,UAAU,EAAE;AAC1B;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;AAC1C,QAAQ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1D,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,QAAQ,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE;AACrD,QAAQ,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;AACpD,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;AACvD,YAAY,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACnD,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC/C,oBAAoB,IAAI,CAAC,MAAM,GAAG,CAAC;AACnC;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAChF,oBAAoB,MAAM,IAAI,GAAG,EAAE;AACnC,oBAAoB,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,mBAAmB,EAAE;AAC1E,wBAAwB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACvF;AACA,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChG;AACA;AACA,YAAY,aAAa,CAAC,mBAAmB,GAAG,EAAE;AAClD;AACA,QAAQ,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB;AACjF,QAAQ,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB;AACzF,QAAQ,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B;AAC7G,QAAQ,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC,2BAA2B;AACvG,QAAQ,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,CAAC;AAC3C,QAAQ,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,CAAC;AAC/C,QAAQ,IAAI,CAAC,SAAS,CAAC,8BAA8B,GAAG,CAAC;AACzD,QAAQ,IAAI,CAAC,SAAS,CAAC,2BAA2B,GAAG,CAAC;AACtD,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AAC5C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AACxC,QAAQ,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;AAC7C,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5D,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AAC1F;AACA,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5D,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,uBAAuB,EAAE;AAClE,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,qBAAqB,CAAC,CAAC;AAChG;AACA;AACA;AACA,QAAQ,KAAK,CAAC,QAAQ,EAAE;AACxB;AACA;AACA,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,EAAE;AACjB;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB;AACA,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9D,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9D,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;AACvD,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAC9F,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAC9F,QAAQ,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5D,QAAQ,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC;AAClE,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AAChC;AACA;AACA,IAAI,uCAAuC,GAAG;AAC9C,QAAQ,OAAO,IAAI,CAAC,sBAAsB,EAAE;AAC5C;AACA;AACA;AACA;AACA,IAAI,4BAA4B,CAAC,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE;AAC5G,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,QAAQ,MAAM,SAAS,GAAG,mBAAmB;AAC7C,QAAQ,MAAM,mBAAmB,GAAG,SAAS,CAAC,oBAAoB;AAClE,QAAQ,MAAM,sBAAsB,GAAG,mBAAmB,EAAE,gBAAgB;AAC5E,QAAQ,MAAM,sBAAsB,GAAG,sBAAsB,EAAE,kBAAkB;AACjF,QAAQ,MAAM,0BAA0B,GAAG,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC;AACpF,QAAQ,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,CAAC;AAC7H,QAAQ,MAAM,oBAAoB,GAAG,0BAA0B,EAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,CAAC;AACrI,QAAQ,MAAM,sBAAsB,GAAG,sBAAsB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,KAAK;AAC3I,QAAQ,MAAM,gBAAgB,GAAG,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,IAAI,CAAC,gCAAgC,EAAE;AACnD;AACA,QAAQ,MAAM,sBAAsB,GAAG,UAAU;AACjD,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,sBAAsB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG;AACzD,YAAY,sBAAsB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG;AACzD,YAAY,sBAAsB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG;AACzD,YAAY,sBAAsB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG;AACzD;AACA,QAAQ,MAAM,cAAc,GAAG,cAAc,IAAI,UAAU;AAC3D,QAAQ,MAAM,cAAc,GAAG,cAAc,IAAI,UAAU;AAC3D,QAAQ,MAAM,gBAAgB,GAAG,cAAc,IAAI,YAAY;AAC/D,QAAQ,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,OAAO,EAAE;AACzD;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5E,gBAAgB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,mBAAmB;AACpE;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAClE,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,gBAAgB,MAAM,aAAa,GAAG,UAAU,EAAE,gBAAgB;AAClE,gBAAgB,MAAM,aAAa,GAAG,aAAa,EAAE,kBAAkB;AACvE,gBAAgB,IAAI,aAAa,IAAI,aAAa,EAAE;AACpD,oBAAoB,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACzE,oBAAoB,MAAM,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC;AACvF,oBAAoB,MAAM,cAAc,GAAG;AAC3C,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,CAAC,6BAA6B;AACnF,wBAAwB,SAAS,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,kDAAkD,IAAI;AAC/G,wBAAwB,MAAM,EAAE,aAAa,CAAC,MAAM;AACpD,wBAAwB,cAAc;AACtC,qBAAqB;AACrB,oBAAoB,MAAM,kBAAkB,GAAG;AAC/C,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,CAAC,6BAA6B;AACnF,wBAAwB,SAAS,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,kDAAkD,IAAI;AAC/G,wBAAwB,MAAM,EAAE,aAAa,CAAC,MAAM;AACpD,wBAAwB,cAAc,EAAE,CAAC;AACzC,qBAAqB;AACrB,oBAAoB,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,4BAA4B,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,0BAA0B;AAC9J,oBAAoB,MAAM,gBAAgB,GAAG,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC;AACrF,oBAAoB,MAAM,oBAAoB,GAAG,cAAc,EAAE,UAAU,CAAC,kBAAkB,CAAC;AAC/F,oBAAoB,gBAAgB,CAAC,IAAI,CAAC;AAC1C,wBAAwB,IAAI,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,gBAAgB;AAC5F,wBAAwB,aAAa,EAAE,cAAc,GAAG,gBAAgB,GAAG,SAAS;AACpF,wBAAwB,UAAU,EAAE,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS;AACpG,wBAAwB,UAAU,EAAE,KAAK,KAAK,CAAC,IAAI,cAAc,IAAI,WAAW,GAAG,sBAAsB,GAAG,UAAU,IAAI,SAAS;AACnI,wBAAwB,MAAM,EAAE,KAAK,KAAK,CAAC,IAAI,cAAc,GAAG,OAAO,sCAAsC,MAAM;AACnH,wBAAwB,OAAO,EAAE,OAAO;AACxC,qBAAqB,CAAC;AACtB;AACA;AACA,YAAY,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC7F,YAAY,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7E;AACA,aAAa;AACb;AACA,YAAY,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO;AACrD,YAAY,IAAI,eAAe,EAAE;AACjC,gBAAgB,MAAM,UAAU,GAAG,eAAe,CAAC,gBAAgB;AACnE,gBAAgB,MAAM,UAAU,GAAG,UAAU,CAAC,kBAAkB;AAChE,gBAAgB,IAAI,UAAU,GAAG,SAAS;AAC1C,gBAAgB,IAAI,SAAS,CAAC,IAAI,EAAE;AACpC,oBAAoB,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,CAAC,cAAc;AACxG,oBAAoB,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,CAAC,cAAc,GAAG,CAAC;AAC/F;AACA,gBAAgB,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AACnE,gBAAgB,MAAM,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,CAAC;AACxH,gBAAgB,MAAM,oBAAoB,GAAG,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,CAAC;AACjI,gBAAgB,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,4BAA4B,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,0BAA0B;AACpK,gBAAgB,gBAAgB,CAAC,IAAI,CAAC;AACtC,oBAAoB,IAAI,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,gBAAgB;AACxF,oBAAoB,aAAa,EAAE,cAAc,GAAG,gBAAgB,GAAG,SAAS;AAChF,oBAAoB,UAAU;AAC9B,oBAAoB,UAAU,EAAE,cAAc,IAAI,WAAW,GAAG,sBAAsB,GAAG,UAAU,IAAI,SAAS;AAChH,oBAAoB,MAAM,EAAE,cAAc,GAAG,OAAO,sCAAsC,MAAM;AAChG,oBAAoB,OAAO,EAAE,OAAO;AACpC,iBAAiB,CAAC;AAClB;AACA,iBAAiB;AACjB,gBAAgB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,oBAAoB,IAAI,mBAAmB,CAAC,KAAK,GAAG,IAAI,GAAG,mBAAmB,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACnI,QAAQ,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,GAAG;AAC1D,YAAY,KAAK,EAAE,CAAC,mBAAmB,CAAC,KAAK,IAAI,KAAK,IAAI,eAAe;AACzE,YAAY,gBAAgB;AAC5B,YAAY,sBAAsB,EAAE,mBAAmB,IAAI;AAC3D,kBAAkB;AAClB,oBAAoB,IAAI,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,gBAAgB;AACxF,oBAAoB,eAAe,EAAE,cAAc,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,IAAI,SAAS;AACrJ,oBAAoB,WAAW,EAAE,cAAc,GAAG,OAAO,sCAAsC,MAAM;AACrG,oBAAoB,YAAY,EAAE,OAAO;AACzC,oBAAoB,iBAAiB,EAAE,SAAS,CAAC,+BAA+B,IAAI,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS;AAC1I,oBAAoB,aAAa,EAAE,CAAC;AACpC,0BAA0B;AAC1B,0BAA0B,SAAS,CAAC,+BAA+B,IAAI;AACvE,8BAA8B,OAAO;AACrC,8BAA8B,MAAM;AACpC,oBAAoB,cAAc,EAAE,CAAC,sBAAsB,GAAG,SAAS,GAAG,OAAO;AACjF;AACA,kBAAkB,SAAS;AAC3B,YAAY,iBAAiB,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,SAAS;AAC3G,SAAS;AACT,QAAQ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC;AAC7G,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;AACtH,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5E,gBAAgB,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO;AACzD,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,oBAAoB,SAAS;AAC7B,wBAAwB,IAAI,CAAC,MAAM;AACnC,wBAAwB,yCAAyC;AACjE,wBAAwB,mBAAmB,CAAC,KAAK;AACjD,wBAAwB,6BAA6B;AACrD,wBAAwB,eAAe,CAAC,QAAQ;AAChD,wBAAwB,UAAU;AAClC,wBAAwB,eAAe,CAAC,KAAK;AAC7C,wBAAwB,WAAW;AACnC,wBAAwB,eAAe,CAAC,MAAM;AAC9C,wBAAwB,mBAAmB;AAC3C,wBAAwB,cAAc;AACtC,oBAAoB,uBAAuB;AAC3C,oBAAoB,IAAI,CAAC,qBAAqB,CAAC,oBAAoB;AACnE,iBAAiB,CAAC;AAClB;AACA;AACA,QAAQ,IAAI,CAAC,0BAA0B,IAAI;AAC3C,QAAQ,IAAI,CAAC,sBAAsB,EAAE;AACrC,QAAQ,IAAI,CAAC,sBAAsB,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE;AAC7G,YAAY,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,KAAK;AACtD;AACA;AACA,IAAI,oBAAoB,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE;AAC/E,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,IAAI,CAAC,gCAAgC,EAAE;AACnD;AACA,QAAQ,MAAM,cAAc,GAAG,cAAc,IAAI,UAAU;AAC3D,QAAQ,MAAM,cAAc,GAAG,cAAc,IAAI,UAAU;AAC3D,QAAQ,MAAM,gBAAgB,GAAG,cAAc,IAAI,YAAY;AAC/D,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS;AACjI,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,OAAO,sCAAsC,MAAM;AAC1J,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,eAAe,GAAG;AAClG,cAAc,IAAI,CAAC;AACnB,kBAAkB,IAAI,CAAC;AACvB,kBAAkB,IAAI,CAAC;AACvB,cAAc,SAAS;AACvB,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,WAAW,GAAG,cAAc,GAAG,OAAO,sCAAsC,MAAM;AAClK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,iBAAiB,GAAG,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS;AAC1J,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC;AACtG,cAAc;AACd,cAAc;AACd,kBAAkB,OAAO;AACzB,kBAAkB,MAAM;AACxB,QAAQ,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,SAAS;AACzJ,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AAClE,QAAQ,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACvF;AACA,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACrC,YAAY,mCAAmC,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM;AAChF,YAAY,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC,mCAAmC,CAAC;AACjK;AACA,aAAa;AACb,YAAY,uBAAuB,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM;AACpE,YAAY,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,uBAAuB,CAAC;AAC5I;AACA,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5E,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,oBAAoB,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,qCAAqC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AACpH,oBAAoB,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,mBAAmB,GAAG,cAAc;AACvG,oBAAoB,uBAAuB;AAC3C,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,oBAAoB;AACpE,iBAAiB,CAAC;AAClB;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,WAAW,EAAE,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,IAAI,CAAC,eAAe,CAAC;AAC9G,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC;AACvH,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAChE,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzD,QAAQ,IAAI,CAAC,0BAA0B,IAAI;AAC3C,QAAQ,IAAI,CAAC,sBAAsB,EAAE;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpC,YAAY,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,KAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE;AAC7H,QAAQ,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,gBAAgB;AACjE,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC7D;AACA,aAAa;AACb,YAAY,IAAI,CAAC,qBAAqB,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,OAAO;AAC3C,QAAQ,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB;AAClF,QAAQ,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,eAAe;AAClF,QAAQ,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,SAAS;AACpK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC/D,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxD,QAAQ,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,GAAG;AACnE,YAAY,MAAM,EAAE,IAAI,CAAC,YAAY;AACrC,YAAY,SAAS,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI,kDAAkD,IAAI;AAChG,YAAY,aAAa,EAAE,CAAC;AAC5B,YAAY,cAAc,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK;AAC1E,YAAY,YAAY,EAAE,QAAQ;AAClC,YAAY,eAAe,EAAE,CAAC;AAC9B,YAAY,MAAM,EAAE,KAAK;AACzB,SAAS;AACT,QAAQ,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,GAAG;AACnE,YAAY,MAAM,EAAE,IAAI,CAAC,mBAAmB;AAC5C,YAAY,SAAS,EAAE,mBAAmB,IAAI,mBAAmB,CAAC,IAAI,GAAG,IAAI,kDAAkD,IAAI;AACnI,YAAY,aAAa,EAAE,CAAC;AAC5B,YAAY,cAAc,EAAE,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,CAAC;AAClH,YAAY,YAAY,EAAE,CAAC;AAC3B,YAAY,eAAe,EAAE,CAAC;AAC9B,YAAY,MAAM,EAAE,KAAK;AACzB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5E,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,oBAAoB,SAAS;AAC7B,wBAAwB,IAAI,CAAC,MAAM;AACnC,wBAAwB,gCAAgC;AACxD,wBAAwB,OAAO,CAAC,KAAK;AACrC,wBAAwB,6BAA6B;AACrD,wBAAwB,OAAO,CAAC,OAAO,EAAE,QAAQ;AACjD,wBAAwB,SAAS;AACjC,wBAAwB,SAAS;AACjC,wBAAwB,aAAa;AACrC,wBAAwB,QAAQ;AAChC,wBAAwB,UAAU;AAClC,wBAAwB,KAAK;AAC7B,oBAAoB,gCAAgC;AACpD,oBAAoB,IAAI,CAAC,qBAAqB,CAAC,6BAA6B;AAC5E,oBAAoB,gCAAgC;AACpD,oBAAoB,IAAI,CAAC,qBAAqB,CAAC,6BAA6B;AAC5E,iBAAiB,CAAC;AAClB;AACA;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,uBAAuB,EAAE;AAC9D,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,cAAc,CAAC;AACjF;AACA,aAAa;AACb,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,gBAAgB,aAAa,GAAG,OAAO,CAAC,KAAK;AAC7C,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AACzE;AACA;AACA,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,gBAAgB,cAAc,GAAG,OAAO,CAAC,MAAM;AAC/C,gBAAgB,IAAI,QAAQ,EAAE;AAC9B,oBAAoB,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC3E;AACA;AACA,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC;AAC/D;AACA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,KAAK,EAAE,cAAc,EAAE;AAC/E,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB;AACjD,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACzC,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,cAAc,EAAE;AAC5B;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,OAAO;AAC3C,QAAQ,IAAI,CAAC,qBAAqB,EAAE;AACpC,QAAQ,IAAI,CAAC,sBAAsB,EAAE;AACrC,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE;AACjC,gBAAgB,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC;AAC7D;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;AACxD;AACA;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI;AACxC,QAAQ,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAC/C,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3C,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC5E,gBAAgB,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,kCAAkC,GAAG,OAAO,CAAC,KAAK,GAAG,6BAA6B,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;AACnK;AACA;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE;AACjC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B,CAAC,OAAO,EAAE;AACxC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACrF,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,QAAQ,EAAE;AACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AAC/E;AACA;AACA;AACA;AACA,IAAI,yBAAyB,GAAG;AAChC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC7D;AACA,aAAa,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAY,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC5C;AACA,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AAClC,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;AAClD;AACA,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI;AAC5E,QAAQ,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC;AACxD,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE;AAC1C,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM;AAClC;AACA;AACA;AACA;AACA,IAAI,sBAAsB,CAAC,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACnF,QAAQ,IAAI,IAAI,CAAC,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,EAAE;AACrE,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,kBAAkB;AAC7D;AACA,IAAI,iBAAiB,GAAG;AACxB;AACA;AACA,IAAI,kBAAkB,GAAG;AACzB;AACA;AACA;AACA;AACA;AACA,IAAI,oCAAoC,CAAC,eAAe,EAAE,MAAM,EAAE;AAClE;AACA;AACA,QAAQ,MAAM,EAAE;AAChB;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,OAAO,CAAC;AAChB;AACA;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,OAAO,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,CAAC,EAAE;AACzG;AACA,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,EAAE;AAC/D,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,OAAO;AAClD;AACA;AACA,QAAQ,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,aAAa,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AAC9E,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,EAAE;AACpE,YAAY,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,QAAQ;AACvD;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAChC,QAAQ,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AAC1C;AACA,QAAQ,MAAM,SAAS,GAAG,WAAW,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,CAAC;AAC/G,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,EAAE;AACtE,YAAY,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,SAAS;AACzD;AACA,QAAQ,IAAI,CAAC,qBAAqB,CAAC,eAAe,GAAG,OAAO;AAC5D;AACA,IAAI,uBAAuB,CAAC,UAAU,EAAE;AACxC,QAAQ,MAAM,oBAAoB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC/G,QAAQ,MAAM,oBAAoB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACxG,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AACxC,YAAY,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAC3C;AACA,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACvC,YAAY,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC1C;AACA,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC7C;AACA,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC7C;AACA;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE;AAC5D,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACvD,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW;AAC3C,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,QAAQ,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB;AAC1E,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC;AAChJ,QAAQ,IAAI,qBAAqB,CAAC,aAAa,EAAE;AACjD,YAAY,qBAAqB,CAAC,aAAa,CAAC,MAAM,EAAE;AACxD,YAAY,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC;AAClI;AACA,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAC1C,YAAY,IAAI,CAAC,eAAe,EAAE;AAClC,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB;AACnC,aAAa,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,IAAI,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,EAAE;AACtL,YAAY,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,SAAS;AAC3D;AACA,QAAQ,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAC1F,QAAQ,IAAI,WAAW,GAAG,UAAU;AACpC,QAAQ,IAAI,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;AAC3D,YAAY,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;AACpD,YAAY,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;AACjD,gBAAgB,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE;AAC5D,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;AACjE,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,IAAI,CAAC,EAAE,KAAK,CAAC;AAC/F;AACA,gBAAgB,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;AACzE,gBAAgB,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAgB;AAChB;AACA,YAAY,WAAW,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACjJ,YAAY,UAAU,CAAC,YAAY,EAAE;AACrC;AACA,QAAQ,IAAI,YAAY,GAAG,CAAC;AAC5B,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,EAAE;AAClE,YAAY,IAAI,MAAM,GAAG,CAAC;AAC1B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxG,gBAAgB,MAAM,WAAW,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;AACjG,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO;AAC3F,gBAAgB,MAAM,cAAc,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,8BAA8B,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,mCAAmC;AAC/K,gBAAgB,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,KAAK,cAAc,EAAE;AAClI,oBAAoB,YAAY,IAAI,MAAM;AAC1C;AACA,gBAAgB,MAAM,GAAG,MAAM,IAAI,CAAC;AACpC;AACA;AACA,QAAQ,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,YAAY;AAChE,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC;AAC1I,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,uBAAuB,CAAC;AAC7I,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;AAC7C,YAAY,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC;AACrF,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACzC,gBAAgB,IAAI,CAAC,SAAS,CAAC,8BAA8B,EAAE;AAC/D,gBAAgB,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;AACrE,oBAAoB,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY;AACxE,oBAAoB,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;AAChE,oBAAoB,WAAW,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACvF,iBAAiB,CAAC;AAClB;AACA;AACA;AACA,QAAQ,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzC;AACA,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,GAAG,QAAQ,4CAA4C,QAAQ,2CAA2C,CAAC,CAAC;AACjO;AACA,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa;AACrE,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACnE,YAAY,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC;AACrD,YAAY,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe;AACvD,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,EAAE,YAAY,CAAC,iBAAiB,GAAG,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC;AAC3I;AACA;AACA;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,YAAY,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACtD;AACA;AACA,QAAQ,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM;AACxF,QAAQ,IAAI,aAAa,IAAI,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;AAC1E,YAAY,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,IAAI,CAAC,EAAE,KAAK,CAAC;AACvF,YAAY,IAAI,QAAQ,KAAK,CAAC,EAAE;AAChC,gBAAgB,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC/F;AACA,iBAAiB;AACjB,gBAAgB,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACxF;AACA;AACA,aAAa,IAAI,QAAQ,KAAK,CAAC,EAAE;AACjC,YAAY,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5E;AACA,aAAa;AACb,YAAY,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAClE;AACA,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE;AACtE,YAAY,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;AACrE;AACA,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,GAAG,CAAC,EAAE;AAC3E,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,GAAG,CAAC,EAAE;AAC/E,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;AACrC,QAAQ,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE;AACrD,QAAQ,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE;AACpD,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC9B,QAAQ,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACnD,QAAQ,KAAK,CAAC,OAAO,EAAE;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,SAAS,GAAG,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACrD,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK;AAClD;AACA,QAAQ,OAAO,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,SAAS,GAAG,KAAK,EAAE;AACvC,QAAQ,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACrD,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM;AACnD;AACA,QAAQ,OAAO,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf;AACA,QAAQ,OAAO,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,KAAK,EAAE;AACjC,QAAQ,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,KAAK,CAAC;AACxD,QAAQ,OAAO,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/D,YAAY;AACZ;AACA,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC,2BAA2B,EAAE,KAAK,CAAC;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE;AAC9D,QAAQ,MAAM,UAAU,GAAG,MAAM;AACjC,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,UAAU,GAAG,CAAC;AAC1B;AACA,QAAQ,IAAI,IAAI;AAChB,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AAC7C;AACA,iBAAiB,IAAI,IAAI,YAAY,WAAW,EAAE;AAClD,gBAAgB,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AAC3C;AACA,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI;AAC3B;AACA,YAAY,UAAU,GAAG,IAAI,CAAC,UAAU;AACxC;AACA,aAAa;AACb,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AAC7C;AACA,iBAAiB,IAAI,IAAI,YAAY,WAAW,EAAE;AAClD,gBAAgB,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AAC3C;AACA,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI;AAC3B;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;AACnF;AACA,IAAI,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AACzD,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,MAAM,cAAc,GAAG,MAAM;AACzC,gBAAgB,SAAS,CAAC,QAAQ,CAAC,CAAC,qCAAqC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM;AAC7F,oBAAoB,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7E,oBAAoB,IAAI,IAAI,GAAG,MAAM;AACrC,oBAAoB,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5C,wBAAwB,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AACnD,wBAAwB,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;AACjE;AACA,yBAAyB;AACzB,wBAAwB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AACtD,wBAAwB,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,wBAAwB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3D;AACA,oBAAoB,SAAS,CAAC,KAAK,EAAE;AACrC,oBAAoB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC;AAChE,oBAAoB,OAAO,CAAC,IAAI,CAAC;AACjC,iBAAiB,EAAE,CAAC,MAAM,KAAK;AAC/B,oBAAoB,IAAI,IAAI,CAAC,UAAU,EAAE;AACzC,wBAAwB,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;AACjD;AACA,yBAAyB;AACzB,wBAAwB,MAAM,CAAC,MAAM,CAAC;AACtC;AACA,iBAAiB,CAAC;AAClB,aAAa;AACb,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,IAAI,CAAC,gBAAgB,EAAE;AACvC,gBAAgB,cAAc,EAAE;AAChC;AACA,iBAAiB;AACjB;AACA;AACA,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM;AACxD,oBAAoB,cAAc,EAAE;AACpC,iBAAiB,CAAC;AAClB;AACA,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AACxE,QAAQ,IAAI,GAAG,IAAI,IAAI,aAAa,CAAC,QAAQ;AAC7C,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,2BAA2B,CAAC;AACtL,QAAQ,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,aAAa,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC;AACjH,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8BAA8B,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AAClF,QAAQ,IAAI,GAAG,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ;AACjD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,EAAEA,WAA2B,CAAC,OAAO,GAAGA,WAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,oCAAoC,CAAC;AACvN,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,YAAY,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;AAChI;AACA,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE;AACnC,QAAQ,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC;AAC9E;AACA;AACA;AACA,YAAY,CAAC,sBAAsB,GAAG;AACtC,IAAI,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC;AACxD,IAAI,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC;AAC5D,CAAC;AACD,YAAY,CAAC,WAAW,GAAG,CAAC;;;;"}
|