{"version":3,"file":"ThreeJS_Runtime.O38EB49b.mjs","names":["useRef","useState","computeBoundsTree","disposeBoundsTree","acceleratedRaycast","THREE.LoopOnce","THREE.LoopPingPong","THREE.LoopRepeat","THREE.ImageBitmapLoader","THREE.TextureLoader","THREE.Texture","THREE.Vector3","THREE.Quaternion","THREE.Euler","THREE.Box3","THREE.Vector2","THREE.Frustum","THREE.Matrix4","THREE.Color","React.useLayoutEffect","React.useEffect","THREE.Vector2","THREE.ShaderMaterial","THREE.PlaneGeometry","THREE.Mesh","THREE.Scene","THREE.OrthographicCamera","THREE.Color","THREE.PropertyBinding","THREE.AnimationClip","THREE.Box3","DRACOLoader","GLTFLoader","MeshoptDecoder","THREE.LoadingManager","SkeletonUtils.clone","THREE.CanvasTexture","THREE.BufferGeometry","THREE.BufferAttribute","THREE.ShaderMaterial","THREE.Points","THREE.DataTexture","THREE.RedFormat","THREE.NearestFilter","THREE.RepeatWrapping","THREE.SRGBColorSpace","THREE.MeshPhysicalMaterial","THREE.MeshToonMaterial","THREE.Color","THREE.Vector2","THREE.MeshBasicMaterial","THREE.Vector3","THREE.SkinnedMesh","THREE.Mesh","THREE.PlaneGeometry","THREE.MeshStandardMaterial","THREE.Group","THREE.SpotLight","THREE.PointLight","THREE.PMREMGenerator","THREE.Scene","THREE.ShaderMaterial","THREE.Vector3","THREE.Mesh","THREE.SphereGeometry","THREE.MeshBasicMaterial","THREE.Color","THREE.PlaneGeometry","THREE.Vector3","THREE.Euler","useRef","useState","useId","THREE.WebGLRenderer","THREE.SRGBColorSpace","THREE.Scene","THREE.OrthographicCamera","THREE.PerspectiveCamera","THREE.StereoCamera","OrbitControls","THREE.AmbientLight","THREE.DirectionalLight","THREE.HemisphereLight","THREE.BufferGeometry","THREE.BufferAttribute","THREE.PointsMaterial","THREE.Points","THREE.Mesh","THREE.PlaneGeometry","THREE.ShadowMaterial","THREE.WebGLRenderTarget","THREE.HalfFloatType","THREE.RGBAFormat","THREE.LinearFilter","THREE.Vector2","THREE.Color","THREE.Raycaster","THREE.Vector3","THREE.LoopRepeat","THREE.LoopPingPong","THREE.LoopOnce","THREE.Plane","THREE","THREE.Group","THREE.AxesHelper","THREE.AnimationMixer","THREE.GridHelper","createPortal","DRACOLoader","GLTFLoader","MeshoptDecoder","THREE.SRGBColorSpace","THREE.PlaneGeometry","THREE.MeshBasicMaterial","THREE.Mesh","THREE.Vector3","THREE.Matrix4","THREE.InstancedMesh","BufferGeometryUtils.mergeGeometries","THREE.Color","THREE.BufferGeometry","THREE.BufferAttribute","THREE.PointsMaterial","THREE.Points","THREE.ShadowMaterial","THREE.WebGLRenderTarget","THREE.HalfFloatType","THREE.RGBAFormat","THREE.LinearFilter","THREE.Vector2","THREE.GridHelper","THREE.AxesHelper","THREE.OrthographicCamera","THREE.PerspectiveCamera","THREE.StereoCamera","THREE.Scene","THREE.AmbientLight","THREE.DirectionalLight","THREE.HemisphereLight","THREE.Timer","THREE.LoopOnce","THREE.LoopPingPong","THREE.LoopRepeat","THREE.Raycaster","THREE.Spherical","THREE.Plane","THREE.Box3","SkeletonUtils.clone","THREE.AnimationMixer","React.useRef","React.useState","THREE.WebGLRenderer","THREE","_Fragment","React.useRef","React.useState","React.useCallback","createPortal","useId","React.memo","__esmMin","ie","le","init_ssg_sandbox_shims","navigator","te","ne","window","ee","_e","init_npm_react_dom_18_3_1","de","l","Ha","p","c","init_jsx_runtime","init_npm_react_18_3_1","ce","addPropertyControls","init_framer_B1b760uK","useIsOnFramerCanvas","RenderTarget","ControlType","Gt","is","Da","qo","$","Xt","init_GLTFLoader_js_deps_three_0_183","el","dt","init_meshopt_decoder_module_js_deps_three_0_183","kt","three_0_183_exports","wl","C","uo","Ar","ln","xm","Et","Cn","pl","Tr","Fa","kh","ie$1","z","kn","init_three_0_183","zn","G","pt","Xr","_o","vl","At","rl","$o","vu","Au","ye","Fe","xt","Fc","yn","U","Vt","init_DRACOLoader_js_deps_three_0_183","S$1","Pi","at","Hh","Pn","Su","So","z$1","Ki","j","Ea","init_three_mesh_bvh_0_8_2_deps_three_0_183","Nl","Ql","In","Lr","Pr","init_SkeletonUtils_js_deps_three_0_183","wo","Do","Jo","M","init_OrbitControls_js_deps_three_0_183","Ie","No","init_BufferGeometryUtils_js_deps_three_0_183","Uo","Zl","Pe","Xe","S","Vr","q","xn","withCursorFollow","ref","isHovering","setIsHovering","position","setPosition","handleMouseMove","isHovered","parentRect","elementRect","Component","props","init_Follow_Cursor","_loadFBXLoader","_fbxLoaderModule","n","m","_loadHDRLoader","_hdrLoaderModule","_loadJSZip","_jsZipModule","_loadStats","_statsModule","_loadPostFxModules","_postFxModules","effectComposerMod","renderPassMod","bloomMod","shaderPassMod","ssaoMod","bokehMod","outputMod","fxaaMod","init_deps","_IMPORT_3D_RENDERER_DEBUG_KEY","_AUTO_FIT_MAX_ASPECT","_AUTO_FIT_MIN_VISIBLE","_DEG2RAD","_SCROLL_SMOOTHING_SPEED","easeInOutQuad","MATERIAL_PRESETS","TONE_MAPPINGS","HDRI_BASE","HDRI_PRESETS","ENV_PRESETS","_IMPORT_3D_BRIDGE_KEY","init_constants","x","IMPORT_3D_PROPERTY_CONTROLS","UI_STYLES","init_propertyControls","v","materialHash","cfg","lightingHash","h","envHash","effectsHash","appearReplayHash","item","sceneConfigHash","init_hashes","_findAnimationClip","clipNameRaw","clipName","clipLower","animations","_configureAnimationLoop","loopMode","action","_clearAnimationOnceCompleteListener","holder","mixer","_isAnimationOnceActionComplete","clipDuration","epsilon","_getAnimationOnceCompleteCallback","requestSig","callback","event","_bindAnimationOnceComplete","onComplete","complete","evt","onFinished","remaining","speed","_bindAnimationOnceCompleteActions","validActions","actions","pending","maxRemaining","completeCount","_syncAnimationPhase","prevClip","prevAction","nextClip","nextAction","_warmAnimationActions","clips","loopModes","idx","warmNext","clip","_playAnimations","mode","options","blendDuration","actionKey","replayKey","onceAlreadyCompleted","activeAction","sameRequest","onceCallback","shouldBlend","hasSeenAction","_getAnimationBlendOptions","_canAdvanceAnimationMixer","activeKey","init_animationUtils","_setRootTooltipHandler","handler","_createAsyncTextureLoader","bitmapLoader","fallbackLoader","isSVG","url","onLoad","onProgress","onError","texture","imageBitmap","tex","_tmpVec3A","_tmpVec3B","_rootTooltipHandler","_tmpBox3","_tmpStereoSize","_tmpSubScenePivotOffset","_tmpSubScenePivotEuler","_tmpSubScenePivotQuat","_modelCache","_preloadInFlight","_zipBlobCache","hdriCache","hdriInFlight","proceduralEnvCache","_progressivePlaceholderColor","_origMaterialBackups","init_state","_define_property","key","obj","value","createFramerTilePixelatePass","pass","ShaderPass","FramerTilePixelateShader","uniforms","width","height","pixelRatio","size","stretch","widthFactor","shape","TILE_PIXELATE_SHAPES","cellWidthPx","cellHeightPx","_clamp01","applyEffectsChanges","bloom","ssao","colorGrading","vignette","chromaticAberration","filmGrain","pixelated","fxaa","st","dof","\"focus\"","\"aperture\"","\"maxblur\"","needAlphaFix","useBrowserLayoutEffect","NOISE_GLSL","VignetteShader","ChromaticAberrationShader","FilmGrainShader","AlphaRestoreShader","AlphaSavePass","ColorGradingShader","init_postprocessing","w","readBuffer","oldRT","renderer","targetRT","geo","detectFormat","ext","detectImageFormat","_normalizeLayerMatchValue","_normalizeExactLayerMatchValue","_getLayerMatchValues","node","values","_resolveScrollAnchorY","fallback","_getObjectEventScrollProgress","match","selector","_findLayerMatchElement","wrapNode","rect","viewH","anchorY","anchor","_isLayerMatchCandidateUsable","current","style","_matchesLayerSelector","targets","rootNode","target","exactCandidates","usableCandidates","exactId","exactSectionId","foldedTarget","foldedMatches","parseColor","s","parts","init_formatAndColor","_webglCoordinator","init_coordinator","instances","_sortScratch","nextId","scheduled","_detectBudget","ua","isIOS","isSafari","mem","_deviceBudget","_effectiveBudget","override","\"__IMPORT_3D_CANVAS_BRIDGE__\"","_destroyPolicy","_DESTROY_TTL_MS","bridge","_contextLimit","_cmpRatio","b","a","_reevaluate","inst","budget","limit","now","destroyPolicy","i","visible","shouldPause","offMs","_scheduleReeval","id","ratio","total","_getVisibleSize","camera","fov","distance","_getAutoFitVisibleSize","cappedWidth","_getAutoFitRatio","normSize","_isMobileLike","_mobileLikeCacheAt","_mobileLikeCacheWidth","_mobileLikeCache","_setStyleIfChanged","_clearStyleIfChanged","_getOptimizedDpr","raw","cap","_getOptimizedRenderMetrics","safeWidth","cssWidth","safeHeight","cssHeight","dpr","maxPixelCount","_getOptimizedAnisotropy","maxAniso","_runtimeNeedsPostFx","_postFxPipelineSignature","needDof","needAlpha","getFramerRuntimeMode","renderTarget","isOnFramerCanvas","init_renderMetrics","_hasSkinnedMesh","found","object","child","_collectAnimationTargetNames","names","binding","sanitized","_animationTrackTargetName","name","trackName","parsed","_animationTrackTargetsMissingNode","track","targetNames","decoded","tail","_sanitizeAnimationClipsForObject","tracks","kept","next","_computeMeshOnlyBoundingBox","box","hasMesh","geomBox","init_object3DUtils","getSharedGLTFLoader","_sharedGLTF","_sharedDraco","getSharedFBXLoader","_sharedFBX","FBXLoader","getSharedTextureLoader","_sharedTextureLoader","_loadFromZip","blobMap","mainFile","mainFormat","cached","zipUrl","response","contentLength","reader","chunks","receivedLength","done","zipBuffer","offset","chunk","zip","fileEntries","zipEntry","relativePath","MODEL_EXTENSIONS","mainEntry","e","path","mimeType","blob","file","typedBlob","blobUrl","filename","mainBlobUrl","manager","normalized","onLoaded","err","gltfLoader","draco","gltf","disposeSubScene","ss","_disposeModelFull","_disposeMaterialsOnly","_cleanupSkinnedScene","skinnedGeometries","bb","sz","_cloneSceneWithMaterials","clone","source","_cloneCachedModel","group","mats","val","u","uv","_loadModelDirect","format","safeAnimations","loader","g","init_modelLoading","getParticleTexture","_particleTexture","canvas","ctx","gradient","createDissolveParticles","initPositions","sampleModelPositions","model","count","currentPos","velocity","maxOffset","dist","angle","particleTex","mat","points","updateDissolveParticles","pState","y","vx","velFactor","vy","vz","waveAmp","px","py","dx","dy","dz","dSq","syncParticleAttributes","cpAttr","pGeo","dAttr","aAttr","disposeDissolveParticles","mapDissolveProgress","range","amp","edge","t","getToonGradientMap","_toonGradientCache","steps","data","getSketchHatchTexture","_sketchHatchTexture","_isMeshOwnedByBone","mesh","_cloneAsGlassPhysical","old","pm","k","_stylizeGlassForToon","glassMat","applyToonPreset","gradMap","preset","_isMaterialPresetTarget","_isGlassMaterial","toonMat","applySketchPreset","hatchMap","baseColor","outlineColor","thickness","outlineMeshesToAdd","removeOutlineMeshes","sketchMat","outlineMat","outlineMesh","_createMaterialPresetOutlineMesh","entry","applyOutlinePreset","emissiveColor","emissiveIntensity","flatMat","toRemove","_storeAndReplacePlaceholder","_progressiveOrigMaterials","allTextures","origMats","textures","texKeys","_createPlaceholderMaterial","_preloadTexturesProgressive","loaded","resolve","clearFadeCache","createDissolveMaterial","dissolveConfig","originalMaterial","progress","noiseScale","amplitude","edgeWidth","shader","positions","posAttr","worldMat","localMat","totalVerts","maxCount","stride","sampled","_startDissolveInForModel","dissolveMat","outlineGeo","normAttr","loadImageAsSubScene","image","aspect","planeWidth","planeHeight","geometry","material","_backupMaterial","clones","_restoreMaterial","restored","_restoreProgressiveMaterials","stored","setModelFade","factor","applyMaterialOverride","useOverride","oldMat","isManual","trans","op","sheenVal","emInt","init_materialSystem","applyLightingChanges","needsShadowMap","smSize","_syncExtraLights","scene","lights","configs","light","lc","type","enabled","color","intensity","posX","posY","posZ","decay","castShadow","tx","ty","tz","init_lighting","_markSharedHDRI","loadHDRI","onDone","HDRLoader","envMap","callbacks","cb","_retainHDRI","_releaseHDRI","idle","oldUrl","oldEntry","_getProceduralEnvironmentCache","cache","getProceduralEnvironment","presetName","generateEnvironment","_releaseProceduralEnvironment","oldKey","_releaseEnvironmentMap","envMapKey","envMapSource","pmrem","envScene","skyMat","top","mid","bot","o","applyEnvironmentChanges","hdriUrl","envKey","init_environment","_resetModelHoverGateState","_resolveModelHoverGatedClip","requestedClip","_syncModelHoverGatedAnimations","_playConfiguredAnimation","sceneItems","subSceneCfg","_applyMaterialToAllScenes","targetCfg","_setFadeAllScenes","force","_clearFadeCacheAllScenes","_syncSceneHashTrackers","sceneHash","resolvedClipName","resolvedClip","effectiveLoopMode","shouldEmitOnceComplete","_applySceneConfigChanges","nextMaterialHash","nextLightingHash","nextEnvHash","nextEffectsHash","_withRuntimeRoleHidden","mapped","controls","control","originalHidden","hiddenByRole","_computeBVHForModel","init_runtimeGlue","findMesh","exact","root","normalizeMeshName","updateNimbusTech","record","inner","host","element","state","THREE","part","center","vh","mobile","motion","number","start","length","clamp","phase","first","from","last","to","ease","turn","explode","rotation","spread","reduced","fit","minX","maxX","minY","maxY","halfHeight","parent","point","hitRegions","hitBox","hitCorner","left","right","bottom","init_nimbusScroll","_getImport3DBridgeState","_emitImport3DBridge","listener","error","_subscribeImport3DBridge","_snapshotImport3DBridge","init_bridge","_snapshotImport3DCanvasDebug","_getImport3DRendererDebugStore","\"__IMPORT_3D_RENDERER_DEBUG__\"","store","canvases","live","_debugImport3DRendererEvent","ownerId","payload","_isImport3DRendererBridgeActive","init_diagnostics","_getStatsPanelIndex","panel","_removeStatsMonitor","dom","_syncStatsMonitor","stats","Stats","init_statsMonitor","_markScrollLayoutDirty","_getScrollLayoutViewport","wrapRect","logicalW","logicalH","_getScrollLayoutRect","rectCache","rawRect","viewport","scaleX","scaleY","_getScrollAnchorOffset","prevMatch","transitionTargetId","transitionRequested","matchChanged","prevResolvedEl","prevEl","transitionTargetMatches","transitionEnabled","_measureAnchorOffset","viewW","anchorX","pxX","pxY","anchorScreenY","pxToWorldX","pxToWorldY","cam","currentMeasure","prevMeasure","isInViewport","targetX","targetY","transitionChanged","duration","eased","smooth","prevX","prevY","dX","dY","pxThresh","_getScrollTransformProgressOffset","_syncScrollAnchorAppear","canvasNode","visibility","appearElapsed","appearDuration","blurPx","_hasAppearTransformMotion","_shouldReplayAppear","_restartAppearPlayback","_applyAppearTransformOffset","targetZ","targetScale","targetRotX","targetRotY","targetRotZ","prevScale","_resetAppearTransformOffset","_applyScrollAnchorOffset","_applyScrollAnchorRotation","_applyScrollProgressTransform","offsetX","offsetY","offsetZ","scaleMultiplier","scaleAtProgress","_resetScrollAnchorApplied","_applyCoordinatorAutoRotate","paused","rotateSpeed","_isMobileInteraction","_findImport3DScrollContainer","overflowY","applyModelTransform","wrapper","boxCenter","maxS","_syncGroundToModel","init_sceneTransforms","_getMeshAnimationDesired","scalarScale","anim","_parseCommaVector3","scale","_getObjectEventTransform","config","prefix","scaleValue","_getObjectEventHoverBaseTransform","base","_clearObjectEventHoverBaseTransform","_makeObjectEventTransformTargets","transform","hoverBase","origPosition","origRotation","origScale","_resolveResponsiveTransform","resolveThreeJSRuntimeTransform","_resolveResponsivePosition","resolveThreeJSRuntimePosition","_hasOwnProp","_mergeTopLevelTransformControls","merged","_mergeTopLevelAppearControls","dissolve","_mergeTopLevelScrollTransformControls","scrollTarget","mobileScrollTarget","_mergeTopLevelRuntimeControls","isRoleGroup","forcedMobile","desktop","breakpoint","useMobile","desktopPosition","desktopRotation","desktopResolved","nestedMobile","mobilePosition","mobileRotation","resolveThreeJSRuntimeSubSceneItem","resolveThreeJSRuntimeMeshAnimationItem","desired","resolveThreeJSRuntimeObjectEventItem","click","hover","press","interaction","drag","scroll","clickEnabled","hoverEnabled","pressEnabled","interactionEnabled","dragEnabled","scrollEnabled","resolvedHoverEffect","transformScaleVal","transformPositionVal","transformRotationVal","hoverScaleVal","hasTransform","hasScale","_objectEventScrollAnimations","items","mobileEnabled","desktopFollowTarget","desktopScrollTarget","mobileFollowTarget","resolveThreeJSRuntimePositionConfig","mobileBreakpoint","responsiveIsMobile","activePos","ui","followMatch","transformMatch","rawScrollTarget","scrollTargetPosition","scrollTargetRotation","scrollTargetScaleRaw","resolveThreeJSRuntimeInteractionConfig","int","fx","disableMouseRotation","movedInteractionProp","defaultValue","animationClip","animationMode","resolveThreeJSRuntimeConfig","tr","rectWidth","env","extraLights","subSceneItems","resolved","modelUrl","resolveThreeJSRuntimeAppearConfig","noise","particles","appearPosition","appearRotation","offX","offY","offZ","rotX","rotY","rotZ","blurReveal","blurRevealIntensity","blurRevealDuration","buildThreeJSRuntimeSettings","runtimeCfg","positionCfg","appearCfg","perf","meshInteractionsRaw","meshAnimationsRaw","meshAnimationItems","meshAnimationsLookupKey","meshInteractionItems","ic","meshInteractionTargetNames","meshInteractionLookupKey","meshObjectTransformItems","meshObjectTransformKey","meshInteractionRuntimeKey","qualityMode","isMobile","performanceMode","performanceMaxPixelCount","useMobilePerfProfile","isPerformance","isBalanced","qualityMaxPixelBudget","effectivePerformanceMaxPixelCount","effectiveShadowMapSize","effectiveBloomEnabled","effectiveEnableSSAO","effectiveEnableDOF","effectiveEnableChromaticAberration","effectiveEnableFilmGrain","effectiveParticleCount","effectiveDissolveParticleMaxCount","init_configResolution","_startSyntheticProgress","_syntheticProgressTimer","tick","_hasRealProgress","mls","elapsed","_syntheticProgressStart","synthetic","taskId","_stopSyntheticProgress","_startModelPreload","_preloadBatchTotal","promise","_checkBatchComplete","pct","perUrlShare","_preloadBatchDone","onErr","_upsertImport3DSlot","previous","shouldNotify","scrollContainer","bridgeProps","runtimeSettings","_runtimeSlotDomId","_upsertImport3DLazySlot","win","registry","domId","_removeImport3DLazySlot","_removeImport3DSlot","_ThreeJSRuntimeSlot","modelUrlProp","_tr","_pos","_perf","_ui","wrapRef","bridgeGovernor","setBridgeGovernor","slotViewportRatio","setSlotViewportRatio","transformBreakpoint","positionBreakpoint","_runtimeProps","responsiveCanvasWidth","setResponsiveCanvasWidth","isMobileCanvas","isMobilePositionCanvas","update","prev","ro","_activeTr","_activePos","_runtimeConfig","modelScale","modelOffsetX","modelOffsetY","modelOffsetZ","modelRotationX","modelRotationY","modelRotationZ","cameraType","cameraPositionX","cameraPositionY","cameraPositionZ","orthoZoom","stereoEyeSep","backgroundColor","transparentBackground","enableEnvironment","environmentType","environmentPreset","hdriPreset","customHdriUrl","environmentIntensity","showEnvironmentBackground","ambientLightIntensity","directionalLightIntensity","directionalLightColor","dirLightPosX","dirLightPosY","dirLightPosZ","enableShadows","shadowMapSize","shadowBias","shadowNormalBias","extraLightsRaw","_interactionConfig","enableOrbitControls","enableZoom","enableAutoRotate","autoRotateSpeed","enableAnimation","animationSpeed","animationBlendDuration","animationWarp","animationSyncPhase","animationRestartOnSwitch","animationLoopMode","animationModelHoverGate","animationWarmClips","hasAnimationOnceCompleteHandler","enableMouseRotation","mouseRotationIntensity","enableParticles","particleCount","particleSize","particleColor","particleSpeed","particleSpread","bridgeAnimationSignature","_appear","dissolveEnabled","dissolveDuration","appearOffsetX","appearOffsetY","appearOffsetZ","appearScale","appearRotateX","appearRotateY","appearRotateZ","dissolveNoiseScale","dissolveAmplitude","dissolveEdgeWidth","dissolveEmissiveColor","dissolveEmissiveIntensity","dissolveParticlesEnabled","dissolveParticleBaseSize","dissolveParticleColor","dissolveParticleSpeed","dissolveParticleWaveAmp","dissolveParticleVelX","dissolveParticleVelY","dissolveParticleMaxCount","materialPreset","sketchBaseColor","sketchLineColor","sketchLineThickness","sketchSteps","overrideMaterial","metalness","roughness","clearcoat","clearcoatRoughness","transmission","ior","iridescence","iridescenceIOR","sheen","sheenRoughness","sheenColor","envMapIntensity","reflectivity","opacity","wireframe","materialTransitionDuration","enableFloat","floatAmplitude","floatSpeed","bloomEnabled","bloomStrength","bloomThreshold","bloomRadius","toneMapping","exposure","enableFXAA","enableColorGrading","brightness","contrast","saturation","enableVignette","vignetteOffset","vignetteDarkness","enableChromaticAberration","chromaticAberrationStrength","enableFilmGrain","filmGrainIntensity","enableSSAO","ssaoRadius","ssaoMinDistance","ssaoMaxDistance","enableDOF","dofFocus","dofAperture","dofMaxBlur","showControls","showMeshHelper","showStatsMonitor","statsMonitorPanel","showGrid","showGridSize","showGridDivisions","showGridColor1","showGridColor2","showAxes","showAxesSize","showModelAxes","showModelAxesSize","stopMotionInEditor","progressiveLoading","progressiveFadeDuration","_positionConfig","layoutPositionMode","layoutLayerMatch","layoutTop","layoutLeft","layoutRight","layoutBottom","layoutZIndex","scrollAnchorEnabled","scrollAnchorMatch","scrollTransformAnchorMatch","scrollProgressTransformEnabled","scrollAnchorTransitionEnabled","scrollAnchorTransitionTargetId","scrollAnchorX","scrollAnchorY","scrollAnchorStrengthX","scrollAnchorStrengthY","scrollAnchorSmoothing","scrollAnchorRotationX","scrollAnchorRotationY","scrollAnchorRotationZ","scrollProgressPositionX","scrollProgressPositionY","scrollProgressPositionZ","scrollProgressScale","webglActive","governorQualityMode","basePerformanceDprCap","basePerformanceMobileDprCap","performanceDprCap","performanceMobileDprCap","performanceLazyWebgl","performancePauseHidden","performancePauseOffscreen","performanceStats","performanceAntialias","isGovernorPerformance","isGovernorBalanced","scrollSmoothing","modelSource","modelFile","effectiveUrl","canvasRef","rafRef","status","setStatus","preloadProgress","setPreloadProgress","detectedAnimations","setDetectedAnimations","stateRef","meshTooltip","setMeshTooltip","meshTooltipRef","updateMeshTooltip","moved","changed","interactTooltip","setInteractTooltip","interactTooltipRef","updateInteractTooltip","modelPointerCapture","setModelPointerCapture","modelHoverStartRef","modelHoverEndRef","modelClickRef","animationOnceCompleteRef","canvasId","slotId","runtimeSlotDomId","isCanvasTarget","setIsCanvasTarget","webglRuntimeActive","setWebglRuntimeActive","layoutLayerMatched","setLayoutLayerMatched","rootRendererActive","isDesignCanvas","shouldRenderStandalone","effectiveWebglActive","text","clientX","clientY","sync","observer","settingsRef","isCanvas","forceLazy","raf","checkMatch","runtimeMeshInteractions","runtimeMeshInteractionItems","runtimeHasEnabledMeshInteractions","runtimeHasDraggableMeshInteractions","runtimeMeshInteractionTargetNames","runtimeMeshObjectTransformItems","runtimeMeshObjectTransformKey","runtimeMeshInteractionLookupKey","runtimeMeshAnimations","runtimeMeshAnimationItems","runtimeHasEnabledMeshAnimations","runtimeMeshAnimationLookupKey","runtimeMaterialHash","runtimeLightingHash","runtimeEnvHash","runtimeEffectsHash","runtimeSceneConfigHash","_sharedRuntimeSettings","runtimeAnimationReplayHash","subSceneModelUrlKey","subSceneAnimationKey","rendererOwnerId","initW","initH","initAspect","stereoCamera","ambientLight","dirLight","fillLight","extraLightObjects","particleSystem","createParticleSystem","velocities","i3","r","theta","phi","updateParticles","ground","initMetrics","initDpr","composer","hdrRT","renderPass","ssaoPass","bokehPass","alphaRT","alphaSave","alphaRestore","outputPass","postFxSignature","postFxW","postFxH","postFxDpr","postFxMods","postFxModsLoading","ensurePostFxModulesLoaded","mods","syncPostFxRefs","disposePostFxPipeline","ensurePostFxPipeline","activeCfg","metrics","nextSig","EffectComposer","RenderPass","SSAOPass","BokehPass","UnrealBloomPass","OutputPass","FXAAShader","\"aspect\"","clock","delta","onMouseMove","_meshHelperRaycaster","_meshHelperMouse","_meshHelperHovered","_meshHelperOrigEmissive","_findMeshHelperGroup","hitObj","onMeshHelperMove","_unhighlightMeshHelper","meshes","_getInteractiveMeshes","hits","_interactHovered","childMeshes","mt","verts","groupMeshes","pa","saved","_interactRaycaster","_interactMouse","_interactHoveredConfig","_interactHoverEndTimer","_hoverLerp","_hoverLerpOut","_pressLerp","_interactDragging","_interactDragConfig","_interactDragPlane","_interactDragOffset","_interactJustDragged","_dragSnapBack","_meshAutoRotates","_meshMouseRotates","_interactMatchCache","_interactMatchCacheKey","_meshObjectBaseTransforms","_meshObjectTransformModelUUID","_meshObjectTransformCacheKey","_getMeshObjectPath","segments","childIndex","_resolveMeshObjectPath","segment","_meshInteractionConfigKey","_parseMeshObjectVector","index","_applyMeshObjectTransforms","modelUUID","cacheKey","_wantAutoRotate","_wantMouseRotate","_interactConfigByObj","_interactResolvedConfigSource","_interactResolvedConfigCache","_meshAnimMatchCache","_meshAnimMatchCacheKey","_interactiveMeshesCache","_interactiveMeshesCacheKey","_interactiveVisibleMeshes","_interactionHoverMeshesCache","_interactionHoverMeshesCacheKey","_interactionHoverVisibleMeshes","_lastInteractHoverRaycastAt","_lastModelHoverRaycastAt","_findInteractConfig","interactions","meshNameLower","matchedConfig","matchedPathLength","meshPath","isEnabled","targetName","_clearInteractResolvedConfigCache","_emitMeshInteractionEvent","eventName","keyParts","_needsWholeModelHoverHit","_getInteractionHoverMeshes","allMeshes","targetPaths","targeted","_interactNDC","_updatePointerCapture","_suspendInteractionDuringScroll","ms","_emitModelHover","_unhighlightInteract","_modelHoverActive","_modelHoverEndTimer","_modelHoverPendingEndEvent","active","immediate","pendingEvent","onModelHoverEventMove","_collectChildMeshes","out","_saveOrigEmissive","map","_hoverTmpColor","_applyHoverLerp","ch","_tmpColor","orig","_snapHoverChannel","_resetPressInteract","_applyPressInteract","emitEvent","_scheduleUnhighlightInteract","_highlightInteract","hoverEffect","onInteractMove","isMobileHoverDisabled","foundInteractive","hit","matchedObj","tooltipText","onInteractClick","tLower","allModels","colorMeshes","newColor","existingAction","_tmpVec3Drag","_tmpVec3DragB","onInteractPointerDown","isMobilePress","shouldPrioritizeTouchScroll","planeType","onInteractPointerMove","constraint","onInteractPointerUp","draggedMesh","draggedConfig","onCanvasPointerCaptureDown","onCanvasPointerCaptureUp","_modelHoverMoveRaf","_modelHoverMoveEvent","onModelHoverEventMoveRaf","_interactMoveRaf","_interactMoveEvent","onInteractMoveRaf","interval","_interactPointerMoveRaf","_interactPointerMoveEvent","onInteractPointerMoveRaf","onCanvasWheel","onWindowScrollInteractionPause","resizeRaf","resizeTimeout","resize","cfgForResize","sizeStable","dprStable","scheduleResize","run","stNow","sinceLast","delayedResizeTimers","onVisibilityChange","onWindowLayoutChange","vv","onTouchMoveLayoutDirty","io","loop","stopInEditor","statsMonitor","coordPaused","frameNow","effectiveCfg","scrollCfg","shouldRenderGL","scrollAnchorOffset","scrollTransformBaseOffset","scrollTransformPreviewEnabled","scrollTransformPreviewChanged","scrollTransformOffset","previewOffset","nextAppearReplayHash","hasPreviousAppearHash","fps","controlsPausedByScroll","controlsShouldBeEnabled","scaleChanged","offsetChanged","rotChanged","sh","fadeSpeed","SWAP_AT","MIN_F","tc","tScale","tOffX","tOffY","tOffZ","tRotX","tRotY","tRotZ","tCamX","tCamY","tCamZ","lerpFactor","modelsToUpdate","targetModel","effectiveScale","parentToMain","parentPivot","localScale","localOffX","localOffY","localOffZ","localRotX","localRotY","localRotZ","sst","parentScale","parentOffX","parentOffY","parentOffZ","parentRotX","parentRotY","parentRotZ","useScale","useOffX","useOffY","useOffZ","useRotX","useRotY","useRotZ","useMainPivot","mainGroundY","targetLower","targetKey","matched","allowMouseRotate","spd","mx","my","lerpDt","sb","meshLerpFactor","maCacheKey","meshName","scrollMatch","sm","legacyScale","opacityTargets","resetMeshes","tryReset","dissolveSpeed","_mdp","origMat","activeModel","_dpColorStr","anyPostFX","_sz","prevShadowAutoUpdate","blurElapsed","blurDur","blurInt","currentBlur","cw","rw","rh","resizeCfg","targetDpr","timer","cancelled","fromCache","isRemountSameUrl","_lastLoadedModelUrl","hasCachedModel","isPreloading","splashHandlesLoading","snapshotPos","snapshotRot","snapshotScale","normalizeScale","ma","discoveredMeshNames","discoveredMeshTree","_buildMeshTree","isMesh","isGroup","hasName","meshCount","d","depth","normalizedBox","fitRatio","clipNames","overall","fadeDur","fadeStart","doFade","onDownloadProgress","clonedScene","clonedAnims","preloaded","overrideSig","followSig","totalToLoad","loadedCount","updatePreloadProgress","pendingReplace","wantUrl","oldSs","imageFormat","onSubLoaded","baseCenter","baseMinY","ssScale","placeholder","subSceneAnimState","overrideClip","playMode","playClip","initSmooth","onSubError","cs","ca","hasInteractions","shouldCapturePointer","cursorStyle","layoutPositionStyle","indent","typeColor","Slot","init_slotRuntime","Root","init_rootRuntime","_ROOT_SCROLL_CANVAS_PADDING","_rootDracoLoader","_rootGltfLoader","_rootFbxLoader","_rootTextureLoader","_rootPostFxMods","_rootPostFxModsLoading","_ensureRootPostFxModulesLoaded","_rootModelCache","_rootTextureCache","_ROOT_DISSOLVE_NOISE_GLSL","_getRootGltfLoader","_getRootFbxLoader","_getRootTextureLoader","_rootModelUrlFromProps","fileUrl","_isRootSlotWebglEnabled","slot","_rootRecordKeyForSlot","hasSubScenes","_rootHasRenderableSubScenes","_rootModelFormat","clean","_rootSubSceneUrlFromItem","_loadRootTexture","reject","_createRootImagePlane","_loadRootModel","_applyRootCanonicalMaterial","_notifyRootModelLoadingStart","_notifyRootModelLoadingComplete","_preloadRootModel3D","cleanUrl","_installRootPreloadBridge","previousPreload","preload","_centerAndNormalizeRootModel","_optimizeStaticGeometries","byMaterial","byGeomMat","matKey","geomKey","instKey","invMatrix","instancedMesh","_matrix","attrKeys","mergeKey","geometriesToMerge","clonedGeom","mergedGeometry","mergedMesh","geom","_prepareRootModel","_rootMapDissolveProgress","_rootCreateDissolveMaterial","edgeColor","appear","_rootRestoreAppearDissolve","original","_syncRootAppearDissolve","shouldBeActive","dissolveHash","nextMaterial","mappedProgress","_isRootDocumentScrollContainer","_getRootScrollMetrics","isDocument","scrollEl","viewportWidth","viewportHeight","containerRect","_getRootEffectiveDomOpacity","ownOpacity","_rootRectsNearlyEqual","tolerance","_compareRootVariantPriority","pointerDelta","opacityDelta","updatedDelta","visibilityDelta","_compareRootRenderOrder","_compareRootPreloadOrder","_resolveRootResponsiveTransform","_normalizeRootLayerMatchValue","_isRootLayerMatchCandidateUsable","slotNode","_matchesRootLayerSelector","_findRootLayerMatchElement","sectionId","_getRootScrollLayoutViewport","_getRootScrollLayoutRect","_rootPositionConfig","_applyRootPositionToObject","positionState","_getRootFollowOffset","measureAnchorOffset","_getRootTransformOffset","_getRootPositionState","followOffset","transformOffset","_resolveRootRuntimeConfig","slotRuntime","_normalizeRootRuntimeSceneItems","_getRootRuntimeSceneItems","rawItems","runtimeItems","_cacheRootObjectBaseBounds","prevPosition","prevRotation","_rootCreateParticleSystem","_rootUpdateParticles","_ensureRootRuntimeAdapter","_rootNeedsPostFx","_disposeRootPostFxPipeline","_ensureRootPostFxPipeline","renderW","renderH","pipelineSig","pixelatedPass","dofPass","bloomPass","colorGradingPass","vignettePass","chromaticPass","filmGrainPass","alphaRestorePass","fxaaPass","_lerpRootSceneOpacity","clamped","applyObj","_clearRootSceneOpacity","restoreObj","_syncRootVisualRuntimePipeline","materialChanged","envChanged","lightingChanged","effectsChanged","particleKey","_disposeRootHelperObject","helper","_syncRootHelperRuntime","gridKey","grid","axesKey","axes","modelAxesKey","modelAxes","_getRootSmoothedTransform","hasSmoothingDelta","_applyRootCameraSmoothing","smoothed","_rootHasAppearTransformMotion","_rootShouldAnimateAppear","_restartRootAppearPlayback","_syncRootAppear","nextHash","shouldAnimate","shouldReplay","_resetRootAppearTransformOffset","_applyRootAppearTransformOffset","anyObject","_applyRootAppearOpacity","motionVisibility","baseOpacity","baseTransparent","nextOpacity","_syncRootCanvasAppearStyle","_applyRootSlotTransform","baseScale","effectiveUserScale","baseGroundY","_makeRootCamera","_rootCameraHash","_getRootCamera","hash","_makeRootScene","ambient","dir","hemisphereLight","_getRootTimerDelta","_findRootClip","needle","_configureRootAnimationLoop","_syncRootAnimationPhase","_rootHoverRaycaster","_rootHoverMouse","_rootBaseCameraPosition","_rootOrbitOffset","_rootOrbitSpherical","_rootInteractionPlane","_rootInteractionVecA","_rootInteractionVecB","_rootInteractionColor","_markRootHoverMeshesDirty","_syncRootMouseRotationState","_applyRootMouseRotation","multiplier","_applyRootOrbitCamera","zoomFactor","_emitRootMeshInteractionEvent","_rootInteractionCacheKey","subCfg","_collectRootInteractiveMeshes","_findRootInteractConfig","cfgKey","_findRootInteractiveObject","hitObject","_findRootGroupSlotInfo","_resolveRootHitInteractionConfig","slotInfo","slotProps","fallbackCfg","ownerCfg","_findRootInteractiveHit","ownerMatch","_rootSlotHasEnabledMeshInteractions","_rootPropsHasModelHoverHandlers","runtime","_getRootModelHoverHandler","_makeRootGroupedModelHoverSlot","end","_rootSlotNeedsModelHover","_rootSlotFromHitOwner","owner","_findRootModelHoverSlotFromHits","groupedHoverSlot","hoverSlot","_raycastRootInteractiveAt","_collectRootChildMeshes","_saveRootOrigEmissive","_applyRootHoverLerp","channel","_snapRootHoverChannel","_ensureRootInteractionState","_resetRootPressInteract","_applyRootPressInteract","_unhighlightRootInteract","hovered","leaving","_scheduleUnhighlightRootInteract","_highlightRootInteract","_syncRootMeshHover","pointerSeq","hoverInterval","_syncRootMeshInteractionFrame","snap","hasAnyInteractions","roots","axis","_applyRootMeshHoverTransforms","_rootMeshAnimationCacheKey","_syncRootMeshAnimations","degToRad","currentScaleX","currentScaleY","currentScaleZ","_findRootMeshHelperGroup","_buildRootMeshHelperInfo","attr","_countRootDescendantMeshes","_buildRootMeshHelperTree","rows","visit","childMeshCount","nextDepth","_playRootMeshClickAnimation","_applyRootMeshClickAction","toggle","applied","_getRootAnimationOnceProxy","_setRootModelHoverActive","wasInitialized","nextSlotId","prevSlot","prevSlotId","eventLike","prevHandler","_syncRootModelHover","hoverRectSig","hoverCheckInterval","_resetRootModelHoverGateState","_resolveRootModelHoverGatedClip","_getRootAnimationOnceCallback","_getRootAnimationOnceAllCallback","_syncRootAnimations","normalizedLoopMode","restartOnSwitch","sameAction","seenAction","shouldSyncPhase","allRequestSig","allActions","_safeSyncRootAnimations","errorSig","label","_safeUpdateRootMixer","_safeSyncRootModelHover","_rootSubSceneHashFromItems","_getRootSubSceneSmoothedItem","_applyRootSubSceneTransform","local","parentCurrent","_syncRootSubScenes","wanted","normalizedSize","Import_3D_Canvas_Root","rootCanvasRef","rootInstanceIdRef","bridgeInfo","setBridgeInfo","rootHelper","setRootHelper","rootHelperRef","empty","syncBridge","nextBudget","mobileSlots","desktopSlots","dprCapDesktop","dprCapMobile","pauseHidden","pauseOffscreen","destroyOffscreen","destroyAfterMs","debug","nextBridge","rafId","lastActiveId","bootStartedAt","lastBootEmitAt","pointerState","scrollState","clamp01","onPointerMove","onPointerLeave","suspendHoverForScroll","rawSlots","viewportCenterY","padPx","currentScrollLeft","currentScrollTop","hoverSuppressed","measuredSlots","slotWebglActive","domOpacity","pointerInside","hitNode","pointerHit","localProgress","visibleHeight","activeSlot","priority","maxScroll","scrollTop","scrollProgress","rootOwnerId","canvasZIndex","nativeAntialias","lastWidth","lastHeight","lastDpr","lastRootPerfLog","lastPrewarmAt","lastRenderedLocalRects","records","preloadSigs","rootPageVisible","onRootVisibilityChange","rootRecordObservers","_ensureRootRecordObserver","groupedRuntimeCfgCache","groupedRenderViewsSig","groupedRenderViewsCache","disposed","hostNode","documentCanvasClipper","patchedPositionHost","patchedPositionPrev","restorePatchedHost","getRuntimeMode","getDocumentCanvasHeight","contentBottom","ensureDocumentCanvasClipper","framerRuntimeMode","ensureCanvasHost","clipper","nextHost","ensureRootMainModelLoaded","recordKey","fitCamera","_compileCamera","_compileAsync","getRecord","createThreeJSRuntimeScene","prewarmThreeJSRuntimeScene","measured","sig","compileAsync","preloadThreeJSRuntimeSceneModels","urls","mainUrl","preloadKey","disposeThreeJSRuntimeScene","clickState","dragState","endRootModelPressHover","onRootPointerDown","isTouch","candidates","makeGroupedRenderViews","view","isModelPress","onRootPointerMove","onRootPointerUp","wasDragging","dragKind","draggedRecord","draggedObj","hitSlotInfo","hitSlotProps","hitRuntime","onRootCanvasWheel","renderThreeJSRuntimeScene","localRect","viewLeft","viewTop","viewRight","viewBottom","scissorLeft","scissorRight","scissorTop","scissorBottom","scissorWidth","scissorHeight","halfWidth","renderEye","eyeLeft","eyeIndex","eyeRight","eyeScissorLeft","eyeScissorWidth","eyeCamera","updateRootHelperOverlay","tooltip","tree","syncRootHelperOverlay","visibleViews","pointerX","pointerY","pointerActive","syncThreeJSRuntimeScene","rootSceneItems","appearVisibility","renderVisibility","baseY","modelOpacityVisibility","useCanvasAppearStyle","itemRuntimeCfg","itemMeasured","itemSlot","itemMaterialHash","itemPositionState","itemAppearVisibility","itemDomOpacity","itemRenderVisibility","itemOpacityVisibility","sceneItemsForAnimation","baseRuntimeCfg","allowGroupedOnceComplete","subAnimClip","getRootRenderDpr","slotMax","cssPixels","visualViewportWidth","syncCanvasPlacement","getSlotGroupName","getSlotGroupKey","getRenderViewKey","getRenderViewRect","clearRootScissorRect","sl","sr","sw","rootHoverChannelActive","rootHolderAnimating","rootRecordHasActiveMotion","entryCfg","rootRenderSignature","shouldRenderRootRecord","getGroupedSlotCacheSignature","getGroupedSlotRuntimeCfg","firstKey","attachGroupedSlotRuntime","slotModelAsSceneItem","rawTr","unionMeasuredRects","rects","members","localRects","union","applyGroupedSlotAnchors","childRect","groupRect","groupMeasured","childCenterX","childCenterY","groupCenterX","groupCenterY","visibleSlots","groupKey","views","groups","leader","scenes","member","memberSceneItems","meshAnimations","meshInteractions","groupName","anchoredScenes","renderViews","currentRenderedRects","currentRectSigs","prevRect","renderedRecordKeys","visibleSlotIds","shouldLogPerf","activeMeasured","activeRecordKey","activeRecord","NimbusPartLabel","measure","onMeasure","onHover","onOpen","buttonStyle","unit","curve","NimbusTechUI","labelHover","setLabelHover","labelWidths","setLabelWidths","measureLabel","mounted","setMounted","frame","setFrame","pointer","setPointer","receive","move","leave","onOpenRef","vi","overModel","region","labels","labelStyle","labelsVisible","lineDuration","lineDelay","labelSize","labelLayout","gutter","column","measuredWidth","button","outer","ThreeJS_Runtime","nimbusTechId","nimbusHover","setNimbusHover","role","ThreeJSRuntimeSlotMemo","ThreeJSRuntimeRootMemo","ThreeJSRuntimeSlot","ThreeJSRuntimeRoot","ROOT_RUNTIME_PROPERTY_CONTROLS","SLOT_RUNTIME_PROPERTY_CONTROLS","ROOT_RUNTIME_CONTROLS","init_ThreeJS_Runtime"],"sources":["https:/framerusercontent.com/modules/iBn4LdRJpjxIAXUJFlS6/bbmGg6aZxQmqLK298tYm/Follow_Cursor.js","https:/framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js","https:/framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js","https:/framerusercontent.com/modules/g7ZpK2wMpFDbWq2zFtRU/OA8T078LXim2Tn0CtB5I/propertyControls.js","https:/framerusercontent.com/modules/aFcmtpYRlhyp7w3gDzcI/L0O59n8ERYAkLQU9GKye/hashes.js","https:/framerusercontent.com/modules/OW6JuxITky0baeSUblwC/SQrxhGqqDBbtN2sdADeq/animationUtils.js","https:/framerusercontent.com/modules/e3Gn61f7n8O6N477csEc/XQABUbxjpsQJSmz595Po/state.js","https:/framerusercontent.com/modules/IdGzsHdzJFZjoerrm1R6/ZDt4dFJIJ9EMLZbVIXUQ/postprocessing.js","https:/framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js","https:/framerusercontent.com/modules/si06nShLsVx5iWJW7SK7/2JHazrj0zYD0ipOq3PQl/coordinator.js","https:/framerusercontent.com/modules/VBWlX7Xj9c0TDGr87Yag/aMS7pZCDBphxkvSKFGKw/renderMetrics.js","https:/framerusercontent.com/modules/AFUuT451C58PCzmVhCV6/LtpaPYvKQJsZkRBrz1k0/object3DUtils.js","https:/framerusercontent.com/modules/ZJHKxOkDkbAZkHcbiSxh/dUmMyRmOORWdCMBkW5w2/modelLoading.js","https:/framerusercontent.com/modules/Edc710chG3tFyabyrK1M/nazrAnvcxYaZjkQMA0fu/materialSystem.js","https:/framerusercontent.com/modules/9w1GUetMBcd5tGkwVEaC/mW7mdtQJNCTLnn6MVRmg/lighting.js","https:/framerusercontent.com/modules/yTDeUaM613tgGAJ9WKa4/jE52leYsnmj4KuWdBOo5/environment.js","https:/framerusercontent.com/modules/Ico5PLrXB0RNY2cRCaPV/itWMfldJwUT6Nn7u0Jm1/runtimeGlue.js","https:/framerusercontent.com/modules/5Y5eNnruVlEDN4Nlaxhn/992OACxl4zEJdAfDHdex/nimbusScroll.js","https:/framerusercontent.com/modules/k3J7THOMV5sPcC9EjGVq/b6mlYDX51KTLflCnOxsJ/bridge.js","https:/framerusercontent.com/modules/YM17MJwxtWeSs0sFM9GB/4r44enqUb9DGkkm7wxsa/diagnostics.js","https:/framerusercontent.com/modules/s7jz5uIzZtPhhkq2KDZB/ItIOP5YatoakoLrZN8vu/statsMonitor.js","https:/framerusercontent.com/modules/XlKFBNR7wMf9MHWMxVZK/nWj9ryT67KRfHxbqxqKO/sceneTransforms.js","https:/framerusercontent.com/modules/RFE6e41gBPanm7J7Fw4E/Ht3zzQoaqP0VvoJSU4Zl/configResolution.js","https:/framerusercontent.com/modules/llv7nCr7N1SVVPsRcwBe/U9GUQ9JuFvCzpzGTjaRE/slotRuntime.js","https:/framerusercontent.com/modules/k2NVYa2a1IG7NbVNNeuB/Z2bzFg9MAAd8CpWNZsBL/rootRuntime.js","https:/framerusercontent.com/modules/UaRFG9gWNFOkWmEW4aEO/tnnAIxGKpziJj8mqp10U/ThreeJS_Runtime.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useState,useEffect}from\"react\";export function withCursorFollow(Component){return props=>{const ref=useRef(null);const[isHovering,setIsHovering]=useState(false);const[position,setPosition]=useState({left:0,top:0});useEffect(()=>{const handleMouseMove=e=>{if(!ref.current)return;const isHovered=e.target instanceof Element&&(e.target===ref.current.parentElement||ref.current.parentElement.contains(e.target)||e.target===ref.current||ref.current.contains(e.target));setIsHovering(isHovered);if(isHovered){const parentRect=ref.current.parentElement.getBoundingClientRect();const elementRect=ref.current.getBoundingClientRect();setPosition({left:e.clientX-parentRect.left-elementRect.width/2,top:e.clientY-parentRect.top-elementRect.height/2});}else{setIsHovering(false);}};window.addEventListener(\"mousemove\",handleMouseMove);return()=>{window.removeEventListener(\"mousemove\",handleMouseMove);};},[]);return /*#__PURE__*/ _jsx(\"div\",{ref:ref,style:{position:\"fixed\",left:`calc(${position.left}px - 0.1%)`,top:`calc(${position.top}px - 0.1%)`,pointerEvents:\"none\",transform:\"translate(-0.1%, -0.1%)\"},children:isHovering&&/*#__PURE__*/ _jsx(Component,{...props})});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withCursorFollow\":{\"type\":\"reactHoc\",\"name\":\"withCursorFollow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Follow_Cursor.map","// @ts-nocheck\n// #region 1. IMPORTS & DEPENDENCIES\nimport*as THREE from\"https://esm.sh/three@0.183.2\";import{computeBoundsTree,disposeBoundsTree,acceleratedRaycast}from\"https://esm.sh/three-mesh-bvh@0.8.2?deps=three@0.183.2\";THREE.BufferGeometry.prototype.computeBoundsTree=computeBoundsTree;THREE.BufferGeometry.prototype.disposeBoundsTree=disposeBoundsTree;THREE.Mesh.prototype.raycast=acceleratedRaycast;import{MeshoptDecoder}from\"https://esm.sh/three@0.183.2/examples/jsm/libs/meshopt_decoder.module.js?deps=three@0.183.2\";import{GLTFLoader}from\"https://esm.sh/three@0.183.2/examples/jsm/loaders/GLTFLoader.js?deps=three@0.183.2\";import{DRACOLoader}from\"https://esm.sh/three@0.183.2/examples/jsm/loaders/DRACOLoader.js?deps=three@0.183.2\";import*as SkeletonUtils from\"https://esm.sh/three@0.183.2/examples/jsm/utils/SkeletonUtils.js?deps=three@0.183.2\";import*as BufferGeometryUtils from\"https://esm.sh/three@0.183.2/examples/jsm/utils/BufferGeometryUtils.js?deps=three@0.183.2\";import{OrbitControls}from\"https://esm.sh/three@0.183.2/examples/jsm/controls/OrbitControls.js?deps=three@0.183.2\";import*as React from\"react\";import{startTransition,useEffect,useRef,useState,useId}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget,useCurrentRouteId,useIsOnFramerCanvas,useRouter}from\"framer\";export{THREE,MeshoptDecoder,GLTFLoader,DRACOLoader,SkeletonUtils,BufferGeometryUtils,OrbitControls,React,startTransition,useEffect,useRef,useState,useId,createPortal,addPropertyControls,ControlType,RenderTarget,useCurrentRouteId,useIsOnFramerCanvas,useRouter,};// #endregion\n// #region 1b. LAZY-LOADED DEPENDENCIES\n// These are only pulled over the network the first time a feature that\n// actually needs them is used (postprocessing FX, FBX import, ZIP model\n// bundles, the debug Stats overlay, custom HDRIs). Keeping them out of the\n// eager import graph is what the initial Lighthouse \"unused JavaScript\" /\n// bootup-time cost was mostly coming from.\nlet _fbxLoaderModule=null;export function _loadFBXLoader(){if(!_fbxLoaderModule){_fbxLoaderModule=import(\"https://esm.sh/three@0.183.2/examples/jsm/loaders/FBXLoader.js?deps=three@0.183.2\").then(m=>m.FBXLoader);}return _fbxLoaderModule;}let _hdrLoaderModule=null;export function _loadHDRLoader(){if(!_hdrLoaderModule){_hdrLoaderModule=import(\"https://esm.sh/three@0.183.2/examples/jsm/loaders/HDRLoader.js?deps=three@0.183.2\").then(m=>m.HDRLoader);}return _hdrLoaderModule;}let _jsZipModule=null;export function _loadJSZip(){if(!_jsZipModule){_jsZipModule=import(\"https://esm.sh/jszip@3.10.1\").then(m=>m.default||m);}return _jsZipModule;}let _statsModule=null;export function _loadStats(){if(!_statsModule){_statsModule=import(\"https://esm.sh/stats.js@0.17.0\").then(m=>m.default||m);}return _statsModule;}let _postFxModules=null;export function _loadPostFxModules(){if(!_postFxModules){_postFxModules=Promise.all([import(\"https://esm.sh/three@0.183.2/examples/jsm/postprocessing/EffectComposer.js?deps=three@0.183.2\"),import(\"https://esm.sh/three@0.183.2/examples/jsm/postprocessing/RenderPass.js?deps=three@0.183.2\"),import(\"https://esm.sh/three@0.183.2/examples/jsm/postprocessing/UnrealBloomPass.js?deps=three@0.183.2\"),import(\"https://esm.sh/three@0.183.2/examples/jsm/postprocessing/ShaderPass.js?deps=three@0.183.2\"),import(\"https://esm.sh/three@0.183.2/examples/jsm/postprocessing/SSAOPass.js?deps=three@0.183.2\"),import(\"https://esm.sh/three@0.183.2/examples/jsm/postprocessing/BokehPass.js?deps=three@0.183.2\"),import(\"https://esm.sh/three@0.183.2/examples/jsm/postprocessing/OutputPass.js?deps=three@0.183.2\"),import(\"https://esm.sh/three@0.183.2/examples/jsm/shaders/FXAAShader.js?deps=three@0.183.2\")]).then(([effectComposerMod,renderPassMod,bloomMod,shaderPassMod,ssaoMod,bokehMod,outputMod,fxaaMod])=>({EffectComposer:effectComposerMod.EffectComposer,RenderPass:renderPassMod.RenderPass,UnrealBloomPass:bloomMod.UnrealBloomPass,ShaderPass:shaderPassMod.ShaderPass,SSAOPass:ssaoMod.SSAOPass,BokehPass:bokehMod.BokehPass,OutputPass:outputMod.OutputPass,FXAAShader:fxaaMod.FXAAShader}));}return _postFxModules;}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"useCurrentRouteId\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ControlType\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MeshoptDecoder\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"startTransition\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RenderTarget\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_loadHDRLoader\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useEffect\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SkeletonUtils\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_loadPostFxModules\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"GLTFLoader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_loadStats\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRef\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useId\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"THREE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"OrbitControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BufferGeometryUtils\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DRACOLoader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnFramerCanvas\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createPortal\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"addPropertyControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRouter\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_loadFBXLoader\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_loadJSZip\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"React\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./deps.map","// @ts-nocheck\n// #region 3. PRESETS & CONSTANTS\nimport{THREE}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";export const _IMPORT_3D_RENDERER_DEBUG_KEY=\"__IMPORT_3D_RENDERER_DEBUG__\";/** Orthographic frustum half-size (world units). Zoom controls magnification. */export const _ORTHO_FRUSTUM=10;/** Desktop auto-fit cap keeps published wide viewports from scaling models larger than the Framer canvas. */export const _AUTO_FIT_MAX_ASPECT=1.42;/** Minimum visible size to prevent division by zero in auto-fit calculations. */export const _AUTO_FIT_MIN_VISIBLE=1e-4;/** Degrees to radians conversion constant (shared across all transforms). */export const _DEG2RAD=Math.PI/180;/** Scroll-variant transform smoothing is always on; no user-facing panel needed. */export const _SCROLL_SMOOTHING_SPEED=.08;export const easeInOutQuad=x=>x<.5?2*x*x:1-Math.pow(-2*x+2,2)/2;/* ═══════════════════════════════════════════════════════════\n   Material Presets\n   ═══════════════════════════════════════════════════════════ */export const MATERIAL_PRESETS={none:null,wireframe:{metalness:0,roughness:.5,clearcoat:0,clearcoatRoughness:0,color:\"#00ffff\",envMapIntensity:.5,reflectivity:.3,transmission:0,ior:1.5,wireframe:true},// ── Special presets (non-PBR, handled separately) ──\ntoonShading:{_type:\"sketch\",steps:3},sketchStyle:{_type:\"sketch\",steps:3},animeLine:{_type:\"outline\",color:\"#e8e0d8\",emissiveColor:\"#ffffff\",emissiveIntensity:.08,outlineColor:\"#050505\",outlineThickness:.06,steps:0}};/* ═══════════════════════════════════════════════════════════\n   Tone Mapping Options\n   ═══════════════════════════════════════════════════════════ */export const TONE_MAPPINGS={aces:THREE.ACESFilmicToneMapping,reinhard:THREE.ReinhardToneMapping,cineon:THREE.CineonToneMapping,linear:THREE.LinearToneMapping,agx:THREE.AgXToneMapping,neutral:THREE.NeutralToneMapping};/* ═══════════════════════════════════════════════════════════\n   HDRI Presets — Poly Haven CDN (free, CC0, CORS-enabled)\n   ═══════════════════════════════════════════════════════════ */const HDRI_BASE=\"https://dl.polyhaven.org/file/ph-assets/HDRIs/hdr/1k/\";export const HDRI_PRESETS={// ── Studio ──\nstudio_small_09:{url:HDRI_BASE+\"studio_small_09_1k.hdr\",label:\"Studio Soft\"},photo_studio_loft_hall:{url:HDRI_BASE+\"photo_studio_loft_hall_1k.hdr\",label:\"Loft Studio\"},studio_small_03:{url:HDRI_BASE+\"studio_small_03_1k.hdr\",label:\"Studio Warm\"},brown_photostudio_07:{url:HDRI_BASE+\"brown_photostudio_07_1k.hdr\",label:\"Photo Studio\"},// ── Outdoor ──\nkloofendal_48d_partly_cloudy_puresky:{url:HDRI_BASE+\"kloofendal_48d_partly_cloudy_puresky_1k.hdr\",label:\"Cloudy Sky\"},meadow_2:{url:HDRI_BASE+\"meadow_2_1k.hdr\",label:\"Meadow\"},autumn_field_puresky:{url:HDRI_BASE+\"autumn_field_puresky_1k.hdr\",label:\"Autumn Field\"},spruit_sunrise:{url:HDRI_BASE+\"spruit_sunrise_1k.hdr\",label:\"Sunrise\"},rosendal_plains_2:{url:HDRI_BASE+\"rosendal_plains_2_1k.hdr\",label:\"Plains\"},// ── Sunset / Golden ──\nvenice_sunset:{url:HDRI_BASE+\"venice_sunset_1k.hdr\",label:\"Venice Sunset\"},industrial_sunset_puresky:{url:HDRI_BASE+\"industrial_sunset_puresky_1k.hdr\",label:\"Industrial Sunset\"},sunflowers_puresky:{url:HDRI_BASE+\"sunflowers_puresky_1k.hdr\",label:\"Sunflowers\"},// ── Night ──\ndikhololo_night:{url:HDRI_BASE+\"dikhololo_night_1k.hdr\",label:\"Night Sky\"},moonlit_golf:{url:HDRI_BASE+\"moonlit_golf_1k.hdr\",label:\"Moonlit\"},// ── Urban / Architecture ──\nmodern_buildings_2:{url:HDRI_BASE+\"modern_buildings_2_1k.hdr\",label:\"Modern City\"},royal_esplanade:{url:HDRI_BASE+\"royal_esplanade_1k.hdr\",label:\"Royal Palace\"},paul_lobe_haus:{url:HDRI_BASE+\"paul_lobe_haus_1k.hdr\",label:\"Architecture\"},// ── Nature ──\nsnowy_forest_path_01:{url:HDRI_BASE+\"snowy_forest_path_01_1k.hdr\",label:\"Snowy Forest\"},misty_pines:{url:HDRI_BASE+\"misty_pines_1k.hdr\",label:\"Misty Pines\"},syferfontein_18d_clear_puresky:{url:HDRI_BASE+\"syferfontein_18d_clear_puresky_1k.hdr\",label:\"Clear Sky\"}};/* ═══════════════════════════════════════════════════════════\n   Environment Presets — procedural PMREM\n   ═══════════════════════════════════════════════════════════ */export const ENV_PRESETS={studio:{sky:{top:[.08,.12,.22],mid:[.15,.18,.28],bot:[.02,.02,.05]},lights:[{color:[4,3.8,3.5],pos:[10,15,10],size:8},{color:[1.5,2,3],pos:[-12,5,-5],size:8},{color:[2.5,2.5,3],pos:[-5,10,-15],size:6}]},sunset:{sky:{top:[.05,.08,.2],mid:[.5,.25,.1],bot:[.03,.02,.03]},lights:[{color:[5,3,1.5],pos:[15,5,10],size:12},{color:[1,.5,.3],pos:[-10,3,-8],size:8},{color:[3,2,1.5],pos:[0,15,-5],size:6}]},dawn:{sky:{top:[.1,.15,.35],mid:[.3,.2,.25],bot:[.05,.04,.06]},lights:[{color:[3,2.5,3.5],pos:[12,8,8],size:10},{color:[1,1.5,2.5],pos:[-8,10,-5],size:8},{color:[2,1.8,2.5],pos:[5,15,-10],size:6}]},night:{sky:{top:[.01,.02,.06],mid:[.03,.04,.08],bot:[.005,.005,.01]},lights:[{color:[.8,1,2],pos:[10,12,8],size:6},{color:[.3,.5,1.2],pos:[-10,8,-5],size:8},{color:[.5,.5,1],pos:[0,15,-10],size:4}]},warehouse:{sky:{top:[.15,.13,.1],mid:[.1,.09,.08],bot:[.04,.03,.03]},lights:[{color:[5,4.5,4],pos:[0,20,0],size:15},{color:[2,1.8,1.5],pos:[10,5,10],size:6},{color:[1.5,1.5,2],pos:[-10,5,-10],size:6}]},outdoor:{sky:{top:[.2,.4,.8],mid:[.5,.6,.7],bot:[.1,.08,.06]},lights:[{color:[6,5.5,4.5],pos:[10,20,5],size:10},{color:[1.5,2,3],pos:[-15,5,-10],size:12},{color:[.5,.8,1.2],pos:[0,-5,0],size:20}]}};export const _IMPORT_3D_BRIDGE_KEY=\"__IMPORT_3D_CANVAS_BRIDGE__\"// #endregion\n;\nexport const __FramerMetadata__ = {\"exports\":{\"ENV_PRESETS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_ORTHO_FRUSTUM\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"easeInOutQuad\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_IMPORT_3D_BRIDGE_KEY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_AUTO_FIT_MAX_ASPECT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MATERIAL_PRESETS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_DEG2RAD\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_AUTO_FIT_MIN_VISIBLE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_SCROLL_SMOOTHING_SPEED\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TONE_MAPPINGS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_IMPORT_3D_RENDERER_DEBUG_KEY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HDRI_PRESETS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./constants.map","// @ts-nocheck\n// #region 21. FRAMER PROPERTY CONTROLS\nimport{ControlType}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{HDRI_PRESETS}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";function _withRuntimeRoleHidden(controls,hiddenByRole){const mapped={};Object.entries(controls||{}).forEach(([key,control])=>{const originalHidden=control?.hidden;mapped[key]={...control,hidden:props=>{if(hiddenByRole(props))return true;if(typeof originalHidden===\"function\")return originalHidden(props);return!!originalHidden;}};});return mapped;}/* ═══════════════════════════════════════════════════════════\n   Framer Property Controls\n   ═══════════════════════════════════════════════════════════ */// @api FramerControls.schema\nexport const IMPORT_3D_PROPERTY_CONTROLS={// ━━━ Model Source ━━━\nmodelSource:{type:ControlType.Enum,title:\"Source\",options:[\"url\",\"file\"],optionTitles:[\"URL\",\"Upload\"],defaultValue:\"url\",displaySegmentedControl:true},modelUrl:{type:ControlType.String,title:\"Model URL\",defaultValue:\"\",placeholder:\"https://example.com/model.glb\",description:\" \",hidden:p=>p.modelSource===\"file\"},modelFile:{type:ControlType.File,title:\"Model File\",allowedFileTypes:[\"glb\",\"gltf\",\"fbx\",\"zip\"],hidden:p=>p.modelSource!==\"file\"},autoMergeMeshes:{type:ControlType.Boolean,title:\"Optimize Meshes\",defaultValue:false,description:\"Optimizes draw calls by merging static geometries with identical materials.\"},// ━━━ Material / PBR ━━━\nmaterial:{type:ControlType.Object,title:\"Material\",controls:{preset:{type:ControlType.Enum,title:\"Preset\",options:[\"none\",\"wireframe\",\"sketchStyle\",\"animeLine\"],optionTitles:[\"None (Original)\",\"Wireframe\",\"Sketch Style\",\"Anime Line\"],defaultValue:\"none\"},animeLineThickness:{type:ControlType.Number,title:\"Line Weight\",defaultValue:.06,min:0,max:1,step:.01,displayStepper:true,hidden:p=>p.preset!==\"animeLine\"},animeLineColor:{type:ControlType.Color,title:\"Line Color\",defaultValue:\"#050505\",hidden:p=>p.preset!==\"animeLine\"},animeLineEmissiveColor:{type:ControlType.Color,title:\"Emissive\",defaultValue:\"#ffffff\",hidden:p=>p.preset!==\"animeLine\"},animeLineEmissiveIntensity:{type:ControlType.Number,title:\"Glow Intensity\",defaultValue:.01,min:0,max:5,step:.01,displayStepper:true,hidden:p=>p.preset!==\"animeLine\"},sketchBaseColor:{type:ControlType.Color,title:\"Sketch Color\",defaultValue:\"#f4f2ec\",hidden:p=>p.preset!==\"sketchStyle\"},sketchLineColor:{type:ControlType.Color,title:\"Sketch Line\",defaultValue:\"#050505\",hidden:p=>p.preset!==\"sketchStyle\"},sketchLineThickness:{type:ControlType.Number,title:\"Line Weight\",defaultValue:.045,min:0,max:1,step:.005,displayStepper:true,hidden:p=>p.preset!==\"sketchStyle\"},sketchSteps:{type:ControlType.Number,title:\"Banding Steps\",defaultValue:3,min:0,max:10,step:.001,displayStepper:true,hidden:p=>p.preset!==\"sketchStyle\"},override:{type:ControlType.Boolean,title:\"Manual PBR\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>p.preset!==\"none\"},metalness:{type:ControlType.Number,displayStepper:true,title:\"Metalness\",defaultValue:0,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override},roughness:{type:ControlType.Number,displayStepper:true,title:\"Roughness\",defaultValue:.5,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override},clearcoat:{type:ControlType.Number,displayStepper:true,title:\"Clearcoat\",defaultValue:0,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override},clearcoatRoughness:{type:ControlType.Number,displayStepper:true,title:\"CC Roughness\",defaultValue:0,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override||p.clearcoat===0},transmission:{type:ControlType.Number,displayStepper:true,title:\"Transmission\",defaultValue:0,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override,description:\"Glass/liquid transparency\"},thickness:{type:ControlType.Number,displayStepper:true,title:\"Thickness\",defaultValue:0,min:0,max:5,step:.05,hidden:p=>p.preset!==\"none\"||!p.override||p.transmission===0},ior:{type:ControlType.Number,displayStepper:true,title:\"IOR\",defaultValue:1.5,min:1,max:2.5,step:.01,hidden:p=>p.preset!==\"none\"||!p.override||p.transmission===0,description:\"Index of refraction\"},opacity:{type:ControlType.Number,displayStepper:true,title:\"Opacity\",defaultValue:1,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override},iridescence:{type:ControlType.Number,displayStepper:true,title:\"Iridescence\",defaultValue:0,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override},iridescenceIOR:{type:ControlType.Number,displayStepper:true,title:\"Irid IOR\",defaultValue:1.3,min:1,max:2.5,step:.01,hidden:p=>p.preset!==\"none\"||!p.override||p.iridescence===0},sheen:{type:ControlType.Number,displayStepper:true,title:\"Sheen\",defaultValue:0,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override},sheenRoughness:{type:ControlType.Number,displayStepper:true,title:\"Sheen Rough\",defaultValue:.3,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override||p.sheen===0},sheenColor:{type:ControlType.Color,title:\"Sheen Color\",defaultValue:\"#ffffff\",hidden:p=>p.preset!==\"none\"||!p.override||p.sheen===0},envMapIntensity:{type:ControlType.Number,displayStepper:true,title:\"Env Reflect\",defaultValue:1,min:0,max:5,step:.05,hidden:p=>p.preset!==\"none\"||!p.override},reflectivity:{type:ControlType.Number,displayStepper:true,title:\"Reflectivity\",defaultValue:.5,min:0,max:1,step:.01,hidden:p=>p.preset!==\"none\"||!p.override},emissiveIntensity:{type:ControlType.Number,displayStepper:true,title:\"Emissive Int\",defaultValue:0,min:0,max:5,step:.05,hidden:p=>p.preset!==\"none\"||!p.override},emissiveColor:{type:ControlType.Color,title:\"Emissive Color\",defaultValue:\"#000000\",hidden:p=>p.preset!==\"none\"||!p.override||p.emissiveIntensity===0},wireframe:{type:ControlType.Boolean,title:\"Wireframe\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>p.preset!==\"none\"||!p.override},transitionDuration:{type:ControlType.Number,displayStepper:true,title:\"Transition Duration\",defaultValue:.3,min:0,max:2,step:.05,unit:\"s\",description:\"Higher = Slower fade\"}}},// ━━━ Interaction ━━━\ninteraction:{type:ControlType.Object,title:\"Interaction\",controls:{orbit:{type:ControlType.Boolean,title:\"Orbit\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},zoom:{type:ControlType.Boolean,title:\"Zoom\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.orbit,description:\" \"},autoRotate:{type:ControlType.Boolean,title:\"Auto Rotate\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},rotateSpeed:{type:ControlType.Number,displayStepper:true,title:\"Speed\",defaultValue:.5,min:0,max:20,step:.1,hidden:p=>!p.autoRotate,description:\" \"},float:{type:ControlType.Boolean,title:\"Float\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},floatAmp:{type:ControlType.Number,displayStepper:true,title:\"Float Amp\",defaultValue:.8,min:0,max:5,step:.05,hidden:p=>!p.float},floatSpeed:{type:ControlType.Number,displayStepper:true,title:\"Float Speed\",defaultValue:.4,min:.01,max:5,step:.01,hidden:p=>!p.float,description:\" \"},mouseRotate:{type:ControlType.Boolean,title:\"Mouse Rotate\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},mouseRotateIntensity:{type:ControlType.Number,displayStepper:true,title:\"Mouse Intensity\",defaultValue:.1,min:.01,max:1,step:.01,hidden:p=>!p.mouseRotate,description:\" \"},particles:{type:ControlType.Boolean,title:\"Particles\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},particleCount:{type:ControlType.Number,displayStepper:true,title:\"Count\",defaultValue:2e3,min:100,max:1e4,step:100,hidden:p=>!p.particles},particleSize:{type:ControlType.Number,displayStepper:true,title:\"Size\",defaultValue:.05,min:.01,max:1,step:.01,hidden:p=>!p.particles},particleColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#00ffff\",hidden:p=>!p.particles},particleSpeed:{type:ControlType.Number,displayStepper:true,title:\"Speed\",defaultValue:1,min:0,max:5,step:.1,hidden:p=>!p.particles},particleSpread:{type:ControlType.Number,displayStepper:true,title:\"Spread\",defaultValue:10,min:1,max:30,step:.5,hidden:p=>!p.particles,description:\" \"}}},// ━━━ Object Events (Click / Hover / Drag / Scroll) ━━━\nmeshInteractions:{type:ControlType.Array,title:\"Object Events\",description:\" \",maxCount:20,control:{type:ControlType.Object,controls:{meshName:{type:ControlType.String,title:\"Object Name\",defaultValue:\"\",placeholder:\"e.g. Button, Door_L\"},meshPath:{type:ControlType.String,title:\"Object Path\",defaultValue:\"\",hidden:()=>true},transform:{type:ControlType.Object,title:\"Object Transform\",controls:{scale:{type:ControlType.Number,title:\"Scale\",min:.01,max:10,step:.01,hidden:()=>true},position:{type:ControlType.String,title:\"Position\",hidden:()=>true},rotation:{type:ControlType.String,title:\"Rotation\",hidden:()=>true}}},click:{type:ControlType.Object,title:\"Click\",controls:{enabled:{type:ControlType.Boolean,title:\"Click\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},action:{type:ControlType.Enum,title:\"Action\",options:[\"none\",\"openUrl\",\"toggleVisibility\",\"changeColor\",\"playAnimation\"],optionTitles:[\"None\",\"Open URL\",\"Toggle Visibility\",\"Change Color\",\"Play Animation\"],defaultValue:\"none\",hidden:p=>!p.enabled},url:{type:ControlType.Link,title:\"URL\",defaultValue:\"\",hidden:p=>!p.enabled||p.action!==\"openUrl\"},newTab:{type:ControlType.Boolean,title:\"New Tab\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\" \",hidden:p=>!p.enabled||p.action!==\"openUrl\"},targetObject:{type:ControlType.String,title:\"Target Object\",defaultValue:\"\",placeholder:\"Object to toggle (empty = self)\",description:\" \",hidden:p=>!p.enabled||p.action!==\"toggleVisibility\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#ff0000\",description:\" \",hidden:p=>!p.enabled||p.action!==\"changeColor\"},animName:{type:ControlType.String,title:\"Anim Name\",defaultValue:\"\",placeholder:\"Animation clip name\",hidden:p=>!p.enabled||p.action!==\"playAnimation\"},animLoop:{type:ControlType.Enum,title:\"Loop Mode\",options:[\"once\",\"repeat\",\"pingPong\"],optionTitles:[\"Once\",\"Repeat\",\"Ping Pong\"],defaultValue:\"once\",hidden:p=>!p.enabled||p.action!==\"playAnimation\"},animReverse:{type:ControlType.Boolean,title:\"Reverse\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\" \",hidden:p=>!p.enabled||p.action!==\"playAnimation\"},onClick:{type:ControlType.EventHandler,title:\"On Click / Tap\",description:\" \",hidden:p=>!p.enabled},onAnimationComplete:{type:ControlType.EventHandler,title:\"On Anim Complete\",hidden:p=>!p.enabled||p.action!==\"playAnimation\"}}},hover:{type:ControlType.Object,title:\"Hover\",controls:{enabled:{type:ControlType.Boolean,title:\"Hover\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},color:{type:ControlType.Color,title:\"Hover Color\",defaultValue:\"#4466ff\",hidden:p=>!p.enabled},transformScale:{type:ControlType.Number,displayStepper:true,title:\"Scale\",defaultValue:1,min:.01,max:5,step:.01,hidden:p=>!p.enabled},transformPosition:{type:ControlType.String,title:\"Position\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\",hidden:p=>!p.enabled},transformRotation:{type:ControlType.String,title:\"Rotation\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\",hidden:p=>!p.enabled},speed:{type:ControlType.Number,displayStepper:true,title:\"Hover Speed\",defaultValue:10,min:1,max:30,step:.5,hidden:p=>!p.enabled},tooltip:{type:ControlType.String,title:\"Tooltip\",defaultValue:\"\",placeholder:\"Tooltip text on hover\",description:\" \",hidden:p=>!p.enabled},onEnter:{type:ControlType.EventHandler,title:\"On Hover In\",hidden:p=>!p.enabled},onLeave:{type:ControlType.EventHandler,title:\"On Hover Out\",hidden:p=>!p.enabled}}},press:{type:ControlType.Object,title:\"Press\",controls:{enabled:{type:ControlType.Boolean,title:\"Press\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},transformScale:{type:ControlType.Number,displayStepper:true,title:\"Scale\",defaultValue:1,min:.01,max:5,step:.01,hidden:p=>!p.enabled},transformPosition:{type:ControlType.String,title:\"Position\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\",hidden:p=>!p.enabled},transformRotation:{type:ControlType.String,title:\"Rotation\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\",description:\" \",hidden:p=>!p.enabled}}},interaction:{type:ControlType.Object,title:\"Interaction\",controls:{enabled:{type:ControlType.Boolean,title:\"Interaction\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},autoRotate:{type:ControlType.Boolean,title:\"Auto Rotate\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.enabled},rotateSpeed:{type:ControlType.Number,displayStepper:true,title:\"Rotate Speed\",defaultValue:1,min:.1,max:10,step:.1,hidden:p=>!p.enabled||!p.autoRotate},rotateAxis:{type:ControlType.Enum,title:\"Rotate Axis\",options:[\"y\",\"x\",\"z\"],optionTitles:[\"Y (Up)\",\"X (Right)\",\"Z (Forward)\"],defaultValue:\"y\",hidden:p=>!p.enabled||!p.autoRotate},mouseRotate:{type:ControlType.Boolean,title:\"Mouse Rotate\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.enabled},mouseRotateIntensity:{type:ControlType.Number,displayStepper:true,title:\"Intensity\",defaultValue:.1,min:.01,max:1,step:.01,description:\" \",hidden:p=>!p.enabled||!p.mouseRotate}}},drag:{type:ControlType.Object,title:\"Drag\",controls:{enabled:{type:ControlType.Boolean,title:\"Drag\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},plane:{type:ControlType.Enum,title:\"Plane\",options:[\"xz\",\"xy\",\"yz\",\"screen\"],optionTitles:[\"XZ (Floor)\",\"XY (Wall)\",\"YZ (Side)\",\"Screen\"],defaultValue:\"xz\",hidden:p=>!p.enabled},snapBack:{type:ControlType.Boolean,title:\"Snap Back\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.enabled},constraint:{type:ControlType.Number,displayStepper:true,title:\"Max Distance\",defaultValue:0,min:0,max:50,step:.1,description:\" \",hidden:p=>!p.enabled},onStart:{type:ControlType.EventHandler,title:\"On Drag Start\",hidden:p=>!p.enabled},onEnd:{type:ControlType.EventHandler,title:\"On Drag End\",hidden:p=>!p.enabled}}},scroll:{type:ControlType.Object,title:\"Scroll\",controls:{enabled:{type:ControlType.Boolean,title:\"Scroll\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},match:{type:ControlType.String,title:\"Scroll ID\",defaultValue:\"\",placeholder:\"hero\",hidden:p=>!p.enabled},anchor:{type:ControlType.Enum,title:\"Anchor\",options:[\"top\",\"middle\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],defaultValue:\"middle\",displaySegmentedControl:true,hidden:p=>!p.enabled},scale:{type:ControlType.Number,title:\"Scale\",defaultValue:1,min:0,max:10,step:.01,displayStepper:true,hidden:p=>!p.enabled},position:{type:ControlType.String,title:\"Position\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\",hidden:p=>!p.enabled},rotation:{type:ControlType.String,title:\"Rotation\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\",hidden:p=>!p.enabled},opacity:{type:ControlType.Number,displayStepper:true,title:\"Opacity\",defaultValue:1,min:0,max:1,step:.01,description:\" \",hidden:p=>!p.enabled}}}}}},modelScale:{type:ControlType.Number,title:\"Scale\",defaultValue:1,min:.01,max:3,step:.01,displayStepper:true},modelPosition:{type:ControlType.String,title:\"Position\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\"},modelRotation:{type:ControlType.String,title:\"Rotation\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\"},// ━━━ Sub-Scenes (Multi-Scene Groups) ━━━\nscenes:{type:ControlType.Array,title:\"Sub-Scenes\",description:\" \",maxCount:8,control:{type:ControlType.Object,controls:{modelSource:{type:ControlType.Enum,title:\"Source\",options:[\"url\",\"file\"],optionTitles:[\"URL\",\"Upload\"],defaultValue:\"url\",displaySegmentedControl:true},modelUrl:{type:ControlType.String,title:\"Model URL\",defaultValue:\"\",placeholder:\"https://example.com/model.glb\",description:\"Supports 3D models or images\",hidden:p=>p.modelSource===\"file\"},modelFile:{type:ControlType.File,title:\"Model File\",allowedFileTypes:[\"glb\",\"gltf\",\"fbx\",\"zip\",\"png\",\"jpg\",\"jpeg\",\"webp\"],description:\" \",hidden:p=>p.modelSource!==\"file\"},visible:{type:ControlType.Boolean,title:\"Visible\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},parentToMain:{type:ControlType.Boolean,title:\"Parent\",defaultValue:false,enabledTitle:\"Follow Main\",disabledTitle:\"Own\",description:\"On = Inherit main transform\"},parentPivot:{type:ControlType.Enum,title:\"Pivot\",options:[\"own\",\"main\"],optionTitles:[\"Own Pivot\",\"Main Pivot\"],defaultValue:\"own\",hidden:p=>!p.parentToMain,description:\"Main = Orbit main pivot\"},scale:{type:ControlType.Number,displayStepper:true,title:\"Scale\",defaultValue:1,min:.01,max:10,step:.01},position:{type:ControlType.String,title:\"Position\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\"},rotation:{type:ControlType.String,title:\"Rotation\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\",description:\" \"},// ── Independent Animation ──\nanimOverride:{type:ControlType.Boolean,title:\"Own Animation\",defaultValue:false,enabledTitle:\"Custom\",disabledTitle:\"Use Primary\",description:\"On = Own animation\"},animClip:{type:ControlType.String,title:\"Anim Name\",defaultValue:\"\",placeholder:\"Animation clip name\",hidden:p=>!p.animOverride},animSpeed:{type:ControlType.Number,displayStepper:true,title:\"Anim Speed\",defaultValue:1,min:0,max:5,step:.1,hidden:p=>!p.animOverride}}}},appearTransformScale:{type:ControlType.Number,title:\"Appear Scale\",defaultValue:1,min:.01,max:10,step:.01,displayStepper:true},appearTransformPosition:{type:ControlType.String,title:\"Appear Position\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\"},appearTransformRotation:{type:ControlType.String,title:\"Appear Rotation\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\"},appearReplay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},// ━━━ Transition ━━━\ndissolveTransition:{type:ControlType.Object,title:\"Transition\",description:\" \",controls:{enabled:{type:ControlType.Boolean,title:\"Dissolve\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},duration:{type:ControlType.Number,displayStepper:true,title:\"Dissolve Time\",defaultValue:1.5,min:.3,max:5,step:.1,hidden:p=>!p.enabled},// ── Noise Settings ──\nnoise:{type:ControlType.Object,title:\"Dissolve Noise\",hidden:p=>!p.enabled,controls:{// Lower values create larger dissolve chunks.\nnoiseScale:{type:ControlType.Number,displayStepper:true,title:\"Frequency\",defaultValue:.25,min:.001,max:2,step:.001},// Controls the dissolve range.\namplitude:{type:ControlType.Number,displayStepper:true,title:\"Amplitude\",defaultValue:16,min:.1,max:30,step:.1}}},// ── Edge Glow Settings ──\nedge:{type:ControlType.Object,title:\"Dissolve Edge\",hidden:p=>!p.enabled,controls:{// Glow edge thickness.\nedgeWidth:{type:ControlType.Number,displayStepper:true,title:\"Width\",defaultValue:.8,min:.1,max:8,step:.01},emissiveColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#ff7a32\"},// Edge glow brightness.\nemissiveIntensity:{type:ControlType.Number,displayStepper:true,title:\"Intensity\",defaultValue:3,min:0,max:10,step:.5}}},// ── Particle System Settings ──\nparticles:{type:ControlType.Object,title:\"Dissolve Particles\",hidden:p=>!p.enabled,description:\" \",controls:{// Emit particles at the dissolve edge.\nenabled:{type:ControlType.Boolean,title:\"Emit\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},baseSize:{type:ControlType.Number,displayStepper:true,title:\"Size\",defaultValue:80,min:10,max:200,step:1,hidden:p=>!p.enabled},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#ff7a32\",hidden:p=>!p.enabled},speed:{type:ControlType.Number,displayStepper:true,title:\"Speed\",defaultValue:.02,min:.001,max:.1,step:.001,hidden:p=>!p.enabled},// Sine-wave motion on particles.\nwaveAmp:{type:ControlType.Number,displayStepper:true,title:\"Wave Amplitude\",defaultValue:0,min:0,max:5,step:.01,hidden:p=>!p.enabled},velX:{type:ControlType.Number,displayStepper:true,title:\"Velocity X\",defaultValue:2.5,min:0,max:10,step:.1,hidden:p=>!p.enabled},velY:{type:ControlType.Number,displayStepper:true,title:\"Velocity Y\",defaultValue:2,min:0,max:10,step:.1,hidden:p=>!p.enabled},maxCount:{type:ControlType.Number,displayStepper:true,title:\"Max Count\",defaultValue:8e3,min:1e3,max:3e4,step:1e3,hidden:p=>!p.enabled,description:\" \"}}},// Show placeholder material first, then load textures in background.\nprogressive:{type:ControlType.Boolean,title:\"Progressive Load\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},progressiveFade:{type:ControlType.Number,displayStepper:true,title:\"Cross Fade\",defaultValue:.8,min:.1,max:3,step:.1,unit:\"s\",hidden:p=>!p.progressive,description:\" \"},blurReveal:{type:ControlType.Boolean,title:\"Blur Reveal\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},// Initial blur amount in pixels.\nblurIntensity:{type:ControlType.Number,displayStepper:true,title:\"Blur Intensity\",defaultValue:12,min:2,max:40,step:1,unit:\"px\",hidden:p=>!p.blurReveal},blurDuration:{type:ControlType.Number,displayStepper:true,title:\"Blur Duration\",defaultValue:.8,min:.2,max:3,step:.1,unit:\"s\",hidden:p=>!p.blurReveal,description:\" \"},transform:{type:ControlType.Object,title:\"Transform\",hidden:true,controls:{scale:{type:ControlType.Number,title:\"Scale\",defaultValue:1,min:.01,max:10,step:.01,displayStepper:true},offX:{type:ControlType.Number,displayStepper:true,title:\"Position X\",defaultValue:0,min:-100,max:100,step:1},offY:{type:ControlType.Number,displayStepper:true,title:\"Position Y\",defaultValue:0,min:-100,max:100,step:1},offZ:{type:ControlType.Number,displayStepper:true,title:\"Position Z\",defaultValue:0,min:-100,max:100,step:1,description:\" \"},rotX:{type:ControlType.Number,displayStepper:true,title:\"Rotation X\",defaultValue:0,min:-360,max:360,step:1},rotY:{type:ControlType.Number,displayStepper:true,title:\"Rotation Y\",defaultValue:0,min:-360,max:360,step:1},rotZ:{type:ControlType.Number,displayStepper:true,title:\"Rotation Z\",defaultValue:0,min:-360,max:360,step:1,description:\" \"}}}}},scrollTransformMatch:{type:ControlType.String,title:\"Scroll ID\",defaultValue:\"\",placeholder:\"hero\"},scrollTransformAnchor:{type:ControlType.Enum,title:\"Anchor\",options:[\"top\",\"middle\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],defaultValue:\"middle\",displaySegmentedControl:true},scrollTransformScale:{type:ControlType.Number,title:\"Scroll Scale\",defaultValue:1,min:.01,max:10,step:.01,displayStepper:true},scrollTransformPosition:{type:ControlType.String,title:\"Scroll Position\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\"},scrollTransformRotation:{type:ControlType.String,title:\"Scroll Rotation\",defaultValue:\"0,0,0\",placeholder:\"X,Y,Z\",description:\" \"},animClip:{type:ControlType.String,title:\"Anim Name\",defaultValue:\"\",placeholder:\"e.g. Idle.1\"},animSpeed:{type:ControlType.Number,title:\"Anim Speed\",defaultValue:1,min:-5,max:5,step:.1,displayStepper:true},animLoopMode:{type:ControlType.Enum,title:\"Anim Loop\",description:\" \",options:[\"repeat\",\"once\",\"pingPong\"],optionTitles:[\"Repeat\",\"Once\",\"Ping Pong\"],defaultValue:\"repeat\"},// ━━━ Environment & Background ━━━\nenvironment:{type:ControlType.Object,title:\"Environment\",controls:{// Background\ntransparent:{type:ControlType.Boolean,title:\"Transparent BG\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\" \"},bgColor:{type:ControlType.Color,title:\"BG Color\",defaultValue:\"rgb(28, 28, 28)\",hidden:p=>p.transparent,description:\" \"},// Lighting\nambient:{type:ControlType.Number,displayStepper:true,title:\"Ambient\",defaultValue:.5,min:0,max:5,step:.05},dirIntensity:{type:ControlType.Number,displayStepper:true,title:\"Directional\",defaultValue:1,min:0,max:10,step:.1},dirColor:{type:ControlType.Color,title:\"Dir Color\",defaultValue:\"rgb(255, 255, 255)\"},dirPosX:{type:ControlType.Number,displayStepper:true,title:\"Dir Pos X\",defaultValue:5,min:-50,max:50,step:.5},dirPosY:{type:ControlType.Number,displayStepper:true,title:\"Dir Pos Y\",defaultValue:10,min:-50,max:50,step:.5},dirPosZ:{type:ControlType.Number,displayStepper:true,title:\"Dir Pos Z\",defaultValue:7,min:-50,max:50,step:.5,description:\" \"},// Environment map\nenabled:{type:ControlType.Boolean,title:\"HDRI\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},type:{type:ControlType.Enum,title:\"Type\",options:[\"procedural\",\"hdri\"],optionTitles:[\"Procedural\",\"HDRI (Poly Haven)\"],defaultValue:\"procedural\",hidden:p=>!p.enabled},preset:{type:ControlType.Enum,title:\"Preset\",options:[\"studio\",\"sunset\",\"dawn\",\"night\",\"warehouse\",\"outdoor\"],optionTitles:[\"Studio\",\"Sunset\",\"Dawn\",\"Night\",\"Warehouse\",\"Outdoor\"],defaultValue:\"studio\",hidden:p=>!p.enabled||p.type!==\"procedural\"},hdriPreset:{type:ControlType.Enum,title:\"HDRI\",options:Object.keys(HDRI_PRESETS),optionTitles:Object.values(HDRI_PRESETS).map(v=>v.label),defaultValue:\"studio_small_09\",hidden:p=>!p.enabled||p.type!==\"hdri\"},customUrl:{type:ControlType.String,title:\"Custom URL\",defaultValue:\"\",placeholder:\"https://example.com/env.hdr\",hidden:p=>!p.enabled||p.type!==\"hdri\"},showBg:{type:ControlType.Boolean,title:\"HDRI as BG\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden:p=>!p.enabled||p.type!==\"hdri\"},intensity:{type:ControlType.Number,displayStepper:true,title:\"Intensity\",defaultValue:1,min:0,max:5,step:.05,hidden:p=>!p.enabled,description:\" \"},// Shadows\nshadows:{type:ControlType.Boolean,title:\"Shadows\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},shadowSize:{type:ControlType.Enum,title:\"Shadow Quality\",options:[\"512\",\"1024\",\"2048\",\"4096\"],optionTitles:[\"Low (512)\",\"Medium (1K)\",\"High (2K)\",\"Ultra (4K)\"],defaultValue:\"1024\",hidden:p=>!p.shadows},shadowBias:{type:ControlType.Number,displayStepper:true,title:\"Shadow Bias\",defaultValue:-1e-4,min:-.01,max:.01,step:1e-4,hidden:p=>!p.shadows},shadowNormalBias:{type:ControlType.Number,displayStepper:true,title:\"Normal Bias\",defaultValue:.02,min:0,max:.2,step:.001,description:\" \",hidden:p=>!p.shadows}}},// ━━━ Effects & Post-Processing ━━━\neffects:{type:ControlType.Object,title:\"Effects\",controls:{// Bloom\nbloom:{type:ControlType.Boolean,title:\"Bloom\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},bloomStr:{type:ControlType.Number,displayStepper:true,title:\"Bloom Str\",defaultValue:.5,min:0,max:3,step:.01,hidden:p=>!p.bloom},bloomThresh:{type:ControlType.Number,displayStepper:true,title:\"Bloom Thresh\",defaultValue:.8,min:0,max:1,step:.01,hidden:p=>!p.bloom},bloomRad:{type:ControlType.Number,displayStepper:true,title:\"Radius\",defaultValue:.5,min:0,max:2,step:.01,hidden:p=>!p.bloom,description:\" \"},// Tone mapping & exposure\ntoneMapping:{type:ControlType.Enum,title:\"Tone Map\",options:[\"aces\",\"reinhard\",\"cineon\",\"linear\",\"agx\",\"neutral\"],optionTitles:[\"ACES Filmic\",\"Reinhard\",\"Cineon\",\"Linear\",\"AgX\",\"Neutral\"],defaultValue:\"aces\"},exposure:{type:ControlType.Number,displayStepper:true,title:\"Exposure\",defaultValue:1.2,min:.1,max:5,step:.05,description:\" \"},fxaa:{type:ControlType.Boolean,title:\"FXAA\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},// Color grading\ncolorGrading:{type:ControlType.Boolean,title:\"Color Grading\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},brightness:{type:ControlType.Number,displayStepper:true,title:\"Brightness\",defaultValue:0,min:-.5,max:.5,step:.01,hidden:p=>!p.colorGrading},contrast:{type:ControlType.Number,displayStepper:true,title:\"Contrast\",defaultValue:1,min:.5,max:2,step:.01,hidden:p=>!p.colorGrading},saturation:{type:ControlType.Number,displayStepper:true,title:\"Saturation\",defaultValue:1,min:0,max:3,step:.01,hidden:p=>!p.colorGrading,description:\" \"},// Vignette\nvignette:{type:ControlType.Boolean,title:\"Vignette\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},vigOffset:{type:ControlType.Number,displayStepper:true,title:\"Vig Offset\",defaultValue:1,min:.5,max:2,step:.01,hidden:p=>!p.vignette},vigDark:{type:ControlType.Number,displayStepper:true,title:\"Vig Dark\",defaultValue:1.2,min:0,max:3,step:.01,hidden:p=>!p.vignette,description:\" \"},// Chromatic aberration\nchromAberr:{type:ControlType.Boolean,title:\"Chrom Aberr\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},chromStr:{type:ControlType.Number,displayStepper:true,title:\"CA Strength\",defaultValue:.005,min:0,max:.05,step:.001,hidden:p=>!p.chromAberr,description:\" \"},// Film grain\nfilmGrain:{type:ControlType.Boolean,title:\"Film Grain\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},grainInt:{type:ControlType.Number,displayStepper:true,title:\"Grain Int\",defaultValue:.04,min:0,max:.3,step:.005,hidden:p=>!p.filmGrain,description:\" \"},// Pixelate (Framer/Figma-style shaped tile pixelation)\npixelate:{type:ControlType.Boolean,title:\"Pixelate\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"On = Shaped pixel cells with gaps and dissolve\"},pixelShape:{type:ControlType.Enum,title:\"Shape\",options:[\"rectangle\",\"ellipse\",\"hexagon\",\"triangle\"],optionTitles:[\"Rectangle\",\"Ellipse\",\"Hexagon\",\"Triangle\"],defaultValue:\"rectangle\",hidden:p=>!p.pixelate},pixelSize:{type:ControlType.Number,displayStepper:true,title:\"Size\",defaultValue:23,min:2,max:128,step:1,unit:\"px\",hidden:p=>!p.pixelate},pixelStretch:{type:ControlType.Number,displayStepper:true,title:\"Stretch\",defaultValue:0,min:-90,max:300,step:1,unit:\"%\",hidden:p=>!p.pixelate},pixelAverageColor:{type:ControlType.Number,displayStepper:true,title:\"Average Color\",defaultValue:42,min:0,max:100,step:1,unit:\"%\",hidden:p=>!p.pixelate},pixelDissolveMode:{type:ControlType.Enum,title:\"Dissolve Mode\",options:[\"dropout\",\"fade\"],optionTitles:[\"Dropout\",\"Fade\"],defaultValue:\"dropout\",hidden:p=>!p.pixelate},pixelDissolve:{type:ControlType.Number,displayStepper:true,title:\"Dissolve\",defaultValue:0,min:0,max:100,step:1,unit:\"%\",hidden:p=>!p.pixelate},pixelFalloff:{type:ControlType.Number,displayStepper:true,title:\"Falloff\",defaultValue:0,min:0,max:100,step:1,unit:\"%\",hidden:p=>!p.pixelate},pixelKnockout:{type:ControlType.Boolean,title:\"Knockout\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.pixelate},// SSAO (Screen Space Ambient Occlusion)\nssao:{type:ControlType.Boolean,title:\"SSAO\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"On = More contact depth\"},ssaoRadius:{type:ControlType.Number,displayStepper:true,title:\"AO Radius\",defaultValue:8,min:.1,max:64,step:.5,hidden:p=>!p.ssao},ssaoMinDist:{type:ControlType.Number,displayStepper:true,title:\"AO Min Dist\",defaultValue:.001,min:1e-4,max:.02,step:5e-4,hidden:p=>!p.ssao},ssaoMaxDist:{type:ControlType.Number,displayStepper:true,title:\"AO Max Dist\",defaultValue:.1,min:.01,max:1,step:.01,hidden:p=>!p.ssao}}},// ━━━ Extra Lights (Point / Spot) ━━━\nextraLights:{type:ControlType.Array,title:\"Extra Lights\",description:\" \",maxCount:4,control:{type:ControlType.Object,controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},lightType:{type:ControlType.Enum,title:\"Type\",options:[\"point\",\"spot\"],optionTitles:[\"Point Light\",\"Spot Light\"],defaultValue:\"point\",hidden:p=>!p.enabled},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#ffffff\",hidden:p=>!p.enabled},intensity:{type:ControlType.Number,displayStepper:true,title:\"Intensity\",defaultValue:1,min:0,max:20,step:.1,hidden:p=>!p.enabled},posX:{type:ControlType.Number,displayStepper:true,title:\"Position X\",defaultValue:0,min:-50,max:50,step:.5,hidden:p=>!p.enabled},posY:{type:ControlType.Number,displayStepper:true,title:\"Position Y\",defaultValue:3,min:-50,max:50,step:.5,hidden:p=>!p.enabled},posZ:{type:ControlType.Number,displayStepper:true,title:\"Position Z\",defaultValue:0,min:-50,max:50,step:.5,hidden:p=>!p.enabled,description:\" \"},distance:{type:ControlType.Number,displayStepper:true,title:\"Distance\",defaultValue:0,min:0,max:100,step:.5,description:\"Higher = Longer light reach\",hidden:p=>!p.enabled},decay:{type:ControlType.Number,displayStepper:true,title:\"Decay\",defaultValue:2,min:0,max:5,step:.1,description:\"Higher = Faster falloff\",hidden:p=>!p.enabled},// ── Spot Light specific ──\nangle:{type:ControlType.Number,displayStepper:true,title:\"Cone Angle\",defaultValue:30,min:1,max:90,step:1,description:\"Higher = Wider cone\",hidden:p=>!p.enabled||p.lightType!==\"spot\"},penumbra:{type:ControlType.Number,displayStepper:true,title:\"Penumbra\",defaultValue:.5,min:0,max:1,step:.05,description:\"Higher = Softer edge\",hidden:p=>!p.enabled||p.lightType!==\"spot\"},targetX:{type:ControlType.Number,displayStepper:true,title:\"Target X\",defaultValue:0,min:-50,max:50,step:.5,hidden:p=>!p.enabled||p.lightType!==\"spot\"},targetY:{type:ControlType.Number,displayStepper:true,title:\"Target Y\",defaultValue:0,min:-50,max:50,step:.5,hidden:p=>!p.enabled||p.lightType!==\"spot\"},targetZ:{type:ControlType.Number,displayStepper:true,title:\"Target Z\",defaultValue:0,min:-50,max:50,step:.5,hidden:p=>!p.enabled||p.lightType!==\"spot\",description:\" \"},castShadow:{type:ControlType.Boolean,title:\"Cast Shadow\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.enabled}}}},// ━━━ Camera ━━━\ncamera:{type:ControlType.Object,title:\"Camera\",controls:{cameraType:{type:ControlType.Enum,title:\"Type\",options:[\"perspective\",\"orthographic\",\"stereo\"],optionTitles:[\"Perspective\",\"Orthographic\",\"Stereo\"],defaultValue:\"perspective\",description:\"Perspective = Real depth\"},orthoZoom:{type:ControlType.Number,title:\"Ortho Zoom\",defaultValue:1,min:.1,max:20,step:.1,displayStepper:true,description:\"Higher = More zoom\",hidden:p=>p.cameraType!==\"orthographic\"},stereoEyeSep:{type:ControlType.Number,displayStepper:true,title:\"Eye Separation\",defaultValue:.064,min:0,max:.5,step:.001,description:\"Higher = More stereo depth\",hidden:p=>p.cameraType!==\"stereo\"},x:{type:ControlType.Number,displayStepper:true,title:\"X\",defaultValue:-1,min:-50,max:50,step:.1},y:{type:ControlType.Number,displayStepper:true,title:\"Y\",defaultValue:2,min:-50,max:50,step:.1},z:{type:ControlType.Number,displayStepper:true,title:\"Z\",defaultValue:10,min:-50,max:50,step:.1},// DOF (Depth of Field) — perspective only\ndof:{type:ControlType.Boolean,title:\"Depth of Field\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"On = Depth blur\",hidden:p=>p.cameraType===\"orthographic\"},dofFocus:{type:ControlType.Number,displayStepper:true,title:\"DOF Focus\",defaultValue:10,min:.1,max:500,step:.5,description:\"Higher = Farther focus\",hidden:p=>!p.dof||p.cameraType===\"orthographic\"},dofAperture:{type:ControlType.Number,displayStepper:true,title:\"DOF Aperture\",defaultValue:.025,min:0,max:.5,step:.001,description:\"Higher = More blur\",hidden:p=>!p.dof||p.cameraType===\"orthographic\"},dofMaxBlur:{type:ControlType.Number,displayStepper:true,title:\"DOF Max Blur\",defaultValue:.01,min:0,max:.1,step:.001,description:\"Higher = More max blur\",hidden:p=>!p.dof||p.cameraType===\"orthographic\"}}},// ━━━ Performance ━━━\nperformance:{type:ControlType.Object,title:\"Performance\",controls:{mode:{type:ControlType.Boolean,title:\"Enable\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"On = Lower GPU cost\"},webglActive:{type:ControlType.Boolean,title:\"WebGL Active\",defaultValue:true,enabledTitle:\"Render\",disabledTitle:\"Off\",description:\"Off = No WebGL canvas\"},dprCap:{type:ControlType.Number,title:\"DPR Cap\",defaultValue:1.5,min:.5,max:3,step:.1,displayStepper:true,hidden:p=>!p.mode,description:\"Higher = More pixels\"},mobileDprCap:{type:ControlType.Number,title:\"Mobile DPR\",defaultValue:1.5,min:.5,max:2,step:.05,displayStepper:true,hidden:p=>!p.mode,description:\"Higher = More Pixels\"},maxPixelCount:{type:ControlType.Number,title:\"Max Pixels\",defaultValue:3e6,min:0,max:12e6,step:1e5,displayStepper:true,hidden:p=>!p.mode,description:\"Higher = More max pixels\"},lazyWebgl:{type:ControlType.Boolean,title:\"Lazy WebGL\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.mode,description:\"On = Load near viewport\"},antialias:{type:ControlType.Boolean,title:\"Native AA\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.mode,description:\"On = Sharper edges\"},pauseHidden:{type:ControlType.Boolean,title:\"Pause Hidden\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.mode,description:\"On = Pause hidden tab\"},pauseOffscreen:{type:ControlType.Boolean,title:\"Pause Offscreen\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>!p.mode,description:\"On = Pause offscreen\"},stats:{type:ControlType.Boolean,title:\"Perf Stats\",defaultValue:false,enabledTitle:\"Log\",disabledTitle:\"Off\",hidden:p=>!p.mode,description:\"On = Log render stats\"}}},// ━━━ Helper ━━━\nui:{type:ControlType.Object,title:\"Helper\",controls:{showHints:{type:ControlType.Boolean,title:\"Controls Hint\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},meshHelper:{type:ControlType.Boolean,title:\"Mesh Helper\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"On = Show mesh names\"},statsMonitor:{type:ControlType.Boolean,title:\"Stats Monitor\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"On = Show stats overlay\"},statsPanel:{type:ControlType.Enum,title:\"Stats Panel\",options:[\"fps\",\"ms\",\"mb\"],optionTitles:[\"FPS\",\"MS\",\"MB\"],defaultValue:\"fps\",hidden:p=>!p.statsMonitor},showGrid:{type:ControlType.Boolean,title:\"Grid\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"On = Show grid\"},gridSize:{type:ControlType.Number,displayStepper:true,title:\"Grid Size\",defaultValue:10,min:1,max:100,step:1,hidden:p=>!p.showGrid,description:\"Higher = Larger grid\"},gridDivisions:{type:ControlType.Number,displayStepper:true,title:\"Grid Divisions\",defaultValue:10,min:1,max:100,step:1,hidden:p=>!p.showGrid,description:\"Higher = More grid lines\"},gridColor1:{type:ControlType.Color,title:\"Grid Color 1\",defaultValue:\"rgba(255,255,255,0.25)\",hidden:p=>!p.showGrid,description:\"Center cross color.\"},gridColor2:{type:ControlType.Color,title:\"Grid Color 2\",defaultValue:\"rgba(255,255,255,0.1)\",hidden:p=>!p.showGrid,description:\"Grid line color.\"},showAxes:{type:ControlType.Boolean,title:\"Axes\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"On = Show world axes\"},axesSize:{type:ControlType.Number,displayStepper:true,title:\"Axes Size\",defaultValue:3,min:.5,max:50,step:.5,hidden:p=>!p.showAxes,description:\"Higher = Longer axes\"},showModelAxes:{type:ControlType.Boolean,title:\"Model Axes\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"On = Show model axes\"},modelAxesSize:{type:ControlType.Number,displayStepper:true,title:\"Model Axes Size\",defaultValue:2,min:.1,max:50,step:.1,hidden:p=>!p.showModelAxes,description:\"Higher = Longer model axes\"},stopInEditor:{type:ControlType.Boolean,title:\"Stop in Editor\",defaultValue:false,description:\"On = Freeze in canvas\"}}},// ━━━ Model Events (actual mesh raycast, not full canvas) ━━━\nonModelHoverStart:{type:ControlType.EventHandler,title:\"Hover / Press Start\"},onModelHoverEnd:{type:ControlType.EventHandler,title:\"Hover / Press End\"},onAnimationOnceComplete:{type:ControlType.EventHandler,title:\"Animation Once Complete\"},onModelClick:{type:ControlType.EventHandler,title:\"Click / Tap\"}};/* ═══════════════════════════════════════════════════════════\n   UI Styles (Centralized to avoid inline duplication)\n   ═══════════════════════════════════════════════════════════ */export const UI_STYLES={canvasContainer:{position:\"absolute\",left:0,top:0,overflow:\"visible\",pointerEvents:\"none\"},debugOverlay:{position:\"fixed\",left:12,top:12,zIndex:9999,background:\"rgba(0,0,0,0.86)\",color:\"#0f0\",border:\"1px solid rgba(0,255,0,0.25)\",borderRadius:8,padding:\"8px 12px\",fontSize:11,fontFamily:\"monospace\",pointerEvents:\"none\",whiteSpace:\"pre-wrap\",minWidth:200},debugTitle:{fontWeight:700,marginBottom:2},debugText:{color:\"#aaa\"},debugHighlight:{color:\"#60a5fa\",fontWeight:700},debugRight:{marginLeft:\"auto\"},debugSmall:{marginLeft:\"auto\",fontSize:9},sceneOverlay:{position:\"fixed\",right:12,top:12,maxHeight:\"70vh\",overflowY:\"auto\",minWidth:190,maxWidth:320,padding:\"6px 0\",color:\"rgba(255,255,255,0.85)\",background:\"rgba(0,0,0,0.68)\",border:\"1px solid rgba(255,255,255,0.08)\",borderRadius:8,backdropFilter:\"blur(10px)\",fontSize:10,fontFamily:\"system-ui, sans-serif\",lineHeight:1.5,pointerEvents:\"none\"},sceneHeader:{padding:\"4px 10px 6px\",fontSize:10,color:\"rgba(255,255,255,0.55)\",borderBottom:\"1px solid rgba(255,255,255,0.1)\",marginBottom:2,display:\"flex\",gap:6},sceneItem:{whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\",display:\"flex\",alignItems:\"center\",gap:5},sceneDot:{width:5,height:5,flexShrink:0},sceneEllipsis:{overflow:\"hidden\",textOverflow:\"ellipsis\"}}// #endregion\n;\nexport const __FramerMetadata__ = {\"exports\":{\"IMPORT_3D_PROPERTY_CONTROLS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"UI_STYLES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./propertyControls.map","// @ts-nocheck\n// #region 5. HASHES & CACHE UTILS\nexport function materialHash(cfg){return`${cfg.materialPreset}|${cfg.sketchBaseColor}|${cfg.sketchLineColor}|${cfg.sketchLineThickness}|${cfg.sketchSteps}|${cfg.overrideMaterial}|${cfg.metalness}|${cfg.roughness}|${cfg.clearcoat}|${cfg.clearcoatRoughness}|${cfg.transmission}|${cfg.thickness}|${cfg.ior}|${cfg.iridescence}|${cfg.iridescenceIOR}|${cfg.sheen}|${cfg.sheenRoughness}|${cfg.sheenColor}|${cfg.envMapIntensity}|${cfg.emissiveIntensity}|${cfg.emissiveColor}|${cfg.reflectivity}|${cfg.opacity}`;}export function lightingHash(cfg){let h=`${cfg.ambientLightIntensity}|${cfg.directionalLightIntensity}|${cfg.directionalLightColor}|${cfg.dirLightPosX}|${cfg.dirLightPosY}|${cfg.dirLightPosZ}|${cfg.enableShadows}|${cfg.shadowMapSize}|${cfg.shadowBias}|${cfg.shadowNormalBias}`;if(cfg.extraLights?.length){for(const el of cfg.extraLights){if(!el)continue;h+=`|EL:${el.enabled}:${el.lightType}:${el.color}:${el.intensity}:${el.posX}:${el.posY}:${el.posZ}:${el.distance}:${el.decay}:${el.angle}:${el.penumbra}:${el.targetX}:${el.targetY}:${el.targetZ}:${el.castShadow}`;}}return h;}export function envHash(cfg){return`${cfg.enableEnvironment}|${cfg.environmentType}|${cfg.environmentPreset}|${cfg.hdriPreset}|${cfg.customHdriUrl}`;}export function effectsHash(cfg){return`${cfg.bloomEnabled}|${cfg.bloomStrength}|${cfg.bloomThreshold}|${cfg.bloomRadius}|${cfg.toneMapping}|${cfg.exposure}|${cfg.enableFXAA}|${cfg.enableColorGrading}|${cfg.brightness}|${cfg.contrast}|${cfg.saturation}|${cfg.enableVignette}|${cfg.vignetteOffset}|${cfg.vignetteDarkness}|${cfg.enableChromaticAberration}|${cfg.chromaticAberrationStrength}|${cfg.enableFilmGrain}|${cfg.filmGrainIntensity}|${cfg.enablePixelate}|${cfg.pixelateShape}|${cfg.pixelateSize}|${cfg.pixelateStretch}|${cfg.pixelateGap}|${cfg.pixelateColorTrim}|${cfg.pixelateAverageColor}|${cfg.pixelateDissolveMode}|${cfg.pixelateDissolve}|${cfg.pixelateFalloff}|${cfg.pixelateKnockout}|${cfg.enableSSAO}|${cfg.ssaoRadius}|${cfg.ssaoMinDistance}|${cfg.ssaoMaxDistance}|${cfg.enableDOF}|${cfg.dofFocus}|${cfg.dofAperture}|${cfg.dofMaxBlur}`;}export function appearReplayHash(cfg){let h=[cfg.appearReplay,cfg.modelScale,cfg.modelOffsetX,cfg.modelOffsetY,cfg.modelOffsetZ,cfg.modelRotationX,cfg.modelRotationY,cfg.modelRotationZ,cfg.dissolveEnabled,cfg.dissolveDuration,cfg.blurReveal,cfg.blurRevealIntensity,cfg.blurRevealDuration,cfg.appearOffsetX,cfg.appearOffsetY,cfg.appearOffsetZ,cfg.appearScale,cfg.appearRotateX,cfg.appearRotateY,cfg.appearRotateZ,cfg.dissolveNoiseScale,cfg.dissolveAmplitude,cfg.dissolveEdgeWidth,cfg.dissolveEmissiveColor,cfg.dissolveEmissiveIntensity,cfg.cameraPositionX,cfg.cameraPositionY,cfg.cameraPositionZ,cfg.orthoZoom,cfg.fov,cfg.enableScrollAnimation,cfg.scrollSmoothing,cfg.scrollAnchorEnabled,cfg.scrollAnchorMatch,cfg.scrollAnchorStrengthX,cfg.scrollAnchorStrengthY,cfg.scrollAnchorSmoothing,cfg.scrollProgressTransformEnabled,cfg.scrollTransformAnchorMatch,cfg.scrollProgressPositionX,cfg.scrollProgressPositionY,cfg.scrollProgressPositionZ,cfg.scrollProgressScale,cfg.scrollAnchorRotationX,cfg.scrollAnchorRotationY,cfg.scrollAnchorRotationZ].join(\"|\");if(cfg.subSceneItems?.length){for(const item of cfg.subSceneItems){if(!item)continue;h+=`|SS:${item.visible}:${item.scale}:${item.offX}:${item.offY}:${item.offZ}:${item.rotX}:${item.rotY}:${item.rotZ}`;}}return h;}export function sceneConfigHash(cfg){return materialHash(cfg)+\"||\"+lightingHash(cfg)+\"||\"+envHash(cfg)+\"||\"+effectsHash(cfg);}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"appearReplayHash\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"materialHash\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lightingHash\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"envHash\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"effectsHash\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sceneConfigHash\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./hashes.map","// @ts-nocheck\n// #region 8. ANIMATION UTILS\nimport{THREE}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";export function _findAnimationClip(animations,clipName){const clipNameRaw=String(clipName??\"\").trim();if(!clipNameRaw)return null;const clipLower=clipNameRaw.toLowerCase();return animations.find(c=>c.name===clipNameRaw)||animations.find(c=>c.name.toLowerCase()===clipLower)||animations.find(c=>c.name.toLowerCase().includes(clipLower))||null;}export function _configureAnimationLoop(action,loopMode){if(loopMode===\"once\"){action.setLoop(THREE.LoopOnce,1);action.clampWhenFinished=true;}else if(loopMode===\"pingPong\"){action.setLoop(THREE.LoopPingPong,Infinity);action.clampWhenFinished=false;}else{action.setLoop(THREE.LoopRepeat,Infinity);action.clampWhenFinished=false;}}export function _clearAnimationOnceCompleteListener(holder,mixer){if(!holder){return;}if(holder._animationOnceCompleteTimer){clearTimeout(holder._animationOnceCompleteTimer);}if(holder._animationOnceCompleteListener&&mixer){mixer.removeEventListener(\"finished\",holder._animationOnceCompleteListener);}holder._animationOnceCompleteListener=null;holder._animationOnceCompleteAction=null;holder._animationOnceCompleteActions=null;holder._animationOnceCompleteCallback=null;holder._animationOnceCompleteTimer=null;}export function _isAnimationOnceActionComplete(action){const clipDuration=action?.getClip?.()?.duration??0;if(!Number.isFinite(clipDuration)||clipDuration<=0)return false;const epsilon=Math.max(.001,clipDuration*.001);const timeScale=action.timeScale??1;if(timeScale<0)return(action.time||0)<=epsilon;return(action.time||0)>=clipDuration-epsilon;}export function _getAnimationOnceCompleteCallback(holder,requestSig,callback){if(holder._animationOnceCallbackSig!==requestSig||holder._animationOnceCallbackSource!==callback){holder._animationOnceCallbackSig=requestSig;holder._animationOnceCallbackSource=callback;holder._animationOnceCallback=event=>{holder._animationOnceCompletedSig=requestSig;callback?.(event);};}return holder._animationOnceCallback;}export function _bindAnimationOnceComplete(holder,mixer,action,onComplete){if(!holder||!mixer||!action||!onComplete)return;_clearAnimationOnceCompleteListener(holder,mixer);const complete=evt=>{if(holder._animationOnceCompleteAction!==action)return;_clearAnimationOnceCompleteListener(holder,mixer);onComplete(evt);};const onFinished=evt=>{if(evt?.action!==action)return;complete(evt);};holder._animationOnceCompleteListener=onFinished;holder._animationOnceCompleteAction=action;holder._animationOnceCompleteCallback=onComplete;mixer.addEventListener(\"finished\",onFinished);// Fallback for cases where Three.js does not dispatch \"finished\"\n// because the action was blended/restarted or the render loop paused.\nconst clipDuration=action.getClip?.()?.duration??0;if(Number.isFinite(clipDuration)&&clipDuration>0){if(_isAnimationOnceActionComplete(action)&&!action.isRunning?.()){holder._animationOnceCompleteTimer=setTimeout(()=>{complete({action,type:\"once-already-finished\"});},0);return;}const remaining=Math.max(.05,clipDuration-(action.time||0));const speed=Math.max(.001,Math.abs((action.timeScale||1)*(mixer.timeScale||1)));holder._animationOnceCompleteTimer=setTimeout(()=>{complete({action,type:\"once-timeout-fallback\"});},(remaining/speed+.08)*1e3);}}export function _bindAnimationOnceCompleteActions(holder,mixer,actions,onComplete){const validActions=(actions||[]).filter(Boolean);if(!holder||!mixer||!validActions.length||!onComplete)return;_clearAnimationOnceCompleteListener(holder,mixer);const pending=new Set(validActions);const complete=evt=>{if(holder._animationOnceCompleteActions!==pending)return;_clearAnimationOnceCompleteListener(holder,mixer);onComplete(evt);};const onFinished=evt=>{if(!pending.has(evt?.action))return;pending.delete(evt.action);if(pending.size===0)complete(evt);};holder._animationOnceCompleteListener=onFinished;holder._animationOnceCompleteActions=pending;holder._animationOnceCompleteCallback=onComplete;mixer.addEventListener(\"finished\",onFinished);let maxRemaining=0;let completeCount=0;for(const action of validActions){if(_isAnimationOnceActionComplete(action)&&!action.isRunning?.()){pending.delete(action);completeCount++;continue;}const clipDuration=action.getClip?.()?.duration??0;if(!Number.isFinite(clipDuration)||clipDuration<=0)continue;maxRemaining=Math.max(maxRemaining,Math.max(.05,clipDuration-(action.time||0)));}if(pending.size===0&&completeCount>0){holder._animationOnceCompleteTimer=setTimeout(()=>complete({actions:validActions,type:\"once-all-already-finished\"}),0);return;}if(maxRemaining>0){const speed=Math.max(.001,Math.abs((validActions[0].timeScale||1)*(mixer.timeScale||1)));holder._animationOnceCompleteTimer=setTimeout(()=>complete({actions:validActions,type:\"once-all-timeout-fallback\"}),(maxRemaining/speed+.08)*1e3);}}export function _syncAnimationPhase(prevAction,nextAction){const prevClip=prevAction?.getClip?.();const nextClip=nextAction?.getClip?.();if(!prevClip?.duration||!nextClip?.duration)return;const normalizedTime=(prevAction.time%prevClip.duration+prevClip.duration)%prevClip.duration;nextAction.time=normalizedTime/prevClip.duration*nextClip.duration;}export function _warmAnimationActions(holder,mixer,animations,cfg){if(!holder||!mixer||!animations?.length)return;if(!cfg.animationWarmClips)return;if(holder._animationWarmupDone)return;holder._animationWarmupDone=true;const clips=animations.slice();const loopModes=[\"repeat\",\"once\",\"pingPong\"];let idx=0;const warmNext=()=>{if(!holder._animationWarmupDone||!mixer)return;const clip=clips[idx++];if(!clip)return;// clipAction() creates Three.js animation bindings up front without\n// touching playback state, avoiding the first-switch hitch later.\nmixer.clipAction(clip);for(const loopMode of loopModes){holder._animationActionCache?.add?.(`${clip.name}|${loopMode}`);}requestAnimationFrame(warmNext);};requestAnimationFrame(warmNext);}/**\n * Play animation clips on a mixer based on mode/clip selection.\n * mode: \"all\" = play every clip, \"single\" = play only the named clip\n * clipName: the name of the clip to play when mode is \"single\"\n */export function _playAnimations(mixer,animations,mode,clipName,options={}){if(!mixer||!animations?.length)return;if(mode===\"single\"&&clipName){const clipNameRaw=String(clipName).trim();const clip=_findAnimationClip(animations,clipNameRaw);if(!clip){if(options.holder){_clearAnimationOnceCompleteListener(options.holder,mixer);}console.warn(`[Animation] Clip \"${clipNameRaw}\" not found. Available:`,animations.map(c=>c.name));return;}const blendDuration=Math.max(0,options.blendDuration??0);const holder=options.holder;const loopMode=options.loopMode??\"repeat\";const actionKey=`${clip.name}|${loopMode}`;const replayKey=loopMode===\"once\"?options.replayKey||\"\":\"\";const requestSig=`single|${actionKey}|${blendDuration}|${options.warp?1:0}|${options.syncPhase?1:0}|${options.restartOnSwitch?1:0}|${replayKey}`;if(holder&&holder._lastAnimationRequestSig!==requestSig){holder._animationOnceCompletedSig=\"\";}const onceAlreadyCompleted=loopMode===\"once\"&&holder?._animationOnceCompletedSig===requestSig;if(blendDuration>0&&holder){if(holder._activeAnimationKey===actionKey){const activeAction=holder._activeAnimationAction||mixer.clipAction(clip);const sameRequest=holder._lastAnimationRequestSig===requestSig;_configureAnimationLoop(activeAction,loopMode);activeAction.enabled=true;if(!(loopMode===\"once\"&&_isAnimationOnceActionComplete(activeAction))){activeAction.paused=false;}activeAction.setEffectiveWeight(1);activeAction.setEffectiveTimeScale(1);if(options.restartOnSwitch&&!sameRequest||loopMode===\"once\"&&!sameRequest){activeAction.reset();activeAction.play();}else if(!activeAction.isRunning()&&!(loopMode===\"once\"&&_isAnimationOnceActionComplete(activeAction))){activeAction.play();}if(loopMode===\"once\"&&options.onOnceComplete&&!onceAlreadyCompleted){const onceCallback=_getAnimationOnceCompleteCallback(holder,requestSig,options.onOnceComplete);if(holder._animationOnceCompleteAction!==activeAction||holder._animationOnceCompleteCallback!==onceCallback){_bindAnimationOnceComplete(holder,mixer,activeAction,onceCallback);}}else{_clearAnimationOnceCompleteListener(holder,mixer);}holder._activeAnimationAction=activeAction;holder._activeAnimationClipName=clip.name;holder._lastAnimationRequestSig=requestSig;return;}const nextAction=mixer.clipAction(clip);const prevAction=holder._activeAnimationAction;const shouldBlend=!!prevAction&&prevAction!==nextAction;const hasSeenAction=holder._animationActionCache?.has(actionKey);if(!holder._animationActionCache){holder._animationActionCache=new Set;}_configureAnimationLoop(nextAction,loopMode);nextAction.enabled=true;if(!(loopMode===\"once\"&&_isAnimationOnceActionComplete(nextAction))){nextAction.paused=false;}nextAction.setEffectiveWeight(1);nextAction.setEffectiveTimeScale(1);if(options.restartOnSwitch||loopMode===\"once\"||!hasSeenAction){nextAction.reset();}if(options.syncPhase&&prevAction&&prevAction!==nextAction&&!options.restartOnSwitch){_syncAnimationPhase(prevAction,nextAction);}nextAction.play();if(loopMode===\"once\"&&options.onOnceComplete){const onceCallback=_getAnimationOnceCompleteCallback(holder,requestSig,options.onOnceComplete);_bindAnimationOnceComplete(holder,mixer,nextAction,onceCallback);}else{_clearAnimationOnceCompleteListener(holder,mixer);}if(shouldBlend){prevAction.crossFadeTo(nextAction,blendDuration,!!options.warp);}else{nextAction.fadeIn(blendDuration);}holder._animationActionCache.add(actionKey);holder._activeAnimationAction=nextAction;holder._activeAnimationKey=actionKey;holder._activeAnimationClipName=clip.name;holder._lastAnimationRequestSig=requestSig;return;}const action=mixer.clipAction(clip);if(holder&&holder._activeAnimationKey===actionKey){const sameRequest=holder._lastAnimationRequestSig===requestSig;_configureAnimationLoop(action,loopMode);action.enabled=true;if(!(loopMode===\"once\"&&_isAnimationOnceActionComplete(action))){action.paused=false;}action.setEffectiveWeight(1);action.setEffectiveTimeScale(1);if(options.restartOnSwitch&&!sameRequest||loopMode===\"once\"&&!sameRequest){action.reset();action.play();}else if(!action.isRunning()&&!(loopMode===\"once\"&&_isAnimationOnceActionComplete(action))){action.play();}if(loopMode===\"once\"&&options.onOnceComplete&&!onceAlreadyCompleted){const onceCallback=_getAnimationOnceCompleteCallback(holder,requestSig,options.onOnceComplete);if(holder._animationOnceCompleteAction!==action||holder._animationOnceCompleteCallback!==onceCallback){_bindAnimationOnceComplete(holder,mixer,action,onceCallback);}}else{_clearAnimationOnceCompleteListener(holder,mixer);}holder._activeAnimationAction=action;holder._activeAnimationKey=actionKey;holder._activeAnimationClipName=clip.name;holder._lastAnimationRequestSig=requestSig;return;}if(holder?._activeAnimationAction&&holder._activeAnimationAction!==action){holder._activeAnimationAction.stop();}_configureAnimationLoop(action,loopMode);action.enabled=true;if(!(loopMode===\"once\"&&_isAnimationOnceActionComplete(action))){action.paused=false;}action.setEffectiveWeight(1);action.setEffectiveTimeScale(1);if(options.restartOnSwitch||loopMode===\"once\"||!action.isRunning()){action.reset();}action.play();if(holder){if(loopMode===\"once\"&&options.onOnceComplete){const onceCallback=_getAnimationOnceCompleteCallback(holder,requestSig,options.onOnceComplete);_bindAnimationOnceComplete(holder,mixer,action,onceCallback);}else{_clearAnimationOnceCompleteListener(holder,mixer);}holder._activeAnimationAction=action;holder._activeAnimationKey=`${clip.name}|${loopMode}`;holder._activeAnimationClipName=clip.name;holder._lastAnimationRequestSig=requestSig;}}else{const loopMode=options.loopMode??\"repeat\";const replayKey=loopMode===\"once\"?options.replayKey||\"\":\"\";const requestSig=`all|${loopMode}|${options.onOnceComplete?1:0}|${replayKey}`;if(options.holder&&options.holder._lastAnimationRequestSig!==requestSig){options.holder._animationOnceCompletedSig=\"\";}if(options.holder?._activeAnimationKey===\"all\"&&options.holder?._lastAnimationRequestSig===requestSig){return;}mixer.stopAllAction();const actions=[];// \"all\" mode — play every clip\nfor(const clip of animations){const action=mixer.clipAction(clip);_configureAnimationLoop(action,loopMode);action.enabled=true;action.paused=false;action.reset().play();actions.push(action);}if(options.holder){if(loopMode===\"once\"&&options.onOnceComplete){const onceCallback=_getAnimationOnceCompleteCallback(options.holder,requestSig,options.onOnceComplete);_bindAnimationOnceCompleteActions(options.holder,mixer,actions,onceCallback);}else{_clearAnimationOnceCompleteListener(options.holder,mixer);}options.holder._activeAnimationAction=null;options.holder._activeAnimationKey=\"all\";options.holder._activeAnimationClipName=\"\";options.holder._lastAnimationRequestSig=requestSig;}}}/* Generate environment hash *//* Generate effects hash */export function _getAnimationBlendOptions(holder,cfg,blendDuration){return{holder,blendDuration:blendDuration??cfg.animationBlendDuration,warp:cfg.animationWarp,syncPhase:cfg.animationSyncPhase,restartOnSwitch:cfg.animationRestartOnSwitch,loopMode:cfg.animationLoopMode,replayKey:cfg._animationReplayHash};}export function _canAdvanceAnimationMixer(holder,mixer){if(!mixer)return false;if((mixer.timeScale||0)===0)return false;const activeKey=holder?._activeAnimationKey||\"\";if(!activeKey)return false;if(activeKey===\"all\")return true;const action=holder?._activeAnimationAction;if(!action)return false;return action.enabled!==false&&!action.paused;}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_canAdvanceAnimationMixer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_findAnimationClip\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_playAnimations\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_isAnimationOnceActionComplete\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_warmAnimationActions\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_configureAnimationLoop\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getAnimationOnceCompleteCallback\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_clearAnimationOnceCompleteListener\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getAnimationBlendOptions\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_bindAnimationOnceCompleteActions\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_syncAnimationPhase\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_bindAnimationOnceComplete\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 4. GLOBAL RUNTIME STATE\nimport{THREE}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";// @api RuntimeState.globals\nexport const _tmpVec3A=new THREE.Vector3;export const _tmpVec3B=new THREE.Vector3;export const _tmpVec3C=new THREE.Vector3;export let _rootTooltipHandler=null;export function _setRootTooltipHandler(handler){_rootTooltipHandler=handler;}export const _tmpParticleVecA=new THREE.Vector3;export const _tmpParticleVecB=new THREE.Vector3;export const _tmpQuatA=new THREE.Quaternion;export const _tmpQuatB=new THREE.Quaternion;export const _tmpEulerA=new THREE.Euler;export const _tmpBox3=new THREE.Box3;export const _tmpStereoSize=new THREE.Vector2;export const _tmpFrustum=new THREE.Frustum;export const _tmpProjScreenMatrix=new THREE.Matrix4;export const _tmpSubScenePivotOffset=new THREE.Vector3;export const _tmpSubScenePivotEuler=new THREE.Euler;export const _tmpSubScenePivotQuat=new THREE.Quaternion;export function _createAsyncTextureLoader(){const bitmapLoader=typeof createImageBitmap!==\"undefined\"?new THREE.ImageBitmapLoader:null;if(bitmapLoader)bitmapLoader.setOptions({imageOrientation:\"flipY\"});const fallbackLoader=new THREE.TextureLoader;return{load:function(url,onLoad,onProgress,onError){const isSVG=url.toLowerCase().includes(\".svg\")||url.startsWith(\"data:image/svg+xml\");if(!bitmapLoader||isSVG){return fallbackLoader.load(url,onLoad,onProgress,onError);}const texture=new THREE.Texture;bitmapLoader.load(url,function(imageBitmap){texture.image=imageBitmap;texture.needsUpdate=true;if(onLoad)onLoad(texture);},onProgress,function(err){fallbackLoader.load(url,function(tex){texture.image=tex.image;texture.needsUpdate=true;if(onLoad)onLoad(texture);},onProgress,onError);});return texture;}};}export const _modelCache=new Map;export const _preloadInFlight=new Map;export const _zipBlobCache=new Map;export const hdriCache=new Map;export const hdriInFlight=new Map;export const proceduralEnvCache=new WeakMap;export const _progressivePlaceholderColor=new THREE.Color(.35,.35,.38);export const _origMaterialBackups=new Map// #endregion\n;\nexport const __FramerMetadata__ = {\"exports\":{\"_tmpParticleVecA\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hdriCache\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpQuatA\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpBox3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpParticleVecB\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_preloadInFlight\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpVec3A\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_origMaterialBackups\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_modelCache\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpVec3C\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpQuatB\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_setRootTooltipHandler\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_zipBlobCache\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpStereoSize\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpEulerA\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpSubScenePivotEuler\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_createAsyncTextureLoader\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"proceduralEnvCache\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpFrustum\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_rootTooltipHandler\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpVec3B\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpProjScreenMatrix\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpSubScenePivotOffset\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_tmpSubScenePivotQuat\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_progressivePlaceholderColor\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hdriInFlight\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 15. SHADER PASSES\nfunction _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{THREE,React}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{TONE_MAPPINGS}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";export const useBrowserLayoutEffect=typeof window!==\"undefined\"?React.useLayoutEffect:React.useEffect;/**\n * Framer/Figma-style tile pixelation. Unlike Three.js RenderPixelatedPass,\n * this operates on the finished image and exposes shaped cells, gaps,\n * posterization, average color, dissolve and knockout behavior.\n */export const FramerTilePixelateShader={uniforms:{tDiffuse:{value:null},resolution:{value:new THREE.Vector2(1,1)},shape:{value:0},cellPx:{value:new THREE.Vector2(23,23)},gap:{value:0},colorTrim:{value:0},averageColor:{value:.42},dissolve:{value:0},falloff:{value:0},dissolveMode:{value:0},knockout:{value:1}},vertexShader:`\n        varying vec2 vUv;\n        void main() {\n            vUv = uv;\n            gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n        }\n    `,fragmentShader:`\n        uniform sampler2D tDiffuse;\n        uniform vec2 resolution;\n        uniform int shape;\n        uniform vec2 cellPx;\n        uniform float gap;\n        uniform float colorTrim;\n        uniform float averageColor;\n        uniform float dissolve;\n        uniform float falloff;\n        uniform int dissolveMode;\n        uniform float knockout;\n        varying vec2 vUv;\n\n        vec4 sampleSrc(vec2 uv) {\n            if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {\n                return vec4(0.0);\n            }\n            return texture2D(tDiffuse, uv);\n        }\n\n        float hash12(vec2 p) {\n            // Keep this compatible with the GLSL ES 1.00 compiler used by\n            // WebGL1.  The more compact vec3 hash is valid in newer GLSL\n            // versions, but some browsers reject it when this pass is\n            // compiled through ShaderMaterial.\n            return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);\n        }\n\n        float hexDist(vec2 p) {\n            p = abs(p);\n            return max(dot(p, vec2(0.5, 0.866025)), p.x);\n        }\n\n        vec4 hexCoords(vec2 g) {\n            vec2 r = vec2(1.0, 1.7320508);\n            vec2 h = r * 0.5;\n            vec2 a = mod(g, r) - h;\n            vec2 b = mod(g - h, r) - h;\n            vec2 gv = a;\n            if (dot(b, b) < dot(a, a)) gv = b;\n            return vec4(gv, g - gv);\n        }\n\n        void main() {\n            vec2 px = vUv * resolution;\n            vec2 g = px / cellPx;\n            float gapHalf = gap * 0.5;\n            vec2 centerCell;\n            float mask;\n            float dropped = 0.0;\n\n            if (shape == 0 || shape == 1) {\n                vec2 id = floor(g);\n                centerCell = id + 0.5;\n                vec2 lc = g - centerCell;\n                float th = 0.5 - gapHalf;\n                if (shape == 0) {\n                    // With no gap, every fragment belongs to a rectangle\n                    // cell. The strict edge test would otherwise leave a\n                    // one-pixel knockout line at each tile boundary.\n                    if (gap < 0.0001) mask = 1.0;\n                    else if (max(abs(lc.x), abs(lc.y)) < th) mask = 1.0;\n                    else mask = 0.0;\n                } else {\n                    if (length(lc) < th) mask = 1.0;\n                    else mask = 0.0;\n                }\n            } else if (shape == 2) {\n                vec4 hc = hexCoords(g);\n                centerCell = hc.zw;\n                if (hexDist(hc.xy) < 0.5 * (1.0 - gap)) mask = 1.0;\n                else mask = 0.0;\n            } else {\n                vec2 id = floor(g);\n                vec2 lc = g - (id + 0.5);\n                float diag = mod(id.x + id.y, 2.0);\n                float s;\n                if (diag < 0.5) s = lc.x + lc.y;\n                else s = lc.x - lc.y;\n                float tri = step(0.0, s);\n                vec2 cen;\n                if (diag < 0.5) {\n                    if (tri > 0.5) cen = vec2(1.0 / 6.0);\n                    else cen = vec2(-1.0 / 6.0);\n                } else {\n                    if (tri > 0.5) cen = vec2(1.0, -1.0) / 6.0;\n                    else cen = vec2(-1.0, 1.0) / 6.0;\n                }\n                centerCell = id + 0.5 + cen;\n                float dEdge = 0.5 - max(abs(lc.x), abs(lc.y));\n                float dDiag = abs(s) / 1.4142136;\n                if (min(dEdge, dDiag) > gapHalf) mask = 1.0;\n                else mask = 0.0;\n            }\n\n            vec2 centerUv = centerCell * cellPx / resolution;\n            vec4 centerCol = sampleSrc(centerUv);\n            vec4 avg = vec4(0.0);\n            for (int y = -1; y <= 1; y++) {\n                for (int x = -1; x <= 1; x++) {\n                    vec2 o = vec2(float(x), float(y)) * cellPx * 0.3 / resolution;\n                    avg += sampleSrc(centerUv + o);\n                }\n            }\n            avg /= 9.0;\n            vec4 col = mix(centerCol, avg, averageColor);\n\n            float steps = max(1.0, 256.0 / exp2(colorTrim));\n            col.rgb = floor(col.rgb * steps) / steps;\n\n            float bias = mix(1.0, smoothstep(0.0, 1.0, centerUv.y), falloff);\n            float chance = dissolve * bias;\n            float randomCell = hash12(centerCell);\n            if (dissolveMode == 0) {\n                if (randomCell < chance) dropped = 1.0;\n            } else if (dissolve > 0.0) {\n                col.a *= 1.0 - smoothstep(chance, chance + 0.2, randomCell);\n            }\n\n            if (mask > 0.5 && dropped < 0.5) {\n                gl_FragColor = col;\n            } else if (dropped > 0.5 && knockout > 0.5) {\n                // Only a deliberately dissolved cell may become transparent.\n                // Shape boundaries are not gaps anymore: preserving the\n                // source pixel there prevents the geometric glitch pattern\n                // seen when switching Ellipse/Triangle at small sizes.\n                gl_FragColor = vec4(0.0);\n            } else {\n                gl_FragColor = sampleSrc(vUv);\n            }\n        }\n    `};const TILE_PIXELATE_SHAPES={rectangle:0,ellipse:1,hexagon:2,triangle:3};const _clamp01=value=>Math.max(0,Math.min(1,value));export function createFramerTilePixelatePass(ShaderPass){const pass=new ShaderPass(FramerTilePixelateShader);const uniforms=pass.uniforms||pass.material?.uniforms;pass._pixelRatio=1;pass._tileConfig=null;pass.setSize=(width,height)=>{uniforms.resolution.value.set(Math.max(1,width),Math.max(1,height));};pass.setPixelRatio=pixelRatio=>{pass._pixelRatio=Math.max(.5,pixelRatio||1);if(pass._tileConfig)pass.setTilePixelateConfig(pass._tileConfig);};pass.setTilePixelateConfig=cfg=>{pass._tileConfig=cfg;const size=Math.max(1,Number(cfg.pixelateSize)||23);const stretch=Math.max(-90,Number(cfg.pixelateStretch)||0);const widthFactor=Math.max(.1,1+stretch/100);const shape=TILE_PIXELATE_SHAPES[cfg.pixelateShape]??0;// Work on whole physical pixels. Fractional cell sizes (for example\n// 3 CSS px on a 1.5 DPR display) make the hex lattice phase drift and\n// produce unstable moire/pattern pixels while resizing.\nconst cellWidthPx=Math.max(1,Math.round(size*widthFactor*pass._pixelRatio));const cellHeightPx=Math.max(1,Math.round(size*pass._pixelRatio));uniforms.shape.value=shape;uniforms.cellPx.value.set(cellWidthPx,cellHeightPx);// Gap and color trim are intentionally disabled. Pixelate must not\n// introduce a color or dotted/knockout pattern of its own.\nuniforms.gap.value=0;uniforms.colorTrim.value=0;uniforms.averageColor.value=_clamp01((Number(cfg.pixelateAverageColor)||0)/100);uniforms.dissolve.value=_clamp01((Number(cfg.pixelateDissolve)||0)/100);uniforms.falloff.value=_clamp01((Number(cfg.pixelateFalloff)||0)/100);uniforms.dissolveMode.value=cfg.pixelateDissolveMode===\"fade\"?1:0;uniforms.knockout.value=cfg.pixelateKnockout===false?0:1;};return pass;}// Shared 3D Noise GLSL (Perlin-like)\nexport const NOISE_GLSL=`\n    vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n    vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n    vec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); }\n    vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\n    float snoise(vec3 v) {\n        const vec2 C = vec2(1.0/6.0, 1.0/3.0);\n        const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n        vec3 i  = floor(v + dot(v, C.yyy));\n        vec3 x0 = v - i + dot(i, C.xxx);\n        vec3 g = step(x0.yzx, x0.xyz);\n        vec3 l = 1.0 - g;\n        vec3 i1 = min(g.xyz, l.zxy);\n        vec3 i2 = max(g.xyz, l.zxy);\n        vec3 x1 = x0 - i1 + C.xxx;\n        vec3 x2 = x0 - i2 + C.yyy;\n        vec3 x3 = x0 - D.yyy;\n        i = mod289(i);\n        vec4 p = permute(permute(permute(\n            i.z + vec4(0.0, i1.z, i2.z, 1.0))\n            + i.y + vec4(0.0, i1.y, i2.y, 1.0))\n            + i.x + vec4(0.0, i1.x, i2.x, 1.0));\n        float n_ = 0.142857142857;\n        vec3 ns = n_ * D.wyz - D.xzx;\n        vec4 j = p - 49.0 * floor(p * ns.z * ns.z);\n        vec4 x_ = floor(j * ns.z);\n        vec4 y_ = floor(j - 7.0 * x_);\n        vec4 x = x_ *ns.x + ns.yyyy;\n        vec4 y = y_ *ns.x + ns.yyyy;\n        vec4 h = 1.0 - abs(x) - abs(y);\n        vec4 b0 = vec4(x.xy, y.xy);\n        vec4 b1 = vec4(x.zw, y.zw);\n        vec4 s0 = floor(b0)*2.0 + 1.0;\n        vec4 s1 = floor(b1)*2.0 + 1.0;\n        vec4 sh = -step(h, vec4(0.0));\n        vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy;\n        vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww;\n        vec3 p0 = vec3(a0.xy, h.x);\n        vec3 p1 = vec3(a0.zw, h.y);\n        vec3 p2 = vec3(a1.xy, h.z);\n        vec3 p3 = vec3(a1.zw, h.w);\n        vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2,p2), dot(p3,p3)));\n        p0 *= norm.x;\n        p1 *= norm.y;\n        p2 *= norm.z;\n        p3 *= norm.w;\n        vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n        m = m * m;\n        return 42.0 * dot(m*m, vec4(dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3)));\n    }\n`;/* ═══════════════════════════════════════════════════════════\n   Custom Post-Processing Shaders\n   ═══════════════════════════════════════════════════════════ */export const VignetteShader={uniforms:{tDiffuse:{value:null},offset:{value:1},darkness:{value:1}},vertexShader:`varying vec2 vUv;void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`,fragmentShader:`\n        uniform sampler2D tDiffuse;\n        uniform float offset;\n        uniform float darkness;\n        varying vec2 vUv;\n        void main(){\n            vec4 texel=texture2D(tDiffuse,vUv);\n            vec2 uv=(vUv-vec2(0.5))*vec2(offset);\n            float vig=clamp(1.0-dot(uv,uv),0.0,1.0);\n            texel.rgb*=mix(1.0,pow(vig,0.5),darkness);\n            gl_FragColor=texel;\n        }`};export const ChromaticAberrationShader={uniforms:{tDiffuse:{value:null},strength:{value:.005},resolution:{value:new THREE.Vector2(1,1)}},vertexShader:`varying vec2 vUv;void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`,fragmentShader:`\n        uniform sampler2D tDiffuse;\n        uniform float strength;\n        uniform vec2 resolution;\n        varying vec2 vUv;\n        void main(){\n            vec2 dir=vUv-vec2(0.5);\n            float d=length(dir);\n            float s=strength*d*d;\n            vec2 offset=dir*s;\n            float r=texture2D(tDiffuse,vUv+offset).r;\n            float g=texture2D(tDiffuse,vUv).g;\n            float b=texture2D(tDiffuse,vUv-offset).b;\n            float a=texture2D(tDiffuse,vUv).a;\n            gl_FragColor=vec4(r,g,b,a);\n        }`};export const FilmGrainShader={uniforms:{tDiffuse:{value:null},time:{value:0},intensity:{value:.05}},vertexShader:`varying vec2 vUv;void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`,fragmentShader:`\n        uniform sampler2D tDiffuse;\n        uniform float time;\n        uniform float intensity;\n        varying vec2 vUv;\n        float rand(vec2 co){return fract(sin(dot(co,vec2(12.9898,78.233)))*43758.5453);}\n        void main(){\n            vec4 texel=texture2D(tDiffuse,vUv);\n            float noise=rand(vUv+vec2(time*0.01,time*0.007))*2.0-1.0;\n            texel.rgb+=noise*intensity;\n            gl_FragColor=texel;\n        }`};/**\n * AlphaRestoreShader — restores original alpha from a saved render target.\n * UnrealBloomPass destroys alpha (writes 1.0 everywhere via AdditiveBlending).\n * This pass takes RGB from the post-processed chain but alpha from the pre-bloom render.\n */export const AlphaRestoreShader={uniforms:{tDiffuse:{value:null},tAlpha:{value:null}},vertexShader:`varying vec2 vUv;void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`,fragmentShader:`\n        uniform sampler2D tDiffuse;\n        uniform sampler2D tAlpha;\n        varying vec2 vUv;\n        void main(){\n            vec4 color=texture2D(tDiffuse,vUv);\n            float alpha=texture2D(tAlpha,vUv).a;\n            gl_FragColor=vec4(color.rgb*alpha, alpha);\n        }`};/**\n * AlphaSavePass — copies current readBuffer to a side render target (alphaRT)\n * to preserve alpha before bloom destroys it. Passes through unchanged.\n */export class AlphaSavePass{setSize(w,h){this.targetRT.setSize(w,h);}render(renderer,writeBuffer,readBuffer){if(!this.enabled)return;this._copyMat.uniforms.tDiffuse.value=readBuffer.texture;const oldRT=renderer.getRenderTarget();renderer.setRenderTarget(this.targetRT);renderer.clear();renderer.render(this._scene,this._cam);renderer.setRenderTarget(oldRT);}dispose(){this._copyMat.dispose();this._fsQuad.geometry.dispose();this.targetRT.dispose();}constructor(targetRT){_define_property(this,\"enabled\",true);_define_property(this,\"needsSwap\",false);_define_property(this,\"renderToScreen\",false);_define_property(this,\"clear\",false);_define_property(this,\"targetRT\",void 0);_define_property(this,\"_copyMat\",void 0);_define_property(this,\"_fsQuad\",void 0);_define_property(this,\"_scene\",void 0);_define_property(this,\"_cam\",void 0);this.targetRT=targetRT;this._copyMat=new THREE.ShaderMaterial({uniforms:{tDiffuse:{value:null}},vertexShader:`varying vec2 vUv;void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`,fragmentShader:`uniform sampler2D tDiffuse;varying vec2 vUv;void main(){gl_FragColor=texture2D(tDiffuse,vUv);}`,depthTest:false,depthWrite:false});const geo=new THREE.PlaneGeometry(2,2);this._fsQuad=new THREE.Mesh(geo,this._copyMat);this._fsQuad.frustumCulled=false;this._scene=new THREE.Scene;this._scene.add(this._fsQuad);this._cam=new THREE.OrthographicCamera(-1,1,1,-1,0,1);}}export const ColorGradingShader={uniforms:{tDiffuse:{value:null},brightness:{value:0},contrast:{value:1},saturation:{value:1}},vertexShader:`varying vec2 vUv;void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`,fragmentShader:`\n        uniform sampler2D tDiffuse;\n        uniform float brightness;\n        uniform float contrast;\n        uniform float saturation;\n        varying vec2 vUv;\n        void main(){\n            vec4 texel=texture2D(tDiffuse,vUv);\n            texel.rgb+=brightness;\n            texel.rgb=((texel.rgb-0.5)*contrast)+0.5;\n            float lum=dot(texel.rgb,vec3(0.2126,0.7152,0.0722));\n            texel.rgb=mix(vec3(lum),texel.rgb,saturation);\n            gl_FragColor=vec4(max(texel.rgb,0.0),texel.a);\n        }`};/**\n * Apply effects/post-processing changes.\n */export function applyEffectsChanges(st,cfg){const{_bloom:bloom,_ssao:ssao,_colorGrading:colorGrading,_vignette:vignette,_chromaticAberration:chromaticAberration,_filmGrain:filmGrain,_pixelated:pixelated,_fxaa:fxaa}=st;// Tone mapping\nst._renderer.toneMapping=TONE_MAPPINGS[cfg.toneMapping]||THREE.ACESFilmicToneMapping;st._renderer.toneMappingExposure=cfg.exposure;// Bloom\nif(bloom)bloom.enabled=cfg.bloomEnabled;if(bloom&&cfg.bloomEnabled){bloom.strength=cfg.bloomStrength;bloom.threshold=cfg.bloomThreshold;bloom.radius=cfg.bloomRadius;}// SSAO\nif(ssao){ssao.enabled=cfg.enableSSAO;if(cfg.enableSSAO){ssao.kernelRadius=cfg.ssaoRadius;ssao.minDistance=cfg.ssaoMinDistance;ssao.maxDistance=cfg.ssaoMaxDistance;}}// DOF (Depth of Field) — disabled for orthographic camera\nconst dof=st._dof;if(dof){dof.enabled=cfg.enableDOF&&cfg.cameraType!==\"orthographic\";if(cfg.enableDOF){dof.uniforms[\"focus\"].value=cfg.dofFocus;dof.uniforms[\"aperture\"].value=cfg.dofAperture;dof.uniforms[\"maxblur\"].value=cfg.dofMaxBlur;}}// Alpha save/restore: needed when bloom + transparent background\nconst needAlphaFix=(cfg.bloomEnabled||cfg.enableDOF)&&cfg.transparentBackground;if(st._alphaSave)st._alphaSave.enabled=needAlphaFix;if(st._alphaRestore)st._alphaRestore.enabled=needAlphaFix;// Color grading\nif(colorGrading)colorGrading.enabled=cfg.enableColorGrading;if(colorGrading&&cfg.enableColorGrading){colorGrading.uniforms.brightness.value=cfg.brightness;colorGrading.uniforms.contrast.value=cfg.contrast;colorGrading.uniforms.saturation.value=cfg.saturation;}// Vignette\nif(vignette)vignette.enabled=cfg.enableVignette;if(vignette&&cfg.enableVignette){vignette.uniforms.offset.value=cfg.vignetteOffset;vignette.uniforms.darkness.value=cfg.vignetteDarkness;}// Chromatic aberration\nif(chromaticAberration)chromaticAberration.enabled=cfg.enableChromaticAberration;if(chromaticAberration&&cfg.enableChromaticAberration){chromaticAberration.uniforms.strength.value=cfg.chromaticAberrationStrength;}// Film grain\nif(filmGrain)filmGrain.enabled=cfg.enableFilmGrain;if(filmGrain&&cfg.enableFilmGrain){filmGrain.uniforms.intensity.value=cfg.filmGrainIntensity;}// Framer/Figma-style tile pixelation\nif(pixelated)pixelated.enabled=cfg.enablePixelate;if(pixelated&&cfg.enablePixelate){pixelated.setTilePixelateConfig?.(cfg);}// FXAA\nif(fxaa)fxaa.enabled=cfg.enableFXAA;}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"AlphaSavePass\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"applyEffectsChanges\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FilmGrainShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ChromaticAberrationShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useBrowserLayoutEffect\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NOISE_GLSL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ColorGradingShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FramerTilePixelateShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VignetteShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AlphaRestoreShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createFramerTilePixelatePass\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./postprocessing.map","// @ts-nocheck\n// #region 6. FORMAT & COLOR UTILS\nimport{THREE}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";export function detectFormat(url){if(!url)return null;const ext=url.split(\"?\")[0].split(\"#\")[0].toLowerCase().split(\".\").pop();if(ext===\"glb\"||ext===\"gltf\")return ext;if(ext===\"fbx\")return\"fbx\";if(ext===\"zip\")return\"zip\";return null// Only GLB/GLTF/FBX/ZIP supported — other formats should be converted in Blender\n;}export function detectImageFormat(url){if(!url)return null;const ext=url.split(\"?\")[0].split(\"#\")[0].toLowerCase().split(\".\").pop();if(ext===\"png\"||ext===\"jpg\"||ext===\"jpeg\"||ext===\"webp\"||ext===\"avif\"){return ext;}return null;}export function _normalizeLayerMatchValue(value){return String(value??\"\").trim().toLowerCase();}function _normalizeExactLayerMatchValue(value){return String(value??\"\").trim().replace(/^[#.]/,\"\");}export function _getLayerMatchValues(node){if(!node)return[];const values=[node.id,node.getAttribute?.(\"aria-label\"),node.getAttribute?.(\"data-framer-name\"),node.getAttribute?.(\"data-framer-component-name\"),node.getAttribute?.(\"data-section-id\"),node.getAttribute?.(\"data-name\"),node.getAttribute?.(\"title\")];if(node.classList)values.push(...Array.from(node.classList));return values.filter(Boolean).map(value=>_normalizeLayerMatchValue(value));}export function _getLayerMatchScore(node,targets){if(!node||!targets?.length)return 0;const targetSet=new Set(targets);const sectionId=_normalizeLayerMatchValue(node.getAttribute?.(\"data-section-id\"));if(sectionId&&targetSet.has(sectionId)){return 300;}const id=_normalizeLayerMatchValue(node.id);if(id&&targetSet.has(id)){return 200;}return 0;}export function _getLayerMatchArea(node){const rect=node?.getBoundingClientRect?.();if(!rect)return 0;return Math.max(0,rect.width)*Math.max(0,rect.height);}export function _resolveScrollAnchorY(value,fallback=.5){if(typeof value===\"number\"&&Number.isFinite(value)){return Math.max(0,Math.min(1,value));}const key=String(value??\"\").trim().toLowerCase();if(key===\"top\"||key===\"start\")return 0;if(key===\"bottom\"||key===\"end\")return 1;if(key===\"middle\"||key===\"mid\"||key===\"center\")return .5;return fallback;}export function _getObjectEventScrollProgress(selector,wrapNode=null,anchor=.5){if(typeof window===\"undefined\")return 1;const match=String(selector??\"\").trim();if(!match)return 1;const el=_findLayerMatchElement(match,wrapNode);if(!el)return 0;const rect=el.getBoundingClientRect?.();const viewH=window.innerHeight||1;if(!rect||!viewH)return 0;const anchorY=rect.top+rect.height*_resolveScrollAnchorY(anchor);return Math.max(0,Math.min(1,1-anchorY/viewH));}export function _isLayerMatchCandidateUsable(node,wrapNode){if(!node||node.nodeType!==1)return false;if(wrapNode&&wrapNode.contains?.(node))return false;if(node.getAttribute?.(\"data-3d-canvas-id\"))return false;const rect=node.getBoundingClientRect?.();// Framer can scale an ID target to a fractional CSS-pixel size (for\n// example, 0.998px high). It is still a real visible target and must not\n// be rejected, or Scroll ID resolution will vary with browser zoom/scaling.\nif(!rect||rect.width<=0||rect.height<=0)return false;let current=node;while(current&&current!==document.body){if(current.getAttribute?.(\"aria-hidden\")===\"true\"||current.getAttribute?.(\"data-framer-hidden\")===\"true\"){return false;}const style=typeof window!==\"undefined\"?window.getComputedStyle(current):null;if(style&&(style.display===\"none\"||style.visibility===\"hidden\"||Number(style.opacity)===0)){return false;}current=current.parentElement;}return true;}export function _matchesLayerSelector(rootNode,selector){const targets=String(selector??\"\").split(\",\").map(_normalizeLayerMatchValue).flatMap(value=>[value,value.replace(/^[#.]/,\"\")]).filter(Boolean);if(!targets.length)return true;let node=rootNode;while(node&&node!==document.body){const values=_getLayerMatchValues(node);for(const target of targets){if(values.some(value=>value===target))return true;}node=node.parentElement;}return false;}export function _findLayerMatchElement(selector,wrapNode=null){if(typeof document===\"undefined\")return null;const targets=String(selector??\"\").split(\",\").map(_normalizeExactLayerMatchValue).filter(Boolean);if(!targets.length)return null;const exactCandidates=document.querySelectorAll(\"[data-section-id],[id]\");const usableCandidates=Array.from(exactCandidates).filter(node=>_isLayerMatchCandidateUsable(node,wrapNode));// Deterministic resolution for Follow ID:\n// 1. exact HTML id (IDs are case-sensitive)\n// 2. exact Framer section ID\n// 3. a case-insensitive fallback only when it is unambiguous\nfor(const target of targets){const exactId=usableCandidates.find(node=>node.id===target);if(exactId)return exactId;const exactSectionId=usableCandidates.find(node=>node.getAttribute?.(\"data-section-id\")===target);if(exactSectionId)return exactSectionId;// Keep the historical case-insensitive behavior for unique matches,\n// but do not guess between duplicate IDs that differ only by case.\nconst foldedTarget=target.toLowerCase();const foldedMatches=usableCandidates.filter(node=>{return _normalizeLayerMatchValue(node.id)===foldedTarget||_normalizeLayerMatchValue(node.getAttribute?.(\"data-section-id\"))===foldedTarget;});if(foldedMatches.length===1)return foldedMatches[0];}return null;}export function parseColor(c){if(!c)return new THREE.Color(1842204);try{// Framer's ControlType.Color may return rgba() which THREE.Color doesn't support\n// Strip alpha channel: \"rgba(R, G, B, A)\" → \"rgb(R, G, B)\"\nlet s=typeof c===\"string\"?c.trim():c;// Handle CSS variables: \"var(--token-xyz, rgb(219, 38, 37))\"\nif(typeof s===\"string\"&&s.includes(\"var(\")){// Extract fallback value after comma (if exists)\nconst match=s.match(/var\\([^,]+,\\s*([^)]+)\\)/);if(match&&match[1]){s=match[1].trim();}else{// No fallback — use default color\nreturn new THREE.Color(1842204);}}if(typeof s===\"string\"&&s.startsWith(\"rgba(\")){const parts=s.slice(5,-1).split(\",\");s=`rgb(${parts[0]},${parts[1]},${parts[2]})`;}return new THREE.Color(s);}catch{return new THREE.Color(1842204);}}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_getLayerMatchValues\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_matchesLayerSelector\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getLayerMatchArea\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"detectImageFormat\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"parseColor\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getObjectEventScrollProgress\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getLayerMatchScore\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_findLayerMatchElement\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_normalizeLayerMatchValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_isLayerMatchCandidateUsable\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_resolveScrollAnchorY\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"detectFormat\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./formatAndColor.map","// @ts-nocheck\n// #region 19. WEBGL COORDINATOR\n// @api WebGLCoordinator.budget\nexport const _webglCoordinator=(()=>{const instances=new Map;const _sortScratch=[];let nextId=1;let scheduled=false;function _detectBudget(){if(typeof navigator===\"undefined\")return 4;const ua=navigator.userAgent||\"\";const isIOS=/iP(hone|ad|od)/.test(ua)||/Mac/.test(ua)&&navigator.maxTouchPoints>1;const isSafari=/^((?!chrome|android|crios|fxios).)*safari/i.test(ua);const mem=navigator.deviceMemory||4;if(isIOS)return mem<=3?2:3;if(isSafari)return mem<=4?3:4;return mem<=4?4:6;}const _deviceBudget=_detectBudget();// Read the Root-coordinator-supplied budget override from the shared bridge.\n// Root sets bridge.contextBudget when mounted. Falls back to device auto-detect.\nfunction _effectiveBudget(){if(typeof window===\"undefined\")return _deviceBudget;const bridge=window[\"__IMPORT_3D_CANVAS_BRIDGE__\"];const override=bridge?.contextBudget;return typeof override===\"number\"&&override>0?override:_deviceBudget;}function _destroyPolicy(){if(typeof window===\"undefined\"){return{enabled:false,ttlMs:_DESTROY_TTL_MS};}const bridge=window[\"__IMPORT_3D_CANVAS_BRIDGE__\"];return{enabled:!!bridge?.destroyOffscreen,ttlMs:Math.max(1e3,Number(bridge?.destroyAfterMs)||_DESTROY_TTL_MS)};}// Hard context limit before we start flagging slots for context destruction.\n// Destroying + recreating is expensive, so we only do it beyond this threshold.\n// Safari hard limit ≈ 16 (spec); we stay well under.\nfunction _contextLimit(){return Math.min((_effectiveBudget()+2)*2,8);}// Seconds a slot must be completely off-screen before its context is destroyed.\n// Destruction frees GPU memory and lowers context count.\n// Re-creation is fast because parsed geometry stays in _modelCache.\nconst _DESTROY_TTL_MS=2e4// 20 s\n;function _cmpRatio(a,b){return(b.ratio||0)-(a.ratio||0);}function _reevaluate(){scheduled=false;_sortScratch.length=0;for(const inst of instances.values())_sortScratch.push(inst);_sortScratch.sort(_cmpRatio);const n=_sortScratch.length;const budget=_effectiveBudget();const limit=_contextLimit();const now=performance.now();const destroyPolicy=_destroyPolicy();for(let i=0;i<n;i++){const inst=_sortScratch[i];const visible=(inst.ratio||0)>0;const shouldPause=i>=budget||!visible;if(inst.st){inst.st._coordinatorPaused=shouldPause;// Track continuous off-screen time for context destruction.\nif(!visible){if(!inst.st._coordOffscreenSince){inst.st._coordOffscreenSince=now;}if(inst.st._hasSubSceneItems){inst.st._coordinatorShouldDestroy=false;continue;}if(!destroyPolicy.enabled){inst.st._coordinatorShouldDestroy=false;}else{// Signal context destruction only when:\n//   1. slot has been off-screen long enough\n//   2. total registered instances exceed the hard limit\nconst offMs=now-inst.st._coordOffscreenSince;inst.st._coordinatorShouldDestroy=n>limit&&offMs>destroyPolicy.ttlMs;}}else{inst.st._coordOffscreenSince=0;inst.st._coordinatorShouldDestroy=false;}}}_sortScratch.length=0;}function _scheduleReeval(){if(scheduled)return;scheduled=true;if(typeof queueMicrotask!==\"undefined\")queueMicrotask(_reevaluate);else Promise.resolve().then(_reevaluate);}return{register(st){const id=nextId++;instances.set(id,{id,ratio:1,st});_scheduleReeval();return id;},unregister(id){if(id<=0)return;instances.delete(id);_scheduleReeval();},notify(id,ratio){const inst=instances.get(id);if(!inst)return;if(inst.ratio===ratio)return;inst.ratio=ratio;_scheduleReeval();},// Force an immediate re-evaluation (called when bridge budget changes).\nforceReeval(){_scheduleReeval();},size(){return instances.size;},getBudget(){return _effectiveBudget();},// DPR multiplier: scales render resolution down as more canvases mount,\n// so total pixel-shaded area stays roughly constant across the page.\ngetDprMultiplier(){const total=instances.size;if(total<=1)return 1;if(total===2)return .92;if(total===3)return .82;return .72;},// Sync helper for performanceLazyWebgl / performancePauseOffscreen:\n// when more than one canvas is mounted, treat per-instance gates as\n// \"force-enabled\" regardless of the user's configuration.\nshouldForcePerfGates(){return instances.size>1;}};})()// #endregion\n;\nexport const __FramerMetadata__ = {\"exports\":{\"_webglCoordinator\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./coordinator.map","// @ts-nocheck\n// #region 16. RENDER METRICS\nimport{RenderTarget}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{_AUTO_FIT_MAX_ASPECT,_AUTO_FIT_MIN_VISIBLE}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{_webglCoordinator}from\"https://framerusercontent.com/modules/si06nShLsVx5iWJW7SK7/2JHazrj0zYD0ipOq3PQl/coordinator.js\";let _mobileLikeCache=false;let _mobileLikeCacheAt=0;let _mobileLikeCacheWidth=-1;/** Get visible width/height at a given distance from camera (works for both perspective & ortho). */export function _getVisibleSize(camera,distance){if(camera?.isOrthographicCamera){return{width:(camera.right-camera.left)/Math.max(1e-4,camera.zoom),height:(camera.top-camera.bottom)/Math.max(1e-4,camera.zoom)};}const fov=(camera?.fov??35)*Math.PI/180;const height=2*Math.tan(fov/2)*Math.max(1e-4,distance);return{width:height*Math.max(1e-4,camera?.aspect||1),height};}/**\n * Auto-fit should be stable between Framer canvas and published desktop.\n * Published pages are often wider than the editor canvas; without this cap,\n * width-limited models grow larger after publish.\n */export function _getAutoFitVisibleSize(camera,distance){const visible=_getVisibleSize(camera,distance);const cappedWidth=visible.height*Math.min(camera.aspect||_AUTO_FIT_MAX_ASPECT,_AUTO_FIT_MAX_ASPECT);return{width:Math.min(visible.width,cappedWidth),height:visible.height};}export function _getAutoFitRatio(camera,normSize){const distance=camera?.position?.length?.()||1;const visible=_getAutoFitVisibleSize(camera,distance);return Math.min(visible.width/Math.max(_AUTO_FIT_MIN_VISIBLE,normSize.x),visible.height/Math.max(_AUTO_FIT_MIN_VISIBLE,normSize.y))*.85;}/** Cap render DPR to avoid expensive full-resolution rendering on high-DPI displays. */export function _isMobileLike(){if(typeof window===\"undefined\")return false;const now=typeof performance!==\"undefined\"?performance.now():Date.now();const width=window.innerWidth||0;if(_mobileLikeCacheAt&&now-_mobileLikeCacheAt<1e3&&width===_mobileLikeCacheWidth){return _mobileLikeCache;}_mobileLikeCacheAt=now;_mobileLikeCacheWidth=width;_mobileLikeCache=window.matchMedia?.(\"(pointer: coarse)\")?.matches||width<=768;return _mobileLikeCache;}export function _setStyleIfChanged(node,key,value){if(!node?.style)return;if(node.style[key]!==value)node.style[key]=value;}export function _clearStyleIfChanged(node,key){if(!node?.style)return;if(node.style[key])node.style[key]=\"\";}export function _getOptimizedDpr(cfg){if(typeof window===\"undefined\")return 1;const raw=window.devicePixelRatio||1;let cap=cfg.performanceMode?cfg.performanceDprCap??1.5:cfg.performanceDprCap??2;if(_isMobileLike()&&cfg.performanceMobileDprCap!=null){cap=Math.min(cap,cfg.performanceMobileDprCap);}// Multi-canvas: scale DPR cap down so total shaded pixels across the page\n// stay bounded as more canvases come alive.\ncap=cap*_webglCoordinator.getDprMultiplier();return Math.max(.5,Math.min(raw,cap));}export function _getOptimizedRenderMetrics(cssWidth,cssHeight,cfg){const safeWidth=Math.max(1,cssWidth||1);const safeHeight=Math.max(1,cssHeight||1);let dpr=_getOptimizedDpr(cfg);const maxPixelCount=cfg.performanceMaxPixelCount??0;if(maxPixelCount>0){const targetPixels=safeWidth*safeHeight*dpr*dpr;if(targetPixels>maxPixelCount){dpr=Math.max(.1,Math.sqrt(maxPixelCount/(safeWidth*safeHeight)));}}return{dpr,renderWidth:Math.max(1,Math.round(safeWidth*dpr)),renderHeight:Math.max(1,Math.round(safeHeight*dpr))};}export function _getOptimizedAnisotropy(renderer,cfg=null){const maxAniso=renderer?.capabilities?.getMaxAnisotropy?.()??1;const cap=cfg?.performanceMode?4:4;return Math.max(1,Math.min(maxAniso,cap));}export function _runtimeNeedsPostFx(cfg){if(!cfg||cfg.cameraType===\"stereo\")return false;return!!(cfg.bloomEnabled||cfg.enableSSAO||cfg.enableDOF&&cfg.cameraType!==\"orthographic\"||cfg.enableColorGrading||cfg.enableVignette||cfg.enableChromaticAberration||cfg.enableFilmGrain||cfg.enablePixelate||cfg.enableFXAA);}export function _postFxPipelineSignature(cfg){if(!_runtimeNeedsPostFx(cfg))return\"\";const needDof=!!(cfg.enableDOF&&cfg.cameraType!==\"orthographic\");const needAlpha=!!(cfg.transparentBackground&&(cfg.bloomEnabled||needDof));return[cfg.enableSSAO?\"ssao\":\"\",needAlpha?\"alpha\":\"\",needDof?\"dof\":\"\",cfg.bloomEnabled?\"bloom\":\"\",cfg.enableColorGrading?\"color\":\"\",cfg.enableVignette?\"vignette\":\"\",cfg.enableChromaticAberration?\"chromatic\":\"\",cfg.enableFilmGrain?\"grain\":\"\",cfg.enablePixelate?\"pixelate\":\"\",cfg.enableFXAA?\"fxaa\":\"\"].filter(Boolean).join(\"|\");}/**\n * Detect the current Framer runtime mode.\n * @param isOnFramerCanvas - result of useIsOnFramerCanvas() hook (optional,\n *   only available inside React render).  When omitted the function still\n *   detects canvas vs live via RenderTarget alone.\n */export function getFramerRuntimeMode(isOnFramerCanvas){const renderTarget=RenderTarget.current();if(renderTarget===RenderTarget.canvas||isOnFramerCanvas){return\"canvas\";}if(renderTarget===RenderTarget.preview&&typeof window!==\"undefined\"&&window.location.host.includes(\"framercanvas.com\")){return\"preview\";}return\"live\";}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_runtimeNeedsPostFx\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getOptimizedAnisotropy\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getOptimizedDpr\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getOptimizedRenderMetrics\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getAutoFitVisibleSize\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_isMobileLike\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_setStyleIfChanged\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_postFxPipelineSignature\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getVisibleSize\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getFramerRuntimeMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_clearStyleIfChanged\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getAutoFitRatio\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./renderMetrics.map","// @ts-nocheck\n// #region 7. OBJECT3D UTILS\nimport{THREE}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";/**\n * Check if an Object3D tree contains any SkinnedMesh (armature/skeleton).\n */export function _hasSkinnedMesh(object){let found=false;object.traverse(child=>{if(child.isSkinnedMesh)found=true;});return found;}export function _collectAnimationTargetNames(object){const names=new Set;const binding=THREE.PropertyBinding;object?.traverse?.(child=>{if(!child)return;if(child.uuid)names.add(String(child.uuid));if(child.name){const raw=String(child.name);names.add(raw);const sanitized=binding?.sanitizeNodeName?.(raw);if(sanitized)names.add(String(sanitized));}});return names;}export function _animationTrackTargetName(trackName){const name=String(trackName||\"\");const binding=THREE.PropertyBinding;try{const parsed=binding?.parseTrackName?.(name);if(parsed?.nodeName)return String(parsed.nodeName);}catch{}const match=name.match(/^(.*)\\.(position|quaternion|rotation|scale)(?:\\[.*\\])?$/);if(!match)return\"\";const target=match[1]||\"\";const boneMatch=target.match(/(?:^|\\.)bones\\[['\"]?([^'\"\\]]+)['\"]?\\]$/);return boneMatch?.[1]||target;}export function _animationTrackTargetsMissingNode(track,targetNames){const trackName=String(track?.name||\"\");if(!/\\.(position|quaternion|rotation|scale)(?:\\[.*\\])?$/.test(trackName)){return false;}const target=_animationTrackTargetName(trackName);if(!target||target===\".\")return false;if(targetNames.has(target))return false;const decoded=(()=>{try{return decodeURIComponent(target);}catch{return target;}})();if(decoded&&targetNames.has(decoded))return false;const tail=decoded.split(/[/.]/).filter(Boolean).pop();return!!tail&&!targetNames.has(tail);}export function _sanitizeAnimationClipsForObject(object,animations=[]){if(!object||!animations?.length)return animations||[];const targetNames=_collectAnimationTargetNames(object);return animations.map(clip=>{const tracks=clip?.tracks||[];if(!tracks.length)return clip;const kept=tracks.filter(track=>!_animationTrackTargetsMissingNode(track,targetNames));if(kept.length===tracks.length)return clip;if(!kept.length)return null;const next=new THREE.AnimationClip(clip.name,clip.duration,kept.map(track=>track.clone?.()||track));next.blendMode=clip.blendMode;return next;}).filter(Boolean);}/**\n * Compute bounding box from mesh geometries only (excludes Bone, Light, Helper objects).\n * For skinned meshes, uses geometry bounding box in world space to avoid bone-inflated bounds.\n */export function _computeMeshOnlyBoundingBox(object){object.updateWorldMatrix(true,true);const box=new THREE.Box3;let hasMesh=false;object.traverse(child=>{if((child.isMesh||child.isSkinnedMesh)&&child.visible){if(child.geometry){if(!child.geometry.boundingBox)child.geometry.computeBoundingBox();if(child.geometry.boundingBox&&!child.geometry.boundingBox.isEmpty()){const geomBox=child.geometry.boundingBox.clone();geomBox.applyMatrix4(child.matrixWorld);box.union(geomBox);hasMesh=true;}}}});if(!hasMesh){box.setFromObject(object);}return box;}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_animationTrackTargetsMissingNode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_collectAnimationTargetNames\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_animationTrackTargetName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_hasSkinnedMesh\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_computeMeshOnlyBoundingBox\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_sanitizeAnimationClipsForObject\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 10. MODEL LOADING API\nimport{THREE,MeshoptDecoder,GLTFLoader,DRACOLoader,SkeletonUtils,_loadFBXLoader,_loadJSZip}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{_tmpVec3A,_createAsyncTextureLoader,_modelCache,_zipBlobCache,_origMaterialBackups}from\"https://framerusercontent.com/modules/e3Gn61f7n8O6N477csEc/XQABUbxjpsQJSmz595Po/state.js\";import{_hasSkinnedMesh,_sanitizeAnimationClipsForObject}from\"https://framerusercontent.com/modules/AFUuT451C58PCzmVhCV6/LtpaPYvKQJsZkRBrz1k0/object3DUtils.js\";import{_clearAnimationOnceCompleteListener}from\"https://framerusercontent.com/modules/OW6JuxITky0baeSUblwC/SQrxhGqqDBbtN2sdADeq/animationUtils.js\";let _sharedDraco=null;let _sharedGLTF=null;let _sharedFBX=null;let _sharedTextureLoader=null;export function getSharedGLTFLoader(){if(!_sharedGLTF){_sharedDraco=new DRACOLoader;_sharedDraco.setDecoderPath(\"https://www.gstatic.com/draco/versioned/decoders/1.5.7/\");_sharedGLTF=new GLTFLoader;_sharedGLTF.setDRACOLoader(_sharedDraco);_sharedGLTF.setMeshoptDecoder(MeshoptDecoder);}return _sharedGLTF;}export async function getSharedFBXLoader(){if(!_sharedFBX){const FBXLoader=await _loadFBXLoader();if(!_sharedFBX)_sharedFBX=new FBXLoader;}return _sharedFBX;}export function getSharedTextureLoader(){if(!_sharedTextureLoader){_sharedTextureLoader=_createAsyncTextureLoader();}return _sharedTextureLoader;}/**\n * Load a 3D model from a ZIP archive URL.\n *\n * Flow:\n *  1. Fetch ZIP as ArrayBuffer (with progress callback for download phase)\n *  2. Extract all files using JSZip -> create blob URLs\n *  3. Detect main model file inside (priority: .glb > .gltf > .fbx)\n *  4. Create a custom THREE.LoadingManager that redirects resource requests to blob URLs\n *  5. Load via GLTFLoader or FBXLoader -> call onLoaded(object, animations)\n *  7. Cache extracted blob URLs for reuse\n */export async function _loadFromZip(zipUrl,onLoaded,onProgress,onError){try{let blobMap;let mainFile;let mainFormat;// ── Check ZIP blob cache ──\nconst cached=_zipBlobCache.get(zipUrl);if(cached){blobMap=cached.blobMap;mainFile=cached.mainFile;mainFormat=cached.mainFormat;}else{// ── Phase 1: Download ZIP ──\nconst response=await fetch(zipUrl);if(!response.ok)throw new Error(`Failed to fetch ZIP: ${response.status} ${response.statusText}`);const contentLength=parseInt(response.headers.get(\"content-length\")||\"0\",10);const reader=response.body?.getReader();if(!reader)throw new Error(\"ReadableStream not supported\");const chunks=[];let receivedLength=0;while(true){const{done,value}=await reader.read();if(done)break;chunks.push(value);receivedLength+=value.length;if(onProgress&&contentLength>0){// Download phase = 0% – 80% of total progress\nonProgress({loaded:receivedLength*.8,total:contentLength,lengthComputable:true});}}// Concatenate chunks into single ArrayBuffer\nconst zipBuffer=new Uint8Array(receivedLength);let offset=0;for(const chunk of chunks){zipBuffer.set(chunk,offset);offset+=chunk.length;}// ── Phase 2: Extract ZIP ──\nconst JSZip=await _loadJSZip();const zip=await JSZip.loadAsync(zipBuffer.buffer);// Find all files and create blob URLs\nblobMap={};const fileEntries=[];zip.forEach((relativePath,zipEntry)=>{if(!zipEntry.dir){fileEntries.push({path:relativePath,file:zipEntry});}});// Detect main model file (priority: .glb > .gltf > .fbx)\nconst MODEL_EXTENSIONS=[\".glb\",\".gltf\",\".fbx\"];let mainEntry=null;for(const ext of MODEL_EXTENSIONS){const found=fileEntries.find(e=>e.path.toLowerCase().endsWith(ext));if(found){mainEntry={path:found.path,ext:ext.slice(1)}// remove dot\n;break;}}if(!mainEntry){throw new Error(\"ZIP does not contain a supported 3D model file (.glb, .gltf, .fbx).\");}mainFile=mainEntry.path;mainFormat=mainEntry.ext;// Extract all files to blob URLs\nfor(let i=0;i<fileEntries.length;i++){const{path,file}=fileEntries[i];const ext=path.toLowerCase().split(\".\").pop()||\"\";// Determine MIME type for blob\nlet mimeType=\"application/octet-stream\";if(ext===\"gltf\"||ext===\"json\")mimeType=\"application/json\";else if(ext===\"glb\")mimeType=\"model/gltf-binary\";else if(ext===\"bin\")mimeType=\"application/octet-stream\";else if(ext===\"png\")mimeType=\"image/png\";else if(ext===\"jpg\"||ext===\"jpeg\")mimeType=\"image/jpeg\";else if(ext===\"webp\")mimeType=\"image/webp\";else if(ext===\"hdr\")mimeType=\"application/octet-stream\";else if(ext===\"fbx\")mimeType=\"application/octet-stream\";const blob=await file.async(\"blob\");const typedBlob=new Blob([blob],{type:mimeType});const blobUrl=URL.createObjectURL(typedBlob);// Map by full path (as it appears in the ZIP)\nblobMap[path]=blobUrl;// Map by filename only (for resolving relative refs)\nconst filename=path.split(\"/\").pop();blobMap[filename]=blobUrl;// Map by lowercase variants\nblobMap[path.toLowerCase()]=blobUrl;blobMap[filename.toLowerCase()]=blobUrl;if(onProgress&&contentLength>0){// Extraction phase = 80% – 95%\nconst extractPct=.8+i/fileEntries.length*.15;onProgress({loaded:extractPct*contentLength,total:contentLength,lengthComputable:true});}}// Cache the blob map for reuse\n_zipBlobCache.set(zipUrl,{blobMap,mainFile,mainFormat});}// ── Phase 3: Load model from blob URLs ──\nconst mainBlobUrl=blobMap[mainFile]||blobMap[mainFile.toLowerCase()];if(!mainBlobUrl){throw new Error(`Could not find blob URL for main model file: ${mainFile}`);}// Create a custom LoadingManager that redirects resource requests to blob URLs\nconst manager=new THREE.LoadingManager;manager.setURLModifier(url=>{// If it's already a blob URL we created, pass through\nif(url.startsWith(\"blob:\"))return url;const normalized=url.replace(/\\\\/g,\"/\");// Try direct match\nif(blobMap[normalized])return blobMap[normalized];// Try filename only (handles absolute paths from FBX exports, etc.)\nconst filename=normalized.split(\"/\").pop()||\"\";if(blobMap[filename])return blobMap[filename];// Try lowercase\nif(blobMap[normalized.toLowerCase()])return blobMap[normalized.toLowerCase()];if(blobMap[filename.toLowerCase()])return blobMap[filename.toLowerCase()];// Try decoding URI components\ntry{const decoded=decodeURIComponent(filename);if(blobMap[decoded])return blobMap[decoded];if(blobMap[decoded.toLowerCase()])return blobMap[decoded.toLowerCase()];}catch{}return url// fallback to original URL\n;});// Load model with custom manager for resource resolution\nif(mainFormat===\"fbx\"){const FBXLoader=await _loadFBXLoader();const fbxLoader=new FBXLoader(manager);fbxLoader.load(mainBlobUrl,obj=>onLoaded(obj,obj.animations||[]),undefined,err=>{if(onError)onError(err);});}else{const gltfLoader=new GLTFLoader(manager);const draco=new DRACOLoader;draco.setDecoderPath(\"https://www.gstatic.com/draco/versioned/decoders/1.5.7/\");gltfLoader.setDRACOLoader(draco);gltfLoader.load(mainBlobUrl,gltf=>onLoaded(gltf.scene,gltf.animations),undefined,err=>{if(onError)onError(err);});}}catch(err){console.error(\"[ZIP] Failed to load model from ZIP:\",err);if(onError)onError(err);}}export function disposeSubScene(st,ss){if(ss.group){st.scene.remove(ss.group);if(ss._ownsResources){_disposeModelFull(ss.group);}else{// Materials only — geometries shared with _modelCache\n_disposeMaterialsOnly(ss.group);}}ss._animationWarmupDone=false;if(ss.mixer){_clearAnimationOnceCompleteListener(ss,ss.mixer);ss.mixer.stopAllAction();}}export function _cleanupSkinnedScene(object){if(!_hasSkinnedMesh(object))return;const skinnedGeometries=new Set;object.traverse(child=>{if(child.isSkinnedMesh&&child.geometry){skinnedGeometries.add(child.geometry);}});object.traverse(child=>{if(!child.isMesh||child.isSkinnedMesh)return;// Hide regular Mesh that shares geometry with a SkinnedMesh (bind-pose duplicate)\nif(child.geometry&&skinnedGeometries.has(child.geometry)){child.visible=false;return;}// Hide Mesh parented under a Bone (custom bone shape / bone helper)\nlet p=child.parent;while(p){if(p.isBone){child.visible=false;return;}p=p.parent;}// Hide very small helper meshes (bone markers)\nif(child.geometry){if(!child.geometry.boundingBox)child.geometry.computeBoundingBox();const bb=child.geometry.boundingBox;if(bb){const sz=bb.getSize(_tmpVec3A);if(Math.max(sz.x,sz.y,sz.z)<.001){child.visible=false;return;}}}});}export function _cloneSceneWithMaterials(source){const clone=_hasSkinnedMesh(source)?SkeletonUtils.clone(source):source.clone(true);clone.traverse(child=>{if(child.isMesh&&child.material){if(Array.isArray(child.material)){child.material=child.material.map(m=>m.clone());}else{child.material=child.material.clone();}}});return clone;}export function _cloneCachedModel(cached){return{scene:_cloneSceneWithMaterials(cached.scene),animations:cached.animations.map(clip=>clip.clone())};}export const cloneCachedModel=_cloneCachedModel;export function _disposeMaterialsOnly(group){group.traverse(c=>{if(c.isMesh){// Dispose skeleton for SkinnedMesh (bone matrices texture)\nif(c.isSkinnedMesh&&c.skeleton){c.skeleton.dispose();}(Array.isArray(c.material)?c.material:[c.material]).forEach(m=>m.dispose?.());_origMaterialBackups.delete(c.uuid);}});}export function _disposeModelFull(group){if(!group)return;group.traverse(c=>{if(c.geometry){c.geometry.dispose();}if(c.material){const mats=Array.isArray(c.material)?c.material:[c.material];for(const m of mats){if(!m)continue;// Dispose all texture properties\nfor(const key in m){const val=m[key];if(val&&val.isTexture)val.dispose();}// Dispose uniforms if ShaderMaterial\nif(m.uniforms){for(const u in m.uniforms){const uv=m.uniforms[u].value;if(uv&&uv.isTexture)uv.dispose();}}m.dispose();}}if(c.isSkinnedMesh&&c.skeleton){c.skeleton.dispose();}if(c.isLight&&c.shadow?.map){c.shadow.map.dispose();}if(c.uuid)_origMaterialBackups.delete(c.uuid);});}export function _loadModelDirect(url,format,onLoaded,onProgress,onError){if(format===\"zip\"){_loadFromZip(url,(object,animations)=>{_cleanupSkinnedScene(object);const safeAnimations=_sanitizeAnimationClipsForObject(object,animations||[]);if(!_modelCache.has(url)){_modelCache.set(url,{scene:_cloneSceneWithMaterials(object),animations:safeAnimations.map(c=>c.clone())});}onLoaded(object,safeAnimations);},onProgress,onError);return;}if(format===\"fbx\"){getSharedFBXLoader().then(loader=>{loader.load(url,obj=>{const animations=obj.animations||[];_cleanupSkinnedScene(obj);const safeAnimations=_sanitizeAnimationClipsForObject(obj,animations);if(!_modelCache.has(url)){_modelCache.set(url,{scene:_cloneSceneWithMaterials(obj),animations:safeAnimations.map(c=>c.clone())});}onLoaded(obj,safeAnimations);},onProgress,onError);}).catch(err=>{if(onError)onError(err);});return;}getSharedGLTFLoader().load(url,g=>{_cleanupSkinnedScene(g.scene);const safeAnimations=_sanitizeAnimationClipsForObject(g.scene,g.animations||[]);if(!_modelCache.has(url)){_modelCache.set(url,{scene:_cloneSceneWithMaterials(g.scene),animations:safeAnimations.map(c=>c.clone())});}onLoaded(g.scene,safeAnimations);},onProgress,onError);}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_loadModelDirect\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getSharedTextureLoader\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getSharedFBXLoader\":{\"type\":\"function\",\"isAsync\":true,\"annotations\":{\"framerContractVersion\":\"1\"}},\"getSharedGLTFLoader\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cloneCachedModel\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_cleanupSkinnedScene\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_disposeModelFull\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_cloneCachedModel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"disposeSubScene\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_cloneSceneWithMaterials\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_disposeMaterialsOnly\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_loadFromZip\":{\"type\":\"function\",\"isAsync\":true,\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 11. MATERIAL SYSTEM\nimport{THREE}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{MATERIAL_PRESETS}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{_progressivePlaceholderColor,_origMaterialBackups}from\"https://framerusercontent.com/modules/e3Gn61f7n8O6N477csEc/XQABUbxjpsQJSmz595Po/state.js\";import{NOISE_GLSL}from\"https://framerusercontent.com/modules/IdGzsHdzJFZjoerrm1R6/ZDt4dFJIJ9EMLZbVIXUQ/postprocessing.js\";import{parseColor}from\"https://framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js\";import{_getOptimizedAnisotropy}from\"https://framerusercontent.com/modules/VBWlX7Xj9c0TDGr87Yag/aMS7pZCDBphxkvSKFGKw/renderMetrics.js\";import{getSharedTextureLoader}from\"https://framerusercontent.com/modules/ZJHKxOkDkbAZkHcbiSxh/dUmMyRmOORWdCMBkW5w2/modelLoading.js\";let _particleTexture=null;let _toonGradientCache=null;let _sketchHatchTexture=null;export const _progressiveOrigMaterials=new Map;export function getParticleTexture(){if(_particleTexture)return _particleTexture;const size=64;const canvas=document.createElement(\"canvas\");canvas.width=size;canvas.height=size;const ctx=canvas.getContext(\"2d\",{willReadFrequently:true});const gradient=ctx.createRadialGradient(size/2,size/2,0,size/2,size/2,size/2);gradient.addColorStop(0,\"rgba(255,255,255,1)\");gradient.addColorStop(.3,\"rgba(255,255,255,0.8)\");gradient.addColorStop(.7,\"rgba(255,255,255,0.3)\");gradient.addColorStop(1,\"rgba(255,255,255,0)\");ctx.fillStyle=gradient;ctx.fillRect(0,0,size,size);_particleTexture=new THREE.CanvasTexture(canvas);return _particleTexture;}export function createDissolveParticles(model,cfg){const maxParticles=cfg.dissolveParticleMaxCount||8e3;const initPositions=sampleModelPositions(model,maxParticles);const count=initPositions.length/3;const currentPos=new Float32Array(initPositions);const velocity=new Float32Array(count*3);const maxOffset=new Float32Array(count);const dist=new Float32Array(count);const angle=new Float32Array(count);for(let i=0;i<count;i++){maxOffset[i]=Math.random()*5.5+1.5;velocity[i*3]=Math.random()*.5+.5;velocity[i*3+1]=Math.random()*.5+.5;velocity[i*3+2]=Math.random()*.1;dist[i]=.001;angle[i]=Math.random()*Math.PI*2;}const geo=new THREE.BufferGeometry;geo.setAttribute(\"position\",new THREE.BufferAttribute(new Float32Array(initPositions),3));geo.setAttribute(\"aCurrentPos\",new THREE.BufferAttribute(currentPos,3));geo.setAttribute(\"aDist\",new THREE.BufferAttribute(dist,1));geo.setAttribute(\"aAngle\",new THREE.BufferAttribute(angle,1));const particleTex=getParticleTexture();const mat=new THREE.ShaderMaterial({transparent:true,blending:THREE.AdditiveBlending,depthWrite:false,uniforms:{uTexture:{value:particleTex},uPixelDensity:{value:typeof window!==\"undefined\"?window.devicePixelRatio:1},uProgress:{value:0},uEdge:{value:cfg.dissolveEdgeWidth||.8},uAmp:{value:cfg.dissolveAmplitude||16},uFreq:{value:cfg.dissolveNoiseScale||.25},uBaseSize:{value:cfg.dissolveParticleBaseSize||80},uColor:{value:parseColor(cfg.dissolveParticleColor||cfg.dissolveEmissiveColor||\"#4d9bff\")}},vertexShader:`\n${NOISE_GLSL}\n\nuniform float uPixelDensity;\nuniform float uBaseSize;\nuniform float uFreq;\nuniform float uAmp;\nuniform float uEdge;\nuniform float uProgress;\n\nvarying float vNoise;\nvarying float vAngle;\n\nattribute vec3 aCurrentPos;\nattribute float aDist;\nattribute float aAngle;\n\nvoid main() {\n    vec3 pos = position;\n    float noise = snoise(pos * uFreq) * uAmp;\n    vNoise = noise;\n    vAngle = aAngle;\n\n    if (vNoise > uProgress - 2.0 && vNoise < uProgress + uEdge + 2.0) {\n        pos = aCurrentPos;\n    }\n\n    vec4 modelPosition = modelMatrix * vec4(pos, 1.0);\n    vec4 viewPosition = viewMatrix * modelPosition;\n    vec4 projectedPosition = projectionMatrix * viewPosition;\n    gl_Position = projectedPosition;\n\n    float size = uBaseSize * uPixelDensity;\n    size = size / (aDist + 1.0);\n    gl_PointSize = size / -viewPosition.z;\n}\n`,fragmentShader:`\nuniform vec3 uColor;\nuniform float uEdge;\nuniform float uProgress;\nuniform sampler2D uTexture;\n\nvarying float vNoise;\nvarying float vAngle;\n\nvoid main() {\n    if (vNoise < uProgress) discard;\n    if (vNoise > uProgress + uEdge) discard;\n\n    vec2 coord = gl_PointCoord - 0.5;\n    coord = coord * mat2(cos(vAngle), sin(vAngle), -sin(vAngle), cos(vAngle));\n    coord = coord + 0.5;\n\n    vec4 tex = texture2D(uTexture, coord);\n    gl_FragColor = vec4(uColor * tex.rgb, tex.a);\n}\n`});const points=new THREE.Points(geo,mat);points.frustumCulled=false;return{points,geo,mat,state:{count,initPositions:new Float32Array(initPositions),currentPos,velocity,maxOffset,dist,angle,speed:cfg.dissolveParticleSpeed||.02,waveAmp:cfg.dissolveParticleWaveAmp||0,velFactor:{x:cfg.dissolveParticleVelX||2.5,y:cfg.dissolveParticleVelY||2}}};}export function updateDissolveParticles(pState){const{count,initPositions,currentPos,velocity,maxOffset,dist,angle,speed,waveAmp,velFactor}=pState;for(let i=0;i<count;i++){const x=i*3,y=i*3+1,z=i*3+2;let vx=velocity[x]*velFactor.x;let vy=velocity[y]*velFactor.y;let vz=velocity[z];if(waveAmp>0){const px=currentPos[x],py=currentPos[y];vx+=(Math.sin(py*2)*.8+Math.sin(py*5)*.2)*waveAmp;vy+=(Math.sin(px*2)*.6+Math.sin(px*1)*.9)*waveAmp;}vx*=Math.abs(speed);vy*=Math.abs(speed);vz*=Math.abs(speed);currentPos[x]+=vx;currentPos[y]+=vy;currentPos[z]+=vz;const dx=currentPos[x]-initPositions[x];const dy=currentPos[y]-initPositions[y];const dz=currentPos[z]-initPositions[z];const dSq=dx*dx+dy*dy+dz*dz;dist[i]=Math.sqrt(dSq);angle[i]+=.01;if(dSq>maxOffset[i]*maxOffset[i]){currentPos[x]=initPositions[x];currentPos[y]=initPositions[y];currentPos[z]=initPositions[z];}}}export function syncParticleAttributes(pGeo,pState){const cpAttr=pGeo.getAttribute(\"aCurrentPos\");if(cpAttr){cpAttr.array=pState.currentPos;cpAttr.needsUpdate=true;}const dAttr=pGeo.getAttribute(\"aDist\");if(dAttr){dAttr.array=pState.dist;dAttr.needsUpdate=true;}const aAttr=pGeo.getAttribute(\"aAngle\");if(aAttr){aAttr.array=pState.angle;aAttr.needsUpdate=true;}}export function disposeDissolveParticles(p){if(!p)return;p.geo?.dispose();p.mat?.dispose();if(p.points?.parent)p.points.parent.remove(p.points);}export function mapDissolveProgress(t,amp,edge){const range=(amp||16)+(edge||.8);return-range+t*2*range;}export function getToonGradientMap(steps){if(_toonGradientCache&&_toonGradientCache._steps===steps)return _toonGradientCache;const size=Math.max(steps,2);const data=new Uint8Array(size);for(let i=0;i<size;i++){data[i]=Math.round(i/(size-1)*255);}const tex=new THREE.DataTexture(data,size,1,THREE.RedFormat);tex.minFilter=THREE.NearestFilter;tex.magFilter=THREE.NearestFilter;tex.needsUpdate=true;tex._steps=steps;_toonGradientCache=tex;return tex;}export function getSketchHatchTexture(){if(_sketchHatchTexture)return _sketchHatchTexture;const size=256;const canvas=document.createElement(\"canvas\");canvas.width=size;canvas.height=size;const ctx=canvas.getContext(\"2d\",{willReadFrequently:false});if(!ctx)return null;ctx.fillStyle=\"#f3f3ef\";ctx.fillRect(0,0,size,size);ctx.strokeStyle=\"rgba(0,0,0,0.42)\";ctx.lineWidth=3;for(let x=-size;x<size*2;x+=12){ctx.beginPath();ctx.moveTo(x,size);ctx.lineTo(x+size,0);ctx.stroke();}const tex=new THREE.CanvasTexture(canvas);tex.wrapS=THREE.RepeatWrapping;tex.wrapT=THREE.RepeatWrapping;tex.repeat.set(2,2);tex.colorSpace=THREE.SRGBColorSpace;tex.needsUpdate=true;_sketchHatchTexture=tex;return tex;}export function _isMeshOwnedByBone(mesh){let p=mesh?.parent;while(p){if(p.isBone||p.type===\"Bone\")return true;p=p.parent;}return false;}export function _cloneAsGlassPhysical(old){if(old.isMeshPhysicalMaterial)return old.clone();const pm=new THREE.MeshPhysicalMaterial;const scalarKeys=[\"color\",\"emissive\",\"metalness\",\"roughness\",\"opacity\",\"alphaTest\",\"side\",\"transmission\",\"thickness\",\"ior\",\"transparent\",\"depthWrite\",\"attenuationColor\",\"attenuationDistance\",\"envMapIntensity\",\"emissiveIntensity\",\"clearcoat\",\"clearcoatRoughness\",\"specularIntensity\",\"specularColor\"];for(const k of scalarKeys){if(old[k]!==undefined)pm[k]=old[k]?.clone?old[k].clone():old[k];}const mapKeys=[\"map\",\"normalMap\",\"aoMap\",\"emissiveMap\",\"alphaMap\",\"transmissionMap\",\"thicknessMap\",\"roughnessMap\",\"metalnessMap\",\"clearcoatMap\",\"clearcoatRoughnessMap\",\"clearcoatNormalMap\",\"envMap\"];for(const k of mapKeys){if(old[k])pm[k]=old[k];}if(old.normalScale)pm.normalScale=old.normalScale.clone();return pm;}export function _stylizeGlassForToon(glassMat){// Cleaner, more stylized glass: lower roughness, boost env reflections\nglassMat.roughness=Math.min(glassMat.roughness,.15);glassMat.metalness=Math.max(glassMat.metalness,0);glassMat.envMapIntensity=Math.max(glassMat.envMapIntensity??1,.8);// Ensure transmission pipeline is correct (no alpha blending conflict)\nif(glassMat.transmission>0){glassMat.transparent=false;glassMat.depthWrite=true;glassMat.opacity=1;}glassMat.needsUpdate=true;}export function applyToonPreset(model,preset){if(!model)return;const gradMap=getToonGradientMap(preset.steps||4);model.traverse(child=>{if(!_isMaterialPresetTarget(child))return;const mats=Array.isArray(child.material)?child.material:[child.material];for(let i=0;i<mats.length;i++){const old=mats[i];// ── Glass: keep as MeshPhysicalMaterial with toon-style tweaks ──\nif(_isGlassMaterial(old)){const glassMat=_cloneAsGlassPhysical(old);_stylizeGlassForToon(glassMat);if(Array.isArray(child.material))child.material[i]=glassMat;else child.material=glassMat;continue;}// ── Standard opaque: convert to MeshToonMaterial ──\nconst toonMat=new THREE.MeshToonMaterial({color:old.color?old.color.clone():new THREE.Color(16777215),gradientMap:gradMap,side:old.side??THREE.FrontSide});// Preserve texture maps from original material\nif(old.map)toonMat.map=old.map;if(old.normalMap){toonMat.normalMap=old.normalMap;toonMat.normalScale=old.normalScale?.clone()??new THREE.Vector2(1,1);}if(old.aoMap){toonMat.aoMap=old.aoMap;toonMat.aoMapIntensity=old.aoMapIntensity??1;}if(old.emissive)toonMat.emissive=old.emissive.clone();if(old.emissiveMap)toonMat.emissiveMap=old.emissiveMap;if(old.emissiveIntensity!=null)toonMat.emissiveIntensity=old.emissiveIntensity;if(old.alphaMap)toonMat.alphaMap=old.alphaMap;if(old.transparent)toonMat.transparent=old.transparent;if(old.opacity!=null)toonMat.opacity=old.opacity;if(old.alphaTest)toonMat.alphaTest=old.alphaTest;toonMat.needsUpdate=true;if(Array.isArray(child.material))child.material[i]=toonMat;else child.material=toonMat;}});}export function applySketchPreset(model,preset){if(!model)return;const gradMap=getToonGradientMap(preset.steps||3);const hatchMap=getSketchHatchTexture();const baseColor=parseColor(preset.color||\"#f4f2ec\");const outlineColor=parseColor(preset.outlineColor||\"#050505\");const thickness=preset.outlineThickness??.045;const outlineMeshesToAdd=[];removeOutlineMeshes(model);model.traverse(child=>{if(!_isMaterialPresetTarget(child))return;const mats=Array.isArray(child.material)?child.material:[child.material];for(let i=0;i<mats.length;i++){const old=mats[i];if(_isGlassMaterial(old)){const glassMat=_cloneAsGlassPhysical(old);glassMat.color=baseColor.clone();_stylizeGlassForToon(glassMat);if(Array.isArray(child.material))child.material[i]=glassMat;else child.material=glassMat;continue;}const sketchMat=new THREE.MeshToonMaterial({color:baseColor,gradientMap:gradMap,map:hatchMap,side:old.side??THREE.FrontSide});if(old.normalMap){sketchMat.normalMap=old.normalMap;sketchMat.normalScale=old.normalScale?.clone()??new THREE.Vector2(1,1);}if(old.aoMap){sketchMat.aoMap=old.aoMap;sketchMat.aoMapIntensity=old.aoMapIntensity??1;}sketchMat.needsUpdate=true;if(Array.isArray(child.material))child.material[i]=sketchMat;else child.material=sketchMat;}const outlineMat=new THREE.MeshBasicMaterial({color:outlineColor,side:THREE.BackSide});const outlineMesh=_createMaterialPresetOutlineMesh(child,outlineMat,thickness);if(outlineMesh){outlineMeshesToAdd.push({parent:child.parent,mesh:outlineMesh});}else{outlineMat.dispose();}});for(const entry of outlineMeshesToAdd){if(entry.parent)entry.parent.add(entry.mesh);}}export function applyOutlinePreset(model,preset){if(!model)return;const baseColor=parseColor(preset.color||\"#e8e0d8\");const emissiveColor=parseColor(preset.emissiveColor||\"#ffffff\");const emissiveIntensity=preset.emissiveIntensity??0;const outlineColor=parseColor(preset.outlineColor||\"#2a2a2a\");const thickness=preset.outlineThickness??.06;// First, remove any existing outline meshes from previous applications\nremoveOutlineMeshes(model);// Apply flat/toon base material (glass preserved) + collect outline targets\nconst outlineMeshesToAdd=[];model.traverse(child=>{if(!_isMaterialPresetTarget(child))return;const mats=Array.isArray(child.material)?child.material:[child.material];for(let i=0;i<mats.length;i++){const old=mats[i];if(_isGlassMaterial(old)){// ── Glass: preserve physical material with stylized glass look ──\nconst glassMat=_cloneAsGlassPhysical(old);_stylizeGlassForToon(glassMat);// Slightly more reflective for anime style\nglassMat.roughness=Math.min(glassMat.roughness,.1);if(Array.isArray(child.material))child.material[i]=glassMat;else child.material=glassMat;}else{// ── Standard opaque: flat toon replacement ──\nconst flatMat=new THREE.MeshToonMaterial({color:baseColor,emissive:emissiveColor,emissiveIntensity,gradientMap:getToonGradientMap(3),side:THREE.FrontSide});if(old.map)flatMat.map=old.map;flatMat.needsUpdate=true;if(Array.isArray(child.material))child.material[i]=flatMat;else child.material=flatMat;}}// Create outline mesh (inverted hull) — always, including around glass meshes\nif(child.geometry){const outlineMat=new THREE.MeshBasicMaterial({color:outlineColor,side:THREE.BackSide});const outlineMesh=_createMaterialPresetOutlineMesh(child,outlineMat,thickness);if(outlineMesh){outlineMeshesToAdd.push({parent:child.parent,mesh:outlineMesh});}else{outlineMat.dispose();}}});// Add outline meshes after traversal to avoid modifying tree during traverse\nfor(const entry of outlineMeshesToAdd){if(entry.parent)entry.parent.add(entry.mesh);}}export function removeOutlineMeshes(model){if(!model)return;const toRemove=[];model.traverse(child=>{if(child.__isOutlineMesh)toRemove.push(child);});for(const m of toRemove){if(m.parent)m.parent.remove(m);if(m.__hasClonedGeometry)m.geometry?.dispose();m.geometry=null// don't dispose — shared with original\n;m.material?.dispose();}}export function isSpecialPreset(presetKey){const p=MATERIAL_PRESETS[presetKey];return p&&p._type;}export function _storeAndReplacePlaceholder(model){_progressiveOrigMaterials.clear();const allTextures=[];model.traverse(child=>{if(!child.isMesh)return;const origMats=Array.isArray(child.material)?child.material:[child.material];const textures=[];// Collect all textures from original materials\nconst texKeys=[\"map\",\"normalMap\",\"roughnessMap\",\"metalnessMap\",\"aoMap\",\"emissiveMap\",\"bumpMap\",\"displacementMap\",\"alphaMap\",\"lightMap\",\"envMap\",\"clearcoatMap\",\"clearcoatNormalMap\",\"clearcoatRoughnessMap\",\"sheenColorMap\",\"sheenRoughnessMap\",\"transmissionMap\",\"thicknessMap\",\"iridescenceMap\",\"iridescenceThicknessMap\",\"specularIntensityMap\",\"specularColorMap\"];for(const mat of origMats){for(const key of texKeys){if(mat[key]&&mat[key].isTexture){textures.push(mat[key]);}}}_progressiveOrigMaterials.set(child.uuid,{original:Array.isArray(child.material)?[...child.material]:child.material,textures});allTextures.push(...textures);// Replace with placeholder\nconst placeholder=_createPlaceholderMaterial();child.material=placeholder;});// Deduplicate textures\nreturn[...new Set(allTextures)];}export async function _preloadTexturesProgressive(renderer,textures,onProgress){if(!textures.length){onProgress?.(1);return;}let loaded=0;const total=textures.length;for(const tex of textures){try{// Force texture upload to GPU\nrenderer.initTexture(tex);// If image not yet decoded, wait for it\nif(tex.image&&tex.image instanceof HTMLImageElement&&!tex.image.complete){await new Promise(resolve=>{tex.image.onload=resolve;tex.image.onerror=resolve;// Fallback timeout\nsetTimeout(resolve,5e3);});renderer.initTexture(tex);}}catch(e){// Silently continue — texture may already be uploaded\n}loaded++;onProgress?.(loaded/total);}}export function clearFadeCache(model){if(!model)return;model.traverse(child=>{if(!child.isMesh)return;if(child.__isOutlineMesh)return;// Skip outline meshes\nconst mats=Array.isArray(child.material)?child.material:[child.material];mats.forEach(mat=>{if(!mat)return;// Restore to full brightness before clearing cache\nif(mat._fadeOrigColor){mat.color.copy(mat._fadeOrigColor);}if(mat._fadeOrigEmissive&&mat.emissive){mat.emissive.copy(mat._fadeOrigEmissive);}if(mat._fadeOrigEnvMapIntensity!==undefined){mat.envMapIntensity=mat._fadeOrigEnvMapIntensity;}// Now safe to delete cache\ndelete mat._fadeOrigColor;delete mat._fadeOrigEmissive;delete mat._fadeOrigEnvMapIntensity;});});}export function createDissolveMaterial(originalMaterial,dissolveConfig){const{progress,noiseScale,edgeWidth,emissiveColor,emissiveIntensity,amplitude}=dissolveConfig;const mat=originalMaterial.clone();// Store dissolve properties (readable before shader compiles)\nmat.userData.dissolveProgress=progress;mat.userData.noiseScale=noiseScale// frequency\n;mat.userData.amplitude=amplitude??16// noise multiplier\n;mat.userData.edgeWidth=edgeWidth;mat.userData.emissiveColor=parseColor(emissiveColor);mat.userData.emissiveIntensity=emissiveIntensity;mat.onBeforeCompile=shader=>{shader.uniforms.uProgress={value:mat.userData.dissolveProgress};shader.uniforms.uFreq={value:mat.userData.noiseScale};shader.uniforms.uAmp={value:mat.userData.amplitude};shader.uniforms.uEdge={value:mat.userData.edgeWidth};shader.uniforms.uEdgeColor={value:mat.userData.emissiveColor};shader.uniforms.uEdgeIntensity={value:mat.userData.emissiveIntensity};mat.userData.shaderUniforms=shader.uniforms;// ── Vertex: pass object-space position to fragment ──\nshader.vertexShader=shader.vertexShader.replace(\"#include <common>\",`#include <common>\nvarying vec3 vPos;`);shader.vertexShader=shader.vertexShader.replace(\"#include <begin_vertex>\",`#include <begin_vertex>\nvPos = position;`);// ── Fragment: inject noise, dissolve discard, edge glow ──\nshader.fragmentShader=shader.fragmentShader.replace(\"#include <common>\",`#include <common>\nvarying vec3 vPos;\n\nuniform float uProgress;\nuniform float uFreq;\nuniform float uAmp;\nuniform float uEdge;\nuniform vec3 uEdgeColor;\nuniform float uEdgeIntensity;\n\n${NOISE_GLSL}\n`);// Dissolve discard + edge coloring (after dithering, overwrite gl_FragColor)\nshader.fragmentShader=shader.fragmentShader.replace(\"#include <dithering_fragment>\",`#include <dithering_fragment>\n\n    float noise = snoise(vPos * uFreq) * uAmp;\n    if (noise < uProgress) discard;\n\n    float edgeEnd = uProgress + uEdge;\n    if (noise > uProgress && noise < edgeEnd) {\n        float edgeMix = 1.0 - smoothstep(uProgress, edgeEnd, noise);\n        vec3 glow = uEdgeColor * uEdgeIntensity * edgeMix;\n        gl_FragColor = vec4(gl_FragColor.rgb + glow, gl_FragColor.a);\n    }\n`);};mat.needsUpdate=true;return mat;}export function sampleModelPositions(model,maxCount){model.updateMatrixWorld(true)// Ensure matrices are current\n;const positions=[];model.traverse(child=>{if(!child.isMesh||child.__isOutlineMesh)return;const posAttr=child.geometry?.getAttribute(\"position\");if(!posAttr)return;const worldMat=child.matrixWorld.clone();const modelInverse=model.matrixWorld.clone().invert();const localMat=modelInverse.multiply(worldMat);const v=new THREE.Vector3;for(let i=0;i<posAttr.count;i++){v.set(posAttr.getX(i),posAttr.getY(i),posAttr.getZ(i));v.applyMatrix4(localMat);positions.push(v.x,v.y,v.z);}});const totalVerts=positions.length/3;if(totalVerts<=maxCount)return new Float32Array(positions);const stride=Math.ceil(totalVerts/maxCount);const sampled=[];for(let i=0;i<totalVerts;i+=stride){sampled.push(positions[i*3],positions[i*3+1],positions[i*3+2]);}return new Float32Array(sampled);}export function _startDissolveInForModel(st,cfg){if(!st?.model)return false;st.model.visible=true;st.dissolveActive=true;st.dissolveDirection=-1;st.dissolveProgress=1;st._dissolvePendingIn=false;st.model.traverse(child=>{if(!child.isMesh)return;st.dissolveOriginalMaterials.set(child.uuid,child.material);const dissolveMat=createDissolveMaterial(child.material,{progress:mapDissolveProgress(1,cfg.dissolveAmplitude,cfg.dissolveEdgeWidth),noiseScale:cfg.dissolveNoiseScale,amplitude:cfg.dissolveAmplitude,edgeWidth:cfg.dissolveEdgeWidth,emissiveColor:cfg.dissolveEmissiveColor,emissiveIntensity:cfg.dissolveEmissiveIntensity});st.dissolveMaterials.set(child.uuid,dissolveMat);child.material=dissolveMat;});if(cfg.dissolveParticlesEnabled){disposeDissolveParticles(st.dissolveParticles);st.dissolveParticles=createDissolveParticles(st.model,cfg);st.dissolveParticles.points.position.copy(st.model.position);st.dissolveParticles.points.rotation.copy(st.model.rotation);st.dissolveParticles.points.scale.copy(st.model.scale);st.scene.add(st.dissolveParticles.points);st.dissolveParticles.mat.uniforms.uProgress.value=mapDissolveProgress(1,cfg.dissolveAmplitude,cfg.dissolveEdgeWidth);}return true;}export function _isMaterialPresetTarget(child){if(!child?.isMesh)return false;if(child.__isOutlineMesh)return false;if(child.visible===false)return false;if(_isMeshOwnedByBone(child))return false;if(!child.geometry)return false;const posAttr=child.geometry.getAttribute?.(\"position\");return!posAttr||posAttr.count>3;}export function _createMaterialPresetOutlineMesh(child,outlineMat,thickness){const outlineGeo=child.geometry.clone();if(!outlineGeo.attributes.normal){outlineGeo.computeVertexNormals();}const posAttr=outlineGeo.attributes.position;const normAttr=outlineGeo.attributes.normal;if(posAttr&&normAttr){outlineGeo.computeBoundingSphere();const radius=outlineGeo.boundingSphere?outlineGeo.boundingSphere.radius:1;const offset=thickness*radius;for(let i=0;i<posAttr.count;i++){let x=posAttr.getX(i);let y=posAttr.getY(i);let z=posAttr.getZ(i);x+=normAttr.getX(i)*offset;y+=normAttr.getY(i)*offset;z+=normAttr.getZ(i)*offset;posAttr.setXYZ(i,x,y,z);}posAttr.needsUpdate=true;}let outlineMesh;if(child.isSkinnedMesh){outlineMesh=new THREE.SkinnedMesh(outlineGeo,outlineMat);outlineMesh.bind(child.skeleton,child.bindMatrix);}else{outlineMesh=new THREE.Mesh(outlineGeo,outlineMat);}outlineMesh.__isOutlineMesh=true;outlineMesh.__hasClonedGeometry=true;outlineMesh.castShadow=false;outlineMesh.receiveShadow=false;outlineMesh.frustumCulled=child.frustumCulled;outlineMesh.scale.copy(child.scale);outlineMesh.position.copy(child.position);outlineMesh.rotation.copy(child.rotation);outlineMesh.quaternion.copy(child.quaternion);if(child.morphTargetInfluences){outlineMesh.morphTargetInfluences=child.morphTargetInfluences;outlineMesh.morphTargetDictionary=child.morphTargetDictionary;}return outlineMesh;}export function _isGlassMaterial(mat){return mat.transmission&&mat.transmission>0||!!mat.transmissionMap;}export function loadImageAsSubScene(url,renderer,onLoaded,onError){getSharedTextureLoader().load(url,texture=>{texture.colorSpace=THREE.SRGBColorSpace;texture.needsUpdate=true;texture.anisotropy=_getOptimizedAnisotropy(renderer);const image=texture.image||{};const width=Math.max(1,image.width||1);const height=Math.max(1,image.height||1);const aspect=width/height;const planeWidth=aspect>=1?aspect:1;const planeHeight=aspect>=1?1:1/aspect;const geometry=new THREE.PlaneGeometry(planeWidth,planeHeight);const material=new THREE.MeshStandardMaterial({map:texture,transparent:true,alphaTest:.001,side:THREE.DoubleSide,roughness:1,metalness:0});const mesh=new THREE.Mesh(geometry,material);mesh.name=\"ImagePlane\";mesh.castShadow=false;mesh.receiveShadow=false;const group=new THREE.Group;group.add(mesh);onLoaded(group,[]);},undefined,onError);}export function _backupMaterial(mesh){if(_origMaterialBackups.has(mesh.uuid))return;const mats=Array.isArray(mesh.material)?mesh.material:[mesh.material];const clones=mats.map(m=>m.clone());_origMaterialBackups.set(mesh.uuid,clones);// FIX: Immediately assign the cloned materials to the mesh.\n// SkeletonUtils.clone() shares materials by default. This breaks the reference\n// so `applyMaterialOverride` only mutates THIS specific slot's material instance,\n// avoiding constant uniform uploads when slots share the same model.\nmesh.material=clones.length===1?clones[0]:clones;}export function _restoreMaterial(mesh){const clones=_origMaterialBackups.get(mesh.uuid);if(!clones)return;// Restore entire material objects (re-clone to avoid reference issues)\nconst restored=clones.map(m=>m.clone());mesh.material=restored.length===1?restored[0]:restored;}export function _createPlaceholderMaterial(){return new THREE.MeshStandardMaterial({color:_progressivePlaceholderColor,metalness:.1,roughness:.7,envMapIntensity:.5});}export function _restoreProgressiveMaterials(model){model.traverse(child=>{if(!child.isMesh)return;const stored=_progressiveOrigMaterials.get(child.uuid);if(!stored)return;// Dispose placeholder\nconst current=Array.isArray(child.material)?child.material:[child.material];for(const m of current){if(m!==stored.original&&!Array.isArray(stored.original))m.dispose?.();}// Restore original\nchild.material=stored.original;});_progressiveOrigMaterials.clear();}export function setModelFade(model,factor){if(!model)return;model.traverse(child=>{if(!child.isMesh)return;// Skip outline meshes — they use BackSide rendering;\n// darkening them separately would look wrong\nif(child.__isOutlineMesh)return;const mats=Array.isArray(child.material)?child.material:[child.material];mats.forEach(mat=>{if(!mat)return;// Cache original values on first call per material\nif(mat._fadeOrigColor===undefined){mat._fadeOrigColor=mat.color?mat.color.clone():new THREE.Color(1,1,1);mat._fadeOrigEmissive=mat.emissive?mat.emissive.clone():null;mat._fadeOrigEnvMapIntensity=mat.envMapIntensity??1;}// Darken color & emissive by factor (0 = fully black, 1 = original)\nmat.color.copy(mat._fadeOrigColor).multiplyScalar(factor);if(mat._fadeOrigEmissive&&mat.emissive){mat.emissive.copy(mat._fadeOrigEmissive).multiplyScalar(factor);}mat.envMapIntensity=mat._fadeOrigEnvMapIntensity*factor;// Cleanup cached originals when fully restored\nif(factor>=1){mat.color.copy(mat._fadeOrigColor);if(mat._fadeOrigEmissive&&mat.emissive){mat.emissive.copy(mat._fadeOrigEmissive);}mat.envMapIntensity=mat._fadeOrigEnvMapIntensity;delete mat._fadeOrigColor;delete mat._fadeOrigEmissive;delete mat._fadeOrigEnvMapIntensity;}});});}export function applyMaterialOverride(model,cfg){if(!model)return;let preset=cfg.materialPreset!==\"none\"?MATERIAL_PRESETS[cfg.materialPreset]:null;if(preset&&cfg.materialPreset===\"animeLine\"){preset={...preset,outlineThickness:cfg.animeLineThickness??.06,outlineColor:cfg.animeLineColor??\"#050505\",emissiveColor:cfg.animeLineEmissiveColor??\"#ffffff\",emissiveIntensity:cfg.animeLineEmissiveIntensity??.08};}else if(preset&&cfg.materialPreset===\"sketchStyle\"){preset={...preset,color:cfg.sketchBaseColor??\"#f4f2ec\",outlineThickness:cfg.sketchLineThickness??.045,outlineColor:cfg.sketchLineColor??\"#050505\",steps:cfg.sketchSteps??3};}// Backup original materials BEFORE any override (anime or PBR)\nconst useOverride=cfg.overrideMaterial||preset;if(useOverride){model.traverse(child=>{if(child.isMesh)_backupMaterial(child);});}// ── Special presets (toon / outline) — handled separately ──\nif(preset&&preset._type){// Clean up outline meshes if switching away from outline\nif(preset._type!==\"outline\")removeOutlineMeshes(model);if(preset._type===\"toon\"){applyToonPreset(model,preset);return;}if(preset._type===\"sketch\"){applySketchPreset(model,preset);return;}if(preset._type===\"outline\"){applyOutlinePreset(model,preset);return;}}// When switching FROM a special preset to normal/none, clean up outline meshes\nremoveOutlineMeshes(model);if(!useOverride){// Restore original materials when no override is active\nmodel.traverse(child=>{if(!child.isMesh)return;_restoreMaterial(child);});return;}model.traverse(child=>{if(!child.isMesh)return;const mats=Array.isArray(child.material)?child.material:[child.material];for(let i=0;i<mats.length;i++){let mat=mats[i];// Convert to MeshPhysicalMaterial — preserve ALL texture maps & properties\nif(!mat.isMeshPhysicalMaterial){const oldMat=mat;mat=new THREE.MeshPhysicalMaterial;// ── Copy ALL PBR texture maps ──\nconst mapKeys=[\"map\",\"normalMap\",\"aoMap\",\"roughnessMap\",\"metalnessMap\",\"emissiveMap\",\"bumpMap\",\"displacementMap\",\"alphaMap\",\"lightMap\",\"envMap\",\"clearcoatMap\",\"clearcoatRoughnessMap\",\"clearcoatNormalMap\",\"transmissionMap\",\"thicknessMap\",\"sheenColorMap\",\"sheenRoughnessMap\",\"iridescenceMap\",\"iridescenceThicknessMap\",\"specularIntensityMap\",\"specularColorMap\"];for(const k of mapKeys){if(oldMat[k])mat[k]=oldMat[k];}// ── Copy ALL scalar/vector properties ──\nconst scalarKeys=[\"color\",\"emissive\",\"metalness\",\"roughness\",\"opacity\",\"alphaTest\",\"transparent\",\"side\",\"flatShading\",\"wireframe\",\"vertexColors\",\"normalScale\",\"bumpScale\",\"displacementScale\",\"displacementBias\",\"aoMapIntensity\",\"lightMapIntensity\",\"envMapIntensity\",\"emissiveIntensity\",\"reflectivity\",// Glass / Physical properties — preserve originals before override\n\"transmission\",\"thickness\",\"ior\",\"clearcoat\",\"clearcoatRoughness\",\"iridescence\",\"iridescenceIOR\",\"sheen\",\"sheenRoughness\",\"sheenColor\",\"specularIntensity\",\"specularColor\",\"attenuationColor\",\"attenuationDistance\",\"depthWrite\"];for(const k of scalarKeys){if(oldMat[k]!==undefined){mat[k]=oldMat[k]?.clone?oldMat[k].clone():oldMat[k];}}if(Array.isArray(child.material))child.material[i]=mat;else child.material=mat;}// ── Apply overrides ──\n// Three.js: final pixel value = textureMap × scalarValue\n// e.g. roughness=1.0 + roughnessMap → use map as-is\n// roughness=0.5 + roughnessMap → halve all map values\nconst p=preset||{};const isManual=cfg.overrideMaterial;mat.metalness=isManual?cfg.metalness:p.metalness??mat.metalness;mat.roughness=isManual?cfg.roughness:p.roughness??mat.roughness;mat.clearcoat=isManual?cfg.clearcoat:p.clearcoat??mat.clearcoat??0;mat.clearcoatRoughness=isManual?cfg.clearcoatRoughness:p.clearcoatRoughness??mat.clearcoatRoughness??0;const trans=isManual?cfg.transmission:p.transmission??0;mat.transmission=trans;mat.thickness=isManual?cfg.thickness:p.thickness??0;mat.ior=isManual?cfg.ior:p.ior??1.5;if(trans>0){// CRITICAL: transmission uses its own render pipeline (transmission buffer).\n// Setting transparent=true enables old-school alpha blending which CONFLICTS\n// with the transmission buffer → glass renders black/incorrect.\n// Three.js docs: \"When using transmission, transparent should be false\"\nmat.transparent=false;mat.depthWrite=true;mat.opacity=1;}else{// Non-transmissive: apply opacity override (alpha blending)\nconst op=isManual?cfg.opacity:p.opacity??mat.opacity??1;mat.opacity=op;if(op<1){mat.transparent=true;mat.depthWrite=false;}}mat.iridescence=isManual?cfg.iridescence:p.iridescence??0;mat.iridescenceIOR=isManual?cfg.iridescenceIOR:p.iridescenceIOR??1.3;const sheenVal=isManual?cfg.sheen:p.sheen??0;mat.sheen=sheenVal;mat.sheenRoughness=isManual?cfg.sheenRoughness:p.sheenRoughness??.3;if(sheenVal>0)mat.sheenColor=parseColor(isManual?cfg.sheenColor:p.sheenColor??\"#ffffff\");mat.envMapIntensity=isManual?cfg.envMapIntensity:p.envMapIntensity??1;// Color: only override if preset has explicit color\nif(preset&&p.color)mat.color=parseColor(p.color);const emInt=isManual?cfg.emissiveIntensity:p.emissiveIntensity??0;mat.emissiveIntensity=emInt;if(emInt>0)mat.emissive=parseColor(isManual?cfg.emissiveColor:p.emissiveColor??\"#000000\");mat.reflectivity=isManual?cfg.reflectivity:p.reflectivity??.5;// Wireframe mode\nmat.wireframe=isManual?cfg.wireframe??false:p.wireframe??false;mat.needsUpdate=true;}});}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"loadImageAsSubScene\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_restoreMaterial\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getToonGradientMap\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_createMaterialPresetOutlineMesh\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"disposeDissolveParticles\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mapDissolveProgress\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_isMaterialPresetTarget\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sampleModelPositions\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"applyMaterialOverride\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createDissolveMaterial\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createDissolveParticles\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_backupMaterial\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_preloadTexturesProgressive\":{\"type\":\"function\",\"isAsync\":true,\"annotations\":{\"framerContractVersion\":\"1\"}},\"updateDissolveParticles\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_createPlaceholderMaterial\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_restoreProgressiveMaterials\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"applyOutlinePreset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_startDissolveInForModel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"applySketchPreset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"syncParticleAttributes\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getSketchHatchTexture\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_storeAndReplacePlaceholder\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"removeOutlineMeshes\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_isGlassMaterial\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_cloneAsGlassPhysical\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isSpecialPreset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_stylizeGlassForToon\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"applyToonPreset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getParticleTexture\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clearFadeCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_isMeshOwnedByBone\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_progressiveOrigMaterials\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setModelFade\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./materialSystem.map","// @ts-nocheck\n// #region 13. LIGHTING & ENVIRONMENT\nimport{THREE}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{parseColor}from\"https://framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js\";export function applyLightingChanges(st,cfg){const needsShadowMap=cfg.enableShadows||cfg.extraLights?.some(el=>el?.enabled&&el?.castShadow);st._renderer.shadowMap.enabled=!!needsShadowMap;st.ambientLight.intensity=cfg.ambientLightIntensity;st.dirLight.intensity=cfg.directionalLightIntensity;st.cachedDirColor=parseColor(cfg.directionalLightColor);st.dirLight.color=st.cachedDirColor;st.dirLight.position.set(cfg.dirLightPosX??5,cfg.dirLightPosY??10,cfg.dirLightPosZ??7);st.dirLight.castShadow=cfg.enableShadows;// Shadow map size — only recreate if changed\nconst smSize=cfg.shadowMapSize??1024;if(st.dirLight.shadow.mapSize.x!==smSize){st.dirLight.shadow.mapSize.set(smSize,smSize);if(st.dirLight.shadow.map){st.dirLight.shadow.map.dispose();st.dirLight.shadow.map=null// forces Three.js to recreate\n;}}st.dirLight.shadow.bias=cfg.shadowBias??-1e-4;st.dirLight.shadow.normalBias=cfg.shadowNormalBias??.02;st.ground.visible=cfg.enableShadows;// ── Extra Lights (Point / Spot) ──\n_syncExtraLights(st,cfg);}export function _syncExtraLights(st,cfg){const scene=st.scene;const lights=st.extraLightObjects;const configs=cfg.extraLights??[];// Remove excess lights\nwhile(lights.length>configs.length){const light=lights.pop();scene.remove(light);if(light.target&&light.isSpotLight)scene.remove(light.target);if(light.shadow?.map)light.shadow.map.dispose();light.dispose();}for(let i=0;i<configs.length;i++){const lc=configs[i];if(!lc)continue;const type=lc.lightType??\"point\";const enabled=lc.enabled??true;const color=parseColor(lc.color??\"#ffffff\");const intensity=lc.intensity??1;const posX=lc.posX??0;const posY=lc.posY??3;const posZ=lc.posZ??0;const distance=lc.distance??0;const decay=lc.decay??2;const castShadow=lc.castShadow??false;let light=lights[i];// If type changed, remove old and create new\nconst needsRecreate=light&&(type===\"point\"&&!light.isPointLight||type===\"spot\"&&!light.isSpotLight);if(needsRecreate){scene.remove(light);if(light.target&&light.isSpotLight)scene.remove(light.target);if(light.shadow?.map)light.shadow.map.dispose();light.dispose();light=null;lights[i]=null;}if(!light){// Create new light\nif(type===\"spot\"){light=new THREE.SpotLight(color,intensity);light.angle=(lc.angle??30)*(Math.PI/180);light.penumbra=lc.penumbra??.5;scene.add(light.target);}else{light=new THREE.PointLight(color,intensity,distance,decay);}light.shadow.mapSize.set(1024,1024);light.shadow.bias=-1e-4;light.shadow.normalBias=.02;scene.add(light);lights[i]=light;}// Update properties\nlight.visible=enabled;light.color.copy(color);light.intensity=intensity;light.position.set(posX,posY,posZ);light.castShadow=castShadow&&enabled;if(light.isPointLight){light.distance=distance;light.decay=decay;}if(light.isSpotLight){light.distance=distance;light.decay=decay;light.angle=(lc.angle??30)*(Math.PI/180);light.penumbra=lc.penumbra??.5;const tx=lc.targetX??0;const ty=lc.targetY??0;const tz=lc.targetZ??0;light.target.position.set(tx,ty,tz);}}}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"applyLightingChanges\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_syncExtraLights\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 14. ENVIRONMENT UTILS\nimport{THREE,_loadHDRLoader}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{ENV_PRESETS,HDRI_PRESETS}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{hdriCache,hdriInFlight,proceduralEnvCache}from\"https://framerusercontent.com/modules/e3Gn61f7n8O6N477csEc/XQABUbxjpsQJSmz595Po/state.js\";import{parseColor}from\"https://framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js\";export function _markSharedHDRI(texture,url){if(!texture)return texture;texture.userData=texture.userData||{};texture.userData.__sharedHDRIUrl=url;return texture;}export function _isSharedHDRI(texture){return!!texture?.userData?.__sharedHDRIUrl;}export function loadHDRI(renderer,url,onDone){if(hdriCache.has(url)){const entry=hdriCache.get(url);entry.lastUsed=performance.now();onDone(entry.texture);return;}if(hdriInFlight.has(url)){hdriInFlight.get(url).push(onDone);return;}hdriInFlight.set(url,[onDone]);// OPTIMIZATION (Issue 3): Bypass synchronous PMREMGenerator.\n// Three.js >= r163 automatically processes equirectangular maps for scene.environment internally without freezing.\n_loadHDRLoader().then(HDRLoader=>{new HDRLoader().load(url,texture=>{texture.mapping=THREE.EquirectangularReflectionMapping;const envMap=_markSharedHDRI(texture,url);hdriCache.set(url,{texture:envMap,refs:0,lastUsed:performance.now()});const callbacks=hdriInFlight.get(url)||[];hdriInFlight.delete(url);callbacks.forEach(cb=>cb(envMap));},undefined,err=>{console.warn(\"HDRI load failed:\",url,err);const callbacks=hdriInFlight.get(url)||[];hdriInFlight.delete(url);callbacks.forEach(cb=>cb(null));});}).catch(err=>{console.warn(\"HDRI loader module failed to load:\",err);const callbacks=hdriInFlight.get(url)||[];hdriInFlight.delete(url);callbacks.forEach(cb=>cb(null));});}export function _retainHDRI(url,texture){if(!url||!texture)return;const entry=hdriCache.get(url)||{texture,refs:0,lastUsed:performance.now()};entry.texture=texture;entry.refs=(entry.refs||0)+1;entry.lastUsed=performance.now();hdriCache.set(url,entry);}export function _releaseHDRI(url){const entry=hdriCache.get(url);if(!entry)return;entry.refs=Math.max(0,(entry.refs||0)-1);entry.lastUsed=performance.now();// Keep only one idle HDRI around. This avoids piling up PMREM cube maps\n// while still making the most recent preset switch cheap.\nconst idle=[...hdriCache.entries()].filter(([,item])=>(item.refs||0)===0).sort((a,b)=>(a[1].lastUsed||0)-(b[1].lastUsed||0));while(idle.length>1){const[oldUrl,oldEntry]=idle.shift();oldEntry.texture?.dispose?.();hdriCache.delete(oldUrl);}}export function _getProceduralEnvironmentCache(renderer){if(!renderer)return null;let cache=proceduralEnvCache.get(renderer);if(!cache){cache=new Map;proceduralEnvCache.set(renderer,cache);}return cache;}export function getProceduralEnvironment(renderer,presetName){const key=presetName||\"studio\";const cache=_getProceduralEnvironmentCache(renderer);if(!cache)return generateEnvironment(renderer,key);let entry=cache.get(key);if(!entry){entry={texture:generateEnvironment(renderer,key),refs:0,lastUsed:performance.now()};cache.set(key,entry);}entry.refs=(entry.refs||0)+1;entry.lastUsed=performance.now();return entry.texture;}export function _releaseProceduralEnvironment(renderer,presetName){const cache=renderer?proceduralEnvCache.get(renderer):null;if(!cache)return;const key=presetName||\"studio\";const entry=cache.get(key);if(!entry)return;entry.refs=Math.max(0,(entry.refs||0)-1);entry.lastUsed=performance.now();const idle=[...cache.entries()].filter(([,item])=>(item.refs||0)===0).sort((a,b)=>(a[1].lastUsed||0)-(b[1].lastUsed||0));while(idle.length>1){const[oldKey,oldEntry]=idle.shift();oldEntry.texture?.dispose?.();cache.delete(oldKey);}}export function _releaseEnvironmentMap(st){if(!st)return;const envMap=st.envMap;const envMapKey=st.envMapKey||\"\";const envMapSource=st.envMapSource||\"\";if(envMapSource===\"hdri\"&&envMapKey){_releaseHDRI(envMapKey);}else if(envMapSource===\"procedural\"&&envMap){_releaseProceduralEnvironment(st._renderer||st.renderer,envMapKey.replace(/^procedural:/,\"\")||\"studio\");}st.envMap=null;st.envMapSource=\"\";st.envMapKey=\"\";st.hdriLoadingUrl=\"\";}export function generateEnvironment(renderer,presetName){const preset=ENV_PRESETS[presetName]||ENV_PRESETS.studio;const pmrem=new THREE.PMREMGenerator(renderer);pmrem.compileEquirectangularShader();const envScene=new THREE.Scene;const{top,mid,bot}=preset.sky;const skyMat=new THREE.ShaderMaterial({side:THREE.BackSide,uniforms:{uTop:{value:new THREE.Vector3(...top)},uMid:{value:new THREE.Vector3(...mid)},uBot:{value:new THREE.Vector3(...bot)}},vertexShader:`varying vec3 vWP;void main(){vWP=(modelMatrix*vec4(position,1.0)).xyz;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}`,fragmentShader:`uniform vec3 uTop,uMid,uBot;varying vec3 vWP;void main(){float h=normalize(vWP).y;float t=max(0.,h);float b=max(0.,-h);vec3 c=mix(uMid,uTop,t*t);c=mix(c,uBot,b*b);c+=.012*sin(vWP.x*.5+vWP.z*.3);gl_FragColor=vec4(c*2.,1.);}`});envScene.add(new THREE.Mesh(new THREE.SphereGeometry(50,32,32),skyMat));for(const light of preset.lights){const mat=new THREE.MeshBasicMaterial({color:new THREE.Color(...light.color),side:THREE.DoubleSide});const m=new THREE.Mesh(new THREE.PlaneGeometry(light.size,light.size),mat);m.position.set(...light.pos);m.lookAt(0,0,0);envScene.add(m);}const envMap=pmrem.fromScene(envScene,.04).texture;pmrem.dispose();envScene.traverse(o=>{if(o.geometry)o.geometry.dispose();if(o.material)o.material.dispose();});return envMap;}export function applyEnvironmentChanges(st,cfg,renderer,scene){if(!cfg.enableEnvironment){_releaseEnvironmentMap(st);scene.environment=null;scene.background=cfg.transparentBackground?null:parseColor(cfg.backgroundColor);}else if(cfg.environmentType===\"hdri\"){const hdriUrl=cfg.customHdriUrl||HDRI_PRESETS[cfg.hdriPreset]?.url||HDRI_PRESETS.studio_small_09.url;if(st.envMapKey===hdriUrl&&st.envMap){scene.environment=st.envMap;if(cfg.showEnvironmentBackground&&!cfg.transparentBackground){scene.background=st.envMap;}return;}_releaseEnvironmentMap(st);scene.environment=null;st.envMapSource=\"hdri\";st.envMapKey=hdriUrl;st.hdriLoadingUrl=hdriUrl;loadHDRI(renderer,hdriUrl,envMap=>{if(st._disposed||st.envMapKey!==hdriUrl||st.hdriLoadingUrl!==hdriUrl){return;}if(envMap){_retainHDRI(hdriUrl,envMap);st.envMap=envMap;st.envMapSource=\"hdri\";scene.environment=envMap;if(cfg.showEnvironmentBackground&&!cfg.transparentBackground){scene.background=envMap;}}st.hdriLoadingUrl=\"\";});}else{const presetName=cfg.environmentPreset||\"studio\";const envKey=`procedural:${presetName}`;if(st.envMapKey===envKey&&st.envMap){scene.environment=st.envMap;return;}_releaseEnvironmentMap(st);st.envMap=getProceduralEnvironment(renderer,presetName);st.envMapSource=\"procedural\";st.envMapKey=envKey;scene.environment=st.envMap;}}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_releaseEnvironmentMap\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"generateEnvironment\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_releaseProceduralEnvironment\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_isSharedHDRI\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getProceduralEnvironmentCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getProceduralEnvironment\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_markSharedHDRI\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"applyEnvironmentChanges\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"loadHDRI\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_releaseHDRI\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_retainHDRI\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 22. RUNTIME GLUE & EVENT HANDLERS\nimport{materialHash,lightingHash,envHash,effectsHash,sceneConfigHash}from\"https://framerusercontent.com/modules/aFcmtpYRlhyp7w3gDzcI/L0O59n8ERYAkLQU9GKye/hashes.js\";import{_getAnimationBlendOptions,_playAnimations}from\"https://framerusercontent.com/modules/OW6JuxITky0baeSUblwC/SQrxhGqqDBbtN2sdADeq/animationUtils.js\";import{applyMaterialOverride,setModelFade,clearFadeCache}from\"https://framerusercontent.com/modules/Edc710chG3tFyabyrK1M/nazrAnvcxYaZjkQMA0fu/materialSystem.js\";import{applyLightingChanges}from\"https://framerusercontent.com/modules/9w1GUetMBcd5tGkwVEaC/mW7mdtQJNCTLnn6MVRmg/lighting.js\";import{applyEnvironmentChanges}from\"https://framerusercontent.com/modules/yTDeUaM613tgGAJ9WKa4/jE52leYsnmj4KuWdBOo5/environment.js\";import{applyEffectsChanges}from\"https://framerusercontent.com/modules/IdGzsHdzJFZjoerrm1R6/ZDt4dFJIJ9EMLZbVIXUQ/postprocessing.js\";export function _resetModelHoverGateState(holder,clipName=\"\"){if(!holder)return;holder._modelHoverGateInitialized=false;holder._modelHoverBaseAnimationClip=clipName;holder._modelHoverPendingAnimationClip=clipName;}export function _resolveModelHoverGatedClip(holder,cfg,clipName){if(!cfg.animationModelHoverGate||cfg.animationMode!==\"single\"||cfg.enableScrollAnimation){_resetModelHoverGateState(holder,String(clipName??\"\"));return clipName;}const requestedClip=String(clipName??\"\");// The first clip seen before an actual mesh hover becomes the safe/base clip.\nif(!holder._modelHoverGateInitialized){holder._modelHoverGateInitialized=true;holder._modelHoverBaseAnimationClip=requestedClip;}holder._modelHoverPendingAnimationClip=requestedClip;if(holder._modelHoverRaycastActive){return requestedClip;}return holder._modelHoverBaseAnimationClip||holder._activeAnimationClipName||requestedClip;}export function _syncModelHoverGatedAnimations(st,cfg){if(!cfg.animationModelHoverGate||!cfg.enableAnimation||cfg.animationMode!==\"single\"||cfg.enableScrollAnimation){return;}if(st.mixer&&st.animations?.length){_playConfiguredAnimation(st,st.mixer,st.animations,cfg,cfg.animationMode,cfg.animationClip);}if(!st.subScenes)return;const sceneItems=cfg.subSceneItems||[];const subSceneCfg={...cfg,onAnimationOnceComplete:null};for(const[idx,ss]of st.subScenes){if(!ss.mixer||!ss.animations?.length)continue;if(ss.group&&ss.group.visible===false)continue;const item=sceneItems[idx];if(item?.animOverride)continue;ss._modelHoverRaycastActive=st._modelHoverRaycastActive;_playConfiguredAnimation(ss,ss.mixer,ss.animations,subSceneCfg,cfg.animationMode,cfg.animationClip);}}export function _applyMaterialToAllScenes(st,targetCfg){applyMaterialOverride(st.model,targetCfg);for(const[,ss]of st.subScenes){if(ss._loaded&&ss.group){applyMaterialOverride(ss.group,targetCfg);}}}export function _setFadeAllScenes(st,factor,force=false){const normalized=factor>=.999?1:factor;if(!force&&st._lastSceneFadeFactor!=null&&Math.abs(st._lastSceneFadeFactor-normalized)<.02&&normalized!==1){return;}setModelFade(st.model,normalized);for(const[,ss]of st.subScenes){if(ss._loaded&&ss.group){setModelFade(ss.group,normalized);}}st._lastSceneFadeFactor=normalized;st._fadeCacheDirty=normalized<1;}export function _clearFadeCacheAllScenes(st){clearFadeCache(st.model);for(const[,ss]of st.subScenes){if(ss._loaded&&ss.group){clearFadeCache(ss.group);}}st._lastSceneFadeFactor=null;st._fadeCacheDirty=false;}export function _syncSceneHashTrackers(st,cfg,sceneHash=sceneConfigHash(cfg)){st.lastSceneHash=sceneHash;st.lastMaterialHash=cfg._materialHash??materialHash(cfg);st.lastLightingHash=cfg._lightingHash??lightingHash(cfg);st.lastEnvHash=cfg._envHash??envHash(cfg);st.lastEffectsHash=cfg._effectsHash??effectsHash(cfg);}export function _playConfiguredAnimation(holder,mixer,animations,cfg,mode,clipName,blendDuration){const resolvedClipName=_resolveModelHoverGatedClip(holder,cfg,clipName);const options=_getAnimationBlendOptions(holder,cfg,blendDuration);const resolvedClip=String(resolvedClipName??\"\").trim();const loopMode=cfg.animationLoopMode||\"repeat\";const effectiveLoopMode=cfg.hasAnimationOnceCompleteHandler?\"once\":loopMode;const shouldEmitOnceComplete=cfg.hasAnimationOnceCompleteHandler&&String(effectiveLoopMode).toLowerCase()===\"once\"&&(cfg.animationMode!==\"single\"||!!resolvedClip);options.loopMode=effectiveLoopMode;if(shouldEmitOnceComplete){options.restartOnSwitch=true;options.onOnceComplete=event=>{cfg.onAnimationOnceComplete?.(event);};}_playAnimations(mixer,animations,mode,resolvedClipName,options);}export function _applySceneConfigChanges(st,cfg,renderer,scene,sceneHash){const nextMaterialHash=cfg._materialHash??materialHash(cfg);const nextLightingHash=cfg._lightingHash??lightingHash(cfg);const nextEnvHash=cfg._envHash??envHash(cfg);const nextEffectsHash=cfg._effectsHash??effectsHash(cfg);if(nextMaterialHash!==st.lastMaterialHash){_applyMaterialToAllScenes(st,cfg);st.lastMaterialHash=nextMaterialHash;}if(nextLightingHash!==st.lastLightingHash){applyLightingChanges(st,cfg);st.lastLightingHash=nextLightingHash;}if(nextEnvHash!==st.lastEnvHash){applyEnvironmentChanges(st,cfg,renderer,scene);st.lastEnvHash=nextEnvHash;}if(nextEffectsHash!==st.lastEffectsHash){applyEffectsChanges(st,cfg);st.lastEffectsHash=nextEffectsHash;}st.lastSceneHash=sceneHash??cfg._sceneConfigHash??sceneConfigHash(cfg);}export function _withRuntimeRoleHidden(controls,hiddenByRole){const mapped={};Object.entries(controls||{}).forEach(([key,control])=>{const originalHidden=control?.hidden;mapped[key]={...control,hidden:props=>{if(hiddenByRole(props))return true;if(typeof originalHidden===\"function\")return originalHidden(props);return!!originalHidden;}};});return mapped;}export function _computeBVHForModel(model){model.traverse(child=>{if(child.isMesh&&child.geometry&&!child.geometry.boundsTree){child.geometry.computeBoundsTree();}});}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_withRuntimeRoleHidden\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_applyMaterialToAllScenes\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_setFadeAllScenes\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_playConfiguredAnimation\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_resolveModelHoverGatedClip\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_computeBVHForModel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_clearFadeCacheAllScenes\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_syncModelHoverGatedAnimations\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_resetModelHoverGateState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_applySceneConfigChanges\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_syncSceneHashTrackers\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Scroll controls for the NIMBUS exploded view.\nconst clamp=v=>Math.max(0,Math.min(1,v));const ease=v=>{const t=clamp(v);return t*t*(3-2*t);};const parts=[{key:\"shell\",mesh:\"S01 - Upper Enclosure.001\",en:\"Upper enclosure\",vi:\"Vỏ tr\\xean\",side:1,row:0,offset:[0,.66,0],enDetail:\"The outer enclosure surrounds the internal assemblies. Explore the model to see how the cover, frame, and base fit together.\",viDetail:\"Phần vỏ bao quanh c\\xe1c cụm linh kiện b\\xean trong. Kh\\xe1m ph\\xe1 model để xem c\\xe1ch vỏ, khung v\\xe0 đế được lắp với nhau.\"},{key:\"drive\",mesh:\"S01 - HDD.001\",en:\"Storage assembly\",vi:\"Cụm lưu trữ\",side:-1,row:0,offset:[.1,.39,.04],enDetail:\"The storage assembly is shown separately from the mainboard. NIMBUS lists two M.2 NVMe interfaces; included drive capacity depends on the purchase configuration.\",viDetail:\"Cụm lưu trữ được t\\xe1ch khỏi bo mạch để quan s\\xe1t. NIMBUS c\\xf4ng bố hai khe M.2 NVMe; dung lượng ổ đi k\\xe8m phụ thuộc cấu h\\xecnh b\\xe1n ra.\"},{key:\"bracket\",mesh:\"S01 - Bracket.001\",en:\"Mounting bracket\",vi:\"Khung đỡ\",side:1,row:1,offset:[0,.2,0],enDetail:\"The internal mounting structure supports and positions the hardware assemblies inside the enclosure.\",viDetail:\"Khung b\\xean trong gi\\xfap đỡ v\\xe0 định vị c\\xe1c cụm linh kiện trong thiết bị.\"},{key:\"heatsink\",mesh:\"S01 - Heatsink.001\",en:\"Heatsink\",vi:\"Bộ tản nhiệt\",side:-1,row:1,offset:[-.27,-.1,.02],enDetail:\"The heatsink helps move heat away from the processing hardware. The published recommended ambient operating range is 0–50\\xb0C.\",viDetail:\"Bộ tản nhiệt gi\\xfap dẫn nhiệt ra khỏi phần cứng xử l\\xfd. Nhiệt độ m\\xf4i trường hoạt động khuyến nghị được c\\xf4ng bố l\\xe0 0–50\\xb0C.\"},{key:\"board\",mesh:\"S01 - Mainboard.001\",en:\"Mainboard\",vi:\"Bo mạch ch\\xednh\",side:1,row:2,offset:[0,-.2,0],enDetail:\"Rockchip RK3588 combines four Cortex-A76 cores and four Cortex-A55 cores, with 16 GB LPDDR5 memory and an NPU rated up to 6 TOPS.\",viDetail:\"Rockchip RK3588 kết hợp bốn nh\\xe2n Cortex-A76 v\\xe0 bốn nh\\xe2n Cortex-A55, RAM 16 GB LPDDR5 v\\xe0 NPU l\\xean đến 6 TOPS.\"},{key:\"base\",mesh:\"S01 - Bottom Case.001\",en:\"Base enclosure\",vi:\"Phần đế\",side:-1,row:2,offset:[0,-.58,0],enDetail:\"The lower enclosure supports the internal hardware and completes the device housing. Power input: 12V DC.\",viDetail:\"Phần đế n\\xe2ng đỡ c\\xe1c linh kiện b\\xean trong v\\xe0 ho\\xe0n thiện th\\xe2n thiết bị. Nguồn đầu v\\xe0o: 12V DC.\"}];const normalizeMeshName=name=>String(name||\"\").toLowerCase().replace(/[^a-z0-9]/g,\"\");function findMesh(root,name){const exact=root.getObjectByName(name);if(exact)return exact;let match=null;const normalized=normalizeMeshName(name);root.traverse(node=>{if(!match&&normalizeMeshName(node.name)===normalized)match=node;});return match;}// Opt-in, instance-scoped extension. Other runtime scenes return immediately.\nexport function updateNimbusTech(record,props,element,rect,THREE){if(!props?.nimbusTech||!record?.model||typeof window===\"undefined\")return;const inner=record.modelInner||record.model;const host=element?.closest?.(\"[data-nimbus-tech]\");const track=Array.from(element?.ownerDocument?.querySelectorAll?.('[id=\"nimbus-tech-scroll\"]')||[]).find(node=>node.getBoundingClientRect().width>1&&node.getBoundingClientRect().height>1)||host?.closest?.('[data-framer-name=\"Nimbus — Hero and Tech specs\"]');if(!host||!rect||rect.width<2||rect.height<2)return;let state=record._nimbusTech;if(!state||state.model!==inner){// Give the GLB contour lines their own material; its shared placeholder alpha is only 0.08.\ninner.traverse(node=>{if(!node.isLine||node.userData._nimbusContourMaterial)return;const original=Array.isArray(node.material)?node.material[0]:node.material;const material=original.clone();material.color.set(\"#e97835\");material.transparent=true;material.opacity=.28;material.depthWrite=false;material.toneMapped=false;material.needsUpdate=true;node.material=material;node.userData._nimbusContourMaterial=true;});record.model.updateWorldMatrix(true,true);const box=new THREE.Box3().setFromObject(inner);const size=box.getSize(new THREE.Vector3);state=record._nimbusTech={model:inner,span:Math.max(size.x,size.z,.001)/Math.max(1e-6,Math.abs(inner.getWorldScale(new THREE.Vector3).x)),nodes:[],lastEmit:0};for(const part of parts){const node=findMesh(inner,part.mesh);if(!node)continue;node.matrixAutoUpdate=true;node.geometry?.computeBoundingBox?.();const center=node.geometry?.boundingBox?.getCenter(new THREE.Vector3)||new THREE.Vector3;state.nodes.push({part,node,base:node.position.clone(),center,projected:new THREE.Vector3});}// The small storage mesh remains with the board. Contour overlays follow their assemblies.\nfor(const[name,offset]of[[\"Contours - Shell.001\",[0,.66,0]],[\"Contours - Base.001\",[0,-.58,0]],[\"Contours - Internal.001\",[0,-.2,0]],[\"S01 - Storage.001\",[.18,-.2,.16]]]){const node=findMesh(inner,name);if(node){node.matrixAutoUpdate=true;state.nodes.push({part:{offset},node,base:node.position.clone()});}}}const vh=window.innerHeight||rect.height;const mobile=window.innerWidth<768;const distance=Math.max(0,track?-track.getBoundingClientRect().top:0,window.scrollY||element?.ownerDocument?.scrollingElement?.scrollTop||0);const motion=props.nimbusScroll||{};const number=(value,fallback)=>typeof value===\"number\"&&Number.isFinite(value)?value:fallback;const start=mobile?number(motion.mobileStart,240):number(motion.start,360);const length=vh*Math.max(1,number(motion.distance,160))/100;const progress=clamp((distance-start)/length);const phase=(from,to)=>{const first=clamp(number(from,0)/100);const last=clamp(number(to,100)/100);return last<=first?progress>=first?1:0:ease((progress-first)/(last-first));};const turn=phase(motion.rotateStart,motion.rotateEnd);const explode=phase(motion.openStart,motion.openEnd);const rotation=number(motion.rotation,360)*Math.PI/180;const spread=Math.max(0,number(motion.spread,100))/100;const reduced=window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;// Runtime resets the wrapper transform before this hook each frame, so no accumulation.\nrecord.model.rotation.y+=reduced?0:turn*rotation;record.model.scale.multiplyScalar(1-explode*.18);for(const item of state.nodes){const o=item.part.offset;item.node.position.set(item.base.x+o[0]*state.span*explode*spread,item.base.y+o[1]*state.span*explode*spread,item.base.z+o[2]*state.span*explode*spread);}record.model.updateMatrixWorld(true);record.camera.updateMatrixWorld(true);// Fit the expanded assembly inside the label area, including narrow viewports.\n// Recomputed from the runtime's base transform each frame; never accumulates.\nif(explode>1e-4&&record.camera.isPerspectiveCamera){const fit=state.fit||(state.fit={box:new THREE.Box3,center:new THREE.Vector3,cameraPoint:new THREE.Vector3,shift:new THREE.Vector3,right:new THREE.Vector3,up:new THREE.Vector3,localA:new THREE.Vector3,localB:new THREE.Vector3,corners:Array.from({length:8},()=>new THREE.Vector3)});fit.box.setFromObject(record.model);let minX=Infinity,maxX=-Infinity,minY=Infinity,maxY=-Infinity;for(let i=0;i<8;i++){const c=fit.corners[i].set(i&1?fit.box.max.x:fit.box.min.x,i&2?fit.box.max.y:fit.box.min.y,i&4?fit.box.max.z:fit.box.min.z).project(record.camera);minX=Math.min(minX,c.x);maxX=Math.max(maxX,c.x);minY=Math.min(minY,c.y);maxY=Math.max(maxY,c.y);}const ratio=Math.min(1,1.3/Math.max(.001,maxX-minX),1.4/Math.max(.001,maxY-minY));record.model.scale.multiplyScalar(1+(ratio-1)*explode);record.model.updateMatrixWorld(true);fit.box.setFromObject(record.model).getCenter(fit.center);fit.cameraPoint.copy(fit.center).applyMatrix4(record.camera.matrixWorldInverse);const halfHeight=Math.max(.01,-fit.cameraPoint.z)*Math.tan(record.camera.fov*Math.PI/360);fit.cameraPoint.copy(fit.center).project(record.camera);fit.right.set(1,0,0).applyQuaternion(record.camera.quaternion);fit.up.set(0,1,0).applyQuaternion(record.camera.quaternion);fit.shift.copy(fit.right).multiplyScalar(-fit.cameraPoint.x*halfHeight*record.camera.aspect).addScaledVector(fit.up,(-.12-fit.cameraPoint.y)*halfHeight);const parent=record.model.parent;if(parent){parent.updateWorldMatrix(true,false);fit.localA.copy(fit.center);fit.localB.copy(fit.center).add(fit.shift);parent.worldToLocal(fit.localA);parent.worldToLocal(fit.localB);record.model.position.addScaledVector(fit.localB.sub(fit.localA),explode);}else record.model.position.addScaledVector(fit.shift,explode);record.model.updateMatrixWorld(true);}const now=performance.now();if(now-state.lastEmit<32)return;state.lastEmit=now;const points=[];for(const item of state.nodes){if(!item.part.key)continue;const point=item.projected.copy(item.center);item.node.localToWorld(point);point.project(record.camera);points.push({key:item.part.key,x:rect.left+(point.x+1)/2*rect.width,y:rect.top+(1-point.y)/2*rect.height,visible:point.z>-1&&point.z<1});}// Project each assembly's bounds after the final exploded transform.\n// Tooltip hit areas share the same viewport coordinates as the leader lines.\nconst hitRegions=[];const hitBox=state.hitBox||(state.hitBox=new THREE.Box3);const hitCorner=state.hitCorner||(state.hitCorner=new THREE.Vector3);for(const item of state.nodes){if(!item.part.key)continue;hitBox.setFromObject(item.node);if(hitBox.isEmpty())continue;let left=Infinity,right=-Infinity,top=Infinity,bottom=-Infinity;for(let i=0;i<8;i++){hitCorner.set(i&1?hitBox.max.x:hitBox.min.x,i&2?hitBox.max.y:hitBox.min.y,i&4?hitBox.max.z:hitBox.min.z).project(record.camera);const x=rect.left+(hitCorner.x+1)/2*rect.width;const y=rect.top+(1-hitCorner.y)/2*rect.height;left=Math.min(left,x);right=Math.max(right,x);top=Math.min(top,y);bottom=Math.max(bottom,y);}hitRegions.push({key:item.part.key,left,right,top,bottom});}window.dispatchEvent(new CustomEvent(\"botanika:nimbus-tech-frame\",{detail:{id:props.nimbusTechId,rect,turn,explode,distance,points,hitRegions,modelHovered:!!record._modelHoverRaycastActive}}));}\nexport const __FramerMetadata__ = {\"exports\":{\"updateNimbusTech\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./nimbusScroll.map","// @ts-nocheck\n// #region 20. RENDER BRIDGE API\nimport{_IMPORT_3D_BRIDGE_KEY}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";// @api RenderBridge.getState\nexport function _getImport3DBridgeState(){if(typeof window===\"undefined\"){return{rootCount:0,renderMode:\"coordinator\",contextBudget:null,rendererState:null,qualityMode:\"balanced\",dprCapDesktop:null,dprCapMobile:null,pauseHidden:true,pauseOffscreen:true,destroyOffscreen:false,destroyAfterMs:2e4,rendererDebug:false,_rendererModeAnnounced:false,slotRevision:0,slots:new Map,listeners:new Set};}if(!window[_IMPORT_3D_BRIDGE_KEY]){window[_IMPORT_3D_BRIDGE_KEY]={rootCount:0,renderMode:\"coordinator\",contextBudget:null,rendererState:null,qualityMode:\"balanced\",dprCapDesktop:null,dprCapMobile:null,pauseHidden:true,pauseOffscreen:true,destroyOffscreen:false,destroyAfterMs:2e4,rendererDebug:false,_rendererModeAnnounced:false,slotRevision:0,slots:new Map,listeners:new Set};}return window[_IMPORT_3D_BRIDGE_KEY];}export function _emitImport3DBridge(){const state=_getImport3DBridgeState();if(!state?.listeners)return;state.listeners.forEach(listener=>{try{listener();}catch(error){console.warn(\"[Import_3D] bridge listener error\",error);}});}export function _subscribeImport3DBridge(listener){const state=_getImport3DBridgeState();state.listeners.add(listener);return()=>{state.listeners.delete(listener);};}export function _snapshotImport3DBridge(){const state=_getImport3DBridgeState();return{rootCount:state.rootCount||0,renderMode:state.renderMode||\"coordinator\",contextBudget:state.contextBudget??null,rendererState:state.rendererState||null,qualityMode:state.qualityMode||\"balanced\",dprCapDesktop:state.dprCapDesktop??null,dprCapMobile:state.dprCapMobile??null,pauseHidden:state.pauseHidden??true,pauseOffscreen:state.pauseOffscreen??true,destroyOffscreen:state.destroyOffscreen??false,destroyAfterMs:state.destroyAfterMs??2e4,rendererDebug:state.rendererDebug??false,slotRevision:state.slotRevision||0,slots:Array.from(state.slots?.values?.()||[])};}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_emitImport3DBridge\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_snapshotImport3DBridge\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_subscribeImport3DBridge\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getImport3DBridgeState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 17. RENDERER DIAGNOSTICS\nimport{_IMPORT_3D_RENDERER_DEBUG_KEY}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{_getImport3DBridgeState}from\"https://framerusercontent.com/modules/k3J7THOMV5sPcC9EjGVq/b6mlYDX51KTLflCnOxsJ/bridge.js\";function _snapshotImport3DCanvasDebug(canvas){if(!canvas)return null;const rect=canvas.getBoundingClientRect?.();return{connected:!!canvas.isConnected,root:canvas.getAttribute?.(\"data-import-3d-root-canvas\")||null,slot:canvas.getAttribute?.(\"data-3d-canvas-id\")||null,owner:canvas.getAttribute?.(\"data-import-3d-renderer-owner\")||null,width:canvas.width||0,height:canvas.height||0,cssWidth:canvas.style?.width||\"\",cssHeight:canvas.style?.height||\"\",display:canvas.style?.display||\"\",parent:canvas.parentElement?.tagName||null,rect:rect?{x:Math.round(rect.x),y:Math.round(rect.y),width:Math.round(rect.width),height:Math.round(rect.height)}:null};}function _getImport3DRendererDebugStore(){if(typeof window===\"undefined\"){return null;}if(!window[_IMPORT_3D_RENDERER_DEBUG_KEY]){window[_IMPORT_3D_RENDERER_DEBUG_KEY]={seq:0,live:{},events:[]};}const store=window[_IMPORT_3D_RENDERER_DEBUG_KEY];if(typeof store.dump!==\"function\"){store.dump=()=>{const canvases=Array.from(document.querySelectorAll(\"canvas\")).map((canvas,index)=>({index,root:canvas.getAttribute?.(\"data-import-3d-root-canvas\")||null,slot:canvas.getAttribute?.(\"data-3d-canvas-id\")||null,owner:canvas.getAttribute?.(\"data-import-3d-renderer-owner\")||null,connected:!!canvas.isConnected,width:canvas.width||0,height:canvas.height||0,cssWidth:canvas.style?.width||\"\",cssHeight:canvas.style?.height||\"\",display:canvas.style?.display||\"\"}));const live=Object.values(store.live||{});console.table(canvases);console.table(live);return{canvases,live,events:store.events||[]};};}return store;}// @api RendererDiagnostics.logEvent\nexport function _debugImport3DRendererEvent(event,payload={}){const store=_getImport3DRendererDebugStore();if(!store)return;const ownerId=payload.ownerId||payload.canvas?.getAttribute?.(\"data-import-3d-renderer-owner\")||`${payload.role||\"renderer\"}:${store.seq+1}`;const entry={seq:++store.seq,event,ownerId,role:payload.role||\"\",reason:payload.reason||\"\",bridgeMode:payload.bridgeMode||\"\",renderTarget:payload.renderTarget||\"\",webglRuntimeActive:payload.webglRuntimeActive,cfgWebglActive:payload.cfgWebglActive,rootCount:payload.rootCount,slotCount:payload.slotCount,canvas:_snapshotImport3DCanvasDebug(payload.canvas),at:Math.round(performance.now())};if(event===\"create\"){store.live[ownerId]=entry;}else if(event===\"dispose\"){delete store.live[ownerId];}store.events.push(entry);if(store.events.length>80)store.events.shift();const shouldLog=payload.forceLog||typeof window!==\"undefined\"&&!!window.__IMPORT_3D_RENDERER_DEBUG_VERBOSE__;if(shouldLog){console.log(`[Import_3D Renderer Debug] ${event}`,entry,\"live:\",Object.keys(store.live));}}export function _isImport3DRendererBridgeActive(){if(typeof window===\"undefined\")return false;const state=_getImport3DBridgeState();return state.renderMode===\"renderer\"&&((state.rootCount||0)>0||!!state._rendererModeAnnounced);}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_isImport3DRendererBridgeActive\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_debugImport3DRendererEvent\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 18. STATS MONITOR\nimport{_loadStats}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";export function _getStatsPanelIndex(panel){if(panel===\"ms\")return 1;if(panel===\"mb\")return 2;return 0;}export function _removeStatsMonitor(st){if(!st)return;const dom=st._statsDom;if(dom?.parentNode)dom.parentNode.removeChild(dom);st._stats=null;st._statsDom=null;st._statsPanel=null;st._statsLoading=false;}// Stats.js is only fetched once a scene actually turns the debug overlay on.\n// While the module is loading, this returns null (no overlay yet); once the\n// dynamic import resolves it builds the panel and later calls pick it up.\nexport function _syncStatsMonitor(st,cfg,host){if(!st)return null;if(!cfg.showStatsMonitor||!host){_removeStatsMonitor(st);return null;}const panel=_getStatsPanelIndex(cfg.statsMonitorPanel);if(!st._stats){if(!st._statsLoading){st._statsLoading=true;_loadStats().then(Stats=>{if(!st._statsLoading||st._stats)return;const stats=new Stats;const dom=stats.dom||stats.domElement;if(!dom){st._statsLoading=false;return;}stats.showPanel(_getStatsPanelIndex(cfg.statsMonitorPanel));dom.style.position=\"absolute\";dom.style.left=\"8px\";dom.style.top=\"8px\";dom.style.zIndex=\"9999\";dom.style.pointerEvents=\"none\";dom.style.opacity=\"0.9\";host.appendChild(dom);st._stats=stats;st._statsDom=dom;st._statsPanel=_getStatsPanelIndex(cfg.statsMonitorPanel);st._statsLoading=false;});}return null;}else if(st._statsPanel!==panel){st._stats.showPanel(panel);st._statsPanel=panel;}return st._stats;}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_removeStatsMonitor\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getStatsPanelIndex\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_syncStatsMonitor\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 12. SCENE TRANSFORMS\nimport{_DEG2RAD}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{_tmpBox3,_tmpVec3A,_tmpVec3B}from\"https://framerusercontent.com/modules/e3Gn61f7n8O6N477csEc/XQABUbxjpsQJSmz595Po/state.js\";import{_isMobileLike,_getVisibleSize,_setStyleIfChanged,_clearStyleIfChanged}from\"https://framerusercontent.com/modules/VBWlX7Xj9c0TDGr87Yag/aMS7pZCDBphxkvSKFGKw/renderMetrics.js\";import{_findLayerMatchElement,_isLayerMatchCandidateUsable,_matchesLayerSelector,_normalizeLayerMatchValue}from\"https://framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js\";import{_computeMeshOnlyBoundingBox}from\"https://framerusercontent.com/modules/AFUuT451C58PCzmVhCV6/LtpaPYvKQJsZkRBrz1k0/object3DUtils.js\";export function _markScrollLayoutDirty(st){if(!st)return;st._scrollLayoutVersion=(st._scrollLayoutVersion||0)+1;}export function _getScrollLayoutViewport(st,wrapNode,now){// On mobile-like devices, inertial scroll positions change every frame\n// and getBoundingClientRect() already reflects the *current* visual scroll\n// position at rAF time. We must NOT cache rects across frames on mobile,\n// otherwise the model lags behind the DOM by one or more frames.\nconst isMobile=_isMobileLike();if(!isMobile){if(st._scrollLayoutCacheVersion===(st._scrollLayoutVersion||0)&&st._scrollLayoutWrapNode===wrapNode&&st._scrollLayoutViewport){return st._scrollLayoutViewport;}}else{// Always clear the rect cache on mobile so _getScrollLayoutRect\n// re-measures each frame. The viewport dimensions are stable so we\n// can still cache those, but element rects must stay fresh.\nif(st._scrollLayoutRectCache?.clear){st._scrollLayoutRectCache.clear();}else{st._scrollLayoutRectCache=new Map;}if(st._scrollLayoutCacheVersion===(st._scrollLayoutVersion||0)&&st._scrollLayoutWrapNode===wrapNode&&st._scrollLayoutViewport){return st._scrollLayoutViewport;}}st._scrollLayoutMeasureAt=now;st._scrollLayoutCacheVersion=st._scrollLayoutVersion||0;st._scrollLayoutWrapNode=wrapNode;if(st._scrollLayoutRectCache?.clear){st._scrollLayoutRectCache.clear();}else{st._scrollLayoutRectCache=new Map;}if(st._framerRuntimeMode===\"canvas\"&&wrapNode?.getBoundingClientRect){const wrapRect=wrapNode.getBoundingClientRect();const logicalW=wrapNode.clientWidth||wrapRect.width;const logicalH=wrapNode.clientHeight||wrapRect.height;if(wrapRect.width>0&&wrapRect.height>0&&logicalW>0&&logicalH>0){st._scrollLayoutViewport={left:0,top:0,width:logicalW,height:logicalH,local:true,wrapRect,scaleX:wrapRect.width/logicalW||1,scaleY:wrapRect.height/logicalH||1};return st._scrollLayoutViewport;}}st._scrollLayoutViewport={left:0,top:0,width:window.innerWidth||wrapNode?.clientWidth||1,height:window.innerHeight||wrapNode?.clientHeight||1,local:false};return st._scrollLayoutViewport;}export function _getScrollLayoutRect(st,node,viewport){if(!node)return null;const rectCache=st._scrollLayoutRectCache;if(rectCache?.has(node))return rectCache.get(node);const rawRect=node.getBoundingClientRect();if(!viewport?.local||!viewport.wrapRect){rectCache?.set(node,rawRect);return rawRect;}// Project DOM into the same logical space as the canvas wrapper. This keeps\n// Framer editor zoom/stage transforms from changing the 3D positioning math.\nconst scaleX=viewport.scaleX||1;const scaleY=viewport.scaleY||1;const left=(rawRect.left-viewport.wrapRect.left)/scaleX;const top=(rawRect.top-viewport.wrapRect.top)/scaleY;const width=rawRect.width/scaleX;const height=rawRect.height/scaleY;const rect={left,top,width,height,right:left+width,bottom:top+height};rectCache?.set(node,rect);return rect;}export function _getScrollAnchorOffset(st,cfg,wrapNode,now){const prevMatch=st._scrollAnchorMatch;if(!cfg.scrollAnchorEnabled||!cfg.scrollAnchorMatch||typeof window===\"undefined\"){st._scrollAnchorOffsetX=0;st._scrollAnchorOffsetY=0;st._scrollAnchorLastVisibleX=undefined;st._scrollAnchorLastVisibleY=undefined;st._scrollAnchorTransitionId=\"\";st._scrollAnchorTransitionStart=0;st._scrollAnchorPendingAppearReplay=\"\";st._scrollAnchorInstantUntil=0;st._scrollAnchorEl=null;st._scrollAnchorMatch=\"\";return{x:0,y:0,active:false,inView:true};}const transitionTargetId=String(cfg.scrollAnchorTransitionTargetId??\"\").trim();const transitionRequested=!!(cfg.scrollAnchorTransitionEnabled??cfg.scrollAnchorTransitionId);const matchChanged=prevMatch!==cfg.scrollAnchorMatch;if(matchChanged||!st._scrollAnchorEl||!st._scrollAnchorEl.isConnected||now>=(st._scrollAnchorLookupAt||0)){const prevResolvedEl=st._scrollAnchorEl;st._scrollAnchorMatch=cfg.scrollAnchorMatch;st._scrollAnchorEl=_findLayerMatchElement(cfg.scrollAnchorMatch,wrapNode);st._scrollAnchorLookupAt=now+500;if(prevResolvedEl&&prevResolvedEl!==st._scrollAnchorEl){st._scrollAnchorTransitionId=\"\";st._scrollAnchorTransitionStart=0;st._scrollAnchorPendingAppearReplay=\"\";st._scrollAnchorInstantUntil=0;}}let el=st._scrollAnchorEl;if(el&&!_isLayerMatchCandidateUsable(el,wrapNode)){st._scrollAnchorEl=_findLayerMatchElement(cfg.scrollAnchorMatch,wrapNode);st._scrollAnchorLookupAt=now+500;el=st._scrollAnchorEl;st._scrollAnchorTransitionId=\"\";st._scrollAnchorTransitionStart=0;st._scrollAnchorPendingAppearReplay=\"\";st._scrollAnchorInstantUntil=0;}const prevEl=prevMatch&&prevMatch!==cfg.scrollAnchorMatch?_findLayerMatchElement(prevMatch,wrapNode):null;const transitionTargetMatches=!transitionTargetId||!!prevEl&&_matchesLayerSelector(prevEl,transitionTargetId)||_normalizeLayerMatchValue(transitionTargetId)===_normalizeLayerMatchValue(prevMatch)||_normalizeLayerMatchValue(transitionTargetId)===_normalizeLayerMatchValue(st._scrollAnchorLastTransitionFromMatch);const transitionEnabled=transitionRequested&&transitionTargetMatches;if(!el){// Missing/renamed Follow ID should not leave the model stranded at a stale\n// section offset. Fall back to the authored transform until the ID exists.\nst._scrollAnchorOffsetX=0;st._scrollAnchorOffsetY=0;st._scrollAnchorLastVisibleX=undefined;st._scrollAnchorLastVisibleY=undefined;st._scrollAnchorTransitionId=\"\";st._scrollAnchorTransitionStart=0;st._scrollAnchorPendingAppearReplay=\"\";st._scrollAnchorInstantUntil=0;return{x:0,y:0,active:false,inView:false};}const viewport=_getScrollLayoutViewport(st,wrapNode,now);const _measureAnchorOffset=node=>{if(!node||typeof window===\"undefined\")return null;const rect=_getScrollLayoutRect(st,node,viewport);if(!rect)return null;const viewW=viewport.width;const viewH=viewport.height;if(!viewW||!viewH)return null;const anchorX=cfg.scrollAnchorX??.5;const anchorY=cfg.scrollAnchorY??.5;const pxX=rect.left+rect.width*anchorX-(viewport.left+viewW/2);const pxY=rect.top+rect.height*anchorY-(viewport.top+viewH/2);const anchorScreenY=rect.top+rect.height*anchorY-viewport.top;const progress=Math.max(0,Math.min(1,1-anchorScreenY/viewH));// Compute pixel-to-world scale correctly per camera type.\n// For orthographic: world size is defined directly by frustum / zoom,\n//   independent of camera distance. Using camDist here was wrong.\n// For perspective: use the standard visible-size-at-distance formula.\nlet pxToWorldX;let pxToWorldY;const cam=st.camera;if(cam?.isOrthographicCamera){// World units per pixel = frustum extent / zoom / viewport pixels\npxToWorldX=(cam.right-cam.left)/(cam.zoom||1)/viewW;pxToWorldY=(cam.top-cam.bottom)/(cam.zoom||1)/viewH;}else{const camDist=cam?.position?.length?.()||1;const visible=_getVisibleSize(cam,camDist);pxToWorldX=visible.width/viewW;pxToWorldY=visible.height/viewH;}return{x:pxX*pxToWorldX*(cfg.scrollAnchorStrengthX??1),y:-pxY*pxToWorldY*(cfg.scrollAnchorStrengthY??1),inView:rect.right>viewport.left&&rect.left<viewport.left+viewW&&rect.bottom>viewport.top&&rect.top<viewport.top+viewH,progress};};const currentMeasure=_measureAnchorOffset(el);if(!currentMeasure){return{x:0,y:0,active:false,inView:true};}const prevMeasure=_measureAnchorOffset(prevEl);const isInViewport=currentMeasure.inView;const targetX=currentMeasure.x;const targetY=currentMeasure.y;const preferDirectMobileFollow=!!cfg.responsiveIsMobile;if(preferDirectMobileFollow){st._scrollAnchorTransitionId=\"\";st._scrollAnchorTransitionStart=0;st._scrollAnchorPendingAppearReplay=\"\";st._scrollAnchorInstantUntil=0;st._scrollAnchorOffsetX=targetX;st._scrollAnchorOffsetY=targetY;st._scrollAnchorLastVisibleX=targetX;st._scrollAnchorLastVisibleY=targetY;return{x:targetX,y:targetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}if(matchChanged&&prevMatch&&!prevMeasure){// Framer variants can keep stale Object-control values. If a Follow ID was\n// renamed and the previous DOM anchor no longer exists, treat the new ID as\n// a fresh anchor instead of replaying appear/transition state from nowhere.\nst._scrollAnchorTransitionId=\"\";st._scrollAnchorTransitionStart=0;st._scrollAnchorPendingAppearReplay=\"\";st._scrollAnchorInstantUntil=0;st._scrollAnchorOffsetX=targetX;st._scrollAnchorOffsetY=targetY;st._scrollAnchorLastVisibleX=targetX;st._scrollAnchorLastVisibleY=targetY;return{x:targetX,y:targetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}const transitionChanged=!!st._scrollAnchorTransitionId!==transitionEnabled;if(transitionEnabled&&(matchChanged||transitionChanged)&&(st._scrollAnchorOffsetX!==undefined&&st._scrollAnchorOffsetY!==undefined||prevMeasure)){st._scrollAnchorLastTransitionFromMatch=prevMatch||\"\";st._scrollAnchorTransitionId=transitionEnabled;st._scrollAnchorTransitionFromX=st._scrollAnchorOffsetX??prevMeasure?.x??targetX;st._scrollAnchorTransitionFromY=st._scrollAnchorOffsetY??prevMeasure?.y??targetY;st._scrollAnchorTransitionToX=targetX;st._scrollAnchorTransitionToY=targetY;st._scrollAnchorTransitionStart=now;st._scrollAnchorTransitionDuration=Math.max(180,560-(cfg.scrollAnchorSmoothing??1)*320);}else if(!transitionEnabled){st._scrollAnchorTransitionId=\"\";st._scrollAnchorTransitionStart=0;}else{st._scrollAnchorTransitionId=true;}if(!transitionEnabled&&matchChanged&&prevMatch){// Follow ID changes are layout-anchor changes, not Framer variant changes.\n// Do not replay Appear here; otherwise scroll variants that override the\n// Position object can repeatedly reset opacity/transform state.\nst._scrollAnchorPendingAppearReplay=\"\";st._scrollAnchorInstantUntil=0;st._scrollAnchorOffsetX=targetX;st._scrollAnchorOffsetY=targetY;st._scrollAnchorLastVisibleX=targetX;st._scrollAnchorLastVisibleY=targetY;return{x:targetX,y:targetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}if(!transitionEnabled&&(st._scrollAnchorInstantUntil||0)>now){st._scrollAnchorOffsetX=targetX;st._scrollAnchorOffsetY=targetY;st._scrollAnchorLastVisibleX=targetX;st._scrollAnchorLastVisibleY=targetY;return{x:targetX,y:targetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}if(transitionEnabled&&st._scrollAnchorTransitionStart>0){st._scrollAnchorTransitionToX=targetX;st._scrollAnchorTransitionToY=targetY;const duration=Math.max(1,st._scrollAnchorTransitionDuration||280);const t=Math.min(1,(now-st._scrollAnchorTransitionStart)/duration);const eased=1-Math.pow(1-t,3);st._scrollAnchorOffsetX=(st._scrollAnchorTransitionFromX??targetX)+((st._scrollAnchorTransitionToX??targetX)-(st._scrollAnchorTransitionFromX??targetX))*eased;st._scrollAnchorOffsetY=(st._scrollAnchorTransitionFromY??targetY)+((st._scrollAnchorTransitionToY??targetY)-(st._scrollAnchorTransitionFromY??targetY))*eased;st._scrollAnchorLastVisibleX=st._scrollAnchorOffsetX;st._scrollAnchorLastVisibleY=st._scrollAnchorOffsetY;if(t>=1){st._scrollAnchorTransitionStart=0;st._scrollAnchorTransitionFromX=st._scrollAnchorOffsetX;st._scrollAnchorTransitionFromY=st._scrollAnchorOffsetY;}return{x:st._scrollAnchorOffsetX,y:st._scrollAnchorOffsetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}const smooth=Math.max(0,Math.min(1,cfg.scrollAnchorSmoothing??1));// On mobile with inertial scroll, lerp causes visible \"chasing\" because the\n// target moves fast each frame. If on mobile and the delta is larger than\n// ~2px worth of world units (meaning scroll is active/fast), snap instantly.\nconst prevX=st._scrollAnchorOffsetX??targetX;const prevY=st._scrollAnchorOffsetY??targetY;const dX=Math.abs(targetX-prevX);const dY=Math.abs(targetY-prevY);const cam=st.camera;let pxThresh=2;if(cam?.isOrthographicCamera){const viewW=1// relative threshold — will use world units\n;pxThresh=(cam.right-cam.left)/(cam.zoom||1)*.005// 0.5% of world width\n;}else{const camDist=cam?.position?.length?.()||1;const vis=_getVisibleSize(cam,camDist);pxThresh=vis.width*.005;}const isMobileFollow=_isMobileLike();const scrollMoving=dX>pxThresh||dY>pxThresh;if(isMobileFollow&&scrollMoving){// Snap directly — match the DOM position this frame, no lag\nst._scrollAnchorOffsetX=targetX;st._scrollAnchorOffsetY=targetY;}else{st._scrollAnchorOffsetX=prevX+(targetX-prevX)*smooth;st._scrollAnchorOffsetY=prevY+(targetY-prevY)*smooth;}st._scrollAnchorLastVisibleX=st._scrollAnchorOffsetX;st._scrollAnchorLastVisibleY=st._scrollAnchorOffsetY;return{x:st._scrollAnchorOffsetX,y:st._scrollAnchorOffsetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}export function _getScrollTransformProgressOffset(st,cfg,wrapNode,now){if(!cfg.scrollProgressTransformEnabled||!cfg.scrollTransformAnchorMatch||typeof window===\"undefined\"){st._scrollTransformAnchorEl=null;st._scrollTransformAnchorMatch=\"\";return{x:0,y:0,active:false,inView:true,progress:0};}const match=cfg.scrollTransformAnchorMatch;if(st._scrollTransformAnchorMatch!==match||!st._scrollTransformAnchorEl||!st._scrollTransformAnchorEl.isConnected||!_isLayerMatchCandidateUsable(st._scrollTransformAnchorEl,wrapNode)||now>=(st._scrollTransformAnchorLookupAt||0)){st._scrollTransformAnchorMatch=match;st._scrollTransformAnchorEl=_findLayerMatchElement(match,wrapNode);st._scrollTransformAnchorLookupAt=now+500;}const el=st._scrollTransformAnchorEl;if(!el){return{x:0,y:0,active:false,inView:false,progress:0};}const viewport=_getScrollLayoutViewport(st,wrapNode,now);const rect=_getScrollLayoutRect(st,el,viewport);if(!rect){return{x:0,y:0,active:false,inView:true,progress:0};}const viewW=viewport.width;const viewH=viewport.height;if(!viewW||!viewH){return{x:0,y:0,active:false,inView:true,progress:0};}const anchorY=cfg.scrollAnchorY??.5;const anchorScreenY=rect.top+rect.height*anchorY-viewport.top;const progress=Math.max(0,Math.min(1,1-anchorScreenY/viewH));const inView=rect.right>viewport.left&&rect.left<viewport.left+viewW&&rect.bottom>viewport.top&&rect.top<viewport.top+viewH;return{x:0,y:0,active:true,inView,progress};}export function _syncScrollAnchorAppear(st,cfg,wrapNode,canvasNode){if(!canvasNode)return;const hasAppearWork=st._appearReplayStart>0||st._blurRevealStart>0;if(!hasAppearWork&&st._appearDomSyncedIdle)return;let visibility=1;if(st._appearReplayStart>0){const appearElapsed=(performance.now()-st._appearReplayStart)/1e3;const appearDuration=Math.max(.001,cfg.dissolveDuration||1.5);if(appearElapsed>=appearDuration){st._appearReplayStart=0;}else{const t=appearElapsed/appearDuration;const eased=1-Math.pow(1-t,3);visibility=Math.min(visibility,eased);}}st._appearVisibility=visibility;_setStyleIfChanged(canvasNode,\"opacity\",visibility>=.999?\"1\":visibility.toFixed(3));if(st._blurRevealStart>0){st._appearDomSyncedIdle=false;_setStyleIfChanged(canvasNode,\"willChange\",\"opacity, filter\");return;}if(cfg.blurReveal){const blurInt=cfg.blurRevealIntensity||12;const blurPx=blurInt*(1-visibility);if(blurPx>.05){st._appearDomSyncedIdle=false;_setStyleIfChanged(canvasNode,\"filter\",`blur(${blurPx.toFixed(1)}px)`);_setStyleIfChanged(canvasNode,\"willChange\",\"opacity, filter\");}else{_clearStyleIfChanged(canvasNode,\"filter\");if(visibility>=.999){_clearStyleIfChanged(canvasNode,\"willChange\");st._appearDomSyncedIdle=true;}else{_setStyleIfChanged(canvasNode,\"willChange\",\"opacity\");st._appearDomSyncedIdle=false;}}return;}_clearStyleIfChanged(canvasNode,\"filter\");if(visibility>=.999){_clearStyleIfChanged(canvasNode,\"willChange\");st._appearDomSyncedIdle=true;}else{_setStyleIfChanged(canvasNode,\"willChange\",\"opacity\");st._appearDomSyncedIdle=false;}}export function _hasAppearTransformMotion(cfg){if(!cfg)return false;return Math.abs(cfg.appearOffsetX??0)>1e-4||Math.abs(cfg.appearOffsetY??0)>1e-4||Math.abs(cfg.appearOffsetZ??0)>1e-4||Math.abs((cfg.appearScale??1)-1)>1e-4||Math.abs(cfg.appearRotateX??0)>1e-4||Math.abs(cfg.appearRotateY??0)>1e-4||Math.abs(cfg.appearRotateZ??0)>1e-4;}export function _shouldReplayAppear(cfg){return cfg?.appearReplay!==false;}export function _restartAppearPlayback(st,cfg,canvasNode,force=false){if(!st||!force&&!cfg?.dissolveEnabled&&!_hasAppearTransformMotion(cfg))return;st._appearReplayStart=performance.now();if(canvasNode){canvasNode.style.opacity=\"0\";}if(cfg.blurReveal&&canvasNode){const intensity=cfg.blurRevealIntensity||12;canvasNode.style.filter=`blur(${intensity}px)`;canvasNode.style.willChange=\"opacity, filter\";st._blurRevealStart=performance.now();}}export function _applyAppearTransformOffset(object,visibility,cfg){if(!object)return;const motionVisibility=visibility??1;const t=1-Math.max(0,Math.min(1,motionVisibility));const targetX=(cfg.appearOffsetX??0)*t;const targetY=(cfg.appearOffsetY??0)*t;const targetZ=(cfg.appearOffsetZ??0)*t;const targetScale=1+((cfg.appearScale??1)-1)*t;const targetRotX=(cfg.appearRotateX??0)*Math.PI*t/180;const targetRotY=(cfg.appearRotateY??0)*Math.PI*t/180;const targetRotZ=(cfg.appearRotateZ??0)*Math.PI*t/180;object.position.x+=targetX-(object._appearAppliedX||0);object.position.y+=targetY-(object._appearAppliedY||0);object.position.z+=targetZ-(object._appearAppliedZ||0);object.rotation.x+=targetRotX-(object._appearAppliedRotX||0);object.rotation.y+=targetRotY-(object._appearAppliedRotY||0);object.rotation.z+=targetRotZ-(object._appearAppliedRotZ||0);const prevScale=object._appearAppliedScale||1;if(prevScale!==0){object.scale.multiplyScalar(targetScale/prevScale);}object._appearAppliedX=targetX;object._appearAppliedY=targetY;object._appearAppliedZ=targetZ;object._appearAppliedRotX=targetRotX;object._appearAppliedRotY=targetRotY;object._appearAppliedRotZ=targetRotZ;object._appearAppliedScale=targetScale;}export function _resetAppearTransformOffset(object){if(!object)return;object._appearAppliedX=0;object._appearAppliedY=0;object._appearAppliedZ=0;object._appearAppliedRotX=0;object._appearAppliedRotY=0;object._appearAppliedRotZ=0;object._appearAppliedScale=1;}export function _applyScrollAnchorOffset(object,offset){if(!object)return;object.position.x+=(offset?.x||0)-(object._scrollAnchorAppliedX||0);object.position.y+=(offset?.y||0)-(object._scrollAnchorAppliedY||0);object._scrollAnchorAppliedX=offset?.x||0;object._scrollAnchorAppliedY=offset?.y||0;}export function _applyScrollAnchorRotation(object,offset,cfg,baseRotX=0,baseRotY=0,baseRotZ=0){if(!object||!offset?.active)return;const progress=Math.max(0,Math.min(1,offset.progress??0));const targetRotX=cfg.scrollAnchorRotationX||0;const targetRotY=cfg.scrollAnchorRotationY||0;const targetRotZ=cfg.scrollAnchorRotationZ||0;object.rotation.x+=targetRotX*progress*_DEG2RAD;object.rotation.y+=targetRotY*progress*_DEG2RAD;object.rotation.z+=targetRotZ*progress*_DEG2RAD;}export function _applyScrollProgressTransform(object,offset,cfg,basePosX=0,basePosY=0,basePosZ=0,baseScale=1){if(!object||!offset?.active||!cfg.scrollProgressTransformEnabled)return;const progress=Math.max(0,Math.min(1,offset.progress??0));const offsetX=cfg.scrollProgressPositionX??0;const offsetY=cfg.scrollProgressPositionY??0;const offsetZ=cfg.scrollProgressPositionZ??0;const scaleMultiplier=cfg.scrollProgressScale??1;object.position.x+=offsetX*progress;object.position.y+=offsetY*progress;object.position.z+=offsetZ*progress;const scaleAtProgress=1+(scaleMultiplier-1)*progress;object.scale.multiplyScalar(scaleAtProgress);}export function _resetScrollAnchorApplied(object){if(!object)return;object._scrollAnchorAppliedX=0;object._scrollAnchorAppliedY=0;}export function _applyCoordinatorAutoRotate(object,cfg,dt,paused=false){if(!object)return;if(paused||!(cfg?.enableAutoRotate??false)||dt<=0){object.userData._coordAutoRotateY=0;return;}const rotateSpeed=cfg.autoRotateSpeed??.5;object.userData._coordAutoRotateY=(object.userData._coordAutoRotateY||0)+dt*rotateSpeed;object.rotation.y+=object.userData._coordAutoRotateY;}export function _isMobileInteraction(e,cfg){return cfg?.responsiveIsMobile||e?.pointerType===\"touch\"||e?.pointerType===\"pen\"||e?.type?.startsWith?.(\"touch\");}export function _findImport3DScrollContainer(node){if(typeof window===\"undefined\")return null;let current=node?.parentElement||null;while(current&&current!==document.body){const style=window.getComputedStyle(current);const overflowY=style.overflowY||style.overflow;const canScroll=(overflowY===\"auto\"||overflowY===\"scroll\"||overflowY===\"overlay\")&&current.scrollHeight>current.clientHeight+4;if(canScroll)return current;current=current.parentElement;}return document.scrollingElement||document.documentElement||document.body||null;}export function applyModelTransform(st,cfg){if(!st.model)return;const wrapper=st.model;// 1. Reset position & rotation to measure clean bounding box\nwrapper.position.set(0,0,0);wrapper.rotation.set(0,0,0);// 2. Compute bounding box center after scaling (mesh-only to exclude bones)\n_tmpBox3.copy(_computeMeshOnlyBoundingBox(wrapper));const boxCenter=_tmpBox3.getCenter(_tmpVec3A);// 3. Center model at origin + apply position offset (no alignment - always center)\nwrapper.position.set(-boxCenter.x+(cfg.modelOffsetX||0),-boxCenter.y+(cfg.modelOffsetY||0),-boxCenter.z+(cfg.modelOffsetZ||0));st.modelBaseX=wrapper.position.x;st.modelBaseY=wrapper.position.y;st.modelBaseZ=wrapper.position.z;// 4. Apply rotation (degrees → radians) around model center\nwrapper.rotation.set((cfg.modelRotationX||0)*_DEG2RAD,(cfg.modelRotationY||0)*_DEG2RAD,(cfg.modelRotationZ||0)*_DEG2RAD);// 5. Orbit target stays at origin → model can move freely in space\nst.controls.target.set(0,0,0);st.controls.update();// 6. Ground + shadow camera based on final model bounds\n_tmpBox3.copy(_computeMeshOnlyBoundingBox(wrapper));st.ground.position.y=_tmpBox3.min.y-.001;st.groundBaseY=st.ground.position.y;st.groundBaseZ=st.ground.position.z;const ss=_tmpBox3.getSize(_tmpVec3B);const maxS=Math.max(ss.x,ss.y,ss.z)*1.5;st.dirLight.shadow.camera.left=-maxS;st.dirLight.shadow.camera.right=maxS;st.dirLight.shadow.camera.top=maxS;st.dirLight.shadow.camera.bottom=-maxS;st.dirLight.shadow.camera.updateProjectionMatrix();st.floatBaseY=wrapper.position.y;st.floatBaseRotX=wrapper.rotation.x;st.floatBaseRotY=wrapper.rotation.y;st.floatBaseRotZ=wrapper.rotation.z;}export function _syncGroundToModel(st,cfg=null,offset=null){if(!st?.model||!st.ground)return;st.ground.position.x=st.model._scrollAnchorAppliedX||0;const hasFollowRotation=!!(offset?.active&&cfg&&(cfg.scrollAnchorRotationX||cfg.scrollAnchorRotationY||cfg.scrollAnchorRotationZ));if(hasFollowRotation){// Follow rotation changes the actual bottom of the model; keep the\n// receiver plane under that bottom instead of blindly adding scroll Y.\n_tmpBox3.copy(_computeMeshOnlyBoundingBox(st.model));st.ground.position.y=_tmpBox3.min.y-.001;}else{st.ground.position.y=(st.groundBaseY??st.ground.position.y)+(st.model._scrollAnchorAppliedY||0);}st.ground.position.z=st.groundBaseZ??0;}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_isMobileInteraction\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_resetScrollAnchorApplied\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_restartAppearPlayback\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getScrollLayoutRect\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getScrollLayoutViewport\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_syncScrollAnchorAppear\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_applyScrollProgressTransform\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_findImport3DScrollContainer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_hasAppearTransformMotion\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_resetAppearTransformOffset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_shouldReplayAppear\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_applyScrollAnchorRotation\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_markScrollLayoutDirty\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getScrollAnchorOffset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_applyCoordinatorAutoRotate\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_syncGroundToModel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_applyAppearTransformOffset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"applyModelTransform\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_applyScrollAnchorOffset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getScrollTransformProgressOffset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 9. CONFIG RESOLUTION API\nimport{THREE}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{_DEG2RAD,_SCROLL_SMOOTHING_SPEED}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{_resolveScrollAnchorY}from\"https://framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js\";import{materialHash,lightingHash,envHash,effectsHash,appearReplayHash,sceneConfigHash}from\"https://framerusercontent.com/modules/aFcmtpYRlhyp7w3gDzcI/L0O59n8ERYAkLQU9GKye/hashes.js\";export function _getMeshAnimationDesired(anim,progress=1){const t=Math.max(0,Math.min(1,Number(progress)||0));const scalarScale=Number.isFinite(Number(anim?.scale))?Number(anim.scale):1;const position=_parseCommaVector3(anim?.position,{x:anim?.posX??0,y:anim?.posY??0,z:anim?.posZ??0});const rotation=_parseCommaVector3(anim?.rotation,{x:anim?.rotX??0,y:anim?.rotY??0,z:anim?.rotZ??0});const scale=_parseCommaVector3(anim?.scale,{x:anim?.scaleX??scalarScale,y:anim?.scaleY??scalarScale,z:anim?.scaleZ??scalarScale});return{posX:position.x*t,posY:position.y*t,posZ:position.z*t,rotX:rotation.x*t,rotY:rotation.y*t,rotZ:rotation.z*t,scaleX:1+(scale.x-1)*t,scaleY:1+(scale.y-1)*t,scaleZ:1+(scale.z-1)*t,opacity:1+((anim?.opacity??1)-1)*t};}export function _getObjectEventTransform(config,prefix){const position=_parseCommaVector3(config?.[`${prefix}Position`],{x:0,y:0,z:0});const rotation=_parseCommaVector3(config?.[`${prefix}Rotation`],{x:0,y:0,z:0});const scaleValue=config?.[`${prefix}Scale`];const scalarScale=Number(scaleValue);const scale=scaleValue!==\"\"&&Number.isFinite(scalarScale)?{x:scalarScale,y:scalarScale,z:scalarScale}:_parseCommaVector3(scaleValue,{x:1,y:1,z:1});return{position,rotation,scale};}export function _getObjectEventHoverBaseTransform(obj){if(!obj)return null;obj.userData=obj.userData||{};if(!obj.userData.__import3DHoverBaseTransform){obj.userData.__import3DHoverBaseTransform={position:obj.position.clone(),rotation:obj.rotation.clone(),scale:obj.scale.clone()};}const base=obj.userData.__import3DHoverBaseTransform;return{position:base.position.clone(),rotation:base.rotation.clone(),scale:base.scale.clone()};}export function _clearObjectEventHoverBaseTransform(obj){if(!obj?.userData)return;delete obj.userData.__import3DHoverBaseTransform;}export function _makeObjectEventTransformTargets(obj,config,prefix){const transform=_getObjectEventTransform(config,prefix);const hoverBase=prefix===\"hoverTransform\"?_getObjectEventHoverBaseTransform(obj):null;const origPosition=hoverBase?.position??obj.position.clone();const origRotation=hoverBase?.rotation??obj.rotation.clone();const origScale=hoverBase?.scale??obj.scale.clone();return{origPosition,origRotation,origScale,targetPosition:origPosition.clone().add(new THREE.Vector3(transform.position.x,transform.position.y,transform.position.z)),targetRotation:new THREE.Euler(origRotation.x+transform.rotation.x*_DEG2RAD,origRotation.y+transform.rotation.y*_DEG2RAD,origRotation.z+transform.rotation.z*_DEG2RAD,origRotation.order),targetScale:new THREE.Vector3(origScale.x*Math.max(.001,transform.scale.x),origScale.y*Math.max(.001,transform.scale.y),origScale.z*Math.max(.001,transform.scale.z))};}export function _resolveResponsiveTransform(transform,useMobile){return resolveThreeJSRuntimeTransform(transform,{useMobile});}export function _resolveResponsivePosition(position,useMobile){return resolveThreeJSRuntimePosition(position,{useMobile});}export function _hasOwnProp(obj,key){return!!obj&&Object.prototype.hasOwnProperty.call(obj,key);}export function _mergeTopLevelTransformControls(props,transform={}){const merged={...transform||{}};if(_hasOwnProp(props,\"modelScale\"))merged.scale=props.modelScale;if(_hasOwnProp(props,\"modelPosition\"))merged.position=props.modelPosition;if(_hasOwnProp(props,\"modelRotation\"))merged.rotation=props.modelRotation;return merged;}export function _mergeTopLevelAppearControls(props){const dissolve={...props?.dissolveTransition||{}};const transform={...dissolve.transform||{}};if(_hasOwnProp(props,\"appearReplay\"))dissolve.replay=props.appearReplay;if(_hasOwnProp(props,\"appearTransformScale\"))transform.scale=props.appearTransformScale;if(_hasOwnProp(props,\"appearTransformPosition\"))transform.position=props.appearTransformPosition;if(_hasOwnProp(props,\"appearTransformRotation\"))transform.rotation=props.appearTransformRotation;return{...dissolve,transform};}export function _mergeTopLevelScrollTransformControls(props){const position=props?.position||{};const scrollTarget={...position.scrollTarget||{}};const mobileScrollTarget={...position.mobileScrollTarget||{}};position.scrollTransform=true;if(_hasOwnProp(props,\"scrollTransformMatch\"))position.scrollTransformMatch=props.scrollTransformMatch;if(_hasOwnProp(props,\"scrollTransformAnchor\"))position.scrollAnchorY=props.scrollTransformAnchor;if(_hasOwnProp(props,\"scrollTransformScale\"))scrollTarget.scale=props.scrollTransformScale;if(_hasOwnProp(props,\"scrollTransformPosition\"))scrollTarget.position=props.scrollTransformPosition;if(_hasOwnProp(props,\"scrollTransformRotation\"))scrollTarget.rotation=props.scrollTransformRotation;return{...position,scrollTarget,mobileScrollTarget};}export function _mergeTopLevelRuntimeControls(props,transform={}){const isRoleGroup=props?.role===\"group\";return{...props,asGroup:isRoleGroup||!!props?.asGroup,transform:_mergeTopLevelTransformControls(props,transform),dissolveTransition:_mergeTopLevelAppearControls(props),position:_mergeTopLevelScrollTransformControls(props)};}export function _parseCommaVector3(value,fallback={x:0,y:0,z:0}){if(Array.isArray(value)){return{x:Number.isFinite(Number(value[0]))?Number(value[0]):fallback.x,y:Number.isFinite(Number(value[1]))?Number(value[1]):fallback.y,z:Number.isFinite(Number(value[2]))?Number(value[2]):fallback.z};}if(value&&typeof value===\"object\"){return{x:Number.isFinite(Number(value.x))?Number(value.x):fallback.x,y:Number.isFinite(Number(value.y))?Number(value.y):fallback.y,z:Number.isFinite(Number(value.z))?Number(value.z):fallback.z};}if(typeof value!==\"string\")return fallback;const parts=value.trim().split(/[\\s,]+/).map(part=>Number(part));return{x:Number.isFinite(parts[0])?parts[0]:fallback.x,y:Number.isFinite(parts[1])?parts[1]:fallback.y,z:Number.isFinite(parts[2])?parts[2]:fallback.z};}export function resolveThreeJSRuntimeTransform(transform,options={}){const width=typeof options===\"number\"?options:Number(options?.width||0);const forcedMobile=typeof options===\"boolean\"?options:options?.useMobile;const desktop=transform?.desktop??transform??{};const breakpoint=transform?.breakpoint??768;const useMobile=forcedMobile!==undefined?!!forcedMobile:!!width&&width<=breakpoint;const desktopPosition=_parseCommaVector3(desktop.position,{x:desktop.offX??0,y:desktop.offY??0,z:desktop.offZ??0});const desktopRotation=_parseCommaVector3(desktop.rotation,{x:desktop.rotX??0,y:desktop.rotY??0,z:desktop.rotZ??0});const desktopResolved={...desktop,offX:desktopPosition.x,offY:desktopPosition.y,offZ:desktopPosition.z,rotX:desktopRotation.x,rotY:desktopRotation.y,rotZ:desktopRotation.z};if(!useMobile)return desktopResolved;const nestedMobile=transform?.mobile??{};const mobilePosition=_parseCommaVector3(transform?.mobilePosition??nestedMobile.position,{x:transform?.mobileOffX??nestedMobile.offX,y:transform?.mobileOffY??nestedMobile.offY,z:transform?.mobileOffZ??nestedMobile.offZ});const mobileRotation=_parseCommaVector3(transform?.mobileRotation??nestedMobile.rotation,{x:transform?.mobileRotX??nestedMobile.rotX,y:transform?.mobileRotY??nestedMobile.rotY,z:transform?.mobileRotZ??nestedMobile.rotZ});const mobile={enabled:transform?.mobileEnabled??nestedMobile.enabled,scale:transform?.mobileScale??nestedMobile.scale,offX:mobilePosition.x,offY:mobilePosition.y,offZ:mobilePosition.z,rotX:mobileRotation.x,rotY:mobileRotation.y,rotZ:mobileRotation.z};if(!mobile.enabled)return desktopResolved;return{...desktopResolved,...mobile,scale:mobile.scale??desktopResolved.scale,offX:mobile.offX??desktopResolved.offX,offY:mobile.offY??desktopResolved.offY,offZ:mobile.offZ??desktopResolved.offZ,rotX:mobile.rotX??desktopResolved.rotX,rotY:mobile.rotY??desktopResolved.rotY,rotZ:mobile.rotZ??desktopResolved.rotZ};}export function resolveThreeJSRuntimeSubSceneItem(item){if(!item)return item;const position=_parseCommaVector3(item.position,{x:item.offX??0,y:item.offY??0,z:item.offZ??0});const rotation=_parseCommaVector3(item.rotation,{x:item.rotX??0,y:item.rotY??0,z:item.rotZ??0});return{...item,offX:position.x,offY:position.y,offZ:position.z,rotX:rotation.x,rotY:rotation.y,rotZ:rotation.z};}export function resolveThreeJSRuntimeMeshAnimationItem(item){if(!item)return item;const desired=_getMeshAnimationDesired(item);return{...item,position:{x:desired.posX,y:desired.posY,z:desired.posZ},rotation:{x:desired.rotX,y:desired.rotY,z:desired.rotZ},scale:{x:desired.scaleX,y:desired.scaleY,z:desired.scaleZ},posX:desired.posX,posY:desired.posY,posZ:desired.posZ,rotX:desired.rotX,rotY:desired.rotY,rotZ:desired.rotZ,scaleX:desired.scaleX,scaleY:desired.scaleY,scaleZ:desired.scaleZ};}export function resolveThreeJSRuntimeObjectEventItem(item){if(!item)return item;const click=item.click||{};const hover=item.hover||{};const press=item.press||{};const interaction=item.interaction||{};const drag=item.drag||{};const scroll=item.scroll||{};const clickEnabled=click.enabled===true;const hoverEnabled=hover.enabled===true;const pressEnabled=press.enabled===true;const interactionEnabled=interaction.enabled===true;const dragEnabled=drag.enabled===true;const scrollEnabled=scroll.enabled===true;let resolvedHoverEffect=\"none\";if(hoverEnabled){resolvedHoverEffect=hover.effect;if(!resolvedHoverEffect||resolvedHoverEffect===\"none\"){const transformScaleVal=hover.transformScale;const transformPositionVal=hover.transformPosition;const transformRotationVal=hover.transformRotation;const hoverScaleVal=hover.scale;const hasTransform=transformScaleVal!==undefined&&Number(transformScaleVal)!==1||transformPositionVal!==undefined&&transformPositionVal!==\"0,0,0\"||transformRotationVal!==undefined&&transformRotationVal!==\"0,0,0\";const hasScale=hoverScaleVal!==undefined&&Number(hoverScaleVal)!==1&&Number(hoverScaleVal)!==0;if(hasTransform){resolvedHoverEffect=\"transform\";}else if(hasScale){resolvedHoverEffect=\"scale\";}else{resolvedHoverEffect=\"highlight\";}}}return{...item,__hasInteractionEvent:clickEnabled||hoverEnabled||pressEnabled||interactionEnabled||dragEnabled||scrollEnabled,clickAction:clickEnabled?click.action??\"none\":\"none\",clickUrl:click.url,clickUrlNewTab:click.newTab,clickTargetMesh:click.targetObject,clickColor:click.color,clickAnimClip:click.animName,clickAnimLoop:click.animLoop,clickAnimReverse:click.animReverse,onMeshClick:click.onClick,onAnimationComplete:click.onAnimationComplete,hoverEffect:resolvedHoverEffect,hoverColor:hover.color,hoverScale:hover.scale,hoverTransformPosition:hover.transformPosition,hoverTransformRotation:hover.transformRotation,hoverTransformScale:hover.transformScale,hoverSpeed:hover.speed,cursorStyle:hover.cursor,hoverTooltip:hover.tooltip,pressEnabled,pressTransformPosition:press.transformPosition,pressTransformRotation:press.transformRotation,pressTransformScale:press.transformScale,autoRotate:interactionEnabled?interaction.autoRotate:false,meshAutoRotateSpeed:interaction.rotateSpeed,meshAutoRotateAxis:interaction.rotateAxis,mouseRotate:interactionEnabled?interaction.mouseRotate:false,meshMouseRotateIntensity:interaction.mouseRotateIntensity,onMeshEnter:hover.onEnter,onMeshLeave:hover.onLeave,draggable:dragEnabled,dragPlane:drag.plane,dragSnapBack:drag.snapBack,dragConstraint:drag.constraint,onDragStart:drag.onStart,onDragEnd:drag.onEnd,scrollEnabled};}export function _objectEventScrollAnimations(items=[]){return(items||[]).filter(item=>item?.meshName).filter(item=>item?.scroll?.enabled).map(item=>({...item.scroll||{},meshName:item.meshName,meshPath:item.meshPath,enabled:item.scroll?.enabled,scrollMatch:item.scroll?.match,scrollAnchorY:_resolveScrollAnchorY(item.scroll?.anchor,.5),scale:item.scroll?.scale,position:item.scroll?.position,rotation:item.scroll?.rotation,opacity:item.scroll?.opacity}));}export function resolveThreeJSRuntimePosition(position,options={}){const width=typeof options===\"number\"?options:Number(options?.width||0);const forcedMobile=typeof options===\"boolean\"?options:options?.useMobile;const desktop=position?.desktop??position??{};const breakpoint=position?.breakpoint??768;const useMobile=forcedMobile!==undefined?!!forcedMobile:!!width&&width<=breakpoint;if(!useMobile)return desktop;const nestedMobile=position?.mobile??{};const mobileEnabled=position?.mobileEnabled??nestedMobile.enabled;if(!mobileEnabled)return desktop;const desktopFollowTarget=desktop.followTarget??{};const desktopScrollTarget=desktop.scrollTarget??{};const mobileFollowTarget=nestedMobile.followTarget??{};const mobileScrollTarget=nestedMobile.scrollTarget??{};return{...desktop,...nestedMobile,followLayer:nestedMobile.followLayer,followMatch:nestedMobile.followMatch,transitionEnabled:nestedMobile.transitionEnabled,transitionTargetId:nestedMobile.transitionTargetId,scrollTransform:true,scrollTransformMatch:nestedMobile.scrollTransformMatch,followTarget:{...desktopFollowTarget,...mobileFollowTarget},scrollTarget:{...desktopScrollTarget,...mobileScrollTarget},mobileEnabled};}export function resolveThreeJSRuntimePositionConfig(props,options={}){const width=typeof options===\"number\"?options:Number(options?.width||0);const forcedMobile=typeof options===\"boolean\"?options:options?.useMobile;const position=props?.position||{};const nestedMobile=position?.mobile||{};const mobileBreakpoint=position?.breakpoint??768;const responsiveIsMobile=forcedMobile!==undefined?!!forcedMobile&&!!(position?.mobileEnabled??nestedMobile.enabled):!!width&&width<=mobileBreakpoint&&!!(position?.mobileEnabled??nestedMobile.enabled);const activePos=options?.activePosition??resolveThreeJSRuntimePosition(position,{width,useMobile:forcedMobile});const ui=props?.ui||{};const followMatch=String(activePos.followMatch??\"\").trim();const transformMatch=String(activePos.scrollTransformMatch??\"\").trim();const rawScrollTarget=activePos.scrollTarget??{};const scrollTargetPosition=_parseCommaVector3(rawScrollTarget.position,{x:rawScrollTarget.offX??0,y:rawScrollTarget.offY??0,z:rawScrollTarget.offZ??0});const scrollTargetRotation=_parseCommaVector3(rawScrollTarget.rotation,{x:rawScrollTarget.rotX??0,y:rawScrollTarget.rotY??0,z:rawScrollTarget.rotZ??0});const scrollTargetScaleRaw=rawScrollTarget.scale;const scrollTarget={offX:scrollTargetPosition.x,offY:scrollTargetPosition.y,offZ:scrollTargetPosition.z,rotX:scrollTargetRotation.x,rotY:scrollTargetRotation.y,rotZ:scrollTargetRotation.z,scale:scrollTargetScaleRaw!==undefined&&scrollTargetScaleRaw!==1?scrollTargetScaleRaw:null};const followEnabled=false;const transformEnabled=true;const transitionEnabled=false;const transitionTargetId=\"\";const anchorX=.5;const anchorY=_resolveScrollAnchorY(activePos.scrollAnchorY,.5);const followX=0;const followY=0;const followSmooth=1;return{activePosition:activePos,layoutPositionMode:activePos.mode??ui.positionMode??\"relative\",layoutLayerMatch:activePos.layerMatch??ui.positionLayerMatch??\"\",layoutTop:activePos.top??ui.positionTop??0,layoutLeft:activePos.left??ui.positionLeft??0,layoutRight:activePos.right??ui.positionRight??null,layoutBottom:activePos.bottom??ui.positionBottom??null,layoutZIndex:activePos.zIndex??ui.positionZIndex??10,followEnabled,followLayerEnabled:followEnabled,scrollAnchorEnabled:followEnabled,followMatch,scrollAnchorMatch:followMatch,transformEnabled,scrollProgressTransformEnabled:transformEnabled,transformMatch,scrollTransformAnchorMatch:transformMatch,transitionEnabled,scrollAnchorTransitionEnabled:transitionEnabled,transitionTargetId,scrollAnchorTransitionTargetId:transitionTargetId,followX,followY,followSmooth,scrollAnchorStrengthX:followX,scrollAnchorStrengthY:followY,scrollAnchorSmoothing:followSmooth,anchorX,anchorY,scrollAnchorX:anchorX,scrollAnchorY:anchorY,scrollTarget,scrollAnchorRotationX:transformEnabled?scrollTarget.rotX:0,scrollAnchorRotationY:transformEnabled?scrollTarget.rotY:0,scrollAnchorRotationZ:transformEnabled?scrollTarget.rotZ:0,scrollProgressPositionX:scrollTarget.offX,scrollProgressPositionY:scrollTarget.offY,scrollProgressPositionZ:scrollTarget.offZ,scrollProgressScale:scrollTarget.scale,responsiveIsMobile};}export function resolveThreeJSRuntimeInteractionConfig(props,options={}){const int=props?.interaction||{};const fx=props?.effects||{};const disableMouseRotation=!!options?.disableMouseRotation;const movedInteractionProp=(key,defaultValue)=>{if(!_hasOwnProp(props,key))return int[key]??defaultValue;return props[key];};const animationClip=movedInteractionProp(\"animClip\",\"\");const animationMode=String(animationClip??\"\").trim()?\"single\":\"all\";return{enableOrbitControls:int.orbit??true,enableZoom:int.zoom??false,enableAutoRotate:int.autoRotate??true,autoRotateSpeed:int.rotateSpeed??.5,enableAnimation:true,animationMode,animationClip,animationSpeed:movedInteractionProp(\"animSpeed\",1),animationBlendDuration:.32,animationLoopMode:movedInteractionProp(\"animLoopMode\",\"repeat\"),animationRestartOnSwitch:false,animationSyncPhase:true,animationWarp:false,animationModelHoverGate:int.modelHoverGate??false,animationWarmClips:true,enableMouseRotation:disableMouseRotation?false:int.mouseRotate??false,mouseRotationIntensity:int.mouseRotateIntensity??.1,enableParticles:int.particles??false,particleCount:int.particleCount??2e3,particleSize:int.particleSize??.05,particleColor:int.particleColor??\"#00ffff\",particleSpeed:int.particleSpeed??1,particleSpread:int.particleSpread??10,enableFloat:int.float??fx.float??true,floatAmplitude:int.floatAmp??fx.floatAmp??.8,floatSpeed:int.floatSpeed??fx.floatSpeed??.4,hasAnimationOnceCompleteHandler:!!props?.onAnimationOnceComplete,onAnimationOnceComplete:props?.onAnimationOnceComplete||null};}export function resolveThreeJSRuntimeConfig(props,rectWidth=0){const tr=resolveThreeJSRuntimeTransform(props?.transform||{},{width:rectWidth});const cam=props?.camera||{};const env=props?.environment||{};const int=resolveThreeJSRuntimeInteractionConfig(props);const mat=props?.material||{};const fx=props?.effects||{};const extraLights=props?.extraLights??[];const scenesRaw=props?.scenes||[];const subSceneItems=scenesRaw.map(item=>{if(!item)return item;const resolved=resolveThreeJSRuntimeSubSceneItem(item);const src=item.modelSource||\"url\";const modelUrl=src===\"file\"?item.modelFile||\"\":item.modelUrl||\"\";return{...resolved,modelUrl};});const cfg={autoMergeMeshes:props?.autoMergeMeshes??false,modelScale:tr.scale??1,modelOffsetX:tr.offX??0,modelOffsetY:tr.offY??0,modelOffsetZ:tr.offZ??0,modelRotationX:tr.rotX??0,modelRotationY:tr.rotY??0,modelRotationZ:tr.rotZ??0,cameraType:cam.cameraType??\"perspective\",cameraPositionX:cam.x??-1,cameraPositionY:cam.y??2,cameraPositionZ:cam.z??10,orthoZoom:cam.orthoZoom??1,stereoEyeSep:cam.stereoEyeSep??.064,fov:cam.fov??35,backgroundColor:env.bgColor??\"#1c1c1c\",transparentBackground:env.transparent??true,enableEnvironment:env.enabled??true,environmentType:env.type??\"procedural\",environmentPreset:env.preset??\"studio\",hdriPreset:env.hdriPreset??\"studio_small_09\",customHdriUrl:env.customUrl??\"\",environmentIntensity:env.intensity??1,showEnvironmentBackground:env.showBg??false,ambientLightIntensity:env.ambient??.5,directionalLightIntensity:env.dirIntensity??1,directionalLightColor:env.dirColor??\"#ffffff\",dirLightPosX:env.dirPosX??5,dirLightPosY:env.dirPosY??10,dirLightPosZ:env.dirPosZ??7,enableShadows:env.shadows??false,shadowMapSize:parseInt(env.shadowSize??\"1024\",10)||1024,shadowBias:env.shadowBias??-1e-4,shadowNormalBias:env.shadowNormalBias??.02,extraLights,...int,materialPreset:mat.preset??\"none\",sketchBaseColor:mat.sketchBaseColor??\"#f4f2ec\",sketchLineColor:mat.sketchLineColor??\"#050505\",sketchLineThickness:mat.sketchLineThickness??.045,sketchSteps:mat.sketchSteps??3,animeLineThickness:mat.animeLineThickness??.06,animeLineColor:mat.animeLineColor??\"#050505\",animeLineEmissiveColor:mat.animeLineEmissiveColor??\"#ffffff\",animeLineEmissiveIntensity:mat.animeLineEmissiveIntensity??.08,overrideMaterial:mat.override??false,metalness:mat.metalness??0,roughness:mat.roughness??.5,clearcoat:mat.clearcoat??0,clearcoatRoughness:mat.clearcoatRoughness??0,transmission:mat.transmission??0,thickness:mat.thickness??0,ior:mat.ior??1.5,iridescence:mat.iridescence??0,iridescenceIOR:mat.iridescenceIOR??1.3,sheen:mat.sheen??0,sheenRoughness:mat.sheenRoughness??.3,sheenColor:mat.sheenColor??\"#ffffff\",envMapIntensity:mat.envMapIntensity??1,reflectivity:mat.reflectivity??.5,emissiveIntensity:mat.emissiveIntensity??0,emissiveColor:mat.emissiveColor??\"#000000\",opacity:mat.opacity??1,wireframe:mat.wireframe??false,materialTransitionDuration:mat.transitionDuration??.3,bloomEnabled:fx.bloom??false,bloomStrength:fx.bloomStr??.5,bloomThreshold:fx.bloomThresh??.8,bloomRadius:fx.bloomRad??.5,toneMapping:fx.toneMapping??\"aces\",exposure:fx.exposure??1.2,enableFXAA:fx.fxaa??true,enableColorGrading:fx.colorGrading??false,brightness:fx.brightness??0,contrast:fx.contrast??1,saturation:fx.saturation??1,enableVignette:fx.vignette??false,vignetteOffset:fx.vigOffset??1,vignetteDarkness:fx.vigDark??1.2,enableChromaticAberration:fx.chromAberr??false,chromaticAberrationStrength:fx.chromStr??.005,enableFilmGrain:fx.filmGrain??false,filmGrainIntensity:fx.grainInt??.04,enablePixelate:fx.pixelate??false,pixelateShape:fx.pixelShape??\"rectangle\",pixelateSize:fx.pixelSize??23,pixelateStretch:fx.pixelStretch??0,// Pixelate keeps the source colors and uses solid cells by default.\n// Keep the fields in the resolved config for compatibility with older\n// saved component data, but do not allow legacy values to re-enable\n// the removed gap/color-trim behavior.\npixelateGap:0,pixelateColorTrim:0,pixelateAverageColor:fx.pixelAverageColor??42,pixelateDissolveMode:fx.pixelDissolveMode??\"dropout\",pixelateDissolve:fx.pixelDissolve??0,pixelateFalloff:fx.pixelFalloff??0,pixelateKnockout:fx.pixelKnockout??true,// Kept as compatibility fields for older saved component data.\npixelateNormalEdgeStrength:fx.pixelNormalEdge??.3,pixelateDepthEdgeStrength:fx.pixelDepthEdge??.4,enableSSAO:fx.ssao??false,ssaoRadius:fx.ssaoRadius??8,ssaoMinDistance:fx.ssaoMinDist??.001,ssaoMaxDistance:fx.ssaoMaxDist??.1,enableDOF:cam.dof??false,dofFocus:cam.dofFocus??10,dofAperture:cam.dofAperture??.025,dofMaxBlur:cam.dofMaxBlur??.01,subSceneItems};cfg._materialHash=[cfg.materialPreset,cfg.overrideMaterial,cfg.metalness,cfg.roughness,cfg.clearcoat,cfg.clearcoatRoughness,cfg.transmission,cfg.thickness,cfg.ior,cfg.iridescence,cfg.iridescenceIOR,cfg.sheen,cfg.sheenRoughness,cfg.sheenColor,cfg.envMapIntensity,cfg.emissiveIntensity,cfg.emissiveColor,cfg.reflectivity,cfg.opacity,cfg.wireframe].join(\"|\");cfg._lightingHash=[cfg.ambientLightIntensity,cfg.directionalLightIntensity,cfg.directionalLightColor,cfg.dirLightPosX,cfg.dirLightPosY,cfg.dirLightPosZ,cfg.enableShadows,cfg.shadowMapSize,cfg.shadowBias,cfg.shadowNormalBias,JSON.stringify((cfg.extraLights||[]).map(light=>({enabled:light?.enabled,type:light?.lightType,color:light?.color,intensity:light?.intensity,posX:light?.posX,posY:light?.posY,posZ:light?.posZ,distance:light?.distance,decay:light?.decay,angle:light?.angle,penumbra:light?.penumbra,targetX:light?.targetX,targetY:light?.targetY,targetZ:light?.targetZ,castShadow:light?.castShadow})))].join(\"|\");cfg._envHash=[cfg.enableEnvironment,cfg.environmentType,cfg.environmentPreset,cfg.hdriPreset,cfg.customHdriUrl,cfg.environmentIntensity,cfg.showEnvironmentBackground,cfg.transparentBackground,cfg.backgroundColor].join(\"|\");cfg._effectsHash=[cfg.bloomEnabled,cfg.bloomStrength,cfg.bloomThreshold,cfg.bloomRadius,cfg.toneMapping,cfg.exposure,cfg.enableFXAA,cfg.enableColorGrading,cfg.brightness,cfg.contrast,cfg.saturation,cfg.enableVignette,cfg.vignetteOffset,cfg.vignetteDarkness,cfg.enableChromaticAberration,cfg.chromaticAberrationStrength,cfg.enableFilmGrain,cfg.filmGrainIntensity,cfg.enablePixelate,cfg.pixelateShape,cfg.pixelateSize,cfg.pixelateStretch,cfg.pixelateGap,cfg.pixelateColorTrim,cfg.pixelateAverageColor,cfg.pixelateDissolveMode,cfg.pixelateDissolve,cfg.pixelateFalloff,cfg.pixelateKnockout,cfg.enableSSAO,cfg.ssaoRadius,cfg.ssaoMinDistance,cfg.ssaoMaxDistance,cfg.enableDOF,cfg.dofFocus,cfg.dofAperture,cfg.dofMaxBlur].join(\"|\");cfg._sceneConfigHash=[cfg._materialHash,cfg._lightingHash,cfg._envHash,cfg._effectsHash].join(\"||\");return cfg;}export function resolveThreeJSRuntimeAppearConfig(props){const{dissolveTransition:dissolve={}}=props;const transform=dissolve.transform??{};const noise=dissolve.noise??{};const edge=dissolve.edge??{};const particles=dissolve.particles??{};const duration=dissolve.duration??1.5;const appearPosition=_parseCommaVector3(transform.position,{x:transform.offX??0,y:transform.offY??0,z:transform.offZ??0});const appearRotation=_parseCommaVector3(transform.rotation,{x:transform.rotX??0,y:transform.rotY??0,z:transform.rotZ??0});const offX=appearPosition.x;const offY=appearPosition.y;const offZ=appearPosition.z;const scale=transform.scale??1;const rotX=appearRotation.x;const rotY=appearRotation.y;const rotZ=appearRotation.z;const blurReveal=dissolve.blurReveal??false;const blurRevealIntensity=dissolve.blurIntensity??12;const blurRevealDuration=dissolve.blurDuration??.8;const noiseScale=noise.noiseScale??.25;const amplitude=noise.amplitude??16;const edgeWidth=edge.edgeWidth??.8;const emissiveColor=edge.emissiveColor??\"#ff7a32\";const emissiveIntensity=edge.emissiveIntensity??3;return{dissolveEnabled:dissolve.enabled??true,appearReplay:props?.appearReplay??dissolve.replay??true,duration,dissolveDuration:duration,offX,offY,offZ,scale,rotX,rotY,rotZ,appearOffsetX:offX,appearOffsetY:offY,appearOffsetZ:offZ,appearScale:scale,appearRotateX:rotX,appearRotateY:rotY,appearRotateZ:rotZ,blurReveal,blurRevealIntensity,blurRevealDuration,noiseScale,amplitude,dissolveNoiseScale:noiseScale,dissolveAmplitude:amplitude,edgeWidth,emissiveColor,emissiveIntensity,dissolveEdgeWidth:edgeWidth,dissolveEmissiveColor:emissiveColor,dissolveEmissiveIntensity:emissiveIntensity,dissolveParticlesEnabled:particles.enabled??true,dissolveParticleBaseSize:particles.baseSize??80,dissolveParticleColor:particles.color??\"#ff7a32\",dissolveParticleSpeed:particles.speed??.02,dissolveParticleWaveAmp:particles.waveAmp??0,dissolveParticleVelX:particles.velX??2.5,dissolveParticleVelY:particles.velY??2,dissolveParticleMaxCount:particles.maxCount??8e3,progressiveLoading:dissolve.progressive??false,progressiveFadeDuration:dissolve.progressiveFade??.8};}export function buildThreeJSRuntimeSettings(props,options={}){const rectWidth=options?.rectWidth??options?.width??options?.clientWidth??0;const runtimeCfg=resolveThreeJSRuntimeConfig(props,rectWidth);const positionCfg=resolveThreeJSRuntimePositionConfig(props,{width:rectWidth,useMobile:options?.useMobile});const appearCfg=resolveThreeJSRuntimeAppearConfig(props);const perf=props?.performance||{};const ui=props?.ui||{};const meshInteractionsRaw=(props?.meshInteractions??[]).map(resolveThreeJSRuntimeObjectEventItem);const meshAnimationsRaw=[...props?.meshAnimations??[],..._objectEventScrollAnimations(props?.meshInteractions??[])].map(resolveThreeJSRuntimeMeshAnimationItem);const meshAnimationItems=(meshAnimationsRaw||[]).filter(anim=>anim?.enabled&&anim?.meshName);const meshAnimationsLookupKey=JSON.stringify(meshAnimationItems.map(anim=>anim?.meshPath?`path:${anim.meshPath}`:`name:${String(anim.meshName).trim().toLowerCase()}`));const meshInteractionItems=(meshInteractionsRaw||[]).filter(ic=>ic?.meshName&&(ic.__hasInteractionEvent??true));const meshInteractionTargetNames=meshInteractionItems.map(ic=>String(ic.meshName).trim().toLowerCase());const meshInteractionLookupKey=JSON.stringify(meshInteractionItems.map(ic=>ic?.meshPath?`path:${ic.meshPath}`:`name:${String(ic.meshName).trim().toLowerCase()}`));const meshObjectTransformItems=meshInteractionsRaw.filter(ic=>ic?.meshPath&&ic?.transform&&Object.keys(ic.transform).length>0);const meshObjectTransformKey=JSON.stringify(meshObjectTransformItems.map(ic=>({meshPath:ic.meshPath,transform:ic.transform})));const meshInteractionRuntimeKey=JSON.stringify(meshInteractionItems.map(ic=>({meshName:ic?.meshName,meshPath:ic?.meshPath,transform:ic?.transform,clickAction:ic?.clickAction,clickUrl:ic?.clickUrl,clickTargetMesh:ic?.clickTargetMesh,clickColor:ic?.clickColor,clickAnimClip:ic?.clickAnimClip,clickAnimLoop:ic?.clickAnimLoop,clickAnimReverse:ic?.clickAnimReverse,autoRotate:ic?.autoRotate,meshAutoRotateSpeed:ic?.meshAutoRotateSpeed,meshAutoRotateAxis:ic?.meshAutoRotateAxis,mouseRotate:ic?.mouseRotate,meshMouseRotateIntensity:ic?.meshMouseRotateIntensity,hoverEffect:ic?.hoverEffect,hoverColor:ic?.hoverColor,hoverScale:ic?.hoverScale,hoverTransformPosition:ic?.hoverTransformPosition,hoverTransformRotation:ic?.hoverTransformRotation,hoverTransformScale:ic?.hoverTransformScale,hoverSpeed:ic?.hoverSpeed,pressEnabled:ic?.pressEnabled,pressTransformPosition:ic?.pressTransformPosition,pressTransformRotation:ic?.pressTransformRotation,pressTransformScale:ic?.pressTransformScale,draggable:ic?.draggable,dragPlane:ic?.dragPlane,dragSnapBack:ic?.dragSnapBack,dragConstraint:ic?.dragConstraint})));const qualityMode=options?.qualityMode||\"balanced\";const isMobile=!!positionCfg.responsiveIsMobile;const performanceMode=perf.mode??ui.performanceMode??true;const performanceMaxPixelCount=perf.maxPixelCount??ui.performanceMaxPixelCount??3e6;const useMobilePerfProfile=performanceMode&&isMobile;const isPerformance=qualityMode===\"performance\";const isBalanced=qualityMode===\"balanced\";const qualityMaxPixelBudget=isPerformance?isMobile?12e5:18e5:isBalanced?isMobile?18e5:24e5:isMobile?18e5:performanceMaxPixelCount;const effectivePerformanceMaxPixelCount=qualityMaxPixelBudget>0?performanceMaxPixelCount>0?Math.min(performanceMaxPixelCount,qualityMaxPixelBudget):qualityMaxPixelBudget:performanceMaxPixelCount;const effectiveShadowMapSize=isPerformance?Math.min(runtimeCfg.shadowMapSize,256):isBalanced||useMobilePerfProfile?Math.min(runtimeCfg.shadowMapSize,512):runtimeCfg.shadowMapSize;const effectiveBloomEnabled=isPerformance?false:runtimeCfg.bloomEnabled;const effectiveEnableSSAO=isPerformance||isBalanced||useMobilePerfProfile?false:runtimeCfg.enableSSAO;const effectiveEnableDOF=isPerformance||isBalanced||useMobilePerfProfile?false:runtimeCfg.enableDOF;const effectiveEnableChromaticAberration=isPerformance||useMobilePerfProfile?false:runtimeCfg.enableChromaticAberration;const effectiveEnableFilmGrain=isPerformance||useMobilePerfProfile?false:runtimeCfg.enableFilmGrain;const effectiveParticleCount=isPerformance?Math.min(runtimeCfg.particleCount,500):useMobilePerfProfile||isBalanced?Math.min(runtimeCfg.particleCount,1e3):runtimeCfg.particleCount;const effectiveDissolveParticleMaxCount=isPerformance?Math.min(appearCfg.dissolveParticleMaxCount,1200):useMobilePerfProfile||isBalanced?Math.min(appearCfg.dissolveParticleMaxCount,3e3):appearCfg.dissolveParticleMaxCount;const cfg={...runtimeCfg,...positionCfg,...appearCfg,extraLights:runtimeCfg.extraLights??props?.extraLights??[],shadowMapSize:effectiveShadowMapSize,bloomEnabled:effectiveBloomEnabled,enableSSAO:effectiveEnableSSAO,enableDOF:effectiveEnableDOF,enableChromaticAberration:effectiveEnableChromaticAberration,enableFilmGrain:effectiveEnableFilmGrain,particleCount:effectiveParticleCount,dissolveParticleMaxCount:effectiveDissolveParticleMaxCount,performanceMode,webglActive:perf.webglActive??ui.webglActive??true,performanceDprCap:options?.dprCapDesktop??perf.dprCap??ui.performanceDprCap??(performanceMode?1.5:2),performanceMobileDprCap:options?.dprCapMobile??perf.mobileDprCap??ui.performanceMobileDprCap??1.5,performanceMaxPixelCount:effectivePerformanceMaxPixelCount,performanceLazyWebgl:perf.lazyWebgl??ui.performanceLazyWebgl??true,performancePauseHidden:options?.pauseHidden??perf.pauseHidden??ui.performancePauseHidden??true,performancePauseOffscreen:options?.pauseOffscreen??perf.pauseOffscreen??ui.performancePauseOffscreen??true,performanceStats:perf.stats??ui.performanceStats??false,performanceAntialias:isPerformance?false:perf.antialias??ui.performanceAntialias??!performanceMode,showControls:ui.showHints??true,showMeshHelper:ui.meshHelper??false,showStatsMonitor:ui.statsMonitor??false,statsMonitorPanel:ui.statsPanel??\"fps\",showGrid:ui.showGrid??false,showGridSize:ui.gridSize??10,showGridDivisions:ui.gridDivisions??10,showGridColor1:ui.gridColor1??\"rgba(255,255,255,0.25)\",showGridColor2:ui.gridColor2??\"rgba(255,255,255,0.1)\",showAxes:ui.showAxes??false,showAxesSize:ui.axesSize??3,showModelAxes:ui.showModelAxes??false,showModelAxesSize:ui.modelAxesSize??2,stopMotionInEditor:ui.stopInEditor??false,enableScrollAnimation:true,scrollSmoothing:_SCROLL_SMOOTHING_SPEED,responsiveIsMobile:isMobile,meshAnimations:meshAnimationsRaw,meshAnimationItems,hasEnabledMeshAnimations:meshAnimationItems.length>0,meshAnimationLookupKey:meshAnimationsLookupKey,meshInteractions:meshInteractionsRaw,meshInteractionItems,meshInteractionTargetNames,meshObjectTransformItems,meshObjectTransformKey,hasEnabledMeshInteractions:meshInteractionItems.length>0,hasDraggableMeshInteractions:meshInteractionItems.some(ic=>!!ic?.draggable),meshInteractionLookupKey,meshInteractionRuntimeKey};cfg._materialHash=materialHash(cfg);cfg._lightingHash=lightingHash(cfg);cfg._envHash=envHash(cfg);cfg._effectsHash=effectsHash(cfg);cfg._sceneConfigHash=sceneConfigHash(cfg);cfg._animationReplayHash=appearReplayHash(cfg);return cfg;}// #endregion\n\nexport const __FramerMetadata__ = {\"exports\":{\"_mergeTopLevelTransformControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimeConfig\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getObjectEventHoverBaseTransform\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimePositionConfig\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getMeshAnimationDesired\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_resolveResponsivePosition\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_makeObjectEventTransformTargets\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_mergeTopLevelRuntimeControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimeTransform\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimePosition\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimeSubSceneItem\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimeObjectEventItem\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_mergeTopLevelAppearControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimeAppearConfig\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_resolveResponsiveTransform\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_parseCommaVector3\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_getObjectEventTransform\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"buildThreeJSRuntimeSettings\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimeMeshAnimationItem\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_mergeTopLevelScrollTransformControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_clearObjectEventHoverBaseTransform\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_objectEventScrollAnimations\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveThreeJSRuntimeInteractionConfig\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_hasOwnProp\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./configResolution.map","// @ts-nocheck\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{updateNimbusTech}from\"https://framerusercontent.com/modules/5Y5eNnruVlEDN4Nlaxhn/992OACxl4zEJdAfDHdex/nimbusScroll.js\";// #region 23. SLOT COMPONENT\nimport{THREE,startTransition,useEffect,useRef,useState,useId,createPortal,RenderTarget,OrbitControls,_loadPostFxModules}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{_ORTHO_FRUSTUM,_DEG2RAD,_SCROLL_SMOOTHING_SPEED,TONE_MAPPINGS}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{_getImport3DBridgeState,_emitImport3DBridge,_subscribeImport3DBridge,_snapshotImport3DBridge}from\"https://framerusercontent.com/modules/k3J7THOMV5sPcC9EjGVq/b6mlYDX51KTLflCnOxsJ/bridge.js\";import{_webglCoordinator}from\"https://framerusercontent.com/modules/si06nShLsVx5iWJW7SK7/2JHazrj0zYD0ipOq3PQl/coordinator.js\";import{_debugImport3DRendererEvent,_isImport3DRendererBridgeActive}from\"https://framerusercontent.com/modules/YM17MJwxtWeSs0sFM9GB/4r44enqUb9DGkkm7wxsa/diagnostics.js\";import{VignetteShader,ChromaticAberrationShader,FilmGrainShader,AlphaRestoreShader,AlphaSavePass,ColorGradingShader,createFramerTilePixelatePass,applyEffectsChanges}from\"https://framerusercontent.com/modules/IdGzsHdzJFZjoerrm1R6/ZDt4dFJIJ9EMLZbVIXUQ/postprocessing.js\";import{_tmpVec3A,_tmpVec3B,_tmpBox3,_tmpStereoSize,_modelCache,_preloadInFlight,_origMaterialBackups}from\"https://framerusercontent.com/modules/e3Gn61f7n8O6N477csEc/XQABUbxjpsQJSmz595Po/state.js\";import{detectFormat,detectImageFormat,parseColor,_matchesLayerSelector}from\"https://framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js\";import{_findAnimationClip,_clearAnimationOnceCompleteListener,_warmAnimationActions,_playAnimations,_canAdvanceAnimationMixer}from\"https://framerusercontent.com/modules/OW6JuxITky0baeSUblwC/SQrxhGqqDBbtN2sdADeq/animationUtils.js\";import{_releaseEnvironmentMap,applyEnvironmentChanges}from\"https://framerusercontent.com/modules/yTDeUaM613tgGAJ9WKa4/jE52leYsnmj4KuWdBOo5/environment.js\";import{applyLightingChanges}from\"https://framerusercontent.com/modules/9w1GUetMBcd5tGkwVEaC/mW7mdtQJNCTLnn6MVRmg/lighting.js\";import{_getAutoFitRatio,_getOptimizedAnisotropy,_getOptimizedRenderMetrics,_runtimeNeedsPostFx,_postFxPipelineSignature,getFramerRuntimeMode}from\"https://framerusercontent.com/modules/VBWlX7Xj9c0TDGr87Yag/aMS7pZCDBphxkvSKFGKw/renderMetrics.js\";import{_removeStatsMonitor,_syncStatsMonitor}from\"https://framerusercontent.com/modules/s7jz5uIzZtPhhkq2KDZB/ItIOP5YatoakoLrZN8vu/statsMonitor.js\";import{_sanitizeAnimationClipsForObject,_computeMeshOnlyBoundingBox}from\"https://framerusercontent.com/modules/AFUuT451C58PCzmVhCV6/LtpaPYvKQJsZkRBrz1k0/object3DUtils.js\";import{getSharedGLTFLoader,getSharedFBXLoader,_loadFromZip,_cloneCachedModel,_disposeMaterialsOnly,_disposeModelFull,_loadModelDirect,disposeSubScene,_cleanupSkinnedScene}from\"https://framerusercontent.com/modules/ZJHKxOkDkbAZkHcbiSxh/dUmMyRmOORWdCMBkW5w2/modelLoading.js\";import{createDissolveParticles,updateDissolveParticles,syncParticleAttributes,disposeDissolveParticles,mapDissolveProgress,_storeAndReplacePlaceholder,_preloadTexturesProgressive,createDissolveMaterial,_startDissolveInForModel,loadImageAsSubScene,_backupMaterial,_restoreMaterial,_progressiveOrigMaterials,_restoreProgressiveMaterials,setModelFade,applyMaterialOverride}from\"https://framerusercontent.com/modules/Edc710chG3tFyabyrK1M/nazrAnvcxYaZjkQMA0fu/materialSystem.js\";import{_markScrollLayoutDirty,_getScrollAnchorOffset,_getScrollTransformProgressOffset,_syncScrollAnchorAppear,_hasAppearTransformMotion,_shouldReplayAppear,_restartAppearPlayback,_applyAppearTransformOffset,_resetAppearTransformOffset,_applyScrollAnchorOffset,_applyScrollAnchorRotation,_applyScrollProgressTransform,_resetScrollAnchorApplied,_applyCoordinatorAutoRotate,_isMobileInteraction,_findImport3DScrollContainer,applyModelTransform,_syncGroundToModel}from\"https://framerusercontent.com/modules/XlKFBNR7wMf9MHWMxVZK/nWj9ryT67KRfHxbqxqKO/sceneTransforms.js\";import{_syncModelHoverGatedAnimations,_setFadeAllScenes,_clearFadeCacheAllScenes,_syncSceneHashTrackers,_playConfiguredAnimation,_applySceneConfigChanges,_computeBVHForModel}from\"https://framerusercontent.com/modules/Ico5PLrXB0RNY2cRCaPV/itWMfldJwUT6Nn7u0Jm1/runtimeGlue.js\";import{_getMeshAnimationDesired,_clearObjectEventHoverBaseTransform,_makeObjectEventTransformTargets,_objectEventScrollAnimations,_resolveResponsivePosition,_resolveResponsiveTransform,_mergeTopLevelRuntimeControls,buildThreeJSRuntimeSettings,resolveThreeJSRuntimeAppearConfig,resolveThreeJSRuntimeConfig,resolveThreeJSRuntimeInteractionConfig,resolveThreeJSRuntimeMeshAnimationItem,resolveThreeJSRuntimeObjectEventItem,resolveThreeJSRuntimePositionConfig,resolveThreeJSRuntimeSubSceneItem}from\"https://framerusercontent.com/modules/RFE6e41gBPanm7J7Fw4E/Ht3zzQoaqP0VvoJSU4Zl/configResolution.js\";import{materialHash,lightingHash,envHash,effectsHash,appearReplayHash}from\"https://framerusercontent.com/modules/aFcmtpYRlhyp7w3gDzcI/L0O59n8ERYAkLQU9GKye/hashes.js\";import{_rootTooltipHandler,_setRootTooltipHandler,_tmpSubScenePivotEuler,_tmpSubScenePivotQuat,_tmpSubScenePivotOffset}from\"https://framerusercontent.com/modules/e3Gn61f7n8O6N477csEc/XQABUbxjpsQJSmz595Po/state.js\";import{easeInOutQuad}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{_getObjectEventScrollProgress}from\"https://framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js\";import{_getOptimizedDpr}from\"https://framerusercontent.com/modules/VBWlX7Xj9c0TDGr87Yag/aMS7pZCDBphxkvSKFGKw/renderMetrics.js\";import{sceneConfigHash}from\"https://framerusercontent.com/modules/aFcmtpYRlhyp7w3gDzcI/L0O59n8ERYAkLQU9GKye/hashes.js\";import{_getAnimationBlendOptions}from\"https://framerusercontent.com/modules/OW6JuxITky0baeSUblwC/SQrxhGqqDBbtN2sdADeq/animationUtils.js\";let _lastLoadedModelUrl=null;/** Track how many preload requests were initiated vs completed in a batch */let _preloadBatchTotal=0;let _preloadBatchDone=0;/**\n * Synthetic progress animation for when Content-Length is missing\n * Uses asymptotic curve: progress approaches 90% but never reaches it.\n * Gives visual feedback on slow networks where real progress events don't fire.\n */let _syntheticProgressTimer=null;let _syntheticProgressStart=0;let _hasRealProgress=false;function _startSyntheticProgress(taskId=\"default\"){_hasRealProgress=false;_syntheticProgressStart=performance.now();if(_syntheticProgressTimer)cancelAnimationFrame(_syntheticProgressTimer);const tick=()=>{if(_hasRealProgress)return;// real progress took over\nconst mls=typeof window!==\"undefined\"?window.__modelLoadingState:null;if(!mls||!mls.isLoading||mls.isComplete)return;// Asymptotic curve: 1 - e^(-t/k), capped at 0.85\n// k=8 means ~63% at 8s, ~78% at 12s, ~85% at 15s — feels natural\nconst elapsed=(performance.now()-_syntheticProgressStart)/1e3;const synthetic=(1-Math.exp(-elapsed/8))*.85;mls.setProgress(taskId,synthetic);_syntheticProgressTimer=requestAnimationFrame(tick);};// Start after 500ms delay — give real progress events a chance to fire first\nsetTimeout(()=>{if(!_hasRealProgress){_syntheticProgressTimer=requestAnimationFrame(tick);}},500);}function _stopSyntheticProgress(){if(_syntheticProgressTimer){cancelAnimationFrame(_syntheticProgressTimer);_syntheticProgressTimer=null;}}export function _clearModelCache(){for(const[,cached]of _modelCache){_disposeModelFull(cached.scene);}_modelCache.clear();_preloadInFlight.clear();_preloadBatchTotal=0;_preloadBatchDone=0;}export function _startModelPreload(url){if(!url)return Promise.resolve();if(_modelCache.has(url))return Promise.resolve();if(_preloadInFlight.has(url))return _preloadInFlight.get(url);const format=detectFormat(url);// Broadcast loading state immediately so splash screen knows to wait\nif(typeof window!==\"undefined\"&&window.__modelLoadingState){const mls=window.__modelLoadingState;if(!mls.isLoading&&!mls.isComplete){mls.setLoading(url);}}// Track batch count\n_preloadBatchTotal++;// Start synthetic progress animation (gives visual feedback when Content-Length is missing)\nif(_preloadBatchTotal===1)_startSyntheticProgress(url);const promise=new Promise(resolve=>{const _checkBatchComplete=()=>{// When ALL in-flight preloads are done, set progress to 95%\n// but do NOT call setComplete() — that's the load-model effect's job\n// after the model is actually added to the Three.js scene and visible.\nif(_preloadInFlight.size===0&&typeof window!==\"undefined\"&&window.__modelLoadingState){const mls=window.__modelLoadingState;if(mls.isLoading&&!mls.isComplete){_stopSyntheticProgress();mls.setProgress(url,.95);}// Reset batch counters\n_preloadBatchTotal=0;_preloadBatchDone=0;}};const onDone=(object,animations)=>{if(!_modelCache.has(url)){// Clean up skinned mesh artifacts before caching so all clones inherit clean state\n_cleanupSkinnedScene(object);const safeAnimations=_sanitizeAnimationClipsForObject(object,animations||[]);_modelCache.set(url,{scene:object,animations:safeAnimations.map(c=>c.clone())});}_preloadInFlight.delete(url);_preloadBatchDone++;_checkBatchComplete();resolve();};const onProgress=event=>{if(!event.lengthComputable)return;// Real progress received — kill synthetic animation\nif(!_hasRealProgress){_hasRealProgress=true;_stopSyntheticProgress();}const pct=event.loaded/event.total;if(typeof window!==\"undefined\"&&window.__modelLoadingState){// Scale progress across batch: each URL gets an equal share\nconst batchTotal=Math.max(_preloadBatchTotal,1);const perUrlShare=1/batchTotal;const overallPct=(_preloadBatchDone+pct)*perUrlShare;window.__modelLoadingState.setProgress(url,Math.min(pct*.95,.95));}};const onErr=err=>{console.warn(\"[Preload] Failed for\",url,err);_preloadInFlight.delete(url);_preloadBatchDone++;_checkBatchComplete();resolve()// resolve anyway — load-model effect will retry or show error\n;};try{if(format===\"zip\")_loadFromZip(url,onDone,onProgress,onErr);else if(format===\"fbx\")getSharedFBXLoader().then(loader=>loader.load(url,obj=>onDone(obj,obj.animations||[]),onProgress,onErr)).catch(onErr);else getSharedGLTFLoader().load(url,g=>onDone(g.scene,g.animations),onProgress,onErr);}catch(err){onErr(err);}});_preloadInFlight.set(url,promise);return promise;}function _upsertImport3DSlot(id,element,props,scrollContainer=null,runtimeSettings=null){if(!id)return;const state=_getImport3DBridgeState();const previous=state.slots.get(id);const shouldNotify=!previous||previous.element!==element||previous.scrollContainer!==scrollContainer;if(shouldNotify){state.slotRevision=(state.slotRevision||0)+1;}const bridgeProps=runtimeSettings?{...props,__import3DRuntimeSettings:runtimeSettings}:props;state.slots.set(id,{id,element,scrollContainer,props:bridgeProps,runtimeSettings,revision:shouldNotify?state.slotRevision:previous?.revision??state.slotRevision,updatedAt:Date.now()});if(shouldNotify){_emitImport3DBridge();}}function _runtimeSlotDomId(id){return`import3d-slot-${String(id||\"slot\").replace(/[^a-zA-Z0-9_-]/g,\"_\")}`;}function _upsertImport3DLazySlot(id,domId,element,modelUrl){if(typeof window===\"undefined\"||!id||!element)return;const win=window;const registry=win.__import3DLazySlots||(win.__import3DLazySlots={slots:new Map,revision:0});if(!element.id)element.id=domId;const previous=registry.slots.get(id);registry.slots.set(id,{id,domId,element,modelUrl:modelUrl||\"\",mountedAt:previous?.mountedAt||Date.now(),updatedAt:Date.now()});registry.revision+=1;}function _removeImport3DLazySlot(id){if(typeof window===\"undefined\"||!id)return;const registry=window.__import3DLazySlots;if(registry?.slots?.delete?.(id)){registry.revision=(registry.revision||0)+1;}}function _removeImport3DSlot(id){if(!id)return;const state=_getImport3DBridgeState();if(state.slots.delete(id)){_emitImport3DBridge();}}/* ═══════════════════════════════════════════════════════════\n   Slot Component\n   ═══════════════════════════════════════════════════════════ *//**\n * _ThreeJSRuntimeSlot\n * This component acts as an individual 3D viewport/container.\n * It registers itself with the shared WebGLCoordinator and communicates its dimensions,\n * scroll position, and visibility to the single ThreeJSRuntimeRoot renderer.\n */// @api Slot.component\nfunction _ThreeJSRuntimeSlot(props){const{modelSource=\"url\",modelUrl:modelUrlProp=\"\",modelFile=\"\",transform:_tr={},position:_pos={},performance:_perf={},ui:_ui={},style={}}=props;const wrapRef=useRef(null);const[bridgeGovernor,setBridgeGovernor]=useState(()=>_snapshotImport3DBridge());const[slotViewportRatio,setSlotViewportRatio]=useState(0);const transformBreakpoint=_tr.breakpoint??768;const positionBreakpoint=_pos.breakpoint??transformBreakpoint;const _runtimeProps=_mergeTopLevelRuntimeControls(props,_tr);const[responsiveCanvasWidth,setResponsiveCanvasWidth]=useState(0);const isMobileCanvas=responsiveCanvasWidth>0&&responsiveCanvasWidth<=transformBreakpoint;const isMobilePositionCanvas=responsiveCanvasWidth>0&&responsiveCanvasWidth<=positionBreakpoint;useEffect(()=>{if(typeof window===\"undefined\")return;const update=()=>{const width=wrapRef.current?.clientWidth||window.innerWidth||0;setResponsiveCanvasWidth(prev=>prev===width?prev:width);};update();let ro=null;if(typeof ResizeObserver!==\"undefined\"&&wrapRef.current){ro=new ResizeObserver(update);ro.observe(wrapRef.current);}window.addEventListener(\"resize\",update);return()=>{ro?.disconnect();window.removeEventListener(\"resize\",update);};},[transformBreakpoint,positionBreakpoint]);// ── Mesh Animations (per-mesh scroll targeting) ──\nconst meshAnimationsRaw=props.meshAnimations??[];// ── Mesh Interactions (click/hover/drag raycasting) ──\nconst meshInteractionsRaw=props.meshInteractions??[];// ── Flatten grouped props for internal use (settingsRef stays flat) ──\nconst _activeTr=_resolveResponsiveTransform(_runtimeProps.transform,isMobileCanvas);const _activePos=_resolveResponsivePosition(_runtimeProps.position,isMobilePositionCanvas);const _runtimeConfig=resolveThreeJSRuntimeConfig(_runtimeProps,responsiveCanvasWidth);const modelScale=_activeTr.scale??1;const modelOffsetX=_activeTr.offX??0;const modelOffsetY=_activeTr.offY??0;const modelOffsetZ=_activeTr.offZ??0;const modelRotationX=_activeTr.rotX??0;const modelRotationY=_activeTr.rotY??0;const modelRotationZ=_activeTr.rotZ??0;const cameraType=_runtimeConfig.cameraType;const cameraPositionX=_runtimeConfig.cameraPositionX;const cameraPositionY=_runtimeConfig.cameraPositionY;const cameraPositionZ=_runtimeConfig.cameraPositionZ;const orthoZoom=_runtimeConfig.orthoZoom;const stereoEyeSep=_runtimeConfig.stereoEyeSep;const backgroundColor=_runtimeConfig.backgroundColor;const transparentBackground=_runtimeConfig.transparentBackground;const enableEnvironment=_runtimeConfig.enableEnvironment;const environmentType=_runtimeConfig.environmentType;const environmentPreset=_runtimeConfig.environmentPreset;const hdriPreset=_runtimeConfig.hdriPreset;const customHdriUrl=_runtimeConfig.customHdriUrl;const environmentIntensity=_runtimeConfig.environmentIntensity;const showEnvironmentBackground=_runtimeConfig.showEnvironmentBackground;const ambientLightIntensity=_runtimeConfig.ambientLightIntensity;const directionalLightIntensity=_runtimeConfig.directionalLightIntensity;const directionalLightColor=_runtimeConfig.directionalLightColor;const dirLightPosX=_runtimeConfig.dirLightPosX;const dirLightPosY=_runtimeConfig.dirLightPosY;const dirLightPosZ=_runtimeConfig.dirLightPosZ;const enableShadows=_runtimeConfig.enableShadows;const shadowMapSize=_runtimeConfig.shadowMapSize;const shadowBias=_runtimeConfig.shadowBias;const shadowNormalBias=_runtimeConfig.shadowNormalBias;// ── Extra Lights (Point / Spot) ──\nconst extraLightsRaw=props.extraLights??[];const _interactionConfig=resolveThreeJSRuntimeInteractionConfig(props,{disableMouseRotation:isMobileCanvas});const enableOrbitControls=_interactionConfig.enableOrbitControls;const enableZoom=_interactionConfig.enableZoom;const enableAutoRotate=_interactionConfig.enableAutoRotate;const autoRotateSpeed=_interactionConfig.autoRotateSpeed;let enableAnimation=_interactionConfig.enableAnimation;let animationMode=_interactionConfig.animationMode;let animationClip=_interactionConfig.animationClip;let animationSpeed=_interactionConfig.animationSpeed;const animationBlendDuration=_interactionConfig.animationBlendDuration;const animationWarp=_interactionConfig.animationWarp;const animationSyncPhase=_interactionConfig.animationSyncPhase;const animationRestartOnSwitch=_interactionConfig.animationRestartOnSwitch;let animationLoopMode=_interactionConfig.animationLoopMode;const animationModelHoverGate=_interactionConfig.animationModelHoverGate;const animationWarmClips=_interactionConfig.animationWarmClips;const hasAnimationOnceCompleteHandler=!!props.onAnimationOnceComplete;const enableMouseRotation=_interactionConfig.enableMouseRotation;const mouseRotationIntensity=_interactionConfig.mouseRotationIntensity;const enableParticles=_interactionConfig.enableParticles;const particleCount=_interactionConfig.particleCount;const particleSize=_interactionConfig.particleSize;const particleColor=_interactionConfig.particleColor;const particleSpeed=_interactionConfig.particleSpeed;const particleSpread=_interactionConfig.particleSpread;const bridgeAnimationSignature=[enableAnimation?1:0,animationMode,animationClip,animationSpeed,animationBlendDuration,animationWarp?1:0,animationSyncPhase?1:0,animationRestartOnSwitch?1:0,animationLoopMode,animationModelHoverGate?1:0,hasAnimationOnceCompleteHandler?1:0].join(\"|\");const _appear=resolveThreeJSRuntimeAppearConfig(_runtimeProps);const dissolveEnabled=_appear.dissolveEnabled;const dissolveDuration=_appear.dissolveDuration;const appearOffsetX=_appear.appearOffsetX;const appearOffsetY=_appear.appearOffsetY;const appearOffsetZ=_appear.appearOffsetZ;const appearScale=_appear.appearScale;const appearRotateX=_appear.appearRotateX;const appearRotateY=_appear.appearRotateY;const appearRotateZ=_appear.appearRotateZ;const dissolveNoiseScale=_appear.dissolveNoiseScale;const dissolveAmplitude=_appear.dissolveAmplitude;const dissolveEdgeWidth=_appear.dissolveEdgeWidth;const dissolveEmissiveColor=_appear.dissolveEmissiveColor;const dissolveEmissiveIntensity=_appear.dissolveEmissiveIntensity;const dissolveParticlesEnabled=_appear.dissolveParticlesEnabled;const dissolveParticleBaseSize=_appear.dissolveParticleBaseSize;const dissolveParticleColor=_appear.dissolveParticleColor;const dissolveParticleSpeed=_appear.dissolveParticleSpeed;const dissolveParticleWaveAmp=_appear.dissolveParticleWaveAmp;const dissolveParticleVelX=_appear.dissolveParticleVelX;const dissolveParticleVelY=_appear.dissolveParticleVelY;const dissolveParticleMaxCount=_appear.dissolveParticleMaxCount;const materialPreset=_runtimeConfig.materialPreset;const sketchBaseColor=_runtimeConfig.sketchBaseColor;const sketchLineColor=_runtimeConfig.sketchLineColor;const sketchLineThickness=_runtimeConfig.sketchLineThickness;const sketchSteps=_runtimeConfig.sketchSteps;const overrideMaterial=_runtimeConfig.overrideMaterial;const metalness=_runtimeConfig.metalness;const roughness=_runtimeConfig.roughness;const clearcoat=_runtimeConfig.clearcoat;const clearcoatRoughness=_runtimeConfig.clearcoatRoughness;const transmission=_runtimeConfig.transmission;const thickness=_runtimeConfig.thickness;const ior=_runtimeConfig.ior;const iridescence=_runtimeConfig.iridescence;const iridescenceIOR=_runtimeConfig.iridescenceIOR;const sheen=_runtimeConfig.sheen;const sheenRoughness=_runtimeConfig.sheenRoughness;const sheenColor=_runtimeConfig.sheenColor;const envMapIntensity=_runtimeConfig.envMapIntensity;const reflectivity=_runtimeConfig.reflectivity;const emissiveIntensity=_runtimeConfig.emissiveIntensity;const emissiveColor=_runtimeConfig.emissiveColor;const opacity=_runtimeConfig.opacity;const wireframe=_runtimeConfig.wireframe;const materialTransitionDuration=_runtimeConfig.materialTransitionDuration;const enableFloat=_runtimeConfig.enableFloat;const floatAmplitude=_runtimeConfig.floatAmplitude;const floatSpeed=_runtimeConfig.floatSpeed;const bloomEnabled=_runtimeConfig.bloomEnabled;const bloomStrength=_runtimeConfig.bloomStrength;const bloomThreshold=_runtimeConfig.bloomThreshold;const bloomRadius=_runtimeConfig.bloomRadius;const toneMapping=_runtimeConfig.toneMapping;const exposure=_runtimeConfig.exposure;const enableFXAA=_runtimeConfig.enableFXAA;const enableColorGrading=_runtimeConfig.enableColorGrading;const brightness=_runtimeConfig.brightness;const contrast=_runtimeConfig.contrast;const saturation=_runtimeConfig.saturation;const enableVignette=_runtimeConfig.enableVignette;const vignetteOffset=_runtimeConfig.vignetteOffset;const vignetteDarkness=_runtimeConfig.vignetteDarkness;const enableChromaticAberration=_runtimeConfig.enableChromaticAberration;const chromaticAberrationStrength=_runtimeConfig.chromaticAberrationStrength;const enableFilmGrain=_runtimeConfig.enableFilmGrain;const filmGrainIntensity=_runtimeConfig.filmGrainIntensity;const enableSSAO=_runtimeConfig.enableSSAO;const ssaoRadius=_runtimeConfig.ssaoRadius;const ssaoMinDistance=_runtimeConfig.ssaoMinDistance;const ssaoMaxDistance=_runtimeConfig.ssaoMaxDistance;const enableDOF=_runtimeConfig.enableDOF;const dofFocus=_runtimeConfig.dofFocus;const dofAperture=_runtimeConfig.dofAperture;const dofMaxBlur=_runtimeConfig.dofMaxBlur;const showControls=_ui.showHints??true;const showMeshHelper=_ui.meshHelper??false;const showStatsMonitor=_ui.statsMonitor??false;const statsMonitorPanel=_ui.statsPanel??\"fps\";const showGrid=_ui.showGrid??false;const showGridSize=_ui.gridSize??10;const showGridDivisions=_ui.gridDivisions??10;const showGridColor1=_ui.gridColor1??\"rgba(255,255,255,0.25)\";const showGridColor2=_ui.gridColor2??\"rgba(255,255,255,0.1)\";const showAxes=_ui.showAxes??false;const showAxesSize=_ui.axesSize??3;const showModelAxes=_ui.showModelAxes??false;const showModelAxesSize=_ui.modelAxesSize??2;const stopMotionInEditor=_ui.stopInEditor??false;const progressiveLoading=_appear.progressiveLoading;const progressiveFadeDuration=_appear.progressiveFadeDuration;const blurReveal=_appear.blurReveal;const blurRevealIntensity=_appear.blurRevealIntensity;const blurRevealDuration=_appear.blurRevealDuration;const _positionConfig=resolveThreeJSRuntimePositionConfig(_runtimeProps,{activePosition:_activePos,useMobile:isMobilePositionCanvas});const layoutPositionMode=_positionConfig.layoutPositionMode;const layoutLayerMatch=_positionConfig.layoutLayerMatch;const layoutTop=_positionConfig.layoutTop;const layoutLeft=_positionConfig.layoutLeft;const layoutRight=_positionConfig.layoutRight;const layoutBottom=_positionConfig.layoutBottom;const layoutZIndex=_positionConfig.layoutZIndex;const scrollAnchorEnabled=_positionConfig.scrollAnchorEnabled;const scrollAnchorMatch=_positionConfig.scrollAnchorMatch;const scrollTransformAnchorMatch=_positionConfig.scrollTransformAnchorMatch;const scrollProgressTransformEnabled=_positionConfig.scrollProgressTransformEnabled;const scrollAnchorTransitionEnabled=_positionConfig.scrollAnchorTransitionEnabled;const scrollAnchorTransitionTargetId=_positionConfig.scrollAnchorTransitionTargetId;const scrollAnchorX=_positionConfig.scrollAnchorX;const scrollAnchorY=_positionConfig.scrollAnchorY;const scrollAnchorStrengthX=_positionConfig.scrollAnchorStrengthX;const scrollAnchorStrengthY=_positionConfig.scrollAnchorStrengthY;const scrollAnchorSmoothing=_positionConfig.scrollAnchorSmoothing;const scrollAnchorRotationX=_positionConfig.scrollAnchorRotationX;const scrollAnchorRotationY=_positionConfig.scrollAnchorRotationY;const scrollAnchorRotationZ=_positionConfig.scrollAnchorRotationZ;const scrollProgressPositionX=_positionConfig.scrollProgressPositionX;const scrollProgressPositionY=_positionConfig.scrollProgressPositionY;const scrollProgressPositionZ=_positionConfig.scrollProgressPositionZ;const scrollProgressScale=_positionConfig.scrollProgressScale;const performanceMode=_perf.mode??_ui.performanceMode??true;const webglActive=_perf.webglActive??_ui.webglActive??true;const governorQualityMode=bridgeGovernor.qualityMode||\"balanced\";const basePerformanceDprCap=_perf.dprCap??_ui.performanceDprCap??(performanceMode?1.5:2);const basePerformanceMobileDprCap=_perf.mobileDprCap??_ui.performanceMobileDprCap??1.5;const performanceDprCap=bridgeGovernor.dprCapDesktop!=null?Math.min(basePerformanceDprCap,bridgeGovernor.dprCapDesktop):basePerformanceDprCap;const performanceMobileDprCap=bridgeGovernor.dprCapMobile!=null?Math.min(basePerformanceMobileDprCap,bridgeGovernor.dprCapMobile):basePerformanceMobileDprCap;const performanceMaxPixelCount=_perf.maxPixelCount??_ui.performanceMaxPixelCount??3e6;const performanceLazyWebgl=_perf.lazyWebgl??_ui.performanceLazyWebgl??true;const performancePauseHidden=bridgeGovernor.pauseHidden??_perf.pauseHidden??_ui.performancePauseHidden??true;const performancePauseOffscreen=bridgeGovernor.pauseOffscreen??_perf.pauseOffscreen??_ui.performancePauseOffscreen??true;const performanceStats=_perf.stats??_ui.performanceStats??false;const performanceAntialias=governorQualityMode===\"performance\"?false:_perf.antialias??_ui.performanceAntialias??!performanceMode;const useMobilePerfProfile=performanceMode&&isMobileCanvas;const isGovernorPerformance=governorQualityMode===\"performance\";const isGovernorBalanced=governorQualityMode===\"balanced\";const qualityMaxPixelBudget=isGovernorPerformance?isMobileCanvas?12e5:18e5:isGovernorBalanced?isMobileCanvas?18e5:24e5:isMobileCanvas?18e5:performanceMaxPixelCount;const effectivePerformanceMaxPixelCount=qualityMaxPixelBudget>0?performanceMaxPixelCount>0?Math.min(performanceMaxPixelCount,qualityMaxPixelBudget):qualityMaxPixelBudget:performanceMaxPixelCount;const effectiveShadowMapSize=isGovernorPerformance?Math.min(shadowMapSize,256):isGovernorBalanced||useMobilePerfProfile?Math.min(shadowMapSize,512):shadowMapSize;const effectiveBloomEnabled=isGovernorPerformance?false:bloomEnabled;const effectiveEnableSSAO=isGovernorPerformance||isGovernorBalanced||useMobilePerfProfile?false:enableSSAO;const effectiveEnableDOF=isGovernorPerformance||isGovernorBalanced||useMobilePerfProfile?false:enableDOF;const effectiveEnableChromaticAberration=isGovernorPerformance||useMobilePerfProfile?false:enableChromaticAberration;const effectiveEnableFilmGrain=isGovernorPerformance||useMobilePerfProfile?false:enableFilmGrain;const effectiveParticleCount=isGovernorPerformance?Math.min(particleCount,500):useMobilePerfProfile||isGovernorBalanced?Math.min(particleCount,1e3):particleCount;const effectiveDissolveParticleMaxCount=isGovernorPerformance?Math.min(dissolveParticleMaxCount,1200):useMobilePerfProfile||isGovernorBalanced?Math.min(dissolveParticleMaxCount,3e3):dissolveParticleMaxCount;const enableScrollAnimation=true;const scrollSmoothing=_SCROLL_SMOOTHING_SPEED;// ── Resolve model source (URL vs File upload) ──\nconst modelUrl=modelSource===\"file\"?modelFile||\"\":modelUrlProp||\"\";// ── Sub-scenes (multi-scene Groups) — resolve modelSource per item ──\nconst subSceneItemsRaw=props.scenes??[];const subSceneItems=subSceneItemsRaw.map(item=>{if(!item)return item;const resolved=resolveThreeJSRuntimeSubSceneItem(item);const src=item.modelSource||\"url\";const effectiveUrl=src===\"file\"?item.modelFile||\"\":item.modelUrl||\"\";return{...resolved,modelUrl:effectiveUrl};});const canvasRef=useRef(null);const rafRef=useRef(0);const[status,setStatus]=useState(\"\");const[preloadProgress,setPreloadProgress]=useState({loaded:0,total:0});const[detectedAnimations,setDetectedAnimations]=useState([]);const stateRef=useRef(null);// Mesh helper tooltip state\nconst[meshTooltip,setMeshTooltip]=useState(null);const meshTooltipRef=useRef(meshTooltip);meshTooltipRef.current=meshTooltip;const updateMeshTooltip=next=>{const prev=meshTooltipRef.current;if(!prev&&!next)return;if(!prev||!next){setMeshTooltip(next);return;}const moved=Math.abs(prev.x-next.x)>=2||Math.abs(prev.y-next.y)>=2;const changed=prev.name!==next.name||prev.type!==next.type||prev.verts!==next.verts||prev.mat!==next.mat||prev.path!==next.path;if(moved||changed){setMeshTooltip(next);}};// Interaction hover tooltip state\nconst[interactTooltip,setInteractTooltip]=useState(null);const interactTooltipRef=useRef(interactTooltip);interactTooltipRef.current=interactTooltip;const updateInteractTooltip=next=>{const prev=interactTooltipRef.current;if(!prev&&!next)return;if(!prev||!next){setInteractTooltip(next);return;}const moved=Math.abs(prev.x-next.x)>=2||Math.abs(prev.y-next.y)>=2;const changed=prev.text!==next.text;if(moved||changed){setInteractTooltip(next);}};const[modelPointerCapture,setModelPointerCapture]=useState(false);const modelHoverStartRef=useRef(props.onModelHoverStart);const modelHoverEndRef=useRef(props.onModelHoverEnd);const modelClickRef=useRef(props.onModelClick);const animationOnceCompleteRef=useRef(null);modelHoverStartRef.current=props.onModelHoverStart;modelHoverEndRef.current=props.onModelHoverEnd;modelClickRef.current=props.onModelClick;animationOnceCompleteRef.current=()=>{props.onAnimationOnceComplete?.();};// Auto-generate unique canvas ID for data attribute\nconst canvasId=useId();const slotId=useId().replace(/:/g,\"_\");const runtimeSlotDomId=_runtimeSlotDomId(slotId);const[isCanvasTarget,setIsCanvasTarget]=useState(false);const[webglRuntimeActive,setWebglRuntimeActive]=useState(false);const[layoutLayerMatched,setLayoutLayerMatched]=useState(!layoutLayerMatch);const rootRendererActive=bridgeGovernor.renderMode===\"renderer\"||_isImport3DRendererBridgeActive();// UX Fix: Force standalone render ONLY on the actual Design Canvas.\n// In Preview/Live, we must defer to the Root renderer (Bridge mode).\nconst isDesignCanvas=RenderTarget.current()===RenderTarget.canvas;const shouldRenderStandalone=!rootRendererActive||isDesignCanvas;const effectiveWebglActive=webglActive&&shouldRenderStandalone;useEffect(()=>{if(rootRendererActive){_setRootTooltipHandler((text,clientX,clientY)=>{if(text&&wrapRef.current){const rect=wrapRef.current.getBoundingClientRect();updateInteractTooltip({x:clientX,y:clientY,text,isFixed:true});}else{updateInteractTooltip(null);}});return()=>{if(_rootTooltipHandler)_setRootTooltipHandler(null);};}},[rootRendererActive]);// RenderTarget.current() is client-only in Framer; keep it out of SSR markup.\nuseEffect(()=>{startTransition(()=>{// Match original file: do not use isOnFramerCanvas hook for Slot detection\nsetIsCanvasTarget(getFramerRuntimeMode()===\"canvas\");});},[]);useEffect(()=>{const sync=()=>{setBridgeGovernor(_snapshotImport3DBridge());};sync();return _subscribeImport3DBridge(sync);},[]);useEffect(()=>{_webglCoordinator.forceReeval();},[bridgeGovernor.renderMode,bridgeGovernor.contextBudget,bridgeGovernor.pauseHidden,bridgeGovernor.pauseOffscreen,bridgeGovernor.destroyOffscreen,bridgeGovernor.destroyAfterMs]);useEffect(()=>{if(isCanvasTarget){setSlotViewportRatio(1);return;}const node=wrapRef.current;if(!node||typeof IntersectionObserver===\"undefined\"){setSlotViewportRatio(1);return;}const observer=new IntersectionObserver(([entry])=>{setSlotViewportRatio(entry?.intersectionRatio??0);},{threshold:[0,.01,.1,.25,.5,.75,1]});observer.observe(node);return()=>observer.disconnect();},[isCanvasTarget]);useEffect(()=>{if(!wrapRef.current)return;_upsertImport3DSlot(slotId,wrapRef.current,_runtimeProps,_findImport3DScrollContainer(wrapRef.current),settingsRef.current);_upsertImport3DLazySlot(slotId,runtimeSlotDomId,wrapRef.current,modelUrl);},[slotId,runtimeSlotDomId,modelUrl,_runtimeProps,isCanvasTarget,bridgeAnimationSignature,props.onModelHoverStart,props.onModelHoverEnd,props.onModelClick]);useEffect(()=>{return()=>{_removeImport3DSlot(slotId);_removeImport3DLazySlot(slotId);};},[slotId]);useEffect(()=>{const isCanvas=getFramerRuntimeMode()===\"canvas\";if(!effectiveWebglActive||_isImport3DRendererBridgeActive()){setWebglRuntimeActive(false);return;}// Sync: when multiple canvases are already mounted, force lazy init\n// even if performanceLazyWebgl/performanceMode is off — spreading\n// context creation avoids hitting Safari's WebGL-context cap at once.\nconst forceLazy=_webglCoordinator.shouldForcePerfGates();const lazyEffective=performanceLazyWebgl||forceLazy;const perfActive=performanceMode||forceLazy;if(!perfActive||!lazyEffective||isCanvas){setWebglRuntimeActive(true);return;}if(slotViewportRatio>0){setWebglRuntimeActive(true);return;}const node=wrapRef.current;if(!node||typeof IntersectionObserver===\"undefined\"){setWebglRuntimeActive(true);return;}const observer=new IntersectionObserver(([entry])=>{if(entry?.isIntersecting){setWebglRuntimeActive(true);observer.disconnect();}},{rootMargin:\"0px\",threshold:0});observer.observe(node);return()=>observer.disconnect();},[effectiveWebglActive,performanceMode,performanceLazyWebgl,shouldRenderStandalone,slotViewportRatio]);useEffect(()=>{if(layoutPositionMode===\"relative\"||!layoutLayerMatch){setLayoutLayerMatched(true);return;}let raf=0;const checkMatch=()=>{const node=wrapRef.current;setLayoutLayerMatched(!!node&&_matchesLayerSelector(node,layoutLayerMatch));};checkMatch();raf=requestAnimationFrame(checkMatch);return()=>cancelAnimationFrame(raf);},[layoutPositionMode,layoutLayerMatch]);const runtimeMeshInteractions=(meshInteractionsRaw||[]).map(resolveThreeJSRuntimeObjectEventItem);const runtimeMeshInteractionItems=runtimeMeshInteractions.filter(ic=>ic?.meshName&&(ic.__hasInteractionEvent??true));const runtimeHasEnabledMeshInteractions=runtimeMeshInteractionItems.length>0;const runtimeHasDraggableMeshInteractions=runtimeMeshInteractionItems.some(ic=>!!ic?.draggable);const runtimeMeshInteractionTargetNames=runtimeMeshInteractionItems.map(ic=>String(ic.meshName).trim().toLowerCase());const runtimeMeshObjectTransformItems=runtimeMeshInteractions.filter(ic=>ic?.meshPath&&ic?.transform&&Object.keys(ic.transform).length>0);const runtimeMeshObjectTransformKey=JSON.stringify(runtimeMeshObjectTransformItems.map(ic=>({meshPath:ic.meshPath,transform:ic.transform})));const runtimeMeshInteractionLookupKey=JSON.stringify(runtimeMeshInteractionItems.map(ic=>ic?.meshPath?`path:${ic.meshPath}`:`name:${String(ic.meshName).trim().toLowerCase()}`));const runtimeMeshAnimations=[...meshAnimationsRaw||[],..._objectEventScrollAnimations(meshInteractionsRaw||[])].map(resolveThreeJSRuntimeMeshAnimationItem);const runtimeMeshAnimationItems=runtimeMeshAnimations.filter(anim=>anim?.enabled&&anim?.meshName);const runtimeHasEnabledMeshAnimations=runtimeMeshAnimationItems.length>0;const runtimeMeshAnimationLookupKey=JSON.stringify(runtimeMeshAnimationItems.map(anim=>anim?.meshPath?`path:${anim.meshPath}`:`name:${String(anim.meshName).trim().toLowerCase()}`));const runtimeMaterialHash=materialHash({materialPreset,sketchBaseColor,sketchLineColor,sketchLineThickness,sketchSteps,overrideMaterial,metalness,roughness,clearcoat,clearcoatRoughness,transmission,thickness,ior,iridescence,iridescenceIOR,sheen,sheenRoughness,sheenColor,envMapIntensity,emissiveIntensity,emissiveColor,reflectivity,opacity});const runtimeLightingHash=lightingHash({ambientLightIntensity,directionalLightIntensity,directionalLightColor,dirLightPosX,dirLightPosY,dirLightPosZ,enableShadows,shadowMapSize:effectiveShadowMapSize,shadowBias,shadowNormalBias,extraLights:extraLightsRaw});const runtimeEnvHash=envHash({enableEnvironment,environmentPreset,environmentType,hdriPreset,customHdriUrl,environmentIntensity,showEnvironmentBackground,transparentBackground});const runtimeEffectsHash=effectsHash({bloomEnabled:effectiveBloomEnabled,bloomStrength,bloomThreshold,bloomRadius,toneMapping,exposure,enableFXAA,enableVignette,vignetteOffset,vignetteDarkness,enableChromaticAberration:effectiveEnableChromaticAberration,chromaticAberrationStrength,enableFilmGrain:effectiveEnableFilmGrain,filmGrainIntensity,enableSSAO:effectiveEnableSSAO,ssaoRadius,ssaoMinDistance,ssaoMaxDistance,enableDOF:effectiveEnableDOF,dofFocus,dofAperture,dofMaxBlur,enableColorGrading,brightness,contrast,saturation});const runtimeSceneConfigHash=runtimeMaterialHash+\"|\"+runtimeLightingHash+\"|\"+runtimeEnvHash+\"|\"+runtimeEffectsHash;const _sharedRuntimeSettings=buildThreeJSRuntimeSettings(_runtimeProps,{rectWidth:responsiveCanvasWidth,qualityMode:governorQualityMode,dprCapDesktop:bridgeGovernor.dprCapDesktop,dprCapMobile:bridgeGovernor.dprCapMobile,pauseHidden:bridgeGovernor.pauseHidden,pauseOffscreen:bridgeGovernor.pauseOffscreen});const settingsRef=useRef({});settingsRef.current={..._sharedRuntimeSettings,modelScale,modelOffsetX,modelOffsetY,modelOffsetZ,modelRotationX,modelRotationY,modelRotationZ,backgroundColor,transparentBackground,cameraType,cameraPositionX,cameraPositionY,cameraPositionZ,orthoZoom,stereoEyeSep,enableEnvironment,environmentPreset,environmentType,hdriPreset,customHdriUrl,environmentIntensity,showEnvironmentBackground,ambientLightIntensity,directionalLightIntensity,directionalLightColor,dirLightPosX,dirLightPosY,dirLightPosZ,enableShadows,shadowMapSize:effectiveShadowMapSize,shadowBias,shadowNormalBias,extraLights:extraLightsRaw,enableOrbitControls,enableZoom,enableAutoRotate,autoRotateSpeed,enableAnimation,animationMode,animationClip,animationSpeed,animationBlendDuration,animationWarp,animationSyncPhase,animationRestartOnSwitch,animationLoopMode,animationModelHoverGate,animationWarmClips,hasAnimationOnceCompleteHandler,onAnimationOnceComplete:animationOnceCompleteRef.current,onModelHoverStart:modelHoverStartRef.current,onModelHoverEnd:modelHoverEndRef.current,onModelClick:modelClickRef.current,enableMouseRotation,mouseRotationIntensity,enableParticles,particleCount:effectiveParticleCount,particleSize,particleColor,particleSpeed,particleSpread,dissolveEnabled,dissolveDuration,appearOffsetX,appearOffsetY,appearOffsetZ,appearScale,appearRotateX,appearRotateY,appearRotateZ,dissolveNoiseScale,dissolveAmplitude,dissolveEdgeWidth,dissolveEmissiveColor,dissolveEmissiveIntensity,dissolveParticlesEnabled,dissolveParticleBaseSize,dissolveParticleColor,dissolveParticleSpeed,dissolveParticleWaveAmp,dissolveParticleVelX,dissolveParticleVelY,dissolveParticleMaxCount:effectiveDissolveParticleMaxCount,materialPreset,overrideMaterial,metalness,roughness,clearcoat,clearcoatRoughness,transmission,thickness,ior,iridescence,iridescenceIOR,sheen,sheenRoughness,sheenColor,envMapIntensity,emissiveIntensity,emissiveColor,reflectivity,opacity,wireframe,materialTransitionDuration,enableFloat,floatAmplitude,floatSpeed,bloomEnabled:effectiveBloomEnabled,bloomStrength,bloomThreshold,bloomRadius,toneMapping,exposure,enableFXAA,enableVignette,vignetteOffset,vignetteDarkness,enableChromaticAberration:effectiveEnableChromaticAberration,chromaticAberrationStrength,enableFilmGrain:effectiveEnableFilmGrain,filmGrainIntensity,enableSSAO:effectiveEnableSSAO,ssaoRadius,ssaoMinDistance,ssaoMaxDistance,enableDOF:effectiveEnableDOF,dofFocus,dofAperture,dofMaxBlur,enableColorGrading,brightness,contrast,saturation,showControls,showMeshHelper,showStatsMonitor,statsMonitorPanel,showGrid,showGridSize,showGridDivisions,showGridColor1,showGridColor2,showAxes,showAxesSize,showModelAxes,showModelAxesSize,stopMotionInEditor,progressiveLoading,progressiveFadeDuration,blurReveal,blurRevealIntensity,blurRevealDuration,layoutPositionMode,layoutLayerMatch,layoutTop,layoutLeft,layoutRight,layoutBottom,layoutZIndex,scrollAnchorEnabled,scrollAnchorMatch,scrollTransformAnchorMatch,scrollProgressTransformEnabled,scrollAnchorTransitionEnabled,scrollAnchorTransitionTargetId,scrollAnchorX,scrollAnchorY,scrollAnchorStrengthX,scrollAnchorStrengthY,scrollAnchorSmoothing,scrollAnchorRotationX,scrollAnchorRotationY,scrollAnchorRotationZ,scrollProgressPositionX,scrollProgressPositionY,scrollProgressPositionZ,scrollProgressScale,performanceMode,webglActive:effectiveWebglActive,performanceDprCap,performanceMobileDprCap,performanceMaxPixelCount:effectivePerformanceMaxPixelCount,performanceLazyWebgl,performancePauseHidden,performancePauseOffscreen,performanceStats,performanceAntialias,enableScrollAnimation,scrollSmoothing,responsiveIsMobile:isMobileCanvas,subSceneItems,meshAnimations:runtimeMeshAnimations,meshAnimationItems:runtimeMeshAnimationItems,hasEnabledMeshAnimations:runtimeHasEnabledMeshAnimations,meshAnimationLookupKey:runtimeMeshAnimationLookupKey,meshInteractions:runtimeMeshInteractions,meshInteractionItems:runtimeMeshInteractionItems,meshInteractionTargetNames:runtimeMeshInteractionTargetNames,meshObjectTransformItems:runtimeMeshObjectTransformItems,meshObjectTransformKey:runtimeMeshObjectTransformKey,hasEnabledMeshInteractions:runtimeHasEnabledMeshInteractions,hasDraggableMeshInteractions:runtimeHasDraggableMeshInteractions,meshInteractionLookupKey:runtimeMeshInteractionLookupKey,_materialHash:runtimeMaterialHash,_lightingHash:runtimeLightingHash,_envHash:runtimeEnvHash,_effectsHash:runtimeEffectsHash,_sceneConfigHash:runtimeSceneConfigHash};settingsRef.current._animationReplayHash=appearReplayHash(settingsRef.current);const runtimeAnimationReplayHash=hasAnimationOnceCompleteHandler?settingsRef.current._animationReplayHash:\"\";const subSceneModelUrlKey=JSON.stringify((subSceneItems||[]).map(item=>item?.modelUrl??\"\"));const subSceneAnimationKey=JSON.stringify((subSceneItems||[]).map(item=>item?{animOverride:!!item.animOverride,animMode:String(item.animClip??\"\").trim()?\"single\":\"all\",animClip:item.animClip??\"\",animSpeed:item.animSpeed??null}:null));// ─────────────── Eager Preload (runs BEFORE init) ───────────────\n// Starts downloading + parsing the model immediately on mount,\n// in parallel with Three.js renderer/scene setup.\n// By the time the load-model effect fires, model is likely already cached.\nuseEffect(()=>{if(!webglRuntimeActive)return;if(!modelUrl)return;_startModelPreload(modelUrl);// Also preload sub-scene URLs\nif(subSceneItems?.length){for(const item of subSceneItems){if(item?.modelUrl&&!detectImageFormat(item.modelUrl)){_startModelPreload(item.modelUrl);}}}},[modelUrl,JSON.stringify(subSceneItems?.map(s=>s?.modelUrl)),webglRuntimeActive]);// ─────────────── Init Three.js ───────────────\nuseEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const cfg=settingsRef.current;const isCanvas=getFramerRuntimeMode()===\"canvas\";if(!cfg.webglActive||!webglRuntimeActive||_isImport3DRendererBridgeActive()){stateRef.current=null;if(webglRuntimeActive){setWebglRuntimeActive(false);}return;}// Enable HTTP cache for model files — avoids re-downloading same URLs\nTHREE.Cache.enabled=true;const rendererOwnerId=`slot:${slotId}:${canvasId}`;canvas.setAttribute(\"data-import-3d-renderer-owner\",rendererOwnerId);const renderer=new THREE.WebGLRenderer({canvas,antialias:cfg.performanceAntialias,alpha:true,powerPreference:\"high-performance\",premultipliedAlpha:true,stencil:false});renderer.shadowMap.enabled=!!(cfg.enableShadows||cfg.extraLights?.some(el=>el?.enabled&&el?.castShadow));renderer.shadowMap.type=THREE.PCFShadowMap;renderer.toneMapping=TONE_MAPPINGS[cfg.toneMapping]||THREE.ACESFilmicToneMapping;renderer.toneMappingExposure=cfg.exposure;renderer.outputColorSpace=THREE.SRGBColorSpace;renderer.__import3DRendererOwner=rendererOwnerId;_debugImport3DRendererEvent(\"create\",{role:\"slot\",ownerId:rendererOwnerId,canvas,bridgeMode:_getImport3DBridgeState().renderMode,renderTarget:RenderTarget.current(),webglRuntimeActive,cfgWebglActive:cfg.webglActive,rootCount:_getImport3DBridgeState().rootCount||0,slotCount:_getImport3DBridgeState().slots?.size||0,forceLog:!!_getImport3DBridgeState().rendererDebug});const scene=new THREE.Scene;if(!cfg.transparentBackground)scene.background=parseColor(cfg.backgroundColor);else scene.background=null;let envMap=null;// Use clientWidth/Height for aspect (ignores Framer zoom/transforms)\nconst initW=wrapRef.current?.clientWidth||1;const initH=wrapRef.current?.clientHeight||1;const initAspect=initW/initH;let camera;if(cfg.cameraType===\"orthographic\"){camera=new THREE.OrthographicCamera(-_ORTHO_FRUSTUM*initAspect/2,_ORTHO_FRUSTUM*initAspect/2,_ORTHO_FRUSTUM/2,-_ORTHO_FRUSTUM/2,.01,2e3);camera.zoom=cfg.orthoZoom??1;camera.updateProjectionMatrix();}else{// \"perspective\" and \"stereo\" both use PerspectiveCamera\ncamera=new THREE.PerspectiveCamera(35,initAspect,.01,2e3);}camera.position.set(cfg.cameraPositionX,cfg.cameraPositionY,cfg.cameraPositionZ);// Stereo camera (side-by-side split)\nlet stereoCamera=null;if(cfg.cameraType===\"stereo\"){stereoCamera=new THREE.StereoCamera;stereoCamera.eyeSep=cfg.stereoEyeSep??.064;}const controls=new OrbitControls(camera,canvas);controls.enableDamping=true;controls.dampingFactor=.05;controls.enablePan=true;controls.panSpeed=.8;controls.rotateSpeed=.8;controls.enableRotate=cfg.enableOrbitControls;controls.enabled=cfg.enableOrbitControls;controls.enableZoom=cfg.enableZoom;controls.autoRotate=false;controls.autoRotateSpeed=cfg.autoRotateSpeed;const ambientLight=new THREE.AmbientLight(16777215,cfg.ambientLightIntensity);scene.add(ambientLight);const dirLight=new THREE.DirectionalLight(parseColor(cfg.directionalLightColor),cfg.directionalLightIntensity);dirLight.position.set(cfg.dirLightPosX??5,cfg.dirLightPosY??10,cfg.dirLightPosZ??7);dirLight.castShadow=cfg.enableShadows;const smSize=cfg.shadowMapSize??1024;dirLight.shadow.mapSize.set(smSize,smSize);dirLight.shadow.bias=cfg.shadowBias??-1e-4;dirLight.shadow.normalBias=cfg.shadowNormalBias??.02;scene.add(dirLight);const fillLight=new THREE.DirectionalLight(12636415,.4);fillLight.position.set(-5,3,-5);scene.add(fillLight);scene.add(new THREE.HemisphereLight(16777215,4473924,.15));// ── Extra Lights container (Point / Spot) ──\nconst extraLightObjects=[];// ── Particle System ──\nlet particleSystem=null;function createParticleSystem(count,size,color,spread){if(particleSystem){scene.remove(particleSystem);particleSystem.geometry.dispose();particleSystem.material.dispose();}const geometry=new THREE.BufferGeometry;const positions=new Float32Array(count*3);const velocities=new Float32Array(count*3);for(let i=0;i<count;i++){const i3=i*3;// Random position in sphere\nconst r=spread*Math.random();const theta=Math.random()*Math.PI*2;const phi=Math.acos(2*Math.random()-1);positions[i3]=r*Math.sin(phi)*Math.cos(theta);positions[i3+1]=r*Math.sin(phi)*Math.sin(theta);positions[i3+2]=r*Math.cos(phi);// Random velocity\nvelocities[i3]=(Math.random()-.5)*.02;velocities[i3+1]=(Math.random()-.5)*.02;velocities[i3+2]=(Math.random()-.5)*.02;}geometry.setAttribute(\"position\",new THREE.BufferAttribute(positions,3));geometry.setAttribute(\"velocity\",new THREE.BufferAttribute(velocities,3));const material=new THREE.PointsMaterial({size:size,color:parseColor(color),transparent:true,opacity:.6,blending:THREE.AdditiveBlending,depthWrite:false});particleSystem=new THREE.Points(geometry,material);scene.add(particleSystem);}function updateParticles(speed,spread){if(!particleSystem)return;const positions=particleSystem.geometry.attributes.position.array;const velocities=particleSystem.geometry.attributes.velocity.array;const count=positions.length/3;for(let i=0;i<count;i++){const i3=i*3;positions[i3]+=velocities[i3]*speed;positions[i3+1]+=velocities[i3+1]*speed;positions[i3+2]+=velocities[i3+2]*speed;// Wrap around if out of bounds\nconst distSq=positions[i3]*positions[i3]+positions[i3+1]*positions[i3+1]+positions[i3+2]*positions[i3+2];if(distSq>spread*spread){const r=spread*Math.random()*.5;const theta=Math.random()*Math.PI*2;const phi=Math.acos(2*Math.random()-1);positions[i3]=r*Math.sin(phi)*Math.cos(theta);positions[i3+1]=r*Math.sin(phi)*Math.sin(theta);positions[i3+2]=r*Math.cos(phi);}}particleSystem.geometry.attributes.position.needsUpdate=true;}const ground=new THREE.Mesh(new THREE.PlaneGeometry(50,50),new THREE.ShadowMaterial({opacity:.25}));ground.rotation.x=-Math.PI/2;ground.receiveShadow=true;ground.visible=cfg.enableShadows;scene.add(ground);// Post-processing pipeline is created lazily only when an effect is active.\nconst initMetrics=_getOptimizedRenderMetrics(initW,initH,cfg);const initDpr=initMetrics.dpr;renderer.setPixelRatio(initDpr);let composer=null;let hdrRT=null;let renderPass=null;let ssaoPass=null;let bokehPass=null;let alphaRT=null;let alphaSave=null;let alphaRestore=null;let bloom=null;let colorGrading=null;let vignette=null;let chromaticAberration=null;let filmGrain=null;let pixelated=null;let outputPass=null;let fxaa=null;let postFxSignature=\"\";let postFxW=0;let postFxH=0;let postFxDpr=0;// Postprocessing (EffectComposer + all FX passes) is only fetched from\n// the network once a scene actually enables an effect. Until the\n// dynamic import resolves, ensurePostFxPipeline just skips this frame's\n// FX render — the main loop calls it every frame, so it naturally\n// retries and picks the pipeline up as soon as the module is ready.\nlet postFxMods=null;let postFxModsLoading=false;const ensurePostFxModulesLoaded=()=>{if(postFxMods||postFxModsLoading)return;postFxModsLoading=true;_loadPostFxModules().then(mods=>{postFxMods=mods;postFxModsLoading=false;}).catch(err=>{postFxModsLoading=false;console.warn(\"ThreeJS Runtime: post-processing modules failed to load:\",err);});};const syncPostFxRefs=()=>{const target=stateRef.current;if(!target)return;target.composer=composer;target.bloom=bloom;target.ssaoPass=ssaoPass;target.bokehPass=bokehPass;target.alphaRT=alphaRT;target.alphaSave=alphaSave;target.alphaRestore=alphaRestore;target.vignette=vignette;target.chromaticAberration=chromaticAberration;target.filmGrain=filmGrain;target.pixelated=pixelated;target.outputPass=outputPass;target.fxaa=fxaa;target.colorGrading=colorGrading;target._bloom=bloom;target._ssao=ssaoPass;target._dof=bokehPass;target._alphaSave=alphaSave;target._alphaRestore=alphaRestore;target._colorGrading=colorGrading;target._vignette=vignette;target._chromaticAberration=chromaticAberration;target._filmGrain=filmGrain;target._pixelated=pixelated;target._outputPass=outputPass;target._fxaa=fxaa;};const disposePostFxPipeline=()=>{composer?.dispose?.();hdrRT?.dispose?.();if(alphaSave)alphaSave.dispose?.();else alphaRT?.dispose?.();ssaoPass?.dispose?.();bokehPass?.dispose?.();bokehPass?.renderTargetDepth?.dispose?.();bokehPass?.materialDepth?.dispose?.();bokehPass?.materialBokeh?.dispose?.();bloom?.dispose?.();colorGrading?.material?.dispose?.();vignette?.material?.dispose?.();chromaticAberration?.material?.dispose?.();filmGrain?.material?.dispose?.();pixelated?.dispose?.();outputPass?.dispose?.();fxaa?.material?.dispose?.();alphaRestore?.material?.dispose?.();composer=null;hdrRT=null;renderPass=null;ssaoPass=null;bokehPass=null;alphaRT=null;alphaSave=null;alphaRestore=null;bloom=null;colorGrading=null;vignette=null;chromaticAberration=null;filmGrain=null;pixelated=null;outputPass=null;fxaa=null;postFxSignature=\"\";postFxW=0;postFxH=0;postFxDpr=0;syncPostFxRefs();};const ensurePostFxPipeline=(activeCfg,w,h)=>{if(!_runtimeNeedsPostFx(activeCfg)){disposePostFxPipeline();return false;}if(!postFxMods){ensurePostFxModulesLoaded();return false;}const{EffectComposer,RenderPass,UnrealBloomPass,ShaderPass,SSAOPass,BokehPass,OutputPass,FXAAShader}=postFxMods;const metrics=_getOptimizedRenderMetrics(w,h,activeCfg);const dpr=metrics.dpr;const nextSig=_postFxPipelineSignature(activeCfg);if(!composer||postFxSignature!==nextSig){disposePostFxPipeline();hdrRT=new THREE.WebGLRenderTarget(metrics.renderWidth,metrics.renderHeight,{type:THREE.HalfFloatType,format:THREE.RGBAFormat,minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,colorSpace:THREE.SRGBColorSpace});composer=new EffectComposer(renderer,hdrRT);composer.setPixelRatio(dpr);// EffectComposer does not automatically blit the last pass\n// to the WebGL canvas. Root sets this flag in its shared\n// renderer path; slots need it as well, otherwise enabling a\n// post-processing-only effect leaves the visible canvas\n// cleared while the result remains in an off-screen target.\ncomposer.renderToScreen=true;renderPass=new RenderPass(scene,camera);renderPass.clear=true;renderPass.clearDepth=true;composer.addPass(renderPass);if(activeCfg.enableSSAO){ssaoPass=new SSAOPass(scene,camera,metrics.renderWidth,metrics.renderHeight);ssaoPass.output=SSAOPass.OUTPUT.Default;composer.addPass(ssaoPass);}const needDof=activeCfg.enableDOF&&activeCfg.cameraType!==\"orthographic\";const needAlphaFix=(activeCfg.bloomEnabled||needDof)&&activeCfg.transparentBackground;if(needAlphaFix){alphaRT=new THREE.WebGLRenderTarget(metrics.renderWidth,metrics.renderHeight,{type:THREE.HalfFloatType,format:THREE.RGBAFormat,minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter});alphaSave=new AlphaSavePass(alphaRT);composer.addPass(alphaSave);}if(needDof){bokehPass=new BokehPass(scene,camera,{focus:activeCfg.dofFocus,aperture:activeCfg.dofAperture,maxblur:activeCfg.dofMaxBlur});composer.addPass(bokehPass);}if(activeCfg.bloomEnabled){bloom=new UnrealBloomPass(new THREE.Vector2(metrics.renderWidth,metrics.renderHeight),activeCfg.bloomStrength,activeCfg.bloomRadius,activeCfg.bloomThreshold);composer.addPass(bloom);}if(activeCfg.enableColorGrading){colorGrading=new ShaderPass(ColorGradingShader);composer.addPass(colorGrading);}if(activeCfg.enableVignette){vignette=new ShaderPass(VignetteShader);composer.addPass(vignette);}if(activeCfg.enableChromaticAberration){chromaticAberration=new ShaderPass(ChromaticAberrationShader);composer.addPass(chromaticAberration);}if(activeCfg.enableFilmGrain){filmGrain=new ShaderPass(FilmGrainShader);composer.addPass(filmGrain);}if(needAlphaFix){alphaRestore=new ShaderPass(AlphaRestoreShader);alphaRestore.uniforms.tAlpha.value=alphaRT.texture;composer.addPass(alphaRestore);}if(activeCfg.enablePixelate){// Convert the post-processing chain to display-ready RGB\n// before the final screen-space effect(s).\noutputPass=new OutputPass;composer.addPass(outputPass);}if(activeCfg.enableFXAA){fxaa=new ShaderPass(FXAAShader);composer.addPass(fxaa);}if(activeCfg.enablePixelate){pixelated=createFramerTilePixelatePass(ShaderPass);pixelated.setPixelRatio?.(dpr);pixelated.setSize?.(metrics.renderWidth,metrics.renderHeight);pixelated.setTilePixelateConfig?.(activeCfg);composer.addPass(pixelated);}postFxSignature=nextSig;syncPostFxRefs();}const postFxSizeChanged=postFxW!==w||postFxH!==h||Math.abs(postFxDpr-dpr)>.01;if(postFxSizeChanged){composer.setPixelRatio(dpr);composer.setSize(w,h);hdrRT?.setSize?.(metrics.renderWidth,metrics.renderHeight);alphaRT?.setSize?.(metrics.renderWidth,metrics.renderHeight);alphaSave?.setSize?.(metrics.renderWidth,metrics.renderHeight);ssaoPass?.setSize?.(metrics.renderWidth,metrics.renderHeight);bokehPass?.setSize?.(metrics.renderWidth,metrics.renderHeight);pixelated?.setPixelRatio?.(dpr);pixelated?.setSize?.(metrics.renderWidth,metrics.renderHeight);bloom?.resolution?.set?.(metrics.renderWidth,metrics.renderHeight);fxaa?.uniforms?.resolution?.value?.set?.(1/metrics.renderWidth,1/metrics.renderHeight);chromaticAberration?.uniforms?.resolution?.value?.set?.(metrics.renderWidth,metrics.renderHeight);postFxW=w;postFxH=h;postFxDpr=dpr;}if(bokehPass?.uniforms?.[\"aspect\"]){bokehPass.uniforms[\"aspect\"].value=w/h;}if(alphaRestore&&alphaRT){alphaRestore.uniforms.tAlpha.value=alphaRT.texture;}if(stateRef.current){applyEffectsChanges(stateRef.current,activeCfg);}return true;};const clock={elapsedTime:0,_lastTime:performance.now(),getDelta(){const now=performance.now();const delta=Math.max(0,(now-this._lastTime)/1e3);this._lastTime=now;this.elapsedTime+=delta;return delta;},reset(){this._lastTime=performance.now();}};const st={_framesSinceChange:0,renderer,scene,camera,stereoCamera,controls,composer,bloom,ssaoPass,bokehPass,alphaRT,alphaSave,alphaRestore,vignette,chromaticAberration,filmGrain,pixelated,fxaa,colorGrading,envMap,ground,dirLight,fillLight,ambientLight,extraLightObjects,model:null,modelInner:null,mixer:null,animations:[],_activeAnimationAction:null,_activeAnimationKey:\"\",_activeAnimationClipName:\"\",_animationActionCache:new Set,_animationOnceCompleteListener:null,_animationOnceCompleteAction:null,_animationWarmupDone:false,_modelHoverRaycastActive:false,_modelHoverGateInitialized:false,_modelHoverBaseAnimationClip:\"\",_modelHoverPendingAnimationClip:\"\",_pointerCaptureLock:false,clock,particleSystem:null,gridHelper:null,axesHelper:null,modelAxesHelper:null,createParticleSystem,updateParticles,// Dissolve transition state\ndissolveActive:false,_dissolvePendingIn:false,dissolveProgress:0,dissolveDirection:1,dissolveOldModel:null,dissolveOriginalMaterials:new Map,dissolveMaterials:new Map,floatBaseY:0,normalizeScale:1,fitRatio:1,lastModelScale:cfg.modelScale,lastOffsetX:cfg.modelOffsetX,lastOffsetY:cfg.modelOffsetY,lastOffsetZ:cfg.modelOffsetZ,lastRotX:cfg.modelRotationX,lastRotY:cfg.modelRotationY,lastRotZ:cfg.modelRotationZ,hdriLoading:false,hdriLoadingUrl:\"\",envMapSource:\"\",envMapKey:\"\",originalMaterials:new Map,// Cached per-frame values (avoid new THREE.Color every frame)\nlastBgColor:cfg.backgroundColor,cachedBgColor:parseColor(cfg.backgroundColor),cachedDirColor:parseColor(cfg.directionalLightColor),lastDissolveEdgeColorStr:cfg.dissolveEmissiveColor,cachedDissolveEdgeColor:parseColor(cfg.dissolveEmissiveColor),lastDissolveParticleColorStr:\"\",cachedDissolveParticleColor:new THREE.Color,lastParticleColorStr:cfg.particleColor,cachedParticleColor:parseColor(cfg.particleColor),// Variant smoothing state — lerp toward prop targets when scroll smoothing is enabled\nsmoothedScale:cfg.modelScale||1,smoothedOffX:cfg.modelOffsetX||0,smoothedOffY:cfg.modelOffsetY||0,smoothedOffZ:cfg.modelOffsetZ||0,smoothedRotX:cfg.modelRotationX||0,smoothedRotY:cfg.modelRotationY||0,smoothedRotZ:cfg.modelRotationZ||0,smoothedCamX:cfg.cameraPositionX??-1,smoothedCamY:cfg.cameraPositionY??2,smoothedCamZ:cfg.cameraPositionZ??10,// Mouse rotation tracking (normalized -1 to 1)\nmouseX:0,mouseY:0,mouseTargetX:0,mouseTargetY:0,// Sub-scenes (multi-scene Groups)\n// Map<index, { group, modelInner, mixer, animations, normalizeScale, fitRatio, floatBaseY, loadedUrl }>\nsubScenes:new Map,_hasSubSceneItems:(cfg.subSceneItems?.length??0)>0,_resizeCounter:0,// Refs for applyEffectsChanges helper\n_renderer:renderer,_bloom:bloom,_ssao:ssaoPass,_dof:bokehPass,_alphaSave:alphaSave,_alphaRestore:alphaRestore,_colorGrading:colorGrading,_vignette:vignette,_chromaticAberration:chromaticAberration,_filmGrain:filmGrain,_fxaa:fxaa,// Unified scene config hash tracking (material + lighting + env + effects)\nlastSceneHash:\"\",lastMaterialHash:\"\",lastLightingHash:\"\",lastEnvHash:\"\",lastEffectsHash:\"\",// Unified scene transition state (fade-to-black for ALL config changes)\nsceneFadeProgress:0,sceneFadeTargetHash:null,sceneFadeTargetCfg:null,sceneSwapped:false,_lastSceneFadeFactor:null,_fadeCacheDirty:false,// Dissolve particle system (for model URL changes only)\ndissolveParticles:null,_appearReplayStart:0,_lastAppearReplayHash:\"\",// Blur reveal state\n_blurRevealStart:0,// Dissolve smooth transition snapshots (to avoid teleport)\n_dissolveOldSmoothedRotX:0,_dissolveOldSmoothedRotY:0,_dissolveOldSmoothedRotZ:0,_dissolveOldSmoothedOffX:0,_dissolveOldSmoothedOffY:0,_dissolveOldSmoothedOffZ:0,_dissolveOldSmoothedScale:1,_framerRuntimeMode:getFramerRuntimeMode(),_scrollLayoutVersion:1,_scrollLayoutCacheVersion:0,_pageVisible:typeof document===\"undefined\"?true:!document.hidden,_canvasInViewport:true,_lastRenderDpr:initDpr,_lastRenderPixelWidth:initMetrics.renderWidth,_lastRenderPixelHeight:initMetrics.renderHeight,_lastResizeCssW:0,_lastResizeCssH:0,_lastResizeAt:0,_lastPerfLog:0,_lastFrameTime:0,_stats:null,_statsDom:null,_statsPanel:null,_disposed:false,_coordinatorPaused:false,_coordId:0};stateRef.current=st;controls.addEventListener(\"change\",()=>{if(stateRef.current)stateRef.current._framesSinceChange=0;});st.ensurePostFxPipeline=ensurePostFxPipeline;st._coordId=_webglCoordinator.register(st);applyEnvironmentChanges(st,cfg,renderer,scene);// Mouse move listener for rotate-to-mouse\n// Use document-level listener so it works even when wrapper has pointer-events:none\nconst onMouseMove=e=>{if(!wrapRef.current)return;const rect=wrapRef.current.getBoundingClientRect();// Check if mouse is within component bounds\nif(e.clientX>=rect.left&&e.clientX<=rect.right&&e.clientY>=rect.top&&e.clientY<=rect.bottom){// Normalize to -1..1 (center = 0)\nst.mouseTargetX=(e.clientX-rect.left)/rect.width*2-1;st.mouseTargetY=(e.clientY-rect.top)/rect.height*2-1;}else{// Mouse outside bounds — reset\nst.mouseTargetX=0;st.mouseTargetY=0;}};document.addEventListener(\"mousemove\",onMouseMove);// ── Mesh Helper: raycaster hover to show mesh names ──\nconst _meshHelperRaycaster=new THREE.Raycaster;_meshHelperRaycaster.firstHitOnly=true;const _meshHelperMouse=new THREE.Vector2;let _meshHelperHovered=null;let _meshHelperOrigEmissive=null// Map<mesh, Color[]>\n;// Find the logical group root for a hit mesh (walk up until we reach scene/modelInner/modelWrapper)\nconst _findMeshHelperGroup=hitObj=>{// Walk up ONE level: return immediate parent group (the \"collection\")\n// e.g. for Object_4 inside Circle001_8, return Circle001_8\nconst p=hitObj.parent;if(p&&p!==st.scene&&p!==st.modelInner&&p!==st.modelWrapper&&!p.isMesh){return p;}return hitObj;};const onMeshHelperMove=e=>{const cfg=settingsRef.current;if(!cfg.showMeshHelper||!st.modelInner||!wrapRef.current){if(_meshHelperHovered){_unhighlightMeshHelper();}if(meshTooltipRef.current)updateMeshTooltip(null);return;}const rect=wrapRef.current.getBoundingClientRect();if(e.clientX<rect.left||e.clientX>rect.right||e.clientY<rect.top||e.clientY>rect.bottom){if(_meshHelperHovered)_unhighlightMeshHelper();if(meshTooltipRef.current)updateMeshTooltip(null);return;}_meshHelperMouse.x=(e.clientX-rect.left)/rect.width*2-1;_meshHelperMouse.y=-((e.clientY-rect.top)/rect.height)*2+1;_meshHelperRaycaster.setFromCamera(_meshHelperMouse,st.camera);const meshes=_getInteractiveMeshes();if(!meshes.length){if(_meshHelperHovered)_unhighlightMeshHelper();if(meshTooltipRef.current)updateMeshTooltip(null);return;}const hits=_meshHelperRaycaster.intersectObjects(meshes,false);if(hits.length>0){const hitObj=hits[0].object;// Resolve to logical group root (walk up parent chain)\nconst group=_findMeshHelperGroup(hitObj);// Skip emissive highlight if Interactions system is already highlighting this mesh/group\nif(_interactHovered===hitObj||_interactHovered===group){// Still show tooltip but don't touch emissive — Interactions owns it\nif(_meshHelperHovered&&_meshHelperHovered!==group)_unhighlightMeshHelper();_meshHelperHovered=null;_meshHelperOrigEmissive=null;}else if(_meshHelperHovered!==group){_unhighlightMeshHelper();_meshHelperHovered=group;// Save original emissive & highlight ALL meshes in the group\n_meshHelperOrigEmissive=new Map;const childMeshes=[];if(group.isMesh)childMeshes.push(group);else group.traverse(c=>{if(c.isMesh)childMeshes.push(c);});childMeshes.forEach(m=>{if(!m.material)return;const mats=Array.isArray(m.material)?m.material:[m.material];_meshHelperOrigEmissive.set(m,mats.map(mt=>mt.emissive?mt.emissive.clone():null));mats.forEach(mt=>{if(mt.emissive)mt.emissive.setHex(3355494);});});}// Build info — use collection group name (immediate parent of hit mesh)\nconst name=group.name||hitObj.name||\"<unnamed>\";const type=hitObj.isSkinnedMesh?\"SkinnedMesh\":\"Mesh\";// Sum verts across all meshes in collection group\nlet verts=0;const groupMeshes=[];if(group.isMesh)groupMeshes.push(group);else group.traverse(c=>{if(c.isMesh)groupMeshes.push(c);});groupMeshes.forEach(m=>{if(m.geometry){const pa=m.geometry.getAttribute(\"position\");if(pa)verts+=pa.count;}});let mat=\"\";if(hitObj.material){if(Array.isArray(hitObj.material))mat=hitObj.material.map(m=>m.name||m.type).join(\", \");else mat=hitObj.material.name||hitObj.material.type||\"\";}// Build path from group (collection) up to scene\nlet path=name;let p=group.parent;while(p&&p!==st.scene){if(p.name)path=p.name+\" › \"+path;p=p.parent;}updateMeshTooltip({x:e.clientX-rect.left,y:e.clientY-rect.top,name,type,verts,mat,path});}else{if(_meshHelperHovered)_unhighlightMeshHelper();if(meshTooltipRef.current)updateMeshTooltip(null);}};const _unhighlightMeshHelper=()=>{if(_meshHelperHovered&&_meshHelperOrigEmissive){_meshHelperOrigEmissive.forEach((saved,mesh)=>{const mats=Array.isArray(mesh.material)?mesh.material:[mesh.material];mats.forEach((m,i)=>{if(m.emissive&&saved[i])m.emissive.copy(saved[i]);else if(m.emissive)m.emissive.setHex(0);});});}_meshHelperHovered=null;_meshHelperOrigEmissive=null;};document.addEventListener(\"mousemove\",onMeshHelperMove);// ── Mesh Interactions: click / hover / drag raycasting ──\nconst _interactRaycaster=new THREE.Raycaster;_interactRaycaster.firstHitOnly=true;const _interactMouse=new THREE.Vector2;let _interactHovered=null// currently hovered interactive mesh\n;let _interactHoveredConfig=null// config for hovered mesh\n;let _interactOrigEmissive=null// saved emissive for unhighlight\n;let _interactOrigScale=null// saved scale for unhover\n;let _interactHoverEndTimer=null;// ── Smooth hover transition state ──\n// Active channel: mesh being hovered (lerping 0→1)\nconst _hoverLerp={mesh:null,config:null,progress:0,target:0,origEmissive:null,origPosition:null,origRotation:null,origScale:null,targetColor:null,targetPosition:null,targetRotation:null,targetScale:null};// Leaving channel: mesh that was unhovered (lerping 1→0)\nconst _hoverLerpOut={mesh:null,config:null,progress:0,origEmissive:null,origPosition:null,origRotation:null,origScale:null,targetColor:null,targetPosition:null,targetRotation:null,targetScale:null};const _pressLerp={mesh:null,config:null,progress:0,target:0,origEmissive:null,origPosition:null,origRotation:null,origScale:null,targetColor:null,targetPosition:null,targetRotation:null,targetScale:null};const _HOVER_LERP_SPEED=10// ~100ms transition (higher = faster)\n;let _interactDragging=null// mesh being dragged\n;let _interactDragConfig=null// config for dragged mesh\n;let _interactDragPlane=null// THREE.Plane for drag projection\n;let _interactDragOffset=new THREE.Vector3// offset from mesh center to hit point\n;let _interactJustDragged=false// prevent click firing after drag release\n;// ── Drag snap-back lerp state ──\nconst _DRAG_SNAPBACK_SPEED=8// lerp speed (higher = faster)\n;let _dragSnapBack=null// { mesh, targetPos: Vector3 } | null\n;// ── Per-mesh autoRotate/mouseRotate state ──\nconst _meshAutoRotates=new Map// mesh → { speed, axis }\n;const _meshMouseRotates=new Map// mesh → { intensity, baseRotY, baseRotX }\n;// ── Cache for interaction config → matched Object3D mapping ──\n// Avoids re-traversing the entire scene tree every frame.\n// Invalidated when model identity or interaction config names change.\nlet _interactMatchCache=null// meshName → matched Object3D\n;let _interactMatchCacheKey=\"\"// serialized key for invalidation\n;const _meshObjectBaseTransforms=new Map;let _meshObjectTransformModelUUID=\"\";let _meshObjectTransformCacheKey=\"\";const _getMeshObjectPath=(root,object)=>{const segments=[];let current=object;while(current&&current!==root){const childIndex=current.parent?.children.indexOf(current)??0;segments.push(`${current.name||current.type}[${childIndex}]`);current=current.parent;}return segments.reverse().join(\"/\");};const _resolveMeshObjectPath=(root,path)=>{if(!root||!path)return null;let current=root;for(const segment of String(path).split(\"/\")){const match=segment.match(/^(.*)\\[(\\d+)\\]$/);if(!match)return null;const child=current.children?.[Number(match[2])];if(!child||match[1]&&(child.name||child.type)!==match[1])return null;current=child;}return current;};const _meshInteractionConfigKey=config=>config?.meshPath?`path:${config.meshPath}`:`name:${String(config?.meshName||\"\").trim().toLowerCase()}`;const _parseMeshObjectVector=value=>{const parts=Array.isArray(value)?value:value&&typeof value===\"object\"?[value.x,value.y,value.z]:String(value??\"0,0,0\").trim().split(/[\\s,]+/);return[0,1,2].map(index=>{const parsed=Number(parts[index]??0);return Number.isFinite(parsed)?parsed:0;});};const _applyMeshObjectTransforms=cfg=>{const model=st.modelInner;if(!model)return;const modelUUID=model.uuid||\"\";if(modelUUID!==_meshObjectTransformModelUUID){_meshObjectBaseTransforms.clear();_meshObjectTransformModelUUID=modelUUID;_meshObjectTransformCacheKey=\"\";}const cacheKey=`${modelUUID}|${cfg.meshObjectTransformKey||\"\"}`;if(cacheKey===_meshObjectTransformCacheKey)return;for(const[object,base]of _meshObjectBaseTransforms){object.position.copy(base.position);object.rotation.copy(base.rotation);object.scale.copy(base.scale);}for(const item of cfg.meshObjectTransformItems||[]){const object=_resolveMeshObjectPath(model,item.meshPath);if(!object)continue;if(!_meshObjectBaseTransforms.has(object)){_meshObjectBaseTransforms.set(object,{position:object.position.clone(),rotation:object.rotation.clone(),scale:object.scale.clone()});}const transform=item.transform||{};if(transform.scale!==undefined){const scale=Number(transform.scale);if(Number.isFinite(scale)&&scale>0)object.scale.setScalar(scale);}if(transform.position!==undefined){const[x,y,z]=_parseMeshObjectVector(transform.position);object.position.set(x,y,z);}if(transform.rotation!==undefined){const[x,y,z]=_parseMeshObjectVector(transform.rotation);object.rotation.set(THREE.MathUtils.degToRad(x),THREE.MathUtils.degToRad(y),THREE.MathUtils.degToRad(z));}}_meshObjectTransformCacheKey=cacheKey;};// Reusable Sets to avoid per-frame allocations in render loop\nconst _wantAutoRotate=new Set;const _wantMouseRotate=new Set;// Reusable Map: Object3D → interaction config (avoids redundant _findInteractConfig calls)\nconst _interactConfigByObj=new Map;let _interactResolvedConfigSource=null;const _interactResolvedConfigCache=new Map;// ── Cache for mesh animation name → Object3D mapping ──\n// Same pattern as _interactMatchCache — avoids per-frame tree traversal.\nlet _meshAnimMatchCache=null;let _meshAnimMatchCacheKey=\"\";let _interactiveMeshesCache=[];let _interactiveMeshesCacheKey=\"\";const _interactiveVisibleMeshes=[];let _interactionHoverMeshesCache=[];let _interactionHoverMeshesCacheKey=\"\";const _interactionHoverVisibleMeshes=[];let _lastInteractHoverRaycastAt=0;let _lastModelHoverRaycastAt=0;// Find interactive config for a mesh (by name, partial case-insensitive)\nconst _findInteractConfig=mesh=>{const cfg=settingsRef.current;const interactions=cfg.meshInteractionItems;if(_interactResolvedConfigSource!==interactions){_interactResolvedConfigSource=interactions;_interactResolvedConfigCache.clear();}if(!interactions?.length||!mesh)return null;if(_interactResolvedConfigCache.has(mesh.uuid)){return _interactResolvedConfigCache.get(mesh.uuid);}const meshNameLower=String(mesh.name||\"\").toLowerCase();let matchedConfig=null;let matchedPathLength=-1;const meshPath=st.modelInner?_getMeshObjectPath(st.modelInner,mesh):\"\";for(const ic of interactions){const isEnabled=ic?.enabled??ic?.__hasInteractionEvent??true;if(!ic||!isEnabled||!ic.meshName)continue;if(ic.meshPath){if(meshPath===ic.meshPath){matchedConfig=ic;break;}if(meshPath.startsWith(`${ic.meshPath}/`)&&ic.meshPath.length>matchedPathLength){matchedConfig=ic;matchedPathLength=ic.meshPath.length;}continue;}const targetName=ic.meshName.trim().toLowerCase();if(!matchedConfig&&targetName&&meshNameLower.includes(targetName)){matchedConfig=ic;}}_interactResolvedConfigCache.set(mesh.uuid,matchedConfig);return matchedConfig;};const _clearInteractResolvedConfigCache=()=>{_interactResolvedConfigSource=null;_interactResolvedConfigCache.clear();};const _emitMeshInteractionEvent=(config,eventName,event,obj)=>{const handler=config?.[eventName];if(!handler)return;if(event&&typeof event===\"object\"){try{event.meshName=obj?.name??config?.meshName??\"\";event.meshObject=obj;event.meshInteraction=config;}catch{}}if(event)handler(event);else handler();};// Get all interactive-eligible meshes from scene\nconst _getInteractiveMeshes=()=>{const keyParts=[st.modelInner?.uuid??\"no-primary\",st.model?.visible!==false?\"primary-visible\":\"primary-hidden\"];if(st.subScenes){for(const[idx,ss]of st.subScenes){keyParts.push(`${idx}:${ss._loaded}:${ss.group?.uuid??\"none\"}:${ss.group?.visible!==false}`);}}const key=keyParts.join(\"|\");if(key!==_interactiveMeshesCacheKey){const meshes=[];if(st.modelInner&&st.model?.visible!==false){st.modelInner.traverse(c=>{if(c.isMesh)meshes.push(c);});}if(st.subScenes){for(const[,ss]of st.subScenes){if(ss._loaded&&ss.group&&ss.group.visible){ss.group.traverse(c=>{if(c.isMesh)meshes.push(c);});}}}_interactiveMeshesCache=meshes;_interactiveMeshesCacheKey=key;}_interactiveVisibleMeshes.length=0;for(const mesh of _interactiveMeshesCache){if(mesh.visible)_interactiveVisibleMeshes.push(mesh);}return _interactiveVisibleMeshes;};const _needsWholeModelHoverHit=cfg=>!!(modelHoverStartRef.current||modelHoverEndRef.current||cfg.animationModelHoverGate||cfg.enableOrbitControls);const _getInteractionHoverMeshes=cfg=>{const allMeshes=_getInteractiveMeshes();const targetNames=cfg.meshInteractionTargetNames||[];const targetPaths=(cfg.meshInteractionItems||[]).map(item=>item?.meshPath).filter(Boolean);if(!targetNames.length&&!targetPaths.length){return _needsWholeModelHoverHit(cfg)?allMeshes:[];}const cacheKey=_interactiveMeshesCacheKey+\"|targets:\"+targetNames.join(\",\")+\"|paths:\"+targetPaths.join(\",\");if(cacheKey!==_interactionHoverMeshesCacheKey){const targeted=[];for(const mesh of allMeshes){const meshPath=_getMeshObjectPath(st.modelInner,mesh);if(targetPaths.some(path=>meshPath===path||meshPath.startsWith(`${path}/`))){targeted.push(mesh);continue;}let obj=mesh;while(obj&&obj!==st.scene&&obj!==st.model&&obj!==st.modelInner){const name=obj.name?.toLowerCase?.()||\"\";if(name&&targetNames.some(target=>name.includes(target))){targeted.push(mesh);break;}obj=obj.parent;}}_interactionHoverMeshesCache=targeted;_interactionHoverMeshesCacheKey=cacheKey;}_interactionHoverVisibleMeshes.length=0;for(const mesh of _interactionHoverMeshesCache){if(mesh.visible)_interactionHoverVisibleMeshes.push(mesh);}return _interactionHoverVisibleMeshes;};// Compute NDC from event\nconst _interactNDC=e=>{if(!wrapRef.current)return false;const rect=wrapRef.current.getBoundingClientRect();const x=e.clientX??e.touches?.[0]?.clientX;const y=e.clientY??e.touches?.[0]?.clientY;if(x===undefined||y===undefined)return false;if(x<rect.left||x>rect.right||y<rect.top||y>rect.bottom)return false;_interactMouse.x=(x-rect.left)/rect.width*2-1;_interactMouse.y=-((y-rect.top)/rect.height)*2+1;return true;};const _updatePointerCapture=()=>{const cfg=settingsRef.current;const needsCapture=cfg.enableOrbitControls||cfg.hasEnabledMeshInteractions;if(!needsCapture){setModelPointerCapture(false);return;}if((st._interactionPauseUntil||0)>performance.now()){setModelPointerCapture(false);return;}setModelPointerCapture(!!st._pointerCaptureLock||!!st._modelHoverRaycastActive);};const _suspendInteractionDuringScroll=(ms=160,event=null)=>{st._interactionPauseUntil=Math.max(st._interactionPauseUntil||0,performance.now()+ms);st._pointerCaptureLock=false;_emitModelHover(false,event,true);_unhighlightInteract(false);if(interactTooltipRef.current)updateInteractTooltip(null);if(wrapRef.current){wrapRef.current.style.cursor=settingsRef.current.enableOrbitControls?\"grab\":\"default\";}_updatePointerCapture();};// ── Model hover events: raycast actual model pixels/meshes, not the full canvas box ──\nlet _modelHoverActive=false;let _modelHoverEndTimer=null;let _modelHoverPendingEndEvent=null;const _emitModelHover=(active,event,immediate=false)=>{if(active&&_modelHoverEndTimer){clearTimeout(_modelHoverEndTimer);_modelHoverEndTimer=null;_modelHoverPendingEndEvent=null;}if(!active&&immediate&&_modelHoverEndTimer){clearTimeout(_modelHoverEndTimer);_modelHoverEndTimer=null;_modelHoverPendingEndEvent=null;}if(active===_modelHoverActive)return;if(!active&&!immediate){_modelHoverPendingEndEvent=event;if(_modelHoverEndTimer)return;_modelHoverEndTimer=setTimeout(()=>{_modelHoverEndTimer=null;const pendingEvent=_modelHoverPendingEndEvent;_modelHoverPendingEndEvent=null;_emitModelHover(false,pendingEvent,true);},90);return;}_modelHoverActive=active;st._modelHoverRaycastActive=active;_syncModelHoverGatedAnimations(st,settingsRef.current);_updatePointerCapture();const handler=active?modelHoverStartRef.current:modelHoverEndRef.current;if(event)handler?.(event);else handler?.();};const onModelHoverEventMove=e=>{const cfg=settingsRef.current;if((st._interactionPauseUntil||0)>performance.now())return;// When mesh interactions are active, onInteractMove already raycasts\n// the same mesh list and will update model hover. Avoid double raycasts.\nif(cfg.hasEnabledMeshInteractions)return;const needsModelHoverRaycast=modelHoverStartRef.current||modelHoverEndRef.current||cfg.animationModelHoverGate||cfg.enableOrbitControls;if(!needsModelHoverRaycast)return;if(!_interactNDC(e)){_emitModelHover(false,e,true);return;}_interactRaycaster.setFromCamera(_interactMouse,st.camera);const meshes=_getInteractiveMeshes();if(!meshes.length){_emitModelHover(false,e,true);return;}const hits=_interactRaycaster.intersectObjects(meshes,false);_emitModelHover(hits.length>0,e);};// ── Helper: collect child meshes from a group/mesh ──\nconst _collectChildMeshes=obj=>{const out=[];if(obj.isMesh)out.push(obj);else obj.traverse(c=>{if(c.isMesh)out.push(c);});return out;};// ── Helper: save original emissive colors for a set of meshes ──\nconst _saveOrigEmissive=childMeshes=>{const map=new Map;childMeshes.forEach(m=>{if(!m.material)return;const mats=Array.isArray(m.material)?m.material:[m.material];map.set(m,mats.map(mat=>{if(!mat?.emissive)return null;mat.userData=mat.userData||{};if(!mat.userData.__framerBaseEmissive){mat.userData.__framerBaseEmissive=mat.emissive.clone();}return mat.userData.__framerBaseEmissive.clone();}));});return map;};// ── Helper: apply lerped emissive/scale for a hover channel at given progress ──\nconst _hoverTmpColor=new THREE.Color;const _applyHoverLerp=ch=>{const t=ch.progress;// Emissive interpolation\nif(ch.origEmissive&&ch.targetColor){const _tmpColor=_hoverTmpColor;ch.origEmissive.forEach((saved,mesh)=>{if(!mesh.material)return;const mats=Array.isArray(mesh.material)?mesh.material:[mesh.material];mats.forEach((mat,i)=>{if(!mat.emissive)return;const orig=saved?.[i];if(orig){_tmpColor.copy(orig).lerp(ch.targetColor,t);}else{_tmpColor.setHex(0).lerp(ch.targetColor,t);}mat.emissive.copy(_tmpColor);});});}// Scale interpolation\nif(ch.origScale&&ch.targetScale&&ch.mesh){ch.mesh.scale.x+=(ch.targetScale.x-ch.origScale.x)*t;ch.mesh.scale.y+=(ch.targetScale.y-ch.origScale.y)*t;ch.mesh.scale.z+=(ch.targetScale.z-ch.origScale.z)*t;}if(ch.origPosition&&ch.targetPosition&&ch.mesh){ch.mesh.position.x+=(ch.targetPosition.x-ch.origPosition.x)*t;ch.mesh.position.y+=(ch.targetPosition.y-ch.origPosition.y)*t;ch.mesh.position.z+=(ch.targetPosition.z-ch.origPosition.z)*t;}if(ch.origRotation&&ch.targetRotation&&ch.mesh){ch.mesh.rotation.x+=(ch.targetRotation.x-ch.origRotation.x)*t;ch.mesh.rotation.y+=(ch.targetRotation.y-ch.origRotation.y)*t;ch.mesh.rotation.z+=(ch.targetRotation.z-ch.origRotation.z)*t;}};// ── Helper: snap a hover channel back to original (progress=0) & clear ──\nconst _snapHoverChannel=ch=>{if(!ch.mesh)return;ch.progress=0;_applyHoverLerp(ch)// Resets emissive color to orig\n;if(!ch.mesh._meshAnimOrigPos){if(ch.origPosition)ch.mesh.position.copy(ch.origPosition);if(ch.origRotation)ch.mesh.rotation.copy(ch.origRotation);if(ch.origScale)ch.mesh.scale.copy(ch.origScale);}_clearObjectEventHoverBaseTransform(ch.mesh);ch.mesh=null;ch.config=null;ch.origEmissive=null;ch.origPosition=null;ch.origRotation=null;ch.origScale=null;ch.targetColor=null;ch.targetPosition=null;ch.targetRotation=null;ch.targetScale=null;};const _resetPressInteract=()=>{if(!_pressLerp.mesh)return;_pressLerp.progress=0;_applyHoverLerp(_pressLerp);_pressLerp.mesh=null;_pressLerp.config=null;_pressLerp.origPosition=null;_pressLerp.origRotation=null;_pressLerp.origScale=null;_pressLerp.targetPosition=null;_pressLerp.targetRotation=null;_pressLerp.targetScale=null;};const _applyPressInteract=(mesh,config)=>{if(!mesh||!config?.pressEnabled||config?.draggable)return;if(_pressLerp.mesh&&_pressLerp.mesh!==mesh){_resetPressInteract();}const targets=_makeObjectEventTransformTargets(mesh,config,\"pressTransform\");_pressLerp.mesh=mesh;_pressLerp.config=config;_pressLerp.progress=1;_pressLerp.target=1;_pressLerp.origPosition=targets.origPosition;_pressLerp.origRotation=targets.origRotation;_pressLerp.origScale=targets.origScale;_pressLerp.targetPosition=targets.targetPosition;_pressLerp.targetRotation=targets.targetRotation;_pressLerp.targetScale=targets.targetScale;_applyHoverLerp(_pressLerp);};const _unhighlightInteract=(emitEvent=true)=>{if(_interactHoverEndTimer){clearTimeout(_interactHoverEndTimer);_interactHoverEndTimer=null;}if(_interactHovered){if(emitEvent){_emitMeshInteractionEvent(_interactHoveredConfig,\"onMeshLeave\",null,_interactHovered);}// Move active channel → leaving channel for smooth fade-out\nif(_hoverLerpOut.mesh&&_hoverLerpOut.mesh!==_interactHovered){_snapHoverChannel(_hoverLerpOut)// snap old leaving mesh\n;}_hoverLerpOut.mesh=_hoverLerp.mesh;_hoverLerpOut.config=_hoverLerp.config;_hoverLerpOut.progress=_hoverLerp.progress;_hoverLerpOut.origEmissive=_hoverLerp.origEmissive;_hoverLerpOut.origPosition=_hoverLerp.origPosition;_hoverLerpOut.origRotation=_hoverLerp.origRotation;_hoverLerpOut.origScale=_hoverLerp.origScale;_hoverLerpOut.targetColor=_hoverLerp.targetColor;_hoverLerpOut.targetPosition=_hoverLerp.targetPosition;_hoverLerpOut.targetRotation=_hoverLerp.targetRotation;_hoverLerpOut.targetScale=_hoverLerp.targetScale;// Clear active channel\n_hoverLerp.mesh=null;_hoverLerp.config=null;_hoverLerp.progress=0;_hoverLerp.target=0;_hoverLerp.origEmissive=null;_hoverLerp.origPosition=null;_hoverLerp.origRotation=null;_hoverLerp.origScale=null;_hoverLerp.targetColor=null;_hoverLerp.targetPosition=null;_hoverLerp.targetRotation=null;_hoverLerp.targetScale=null;}_interactHovered=null;_interactHoveredConfig=null;_interactOrigEmissive=null;_interactOrigScale=null;};const _scheduleUnhighlightInteract=()=>{if(!_interactHovered||_interactHoverEndTimer)return;_interactHoverEndTimer=setTimeout(()=>{_interactHoverEndTimer=null;_unhighlightInteract();},90);};const _highlightInteract=(mesh,config)=>{if(_interactHoverEndTimer){clearTimeout(_interactHoverEndTimer);_interactHoverEndTimer=null;}if(_interactHovered===mesh)return;// If we're re-hovering the mesh that's currently fading out, reclaim it\nif(_hoverLerpOut.mesh===mesh){_hoverLerp.mesh=_hoverLerpOut.mesh;_hoverLerp.config=_hoverLerpOut.config;_hoverLerp.progress=_hoverLerpOut.progress// continue from current fade-out progress\n;_hoverLerp.target=1;_hoverLerp.origEmissive=_hoverLerpOut.origEmissive;_hoverLerp.origPosition=_hoverLerpOut.origPosition;_hoverLerp.origRotation=_hoverLerpOut.origRotation;_hoverLerp.origScale=_hoverLerpOut.origScale;_hoverLerp.targetColor=_hoverLerpOut.targetColor;_hoverLerp.targetPosition=_hoverLerpOut.targetPosition;_hoverLerp.targetRotation=_hoverLerpOut.targetRotation;_hoverLerp.targetScale=_hoverLerpOut.targetScale;_hoverLerpOut.mesh=null;_hoverLerpOut.config=null;_hoverLerpOut.progress=0;_hoverLerpOut.origEmissive=null;_hoverLerpOut.origPosition=null;_hoverLerpOut.origRotation=null;_hoverLerpOut.origScale=null;_hoverLerpOut.targetColor=null;_hoverLerpOut.targetPosition=null;_hoverLerpOut.targetRotation=null;_hoverLerpOut.targetScale=null;_interactHovered=mesh;_interactHoveredConfig=config;_emitMeshInteractionEvent(config,\"onMeshEnter\",null,mesh);return;}_unhighlightInteract();_interactHovered=mesh;_interactHoveredConfig=config;_emitMeshInteractionEvent(config,\"onMeshEnter\",null,mesh);const hoverEffect=config.hoverEffect??\"highlight\";if(hoverEffect===\"none\")return;const childMeshes=_collectChildMeshes(mesh);// Setup lerp active channel\n_hoverLerp.mesh=mesh;_hoverLerp.config=config;_hoverLerp.progress=0;_hoverLerp.target=1;// Emissive target (always apply to link parameters)\nif(childMeshes.length>0){_hoverLerp.origEmissive=_saveOrigEmissive(childMeshes);_hoverLerp.targetColor=parseColor(config.hoverColor??\"#4466ff\");_interactOrigEmissive=_hoverLerp.origEmissive// keep ref for compat\n;}// Scale target\nif(hoverEffect===\"scale\"){_hoverLerp.origScale=mesh.scale.clone();const factor=config.hoverScale??1.1;_hoverLerp.targetScale=mesh.scale.clone().multiplyScalar(factor);_interactOrigScale=_hoverLerp.origScale// keep ref for compat\n;}else if(hoverEffect===\"transform\"){const targets=_makeObjectEventTransformTargets(mesh,config,\"hoverTransform\");_hoverLerp.origPosition=targets.origPosition;_hoverLerp.origRotation=targets.origRotation;_hoverLerp.origScale=targets.origScale;_hoverLerp.targetPosition=targets.targetPosition;_hoverLerp.targetRotation=targets.targetRotation;_hoverLerp.targetScale=targets.targetScale;_interactOrigScale=_hoverLerp.origScale// keep ref for compat\n;}};// ── Hover handler ──\nconst onInteractMove=e=>{const cfg=settingsRef.current;if((st._interactionPauseUntil||0)>performance.now())return;const isMobileHoverDisabled=cfg.responsiveIsMobile;if(!cfg.hasEnabledMeshInteractions||!st.modelInner||_interactDragging)return;if(!_interactNDC(e)){_emitModelHover(false,e,true);_unhighlightInteract();if(interactTooltipRef.current)updateInteractTooltip(null);if(wrapRef.current)wrapRef.current.style.cursor=cfg.enableOrbitControls?\"grab\":\"default\";return;}_interactRaycaster.setFromCamera(_interactMouse,st.camera);const meshes=_getInteractionHoverMeshes(cfg);if(!meshes.length){_emitModelHover(false,e,true);return;}const hits=_interactRaycaster.intersectObjects(meshes,false);if(_needsWholeModelHoverHit(cfg)){_emitModelHover(hits.length>0,e);}if(isMobileHoverDisabled){_unhighlightInteract();if(interactTooltipRef.current)updateInteractTooltip(null);if(wrapRef.current)wrapRef.current.style.cursor=cfg.enableOrbitControls?\"grab\":\"default\";return;}let foundInteractive=false;for(const hit of hits){// Walk up to find the mesh with a name that matches an interaction config\nlet obj=hit.object;let config=null;while(obj&&obj!==st.scene&&obj!==st.model&&obj!==st.modelInner){config=_interactConfigByObj.get(obj)||_findInteractConfig(obj);if(config){const matchedObj=_interactMatchCache?.get(_meshInteractionConfigKey(config));if(matchedObj){obj=matchedObj;}break;}obj=obj.parent;}if(config&&obj){foundInteractive=true;_highlightInteract(obj,config);// Set cursor\nif(wrapRef.current){if(config.draggable)wrapRef.current.style.cursor=\"grab\";else if(config.clickAction&&config.clickAction!==\"none\")wrapRef.current.style.cursor=config.cursorStyle??\"pointer\";else wrapRef.current.style.cursor=config.cursorStyle??\"pointer\";}// Show interaction tooltip if configured\nconst tooltipText=(config.hoverTooltip??\"\").trim();if(tooltipText&&wrapRef.current){const rect=wrapRef.current.getBoundingClientRect();updateInteractTooltip({x:e.clientX-rect.left,y:e.clientY-rect.top,text:tooltipText});}else if(interactTooltipRef.current){updateInteractTooltip(null);}break;}}if(!foundInteractive){_scheduleUnhighlightInteract();if(interactTooltipRef.current)updateInteractTooltip(null);if(wrapRef.current)wrapRef.current.style.cursor=cfg.enableOrbitControls?\"grab\":\"default\";}};// ── Click handler ──\nconst onInteractClick=e=>{const cfg=settingsRef.current;if(_interactDragging)return;// don't click while dragging\n// Skip click if we just finished dragging\nif(_interactJustDragged){_interactJustDragged=false;return;}if(!_interactNDC(e))return;_interactRaycaster.setFromCamera(_interactMouse,st.camera);const meshes=_getInteractiveMeshes();if(!meshes.length)return;const hits=_interactRaycaster.intersectObjects(meshes,false);if(!hits.length)return;modelClickRef.current?.(e);if(!cfg.hasEnabledMeshInteractions||!st.modelInner)return;for(const hit of hits){let obj=hit.object;let config=null;while(obj&&obj!==st.scene&&obj!==st.model&&obj!==st.modelInner){config=_interactConfigByObj.get(obj)||_findInteractConfig(obj);if(config){const matchedObj=_interactMatchCache?.get(_meshInteractionConfigKey(config));if(matchedObj){obj=matchedObj;}break;}obj=obj.parent;}if(!config||!obj)continue;_emitMeshInteractionEvent(config,\"onMeshClick\",e,obj);// ── Click Action ──\nconst action=config.clickAction??\"none\";if(action===\"openUrl\"){const url=config.clickUrl??\"\";if(url){if(config.clickUrlNewTab)window.open(url,\"_blank\",\"noopener\");else window.location.href=url;}}else if(action===\"toggleVisibility\"){// Toggle self or target mesh\nconst targetName=(config.clickTargetMesh??\"\").trim();if(targetName){const tLower=targetName.toLowerCase();const allModels=[st.modelInner];if(st.subScenes){for(const[,ss]of st.subScenes){if(ss._loaded&&ss.group)allModels.push(ss.group);}}for(const root of allModels){root.traverse(c=>{if(c.name&&c.name.toLowerCase().includes(tLower)){c.visible=!c.visible;}});}}else{obj.visible=!obj.visible;_unhighlightInteract();}}else if(action===\"changeColor\"){// Toggle color — click once to apply, click again to restore original\n// Collect all meshes in the group\nconst colorMeshes=[];if(obj.isMesh)colorMeshes.push(obj);else obj.traverse(c=>{if(c.isMesh&&c.material)colorMeshes.push(c);});if(colorMeshes.length>0){const isApplied=obj._interactColorApplied;if(isApplied){colorMeshes.forEach(m=>{_restoreMaterial(m);});obj._interactColorApplied=false;}else{const newColor=parseColor(config.clickColor??\"#ff0000\");colorMeshes.forEach(m=>{_backupMaterial(m);const mats=Array.isArray(m.material)?m.material:[m.material];mats.forEach(mat=>{if(mat.color)mat.color.copy(newColor);});});obj._interactColorApplied=true;}}}else if(action===\"playAnimation\"){const clipName=(config.clickAnimClip??\"\").trim();if(clipName&&st.mixer&&st.animations?.length){const clip=_findAnimationClip(st.animations,clipName);if(clip){const existingAction=st.mixer.existingAction(clip);if(existingAction?.isRunning()){if(existingAction._meshCompleteListener){st.mixer.removeEventListener(\"finished\",existingAction._meshCompleteListener);existingAction._meshCompleteListener=null;}existingAction.stop();}else{const a=st.mixer.clipAction(clip);if(a._meshCompleteListener){st.mixer.removeEventListener(\"finished\",a._meshCompleteListener);a._meshCompleteListener=null;}// Loop mode\nconst loopMode=config.clickAnimLoop??\"once\";if(loopMode===\"repeat\"){a.setLoop(THREE.LoopRepeat,Infinity);a.clampWhenFinished=false;}else if(loopMode===\"pingPong\"){a.setLoop(THREE.LoopPingPong,Infinity);a.clampWhenFinished=false;}else{a.setLoop(THREE.LoopOnce,1);a.clampWhenFinished=true;}// Reverse playback\nif(config.clickAnimReverse){a.timeScale=-1;}else{a.timeScale=1;}if(loopMode===\"once\"&&config.onAnimationComplete){const onFinished=evt=>{if(evt?.action!==a)return;st.mixer.removeEventListener(\"finished\",onFinished);a._meshCompleteListener=null;_emitMeshInteractionEvent(config,\"onAnimationComplete\",e,obj);};st.mixer.addEventListener(\"finished\",onFinished);a._meshCompleteListener=onFinished;}a.reset();if(config.clickAnimReverse){a.time=clip.duration;}a.play();}}}}break;// only handle first interactive hit\n}};// ── Drag handlers ──\nconst _tmpVec3Drag=new THREE.Vector3;const _tmpVec3DragB=new THREE.Vector3;const onInteractPointerDown=e=>{const cfg=settingsRef.current;const isMobilePress=_isMobileInteraction(e,cfg);const shouldPrioritizeTouchScroll=isMobilePress&&cfg.scrollAnchorEnabled&&!cfg.hasDraggableMeshInteractions;if(!st.modelInner)return;if(shouldPrioritizeTouchScroll){_emitModelHover(false,e,true);return;}if(!_interactNDC(e)){if(isMobilePress)_emitModelHover(false,e,true);return;}_interactRaycaster.setFromCamera(_interactMouse,st.camera);const meshes=_getInteractiveMeshes();const hits=_interactRaycaster.intersectObjects(meshes,false);if(isMobilePress)_emitModelHover(hits.length>0,e);if(!cfg.hasEnabledMeshInteractions)return;for(const hit of hits){let obj=hit.object;let config=null;while(obj&&obj!==st.scene&&obj!==st.model&&obj!==st.modelInner){config=_interactConfigByObj.get(obj)||_findInteractConfig(obj);if(config){const matchedObj=_interactMatchCache?.get(_meshInteractionConfigKey(config));if(matchedObj){obj=matchedObj;}break;}obj=obj.parent;}if(config&&obj){_applyPressInteract(obj,config);break;}}if(isMobilePress){for(const hit of hits){let obj=hit.object;let config=null;while(obj&&obj!==st.scene&&obj!==st.model&&obj!==st.modelInner){config=_interactConfigByObj.get(obj)||_findInteractConfig(obj);if(config){const matchedObj=_interactMatchCache?.get(_meshInteractionConfigKey(config));if(matchedObj){obj=matchedObj;}break;}obj=obj.parent;}if(config&&obj){_highlightInteract(obj,config);break;}}}for(const hit of hits){let obj=hit.object;let config=null;while(obj&&obj!==st.scene&&obj!==st.model&&obj!==st.modelInner){config=_interactConfigByObj.get(obj)||_findInteractConfig(obj);if(config){const matchedObj=_interactMatchCache?.get(_meshInteractionConfigKey(config));if(matchedObj){obj=matchedObj;}break;}obj=obj.parent;}if(!config||!config.draggable||!obj)continue;e.preventDefault?.();e.stopPropagation?.();_interactDragging=obj;_interactDragConfig=config;_emitMeshInteractionEvent(config,\"onDragStart\",e,obj);// Cancel any in-progress snap-back on this mesh\nif(_dragSnapBack&&_dragSnapBack.mesh===obj){_dragSnapBack=null;}// Save original position for snap-back\nif(!obj._interactOrigPos)obj._interactOrigPos=obj.position.clone();// Build drag plane based on config\nconst planeType=config.dragPlane??\"xz\";if(planeType===\"xy\")_tmpVec3A.set(0,0,1);else if(planeType===\"yz\")_tmpVec3A.set(1,0,0);else if(planeType===\"screen\"){// Plane facing camera\nst.camera.getWorldDirection(_tmpVec3A);_tmpVec3A.negate();}else _tmpVec3A.set(0,1,0)// xz\n;_interactDragPlane=new THREE.Plane;_interactDragPlane.setFromNormalAndCoplanarPoint(_tmpVec3A,obj.position);// Compute offset (so dragging doesn't snap object center to cursor)\n_interactRaycaster.ray.intersectPlane(_interactDragPlane,_tmpVec3Drag);_interactDragOffset.copy(_tmpVec3Drag).sub(obj.position);// Disable orbit controls during drag\ncontrols.enabled=false;if(wrapRef.current)wrapRef.current.style.cursor=\"grabbing\";break;}};const onInteractPointerMove=e=>{if(!_interactDragging||!_interactDragPlane)return;if(!_interactNDC(e))return;_interactRaycaster.setFromCamera(_interactMouse,st.camera);if(_interactRaycaster.ray.intersectPlane(_interactDragPlane,_tmpVec3DragB)){_tmpVec3DragB.sub(_interactDragOffset);// Apply constraint if set\nconst constraint=_interactDragConfig?.dragConstraint??0;if(constraint>0&&_interactDragging._interactOrigPos){const dist=_tmpVec3DragB.distanceTo(_interactDragging._interactOrigPos);if(dist>constraint){_tmpVec3DragB.sub(_interactDragging._interactOrigPos).normalize().multiplyScalar(constraint).add(_interactDragging._interactOrigPos);}}_interactDragging.position.copy(_tmpVec3DragB);}};const onInteractPointerUp=e=>{const cfg=settingsRef.current;_resetPressInteract();if(_isMobileInteraction(e,cfg)){_emitModelHover(false,e,true);_unhighlightInteract();}if(!_interactDragging)return;const draggedMesh=_interactDragging;const draggedConfig=_interactDragConfig;// Flag that we just finished a drag — click event fires after pointerUp\n_interactJustDragged=true;// Snap back if configured — smooth lerp instead of instant\nif(_interactDragConfig?.dragSnapBack&&_interactDragging._interactOrigPos){_dragSnapBack={mesh:_interactDragging,targetPos:_interactDragging._interactOrigPos.clone()};}// Re-enable orbit controls\ncontrols.enabled=cfg.enableOrbitControls;if(wrapRef.current)wrapRef.current.style.cursor=cfg.enableOrbitControls?\"grab\":\"default\";_emitMeshInteractionEvent(draggedConfig,\"onDragEnd\",e,draggedMesh);_interactDragging=null;_interactDragConfig=null;_interactDragPlane=null;};const onCanvasPointerCaptureDown=e=>{const cfg=settingsRef.current;if((st._interactionPauseUntil||0)>performance.now())return;if(!cfg.enableOrbitControls&&!cfg.hasEnabledMeshInteractions)return;if(!_interactNDC(e))return;_interactRaycaster.setFromCamera(_interactMouse,st.camera);const meshes=_getInteractiveMeshes();if(!meshes.length)return;const hits=_interactRaycaster.intersectObjects(meshes,false);if(!hits.length)return;st._pointerCaptureLock=true;_updatePointerCapture();};const onCanvasPointerCaptureUp=()=>{st._pointerCaptureLock=false;_updatePointerCapture();};let _modelHoverMoveRaf=0;let _modelHoverMoveEvent=null;const onModelHoverEventMoveRaf=e=>{// Skip entirely during scroll suppression — avoids getBoundingClientRect + raycast\nif((st._interactionPauseUntil||0)>performance.now())return;const now=performance.now();if(now-_lastModelHoverRaycastAt<48)return;_lastModelHoverRaycastAt=now;_modelHoverMoveEvent=e;if(_modelHoverMoveRaf)return;_modelHoverMoveRaf=requestAnimationFrame(()=>{_modelHoverMoveRaf=0;const evt=_modelHoverMoveEvent;_modelHoverMoveEvent=null;if(evt)onModelHoverEventMove(evt);});};let _interactMoveRaf=0;let _interactMoveEvent=null;const onInteractMoveRaf=e=>{// Skip entirely during scroll suppression — avoids getBoundingClientRect + raycast\nif((st._interactionPauseUntil||0)>performance.now())return;const now=performance.now();const interval=_interactHovered?32:56;if(now-_lastInteractHoverRaycastAt<interval)return;_lastInteractHoverRaycastAt=now;_interactMoveEvent=e;if(_interactMoveRaf)return;_interactMoveRaf=requestAnimationFrame(()=>{_interactMoveRaf=0;const evt=_interactMoveEvent;_interactMoveEvent=null;if(evt)onInteractMove(evt);});};let _interactPointerMoveRaf=0;let _interactPointerMoveEvent=null;const onInteractPointerMoveRaf=e=>{if(_isMobileInteraction(e,settingsRef.current)&&!_interactDragging){return;}_interactPointerMoveEvent=e;if(_interactPointerMoveRaf)return;_interactPointerMoveRaf=requestAnimationFrame(()=>{_interactPointerMoveRaf=0;const evt=_interactPointerMoveEvent;_interactPointerMoveEvent=null;if(evt)onInteractPointerMove(evt);});};const onCanvasWheel=e=>{const cfg=settingsRef.current;_suspendInteractionDuringScroll(480,e);if(cfg.enableScrollAnimation||!cfg.enableZoom){// Let page/section scroll continue while the fixed canvas is hovering a mesh.\n// OrbitControls listens on the canvas and may otherwise consume wheel events.\ne.stopImmediatePropagation?.();}};const onWindowScrollInteractionPause=()=>{_suspendInteractionDuringScroll(520,null);};// Attach interaction listeners\ndocument.addEventListener(\"mousemove\",onModelHoverEventMoveRaf);document.addEventListener(\"mousemove\",onInteractMoveRaf);window.addEventListener(\"scroll\",onWindowScrollInteractionPause,{passive:true});canvas.addEventListener(\"wheel\",onCanvasWheel,{capture:true,passive:true});canvas.addEventListener(\"pointerdown\",onCanvasPointerCaptureDown);document.addEventListener(\"click\",onInteractClick);canvas.addEventListener(\"pointerdown\",onInteractPointerDown);document.addEventListener(\"pointermove\",onInteractPointerMoveRaf);document.addEventListener(\"pointerup\",onInteractPointerUp);document.addEventListener(\"pointerup\",onCanvasPointerCaptureUp);document.addEventListener(\"pointercancel\",onInteractPointerUp);document.addEventListener(\"pointercancel\",onCanvasPointerCaptureUp);// Touch support\ncanvas.addEventListener(\"touchstart\",onInteractPointerDown,{passive:false});document.addEventListener(\"touchmove\",onInteractPointerMoveRaf,{passive:true});document.addEventListener(\"touchend\",onInteractPointerUp);document.addEventListener(\"touchend\",onCanvasPointerCaptureUp);let resizeRaf=0;let resizeTimeout=null;const resize=(force=false)=>{if(!wrapRef.current)return;// Use clientWidth/Height (CSS logical size, ignores Framer zoom/transforms)\n// instead of getBoundingClientRect (which returns scaled visual size)\nconst w=wrapRef.current.clientWidth;const h=wrapRef.current.clientHeight;if(!w||!h)return;const cfgForResize=settingsRef.current;const st=stateRef.current;if(!st)return;const metrics=_getOptimizedRenderMetrics(w,h,cfgForResize);const dpr=metrics.dpr;const sizeStable=Math.abs(w-(st._lastResizeCssW||0))<=1&&Math.abs(h-(st._lastResizeCssH||0))<=1;const dprStable=Math.abs(dpr-(st._lastRenderDpr||0))<=.01;if(!force&&sizeStable&&dprStable)return;// false = don't override canvas CSS (keeps width:100%;height:100%)\nrenderer.setSize(w,h,false);renderer.setPixelRatio(dpr);if(_runtimeNeedsPostFx(cfgForResize)){ensurePostFxPipeline(cfgForResize,w,h);}else{disposePostFxPipeline();}if(bokehPass?.uniforms?.[\"aspect\"]){bokehPass.uniforms[\"aspect\"].value=w/h;}if(camera.isOrthographicCamera){const aspect=w/h;camera.left=-_ORTHO_FRUSTUM*aspect/2;camera.right=_ORTHO_FRUSTUM*aspect/2;camera.top=_ORTHO_FRUSTUM/2;camera.bottom=-_ORTHO_FRUSTUM/2;}else{camera.aspect=w/h;}camera.updateProjectionMatrix();fxaa?.uniforms?.resolution?.value?.set?.(1/metrics.renderWidth,1/metrics.renderHeight);// Re-run auto-fit when container resizes\nst._lastRenderDpr=dpr;st._lastRenderPixelWidth=metrics.renderWidth;st._lastRenderPixelHeight=metrics.renderHeight;st._lastResizeCssW=w;st._lastResizeCssH=h;st._lastResizeAt=performance.now();if(st.model){const cfg=settingsRef.current;st.model.scale.setScalar(st.normalizeScale);st.model.position.set(0,0,0);_tmpBox3.copy(_computeMeshOnlyBoundingBox(st.model));controls.target.set(0,0,0);controls.update();const normSize=_tmpBox3.getSize(_tmpVec3A);st.fitRatio=_getAutoFitRatio(camera,normSize);const ms=Math.max(.01,cfg.modelScale||1);st.model.scale.setScalar(st.normalizeScale*st.fitRatio*ms);applyModelTransform(st,cfg);}};const scheduleResize=(force=false)=>{_markScrollLayoutDirty(st);if(resizeRaf){cancelAnimationFrame(resizeRaf);resizeRaf=0;}if(resizeTimeout){clearTimeout(resizeTimeout);resizeTimeout=null;}const run=()=>{resizeRaf=0;resize(force);};const stNow=stateRef.current;const now=performance.now();const sinceLast=now-(stNow?._lastResizeAt||0);// Browser zoom can fire a burst of ResizeObserver/layout updates.\n// Apply one resize quickly, then coalesce the rest into a trailing update.\nif(force||sinceLast>120){resizeRaf=requestAnimationFrame(run);return;}resizeTimeout=setTimeout(()=>{resizeTimeout=null;resizeRaf=requestAnimationFrame(run);},140);};st._scheduleResize=scheduleResize;const ro=new ResizeObserver(()=>{_markScrollLayoutDirty(st);scheduleResize(false);});if(wrapRef.current)ro.observe(wrapRef.current);resize(true);// Delayed resize for Framer layout timing (component may not be laid out yet)\nconst delayedResizeTimers=[setTimeout(()=>scheduleResize(true),100),setTimeout(()=>scheduleResize(true),500)];const onVisibilityChange=()=>{st._pageVisible=!document.hidden;// Drop accumulated delta so animations don't jump after the tab resumes.\nclock.reset();};document.addEventListener(\"visibilitychange\",onVisibilityChange);const onWindowLayoutChange=()=>{_markScrollLayoutDirty(st);};window.addEventListener(\"resize\",onWindowLayoutChange,{passive:true});window.addEventListener(\"scroll\",onWindowLayoutChange,{passive:true});// Element scroll events do not bubble to the window listener above.\n// Framer can scroll an inner page container, so capture scroll events\n// at the document level to invalidate the cached model Scroll ID rect.\ndocument.addEventListener(\"scroll\",onWindowLayoutChange,{passive:true,capture:true});const vv=typeof window!==\"undefined\"?window.visualViewport:null;vv?.addEventListener(\"resize\",onWindowLayoutChange,{passive:true});vv?.addEventListener(\"scroll\",onWindowLayoutChange,{passive:true});// On mobile, inertial scroll continues after touchend and scroll events\n// may fire less frequently than rAF. Force rect cache invalidation on\n// every touchmove so getBoundingClientRect is never stale during a flick.\nconst onTouchMoveLayoutDirty=()=>{if(st._scrollLayoutRectCache?.clear){st._scrollLayoutRectCache.clear();}else{st._scrollLayoutRectCache=new Map;}};window.addEventListener(\"touchmove\",onTouchMoveLayoutDirty,{passive:true,capture:false});let io=null;if(typeof IntersectionObserver!==\"undefined\"&&wrapRef.current){io=new IntersectionObserver(([entry])=>{const ratio=entry?.intersectionRatio??0;st._canvasInViewport=!!entry?.isIntersecting&&ratio>0;_webglCoordinator.notify(st._coordId,ratio);},{threshold:[0,.25,.5,.75,1]});io.observe(wrapRef.current);}// ─── Render loop ───\nconst loop=()=>{rafRef.current=requestAnimationFrame(loop);const cfg=settingsRef.current;const runtimeMode=getFramerRuntimeMode();const stopInEditor=runtimeMode===\"canvas\"&&cfg.stopMotionInEditor;let statsMonitor=null;if(cfg.showStatsMonitor){statsMonitor=_syncStatsMonitor(st,cfg,wrapRef.current);}else if(st._stats||st._statsDom){_removeStatsMonitor(st);}// Coordinator pause takes precedence: a low-priority canvas in a\n// multi-canvas page is paused regardless of per-instance flags.\n// This also implicitly syncs performancePauseOffscreen across the\n// group — if any canvas is offscreen it loses its budget slot.\nconst coordPaused=!!st._coordinatorPaused;// Context destruction: coordinator signals this slot should free its\n// WebGL context because it has been off-screen for too long AND the\n// total registered instance count exceeds the hard context limit.\n// Parsed geometry stays in _modelCache so re-init is fast when the\n// slot scrolls back into view.\nif(st._coordinatorShouldDestroy&&!st._destroyScheduled){st._destroyScheduled=true;cancelAnimationFrame(rafRef.current);rafRef.current=0;// Defer to avoid destroying mid-frame\nsetTimeout(()=>{setWebglRuntimeActive(false);st._destroyScheduled=false;},0);return;}const pauseRender=coordPaused||cfg.performanceMode&&(cfg.performancePauseHidden&&!st._pageVisible||cfg.performancePauseOffscreen&&!st._canvasInViewport);if(pauseRender){// Keep the clock fresh, but skip all scene updates and GPU rendering.\nclock.reset();st._lastFrameTime=0;return;}const frameNow=performance.now();const effectiveCfg=cfg;const scrollCfg=cfg;st._hasSubSceneItems=(cfg.subSceneItems?.length??0)>0;const dt=stopInEditor?0:Math.min(.05,clock.getDelta());statsMonitor?.begin?.();// OPTIMIZATION: Render-On-Demand (Skip WebGL draw calls when idle)\nif(st._lastCfgObj!==cfg){st._lastCfgObj=cfg;st._framesSinceChange=0;}if(st.mixer&&st._activeAnimationAction?.isRunning()||st._blurRevealStart>0||_interactDragging||cfg.enableScrollAnimation||cfg.enableParticles||cfg.enableFloat||cfg.enableFilmGrain||cfg.meshAnimationsRaw?.length>0||cfg.autoRotateSpeed!==0){st._framesSinceChange=0;}st._framesSinceChange++;const shouldRenderGL=st._framesSinceChange<=15;const elapsed=clock.elapsedTime;const scrollAnchorOffset=_getScrollAnchorOffset(st,scrollCfg,wrapRef.current,frameNow);const scrollTransformBaseOffset=_getScrollTransformProgressOffset(st,scrollCfg,wrapRef.current,frameNow);const scrollTransformPreviewEnabled=!!cfg.scrollProgressTransformEnabled;const scrollTransformPreviewChanged=st._scrollTransformPreviewSeen&&(st._scrollTransformPreviewEnabled!==scrollTransformPreviewEnabled||st._scrollTransformPreviewPositionX!==cfg.scrollProgressPositionX||st._scrollTransformPreviewPositionY!==cfg.scrollProgressPositionY||st._scrollTransformPreviewPositionZ!==cfg.scrollProgressPositionZ||st._scrollTransformPreviewScale!==cfg.scrollProgressScale||st._scrollTransformPreviewRotationX!==cfg.scrollAnchorRotationX||st._scrollTransformPreviewRotationY!==cfg.scrollAnchorRotationY||st._scrollTransformPreviewRotationZ!==cfg.scrollAnchorRotationZ);if(isCanvas&&scrollTransformPreviewChanged){st._scrollTransformPreviewUntil=scrollTransformPreviewEnabled?frameNow+700:0;}st._scrollTransformPreviewSeen=true;st._scrollTransformPreviewEnabled=scrollTransformPreviewEnabled;st._scrollTransformPreviewPositionX=cfg.scrollProgressPositionX;st._scrollTransformPreviewPositionY=cfg.scrollProgressPositionY;st._scrollTransformPreviewPositionZ=cfg.scrollProgressPositionZ;st._scrollTransformPreviewScale=cfg.scrollProgressScale;st._scrollTransformPreviewRotationX=cfg.scrollAnchorRotationX;st._scrollTransformPreviewRotationY=cfg.scrollAnchorRotationY;st._scrollTransformPreviewRotationZ=cfg.scrollAnchorRotationZ;let scrollTransformOffset=scrollTransformBaseOffset;if(isCanvas&&scrollTransformPreviewEnabled&&(st._scrollTransformPreviewUntil||0)>frameNow){const previewOffset=st._scrollTransformPreviewOffset||(st._scrollTransformPreviewOffset={x:0,y:0,active:true,inView:true,progress:1});previewOffset.x=scrollTransformBaseOffset.x;previewOffset.y=scrollTransformBaseOffset.y;previewOffset.active=true;previewOffset.inView=scrollTransformBaseOffset.inView;previewOffset.progress=1;scrollTransformOffset=previewOffset;}if(st._scrollAnchorPendingAppearReplay){if(_shouldReplayAppear(effectiveCfg)){_restartAppearPlayback(st,effectiveCfg,canvasRef.current,true);}st._scrollAnchorPendingAppearReplay=\"\";}if(st.model){const nextAppearReplayHash=appearReplayHash(effectiveCfg);const hasPreviousAppearHash=!!st._lastAppearReplayHash;if(nextAppearReplayHash!==st._lastAppearReplayHash){st._lastAppearReplayHash=nextAppearReplayHash;if(hasPreviousAppearHash&&_hasAppearTransformMotion(effectiveCfg)&&_shouldReplayAppear(effectiveCfg)){_restartAppearPlayback(st,effectiveCfg,canvasRef.current,true);}}}_syncScrollAnchorAppear(st,effectiveCfg,wrapRef.current,canvasRef.current);if(cfg.performanceStats&&frameNow-(st._lastPerfLog||0)>2e3){const fps=dt>0?Math.round(1/dt):0;console.log(\"[Import_3D perf]\",{fps,dpr:Number(renderer.getPixelRatio().toFixed(2)),pixels:(st._lastRenderPixelWidth||0)*(st._lastRenderPixelHeight||0),size:`${st._lastRenderPixelWidth||0}x${st._lastRenderPixelHeight||0}`,calls:renderer.info.render.calls,triangles:renderer.info.render.triangles,geometries:renderer.info.memory.geometries,textures:renderer.info.memory.textures});st._lastPerfLog=frameNow;}// Background (cached — avoid new Color every frame)\nif(effectiveCfg.transparentBackground){st.scene.background=null;renderer.setClearColor(0,0);}else{if(effectiveCfg.backgroundColor!==st.lastBgColor){st.cachedBgColor=parseColor(effectiveCfg.backgroundColor);st.lastBgColor=effectiveCfg.backgroundColor;}st.scene.background=st.cachedBgColor;// CRITICAL: also set renderer clear color to match —\n// renderer was created with alpha:true, so after a transparent frame\n// the clear alpha stays 0. EffectComposer's render targets + passes\n// may use renderer.clear() which inherits setClearColor state.\nrenderer.setClearColor(st.cachedBgColor,1);}// Env intensity + background (instant — not part of fade transition)\nif(st.scene.environment){st.scene.environmentIntensity=effectiveCfg.enableEnvironment?effectiveCfg.environmentIntensity:0;if(effectiveCfg.showEnvironmentBackground&&!effectiveCfg.transparentBackground&&effectiveCfg.environmentType===\"hdri\"){st.scene.background=st.envMap;}}// Controls (only write when changed)\nconst controlsPausedByScroll=(st._interactionPauseUntil||0)>frameNow&&!_interactDragging;const controlsShouldBeEnabled=effectiveCfg.enableOrbitControls&&!controlsPausedByScroll;if(controls.enabled!==controlsShouldBeEnabled)controls.enabled=controlsShouldBeEnabled;if(controls.enableRotate!==effectiveCfg.enableOrbitControls)controls.enableRotate=effectiveCfg.enableOrbitControls;if(controls.enableZoom!==effectiveCfg.enableZoom)controls.enableZoom=effectiveCfg.enableZoom;if(controls.autoRotate)controls.autoRotate=false;if(controls.autoRotateSpeed!==effectiveCfg.autoRotateSpeed)controls.autoRotateSpeed=effectiveCfg.autoRotateSpeed;controls.update();// Reactive model scale + position + rotation\nif(st.model){const scaleChanged=effectiveCfg.modelScale!==st.lastModelScale;const offsetChanged=effectiveCfg.modelOffsetX!==st.lastOffsetX||effectiveCfg.modelOffsetY!==st.lastOffsetY||effectiveCfg.modelOffsetZ!==st.lastOffsetZ;const rotChanged=effectiveCfg.modelRotationX!==st.lastRotX||effectiveCfg.modelRotationY!==st.lastRotY||effectiveCfg.modelRotationZ!==st.lastRotZ;if(scaleChanged||offsetChanged||rotChanged){// When scroll animation is ON, skip immediate transform — the scroll block\n// handles lerping to new targets smoothly. Only update tracking values.\nif(!effectiveCfg.enableScrollAnimation){const ms=Math.max(.01,effectiveCfg.modelScale||1);st.model.scale.setScalar(st.normalizeScale*st.fitRatio*ms);applyModelTransform(st,effectiveCfg);}st.lastModelScale=effectiveCfg.modelScale;st.lastOffsetX=effectiveCfg.modelOffsetX;st.lastOffsetY=effectiveCfg.modelOffsetY;st.lastOffsetZ=effectiveCfg.modelOffsetZ;st.lastRotX=effectiveCfg.modelRotationX;st.lastRotY=effectiveCfg.modelRotationY;st.lastRotZ=effectiveCfg.modelRotationZ;}}// ═══ Unified scene config transition (material + lighting + env + effects) ═══\n// Fade-to-black transition: darken → swap ALL configs at swap point → brighten\n// Note: Dissolve effect is ONLY used for model URL changes, not for material/scene changes\nif(st.model){const sh=effectiveCfg._sceneConfigHash;const sceneChanged=sh!==st.lastSceneHash;if(sceneChanged){const needsFadeTransition=effectiveCfg._materialHash!==st.lastMaterialHash||effectiveCfg._envHash!==st.lastEnvHash;const duration=needsFadeTransition?effectiveCfg.materialTransitionDuration||.3:0;if(duration<=.01){// Instant change (no transition)\nif(st._fadeCacheDirty){_clearFadeCacheAllScenes(st);}_applySceneConfigChanges(st,effectiveCfg,renderer,scene,sh);st.sceneFadeProgress=0;st.sceneFadeTargetHash=null;st.sceneFadeTargetCfg=null;st.sceneSwapped=false;}else if(st.sceneFadeProgress===0){// Start new fade-to-black transition\nst.sceneFadeProgress=.01;st.sceneFadeTargetHash=sh;st.sceneFadeTargetCfg={...effectiveCfg};st.sceneSwapped=false;}else if(sh!==st.sceneFadeTargetHash){// Already fading but target changed\nif(st.sceneFadeProgress>.5){// Complete current transition immediately\nif(!st.sceneSwapped&&st.sceneFadeTargetCfg){_clearFadeCacheAllScenes(st);_applySceneConfigChanges(st,st.sceneFadeTargetCfg,renderer,scene,st.sceneFadeTargetHash);}else{_setFadeAllScenes(st,1,true);}st.sceneFadeProgress=.01;st.sceneFadeTargetHash=sh;st.sceneFadeTargetCfg={...effectiveCfg};st.sceneSwapped=false;}else{st.sceneFadeTargetHash=sh;st.sceneFadeTargetCfg={...effectiveCfg};st.sceneSwapped=false;}}}// Handle fade transition\nif(st.sceneFadeProgress>0){const duration=Math.max(.05,effectiveCfg.materialTransitionDuration||.3);const fadeSpeed=1/duration;st.sceneFadeProgress+=dt*fadeSpeed;// Swap at 35% — model darkens quickly, then brightens with new config.\n// Never fully black (floor 0.03) — eliminates visible gap.\nconst SWAP_AT=.35;const MIN_F=.03;if(st.sceneFadeProgress<SWAP_AT){// Phase 1: Darken (1 → MIN_F) with ease-in-out\nconst t=st.sceneFadeProgress/SWAP_AT;const factor=MIN_F+(1-MIN_F)*(1-easeInOutQuad(t));_setFadeAllScenes(st,factor);}else{// Past swap point — apply ALL config changes once (Phase 2)\nif(!st.sceneSwapped){const tc=st.sceneFadeTargetCfg;// CRITICAL: clearFadeCache restores brightness then clears cache\n// This ensures we don't cache darkened colors as \"original\"\n_clearFadeCacheAllScenes(st);// Apply only the scene config slices that actually changed.\n_applySceneConfigChanges(st,tc,renderer,scene,st.sceneFadeTargetHash);st.sceneSwapped=true;// Now rebuild cache at MIN_F with NEW materials (which are at full brightness)\n_setFadeAllScenes(st,MIN_F,true);}if(st.sceneFadeProgress>=1){// Transition complete — restore full brightness & cleanup\n_setFadeAllScenes(st,1,true);st.sceneFadeProgress=0;st.sceneFadeTargetHash=null;st.sceneFadeTargetCfg=null;st.sceneSwapped=false;}else{// Phase 3: Brighten (MIN_F → 1) with ease-out (fast rise from dark)\nconst t=(st.sceneFadeProgress-SWAP_AT)/(1-SWAP_AT);const eased=1-(1-t)*(1-t)// ease-out quadratic\n;const factor=MIN_F+(1-MIN_F)*eased;_setFadeAllScenes(st,factor);}}}}// CRITICAL SAFETY: Ensure model + sub-scenes at full brightness when no transition is active\n// This catches ALL edge cases where transition state might get stuck or interrupted\nif(st.model&&st.sceneFadeProgress===0&&st._fadeCacheDirty){_setFadeAllScenes(st,1,true);}// ── Scroll Animation ──\n// Works with Framer's Scroll Variants. Simple lerp to smooth prop changes.\nif(effectiveCfg.enableScrollAnimation&&(st.model||st.dissolveOldModel)){// Target values from Framer variants\nconst tScale=scrollCfg.modelScale||1;const tOffX=scrollCfg.modelOffsetX||0;const tOffY=scrollCfg.modelOffsetY||0;const tOffZ=scrollCfg.modelOffsetZ||0;const tRotX=scrollCfg.modelRotationX||0;const tRotY=scrollCfg.modelRotationY||0;const tRotZ=scrollCfg.modelRotationZ||0;const tCamX=scrollCfg.cameraPositionX??-1;const tCamY=scrollCfg.cameraPositionY??2;const tCamZ=scrollCfg.cameraPositionZ??10;// Initialize smoothed values on first run\nif(st.smoothedScale===undefined){st.smoothedScale=tScale;st.smoothedOffX=tOffX;st.smoothedOffY=tOffY;st.smoothedOffZ=tOffZ;st.smoothedRotX=tRotX;st.smoothedRotY=tRotY;st.smoothedRotZ=tRotZ;st.smoothedCamX=tCamX;st.smoothedCamY=tCamY;st.smoothedCamZ=tCamZ;}// Smooth lerp with configurable speed from scroll.smoothing property\nconst lerpFactor=effectiveCfg.scrollSmoothing||.05;st.smoothedScale+=(tScale-st.smoothedScale)*lerpFactor;st.smoothedOffX+=(tOffX-st.smoothedOffX)*lerpFactor;st.smoothedOffY+=(tOffY-st.smoothedOffY)*lerpFactor;st.smoothedOffZ+=(tOffZ-st.smoothedOffZ)*lerpFactor;st.smoothedRotX+=(tRotX-st.smoothedRotX)*lerpFactor;st.smoothedRotY+=(tRotY-st.smoothedRotY)*lerpFactor;st.smoothedRotZ+=(tRotZ-st.smoothedRotZ)*lerpFactor;st.smoothedCamX+=(tCamX-st.smoothedCamX)*lerpFactor;st.smoothedCamY+=(tCamY-st.smoothedCamY)*lerpFactor;st.smoothedCamZ+=(tCamZ-st.smoothedCamZ)*lerpFactor;// Apply smoothed values to model & camera\n// Apply to both current model and dissolve-old model (during transition)\nconst modelsToUpdate=[];if(st.model)modelsToUpdate.push(st.model);if(st.dissolveOldModel)modelsToUpdate.push(st.dissolveOldModel);for(const targetModel of modelsToUpdate){// Use per-model scale factors if available (prevents zoom glitch during dissolve)\nconst modelNormScale=targetModel._modelNormalizeScale??st.normalizeScale;const modelFitRatio=targetModel._modelFitRatio??st.fitRatio;const effectiveScale=modelNormScale*modelFitRatio*Math.max(.01,st.smoothedScale);targetModel.scale.setScalar(effectiveScale);// Each model needs its own center cache (old vs new models have different bounds)\nif(!targetModel._smoothCache){targetModel._smoothCache={centerX:0,centerY:0,centerZ:0,lastScale:-1};}const cache=targetModel._smoothCache;// Cache bounding center -- only recompute on scale change\nif(cache.lastScale!==effectiveScale){targetModel.position.set(0,0,0);targetModel.rotation.set(0,0,0);_tmpBox3.copy(_computeMeshOnlyBoundingBox(targetModel));const c=_tmpBox3.getCenter(_tmpVec3A);cache.centerX=c.x;cache.centerY=c.y;cache.centerZ=c.z;cache.lastScale=effectiveScale;// Update ground + shadow camera for current model (scroll skips applyModelTransform)\nif(targetModel===st.model&&st.ground&&st.dirLight){const ss=_tmpBox3.getSize(_tmpVec3B);st.ground.position.y=_tmpBox3.min.y-.001;st.groundBaseY=st.ground.position.y;st.groundBaseZ=st.ground.position.z;const maxS=Math.max(ss.x,ss.y,ss.z)*1.5;st.dirLight.shadow.camera.left=-maxS;st.dirLight.shadow.camera.right=maxS;st.dirLight.shadow.camera.top=maxS;st.dirLight.shadow.camera.bottom=-maxS;st.dirLight.shadow.camera.updateProjectionMatrix();}}targetModel.position.set(-cache.centerX+st.smoothedOffX,-cache.centerY+st.smoothedOffY,-cache.centerZ+st.smoothedOffZ);if(targetModel===st.model){st.floatBaseY=targetModel.position.y;}targetModel.rotation.set(st.smoothedRotX*_DEG2RAD,st.smoothedRotY*_DEG2RAD,st.smoothedRotZ*_DEG2RAD);// Keep float base values in sync (used when switching to non-scroll mode)\nif(targetModel===st.model){st.floatBaseRotX=targetModel.rotation.x;st.floatBaseRotY=targetModel.rotation.y;st.floatBaseRotZ=targetModel.rotation.z;}// Float on top of smoothing — additive (only for main model, not dissolving)\nif(targetModel===st.model&&effectiveCfg.enableFloat&&!stopInEditor){targetModel.position.y=st.floatBaseY+Math.sin(elapsed*effectiveCfg.floatSpeed*Math.PI*2)*effectiveCfg.floatAmplitude*.1;targetModel.rotation.z+=Math.sin(elapsed*effectiveCfg.floatSpeed*Math.PI)*.02;targetModel.rotation.x+=Math.cos(elapsed*effectiveCfg.floatSpeed*Math.PI*.7)*.01;}_resetScrollAnchorApplied(targetModel);_applyScrollAnchorOffset(targetModel,scrollAnchorOffset);_applyScrollProgressTransform(targetModel,scrollTransformOffset,effectiveCfg,st.smoothedOffX,st.smoothedOffY,st.smoothedOffZ,st.smoothedScale);_applyScrollAnchorRotation(targetModel,scrollTransformOffset,effectiveCfg,st.smoothedRotX,st.smoothedRotY,st.smoothedRotZ);_resetAppearTransformOffset(targetModel);_applyAppearTransformOffset(targetModel,st._appearVisibility,effectiveCfg);}// Orbit target stays at origin\nst.controls.target.set(0,0,0);st.camera.position.set(st.smoothedCamX,st.smoothedCamY,st.smoothedCamZ);}else if(st.model&&effectiveCfg.enableFloat&&!stopInEditor){st.model.position.y=st.floatBaseY+Math.sin(elapsed*effectiveCfg.floatSpeed*Math.PI*2)*effectiveCfg.floatAmplitude*.1;st.model.rotation.x=(st.floatBaseRotX||0)+Math.cos(elapsed*effectiveCfg.floatSpeed*Math.PI*.7)*.01;// MUST set rotation.y each frame to prevent mouse rotation accumulation\nst.model.rotation.y=st.floatBaseRotY||0;st.model.rotation.z=(st.floatBaseRotZ||0)+Math.sin(elapsed*effectiveCfg.floatSpeed*Math.PI)*.02;}else if(st.model&&!effectiveCfg.enableFloat&&!effectiveCfg.enableScrollAnimation){st.model.position.y=st.floatBaseY;st.model.rotation.x=st.floatBaseRotX||0;// MUST set rotation.y each frame to prevent mouse rotation accumulation\nst.model.rotation.y=st.floatBaseRotY||0;st.model.rotation.z=st.floatBaseRotZ||0;}if(st.model&&!effectiveCfg.enableScrollAnimation){const ms=Math.max(.01,effectiveCfg.modelScale||1);st.model.scale.setScalar(st.normalizeScale*st.fitRatio*ms);st.model.position.x=st.modelBaseX??st.model.position.x-(st.model._scrollAnchorAppliedX||0);st.model.position.z=st.modelBaseZ??st.model.position.z;_resetScrollAnchorApplied(st.model);_applyScrollAnchorOffset(st.model,scrollAnchorOffset);_applyScrollProgressTransform(st.model,scrollTransformOffset,effectiveCfg,effectiveCfg.modelOffsetX||0,effectiveCfg.modelOffsetY||0,effectiveCfg.modelOffsetZ||0,effectiveCfg.modelScale||1);_applyScrollAnchorRotation(st.model,scrollTransformOffset,effectiveCfg,effectiveCfg.modelRotationX||0,effectiveCfg.modelRotationY||0,effectiveCfg.modelRotationZ||0);_resetAppearTransformOffset(st.model);_applyAppearTransformOffset(st.model,st._appearVisibility,effectiveCfg);}_applyCoordinatorAutoRotate(st.model,effectiveCfg,dt,stopInEditor);if(st.model&&effectiveCfg.enableShadows){_syncGroundToModel(st,effectiveCfg,scrollAnchorOffset);}// Mouse position lerp — always runs so per-mesh mouse rotation can use st.mouseX/Y\nif(st.model&&!stopInEditor){st.mouseX+=(st.mouseTargetX-st.mouseX)*.08;st.mouseY+=(st.mouseTargetY-st.mouseY)*.08;}// Scene-level mouse rotation — additive rotation on whole model\nif(st.model&&effectiveCfg.enableMouseRotation&&!stopInEditor){const intensity=effectiveCfg.mouseRotationIntensity;st.model.rotation.y+=st.mouseX*intensity;st.model.rotation.x+=st.mouseY*intensity*.5;}// ── Sub-scene updates (visibility + transform + smoothing + float + animation) ──\nif(st.subScenes.size>0){const sceneItems=scrollCfg.subSceneItems||[];for(const[idx,ss]of st.subScenes){const item=sceneItems[idx];if(!item)continue;// While new model is loading, keep rendering the old scene seamlessly\nif(!ss._loaded||!ss.group){const old=ss._oldScene;if(old&&old.group&&old._loaded){// Float effect\nif(effectiveCfg.enableFloat&&!stopInEditor){old.group.position.y=(old.floatBaseY||old.group.position.y)+Math.sin(elapsed*effectiveCfg.floatSpeed*Math.PI*2)*effectiveCfg.floatAmplitude*.1;old.group.rotation.z+=Math.sin(elapsed*effectiveCfg.floatSpeed*Math.PI)*.02;old.group.rotation.x+=Math.cos(elapsed*effectiveCfg.floatSpeed*Math.PI*.7)*.01;}// Animation playback\nif(old.mixer&&effectiveCfg.enableAnimation&&!stopInEditor&&_canAdvanceAnimationMixer(old,old.mixer))old.mixer.update(dt);_applyScrollAnchorOffset(old.group,scrollAnchorOffset);_applyAppearTransformOffset(old.group,st._appearVisibility,effectiveCfg);}continue;}// Visibility (manual toggle via Framer variants)\nss.group.visible=item.visible!==false;if(!ss.group.visible)continue;// ── Per-scene transform with optional smoothing ──\nconst parentToMain=!!(item.parentToMain??item.parent);const parentPivot=parentToMain&&(item.parentPivot??item.pivotMode)===\"main\"?\"main\":\"own\";let localScale=item.scale??1;let localOffX=item.offX??0;let localOffY=item.offY??0;let localOffZ=item.offZ??0;let localRotX=item.rotX??0;let localRotY=item.rotY??0;let localRotZ=item.rotZ??0;// Simple lerp when scroll animation enabled (sync with main model)\nif(effectiveCfg.enableScrollAnimation){if(!ss._smoothState){ss._smoothState={scale:localScale,offX:localOffX,offY:localOffY,offZ:localOffZ,rotX:localRotX,rotY:localRotY,rotZ:localRotZ};}const sst=ss._smoothState;const lerpFactor=effectiveCfg.scrollSmoothing||.05;sst.scale+=(localScale-sst.scale)*lerpFactor;sst.offX+=(localOffX-sst.offX)*lerpFactor;sst.offY+=(localOffY-sst.offY)*lerpFactor;sst.offZ+=(localOffZ-sst.offZ)*lerpFactor;sst.rotX+=(localRotX-sst.rotX)*lerpFactor;sst.rotY+=(localRotY-sst.rotY)*lerpFactor;sst.rotZ+=(localRotZ-sst.rotZ)*lerpFactor;localScale=sst.scale;localOffX=sst.offX;localOffY=sst.offY;localOffZ=sst.offZ;localRotX=sst.rotX;localRotY=sst.rotY;localRotZ=sst.rotZ;}const parentScale=parentToMain?effectiveCfg.enableScrollAnimation?st.smoothedScale:effectiveCfg.modelScale||1:1;const parentOffX=parentToMain?effectiveCfg.enableScrollAnimation?st.smoothedOffX:effectiveCfg.modelOffsetX||0:0;const parentOffY=parentToMain?effectiveCfg.enableScrollAnimation?st.smoothedOffY:effectiveCfg.modelOffsetY||0:0;const parentOffZ=parentToMain?effectiveCfg.enableScrollAnimation?st.smoothedOffZ:effectiveCfg.modelOffsetZ||0:0;const parentRotX=parentToMain?effectiveCfg.enableScrollAnimation?st.smoothedRotX:effectiveCfg.modelRotationX||0:0;const parentRotY=parentToMain?effectiveCfg.enableScrollAnimation?st.smoothedRotY:effectiveCfg.modelRotationY||0:0;const parentRotZ=parentToMain?effectiveCfg.enableScrollAnimation?st.smoothedRotZ:effectiveCfg.modelRotationZ||0:0;const useScale=parentScale*localScale;const useOffX=parentOffX+localOffX;const useOffY=parentOffY+localOffY;const useOffZ=parentOffZ+localOffZ;const useRotX=parentRotX+localRotX;const useRotY=parentRotY+localRotY;const useRotZ=parentRotZ+localRotZ;const useMainPivot=parentToMain&&parentPivot===\"main\";// Apply transform — cache bounding center to avoid expensive setFromObject every frame\nconst normalizeScaleForSubScene=parentToMain?st.normalizeScale:ss.normalizeScale;const fitRatioForSubScene=parentToMain?st.fitRatio:ss.fitRatio;const effectiveScale=normalizeScaleForSubScene*fitRatioForSubScene*Math.max(.01,useScale);ss.group.scale.setScalar(effectiveScale);// Recompute only as fallback. Most state switches only change scale,\n// so derive bounds from cached unit-scale values instead.\nif(ss._lastEffectiveScale!==effectiveScale){if(Number.isFinite(ss._baseMinY)){ss._cachedCenterX=(ss._baseCenterX||0)*effectiveScale;ss._cachedCenterY=(ss._baseCenterY||0)*effectiveScale;ss._cachedCenterZ=(ss._baseCenterZ||0)*effectiveScale;ss._cachedMinY=(ss._baseMinY||0)*effectiveScale;}else{ss.group.position.set(0,0,0);ss.group.rotation.set(0,0,0);_tmpBox3.copy(_computeMeshOnlyBoundingBox(ss.group));const c=_tmpBox3.getCenter(_tmpVec3A);ss._cachedCenterX=c.x;ss._cachedCenterY=c.y;ss._cachedCenterZ=c.z;ss._cachedMinY=_tmpBox3.min.y;}ss._lastEffectiveScale=effectiveScale;}// Keep sub-scene controls simple: Position Y = 0 means the\n// sub-scene sits on the main scene ground, even if its real\n// internal origin is somewhere else.\nconst mainGroundY=st.groundBaseY??st.ground?.position?.y??0;if(useMainPivot){_tmpSubScenePivotEuler.set(parentRotX*_DEG2RAD,parentRotY*_DEG2RAD,parentRotZ*_DEG2RAD,\"XYZ\");_tmpSubScenePivotQuat.setFromEuler(_tmpSubScenePivotEuler);_tmpSubScenePivotOffset.set(-ss._cachedCenterX+localOffX,mainGroundY-(ss._cachedMinY??0)+localOffY,-ss._cachedCenterZ+localOffZ).applyQuaternion(_tmpSubScenePivotQuat);ss.group.position.set(parentOffX+_tmpSubScenePivotOffset.x,parentOffY+_tmpSubScenePivotOffset.y,parentOffZ+_tmpSubScenePivotOffset.z);}else{ss.group.position.set(-ss._cachedCenterX+useOffX,mainGroundY-(ss._cachedMinY??0)+useOffY,-ss._cachedCenterZ+useOffZ);}ss.floatBaseY=ss.group.position.y;ss.group.rotation.set(useRotX*_DEG2RAD,useRotY*_DEG2RAD,useRotZ*_DEG2RAD);// Float effect (shared global settings)\nif(effectiveCfg.enableFloat&&!stopInEditor){ss.group.position.y=ss.floatBaseY+Math.sin(elapsed*effectiveCfg.floatSpeed*Math.PI*2)*effectiveCfg.floatAmplitude*.1;ss.group.rotation.z+=Math.sin(elapsed*effectiveCfg.floatSpeed*Math.PI)*.02;ss.group.rotation.x+=Math.cos(elapsed*effectiveCfg.floatSpeed*Math.PI*.7)*.01;}// Mouse rotation (shared)\nif(effectiveCfg.enableMouseRotation&&!stopInEditor){const intensity=effectiveCfg.mouseRotationIntensity;ss.group.rotation.y+=st.mouseX*intensity;ss.group.rotation.x+=st.mouseY*intensity*.5;}_resetScrollAnchorApplied(ss.group);_applyScrollAnchorOffset(ss.group,scrollAnchorOffset);_applyScrollProgressTransform(ss.group,scrollTransformOffset,effectiveCfg,useOffX,useOffY,useOffZ,useScale);_applyScrollAnchorRotation(ss.group,scrollTransformOffset,effectiveCfg,useRotX,useRotY,useRotZ);_resetAppearTransformOffset(ss.group);_applyAppearTransformOffset(ss.group,st._appearVisibility,effectiveCfg);_applyCoordinatorAutoRotate(ss.group,effectiveCfg,dt,stopInEditor);// Animation playback\nif(ss.mixer&&effectiveCfg.enableAnimation&&!stopInEditor&&_canAdvanceAnimationMixer(ss,ss.mixer))ss.mixer.update(dt);}}// Animation\nif(st.mixer&&effectiveCfg.enableAnimation&&!stopInEditor&&_canAdvanceAnimationMixer(st,st.mixer))st.mixer.update(dt);_applyMeshObjectTransforms(cfg);// ── Mesh Interactions: sync & apply per-mesh auto-rotate / mouse-rotate from config ──\nif(cfg.hasEnabledMeshInteractions&&st.modelInner){const cacheKey=(st.modelInner?.uuid??\"\")+\"|\"+(cfg.meshInteractionLookupKey??\"\")+\"|ss:\"+(st.subScenes?.size??0);if(_interactMatchCacheKey!==cacheKey||!_interactMatchCache){// Cache miss — rebuild exact path/name → Object3D mapping\n_interactMatchCache=new Map;_interactMatchCacheKey=cacheKey;for(const ic of cfg.meshInteractionItems||[]){const targetLower=ic.meshName.trim().toLowerCase();const targetKey=_meshInteractionConfigKey(ic);if(!targetLower||_interactMatchCache.has(targetKey))continue;// Inline search (no inner closure allocation)\nlet matched=ic.meshPath?_resolveMeshObjectPath(st.modelInner,ic.meshPath):null;if(!ic.meshPath)st.modelInner.traverse(c=>{if(matched)return;if(c===st.modelInner)return;if(c.name&&c.name.toLowerCase().includes(targetLower))matched=c;});if(!ic.meshPath&&!matched&&st.subScenes){for(const[,ss]of st.subScenes){if(matched)break;if(ss._loaded&&ss.group){ss.group.traverse(c=>{if(matched)return;if(c===ss.group)return;if(c.name&&c.name.toLowerCase().includes(targetLower)){matched=c;}});}}}_interactMatchCache.set(targetKey,matched);}}// Reuse module-level Sets (clear instead of allocating new)\n_wantAutoRotate.clear();_wantMouseRotate.clear();_interactConfigByObj.clear();for(const ic of cfg.meshInteractionItems||[]){const isEnabled=ic?.enabled??ic?.__hasInteractionEvent??true;if(!isEnabled)continue;const targetKey=_meshInteractionConfigKey(ic);if(targetKey===\"name:\")continue;const matched=_interactMatchCache.get(targetKey);if(!matched)continue;// Cache config per object to avoid redundant _findInteractConfig calls below.\n// Click/hover items are valid interaction targets even when they do not use\n// autoRotate/mouseRotate.\n_interactConfigByObj.set(matched,ic);const allowMouseRotate=!effectiveCfg.responsiveIsMobile;if(ic.autoRotate)_wantAutoRotate.add(matched);if(allowMouseRotate&&ic.mouseRotate)_wantMouseRotate.add(matched);}// Sync _meshAutoRotates Map\nfor(const[mesh]of _meshAutoRotates){if(!_wantAutoRotate.has(mesh))_meshAutoRotates.delete(mesh);}for(const m of _wantAutoRotate){const ic=_interactConfigByObj.get(m);if(!_meshAutoRotates.has(m)){_meshAutoRotates.set(m,{speed:ic?.meshAutoRotateSpeed??1,axis:ic?.meshAutoRotateAxis??\"y\"});}else{const data=_meshAutoRotates.get(m);data.speed=ic?.meshAutoRotateSpeed??1;data.axis=ic?.meshAutoRotateAxis??\"y\";}}// Sync _meshMouseRotates Map\nfor(const[mesh]of _meshMouseRotates){if(!_wantMouseRotate.has(mesh)){const data=_meshMouseRotates.get(mesh);mesh.rotation.y=data.baseRotY;mesh.rotation.x=data.baseRotX;_meshMouseRotates.delete(mesh);}}for(const m of _wantMouseRotate){const ic=_interactConfigByObj.get(m);if(!_meshMouseRotates.has(m)){_meshMouseRotates.set(m,{intensity:ic?.meshMouseRotateIntensity??.1,baseRotY:m.rotation.y,baseRotX:m.rotation.x});}else{const data=_meshMouseRotates.get(m);data.intensity=ic?.meshMouseRotateIntensity??.1;}}}else{// No interactions — clear Maps\nif(_meshAutoRotates.size>0)_meshAutoRotates.clear();if(_meshMouseRotates.size>0){for(const[mesh,data]of _meshMouseRotates){mesh.rotation.y=data.baseRotY;mesh.rotation.x=data.baseRotX;}_meshMouseRotates.clear();}}// Apply per-mesh auto-rotate\nif(_meshAutoRotates.size>0&&dt>0){for(const[mesh,data]of _meshAutoRotates){const spd=data.speed*dt;if(data.axis===\"x\")mesh.rotation.x+=spd;else if(data.axis===\"z\")mesh.rotation.z+=spd;else mesh.rotation.y+=spd;}}// Apply per-mesh mouse-rotate\nif(_meshMouseRotates.size>0&&st.mouseTargetX!==undefined){for(const[mesh,data]of _meshMouseRotates){const mx=st.mouseX??0;const my=st.mouseY??0;mesh.rotation.y=data.baseRotY+mx*data.intensity;mesh.rotation.x=data.baseRotX+my*data.intensity*.5;}}// ── Mesh Interactions: smooth hover lerp ──\nif(dt>0){// Active channel: lerp toward target (1 = fully hovered)\nif(_hoverLerp.mesh){const spd=_hoverLerp.config?.hoverSpeed??_HOVER_LERP_SPEED;const lerpDt=Math.min(1,dt*spd);_hoverLerp.progress+=(_hoverLerp.target-_hoverLerp.progress)*lerpDt;// Snap to target when very close\nif(Math.abs(_hoverLerp.target-_hoverLerp.progress)<.001){_hoverLerp.progress=_hoverLerp.target;}}// Leaving channel: lerp back to 0 (fade out)\nif(_hoverLerpOut.mesh){const spd=_hoverLerpOut.config?.hoverSpeed??_HOVER_LERP_SPEED;const lerpDt=Math.min(1,dt*spd);_hoverLerpOut.progress+=(0-_hoverLerpOut.progress)*lerpDt;if(_hoverLerpOut.progress<.001){// Fully faded out — snap to original and clear\n_snapHoverChannel(_hoverLerpOut);}}// ── Drag snap-back lerp ──\nif(_dragSnapBack){const sb=_dragSnapBack;const lerpDt=Math.min(1,dt*_DRAG_SNAPBACK_SPEED);sb.mesh.position.lerp(sb.targetPos,lerpDt);if(sb.mesh.position.distanceTo(sb.targetPos)<5e-4){sb.mesh.position.copy(sb.targetPos);_dragSnapBack=null;}}}// ── Mesh-level Scroll Animations (variant-driven, like main scene) ──\n// Each mesh animation item defines TARGET values for position/rotation/scale/opacity.\n// Values are set per Framer scroll variant. The component smooth-lerps to targets\n// using the same scrollSmoothing factor as the main scene.\nif(cfg.hasEnabledMeshAnimations&&st.modelInner){if(!st._meshSmooth)st._meshSmooth=new Map;// When scroll animation is on, use smooth lerp; otherwise snap instantly\nconst meshLerpFactor=cfg.enableScrollAnimation?cfg.scrollSmoothing||.05:1;const maCacheKey=(st.modelInner?.uuid??\"\")+\"|\"+(cfg.meshAnimationLookupKey??\"\")+\"|ss:\"+(st.subScenes?.size??0);if(_meshAnimMatchCacheKey!==maCacheKey||!_meshAnimMatchCache){_meshAnimMatchCache=new Map;_meshAnimMatchCacheKey=maCacheKey;for(const anim of cfg.meshAnimationItems||[]){const targetLower=anim.meshName.trim().toLowerCase();const targetKey=anim.meshPath?`path:${anim.meshPath}`:`name:${targetLower}`;if(!targetLower||_meshAnimMatchCache.has(targetKey))continue;let matched=anim.meshPath?_resolveMeshObjectPath(st.modelInner,anim.meshPath):null;if(!anim.meshPath)st.modelInner.traverse(c=>{if(matched)return;if(c===st.modelInner)return;if((c.isMesh||c.isGroup||c.isObject3D)&&c.name&&c.name.toLowerCase().includes(targetLower)){matched=c;}});if(!anim.meshPath&&!matched&&st.subScenes){for(const[,ss]of st.subScenes){if(matched)break;if(ss._loaded&&ss.group){ss.group.traverse(c=>{if(matched)return;if(c===ss.group)return;if((c.isMesh||c.isGroup||c.isObject3D)&&c.name&&c.name.toLowerCase().includes(targetLower)){matched=c;}});}}}_meshAnimMatchCache.set(targetKey,matched);}}for(const anim of cfg.meshAnimationItems||[]){const meshName=anim.meshName.trim();if(!meshName)continue;// Lookup from cache (no per-frame traversal)\nconst targetKey=anim.meshPath?`path:${anim.meshPath}`:`name:${meshName.toLowerCase()}`;const target=_meshAnimMatchCache.get(targetKey);if(!target)continue;// Target values from Framer variant props (change per scroll section)\nconst desired=_getMeshAnimationDesired(anim,_getObjectEventScrollProgress(anim.scrollMatch,wrapRef.current,anim.scrollAnchorY));// Get or initialize smooth state for this mesh\nconst scrollMatch=String(anim?.scrollMatch??\"\").trim();let sm=st._meshSmooth.get(meshName);if(!sm||sm._scrollMatch!==scrollMatch){// Scroll IDs can be edited without changing the mesh\n// name; reset the eased value when its source changes.\nsm={posX:desired.posX,posY:desired.posY,posZ:desired.posZ,rotX:desired.rotX,rotY:desired.rotY,rotZ:desired.rotZ,scaleX:desired.scaleX,scaleY:desired.scaleY,scaleZ:desired.scaleZ,opacity:desired.opacity,_scrollMatch:scrollMatch};st._meshSmooth.set(meshName,sm);}// Lerp toward target values\nsm.posX+=(desired.posX-sm.posX)*meshLerpFactor;sm.posY+=(desired.posY-sm.posY)*meshLerpFactor;sm.posZ+=(desired.posZ-sm.posZ)*meshLerpFactor;sm.rotX+=(desired.rotX-sm.rotX)*meshLerpFactor;sm.rotY+=(desired.rotY-sm.rotY)*meshLerpFactor;sm.rotZ+=(desired.rotZ-sm.rotZ)*meshLerpFactor;if(sm.scaleX===undefined){const legacyScale=sm.scale??1;sm.scaleX=legacyScale;sm.scaleY=legacyScale;sm.scaleZ=legacyScale;}sm.scaleX+=(desired.scaleX-sm.scaleX)*meshLerpFactor;sm.scaleY+=(desired.scaleY-sm.scaleY)*meshLerpFactor;sm.scaleZ+=(desired.scaleZ-sm.scaleZ)*meshLerpFactor;sm.opacity+=(desired.opacity-sm.opacity)*meshLerpFactor;// Store original transform on first touch so offsets are additive\nif(target._meshAnimOrigPos===undefined){target._meshAnimOrigPos=target.position.clone();target._meshAnimOrigRot=target.rotation.clone();target._meshAnimOrigScale=target.scale.clone();}// Position (additive offset from original)\ntarget.position.x=target._meshAnimOrigPos.x+sm.posX;target.position.y=target._meshAnimOrigPos.y+sm.posY;target.position.z=target._meshAnimOrigPos.z+sm.posZ;// Rotation (additive offset, degrees → radians)\ntarget.rotation.x=target._meshAnimOrigRot.x+sm.rotX*_DEG2RAD;target.rotation.y=target._meshAnimOrigRot.y+sm.rotY*_DEG2RAD;target.rotation.z=target._meshAnimOrigRot.z+sm.rotZ*_DEG2RAD;// Scale (multiplicative with original)\ntarget.scale.x=target._meshAnimOrigScale.x*Math.max(.001,sm.scaleX);target.scale.y=target._meshAnimOrigScale.y*Math.max(.001,sm.scaleY);target.scale.z=target._meshAnimOrigScale.z*Math.max(.001,sm.scaleZ);// Opacity — apply to all child meshes if target is Group/Object3D\nconst op=Math.max(0,Math.min(1,sm.opacity));if(target._meshAnimLastOpacity!==op){let opacityTargets=target._meshAnimOpacityTargets;if(!opacityTargets){opacityTargets=target.isMesh?[target]:[];if(!target.isMesh){target.traverse(node=>{if(node.isMesh&&node.material)opacityTargets.push(node);});}target._meshAnimOpacityTargets=opacityTargets;}for(const node of opacityTargets){const mats=Array.isArray(node.material)?node.material:[node.material];mats.forEach(m=>{m.opacity=op;m.transparent=op<1;});}target._meshAnimLastOpacity=op;}}}// Hover transform is an interaction layer on top of scroll object transforms.\n// Apply after mesh animations so scroll-enabled Object Events are used as the base\n// and hover deltas are additively accumulated without being overwritten.\nconst resetMeshes=new Set;const tryReset=ch=>{if(ch?.mesh&&!resetMeshes.has(ch.mesh)){resetMeshes.add(ch.mesh);if(!ch.mesh._meshAnimOrigPos){if(ch.origPosition)ch.mesh.position.copy(ch.origPosition);if(ch.origRotation)ch.mesh.rotation.copy(ch.origRotation);if(ch.origScale)ch.mesh.scale.copy(ch.origScale);}}};tryReset(_hoverLerp);tryReset(_hoverLerpOut);tryReset(_pressLerp);if(_hoverLerp.mesh)_applyHoverLerp(_hoverLerp);if(_hoverLerpOut.mesh)_applyHoverLerp(_hoverLerpOut);if(_pressLerp.mesh)_applyHoverLerp(_pressLerp);updateNimbusTech(st,props,wrapRef.current,wrapRef.current?.getBoundingClientRect(),THREE);// Film grain time update (animated per-frame, not part of transition)\nif(st.filmGrain?.enabled){st.filmGrain.uniforms.time.value=elapsed;}// ── Dissolve Transition (model URL change) ──\nif(st.dissolveActive){const dissolveSpeed=1/cfg.dissolveDuration;st.dissolveProgress+=dt*dissolveSpeed*st.dissolveDirection;const _mdp=t=>mapDissolveProgress(t,cfg.dissolveAmplitude,cfg.dissolveEdgeWidth);if(st.dissolveDirection===1){// Dissolve out old model\nif(st.dissolveProgress>=1){st.dissolveProgress=1;if(st.dissolveOldModel){st.scene.remove(st.dissolveOldModel);st.dissolveOldModel.traverse(c=>{if(c.isMesh){// Dispose skeleton for SkinnedMesh\nif(c.isSkinnedMesh&&c.skeleton){c.skeleton.dispose();}if(st.dissolveMaterials.has(c.uuid)){st.dissolveMaterials.get(c.uuid).dispose();st.dissolveMaterials.delete(c.uuid);}if(st.dissolveOriginalMaterials.has(c.uuid)){const origMat=st.dissolveOriginalMaterials.get(c.uuid);(Array.isArray(origMat)?origMat:[origMat]).forEach(m=>m.dispose?.());}(Array.isArray(c.material)?c.material:[c.material]).forEach(m=>m.dispose?.());_origMaterialBackups.delete(c.uuid);}});st.dissolveOriginalMaterials.clear();st.dissolveOldModel=null;}if(st.model){_startDissolveInForModel(st,cfg);}else{disposeDissolveParticles(st.dissolveParticles);st.dissolveParticles=null;st._dissolvePendingIn=true;st.dissolveActive=false;}}else{if(st.dissolveOldModel){const mapped=_mdp(st.dissolveProgress);st.dissolveOldModel.traverse(child=>{if(child.isMesh&&st.dissolveOriginalMaterials.has(child.uuid)){if(!st.dissolveMaterials.has(child.uuid)){const originalMat=st.dissolveOriginalMaterials.get(child.uuid);const dissolveMat=createDissolveMaterial(originalMat,{progress:mapped,noiseScale:cfg.dissolveNoiseScale,amplitude:cfg.dissolveAmplitude,edgeWidth:cfg.dissolveEdgeWidth,emissiveColor:cfg.dissolveEmissiveColor,emissiveIntensity:cfg.dissolveEmissiveIntensity});st.dissolveMaterials.set(child.uuid,dissolveMat);child.material=dissolveMat;}else{const dissolveMat=st.dissolveMaterials.get(child.uuid);if(dissolveMat&&dissolveMat.userData.shaderUniforms){const u=dissolveMat.userData.shaderUniforms;u.uProgress.value=mapped;u.uFreq.value=cfg.dissolveNoiseScale;u.uAmp.value=cfg.dissolveAmplitude;u.uEdge.value=cfg.dissolveEdgeWidth;if(st.lastDissolveEdgeColorStr!==cfg.dissolveEmissiveColor){st.lastDissolveEdgeColorStr=cfg.dissolveEmissiveColor;st.cachedDissolveEdgeColor=parseColor(cfg.dissolveEmissiveColor);}u.uEdgeColor.value.copy(st.cachedDissolveEdgeColor);u.uEdgeIntensity.value=cfg.dissolveEmissiveIntensity;}}}});}}}else{// Dissolve in new model\nif(st.dissolveProgress<=0){st.dissolveProgress=0;st.dissolveActive=false;if(st.model){st.model.traverse(child=>{if(child.isMesh){if(st.dissolveMaterials.has(child.uuid)){st.dissolveMaterials.get(child.uuid).dispose();st.dissolveMaterials.delete(child.uuid);}if(st.dissolveOriginalMaterials.has(child.uuid)){child.material=st.dissolveOriginalMaterials.get(child.uuid);}}});}st.dissolveOriginalMaterials.clear();// Cleanup particles\ndisposeDissolveParticles(st.dissolveParticles);st.dissolveParticles=null;}else{if(st.model){const mapped=_mdp(st.dissolveProgress);st.model.traverse(child=>{if(child.isMesh&&st.dissolveOriginalMaterials.has(child.uuid)){if(!st.dissolveMaterials.has(child.uuid)){const originalMat=st.dissolveOriginalMaterials.get(child.uuid);const dissolveMat=createDissolveMaterial(originalMat,{progress:mapped,noiseScale:cfg.dissolveNoiseScale,amplitude:cfg.dissolveAmplitude,edgeWidth:cfg.dissolveEdgeWidth,emissiveColor:cfg.dissolveEmissiveColor,emissiveIntensity:cfg.dissolveEmissiveIntensity});st.dissolveMaterials.set(child.uuid,dissolveMat);child.material=dissolveMat;}else{const dissolveMat=st.dissolveMaterials.get(child.uuid);if(dissolveMat&&dissolveMat.userData.shaderUniforms){const u=dissolveMat.userData.shaderUniforms;u.uProgress.value=mapped;u.uFreq.value=cfg.dissolveNoiseScale;u.uAmp.value=cfg.dissolveAmplitude;u.uEdge.value=cfg.dissolveEdgeWidth;if(st.lastDissolveEdgeColorStr!==cfg.dissolveEmissiveColor){st.lastDissolveEdgeColorStr=cfg.dissolveEmissiveColor;st.cachedDissolveEdgeColor=parseColor(cfg.dissolveEmissiveColor);}u.uEdgeColor.value.copy(st.cachedDissolveEdgeColor);u.uEdgeIntensity.value=cfg.dissolveEmissiveIntensity;}}}});}}}// ── Update dissolve particles for model URL transition ──\nif(st.dissolveParticles){const p=st.dissolveParticles;// Sync with whichever model is currently dissolving\nconst activeModel=st.dissolveOldModel||st.model;if(activeModel){p.points.position.copy(activeModel.position);p.points.rotation.copy(activeModel.rotation);p.points.scale.copy(activeModel.scale);}const mapped=_mdp(st.dissolveProgress);p.mat.uniforms.uProgress.value=mapped;p.mat.uniforms.uFreq.value=cfg.dissolveNoiseScale;p.mat.uniforms.uAmp.value=cfg.dissolveAmplitude;p.mat.uniforms.uEdge.value=cfg.dissolveEdgeWidth;const _dpColorStr=cfg.dissolveParticleColor||cfg.dissolveEmissiveColor;if(st.lastDissolveParticleColorStr!==_dpColorStr){st.lastDissolveParticleColorStr=_dpColorStr;st.cachedDissolveParticleColor=parseColor(_dpColorStr);}p.mat.uniforms.uColor.value.copy(st.cachedDissolveParticleColor);p.mat.uniforms.uBaseSize.value=cfg.dissolveParticleBaseSize||80;p.state.speed=cfg.dissolveParticleSpeed||.02;p.state.waveAmp=cfg.dissolveParticleWaveAmp||0;p.state.velFactor.x=cfg.dissolveParticleVelX||2.5;p.state.velFactor.y=cfg.dissolveParticleVelY||2;updateDissolveParticles(p.state);syncParticleAttributes(p.geo,p.state);}}// ── Particle system ──\nif(cfg.enableParticles){if(!st.particleSystem){st.createParticleSystem(cfg.particleCount,cfg.particleSize,cfg.particleColor,cfg.particleSpread);st.particleSystem=particleSystem;}// Update particle properties if changed\nif(st.particleSystem){const mat=st.particleSystem.material;if(mat.size!==cfg.particleSize)mat.size=cfg.particleSize;if(st.lastParticleColorStr!==cfg.particleColor){st.lastParticleColorStr=cfg.particleColor;st.cachedParticleColor=parseColor(cfg.particleColor);}if(!mat.color.equals(st.cachedParticleColor)){mat.color.copy(st.cachedParticleColor);}// Check if count changed — recreate\nconst currentCount=st.particleSystem.geometry.attributes.position.count;if(currentCount!==cfg.particleCount){st.createParticleSystem(cfg.particleCount,cfg.particleSize,cfg.particleColor,cfg.particleSpread);st.particleSystem=particleSystem;}// Animate\nst.updateParticles(cfg.particleSpeed,cfg.particleSpread);}}else if(st.particleSystem){// Remove particles when disabled\nst.scene.remove(st.particleSystem);st.particleSystem.geometry.dispose();st.particleSystem.material.dispose();st.particleSystem=null;}// Determine if any pass is enabled\nconst anyPostFX=_runtimeNeedsPostFx(cfg);// ── Stereo side-by-side rendering (bypasses post-processing) ──\nif(shouldRenderGL){if(cfg.cameraType===\"stereo\"&&st.stereoCamera){st.stereoCamera.update(camera);renderer.getSize(_tmpStereoSize);const _sz=_tmpStereoSize;const prevShadowAutoUpdate=renderer.shadowMap.autoUpdate;renderer.autoClear=true;renderer.setScissorTest(true);try{// Left eye (shadows update normally here)\nrenderer.setScissor(0,0,_sz.x/2,_sz.y);renderer.setViewport(0,0,_sz.x/2,_sz.y);renderer.render(scene,st.stereoCamera.cameraL);// Freeze shadows for the right eye to avoid drawing shadow maps twice.\nrenderer.shadowMap.autoUpdate=false;renderer.setScissor(_sz.x/2,0,_sz.x/2,_sz.y);renderer.setViewport(_sz.x/2,0,_sz.x/2,_sz.y);renderer.render(scene,st.stereoCamera.cameraR);}finally{renderer.shadowMap.autoUpdate=prevShadowAutoUpdate;renderer.setScissorTest(false);renderer.setViewport(0,0,_sz.x,_sz.y);}}else if(anyPostFX){// When using post-processing with transparency, clear manually\nif(cfg.transparentBackground){renderer.setClearColor(0,0);renderer.autoClear=true;}else{renderer.autoClear=true;}if(ensurePostFxPipeline(cfg,wrapRef.current?.clientWidth||1,wrapRef.current?.clientHeight||1)){if(st.filmGrain?.enabled){st.filmGrain.uniforms.time.value=elapsed;}if(st.composer){st.composer.renderToScreen=true;st.composer.render();}}else{// Postprocessing modules still loading — render without\n// FX for this frame instead of leaving the canvas blank.\nrenderer.render(scene,camera);}}else{disposePostFxPipeline();renderer.autoClear=true;renderer.render(scene,camera);}}// ── Blur Reveal animation ──\nif(st._blurRevealStart>0&&canvasRef.current){const blurElapsed=(performance.now()-st._blurRevealStart)/1e3;const blurDur=cfg.blurRevealDuration||.8;const blurInt=cfg.blurRevealIntensity||12;if(blurElapsed>=blurDur){// Done — remove filter entirely (no compositing overhead)\ncanvasRef.current.style.filter=\"\";canvasRef.current.style.willChange=\"\";st._blurRevealStart=0;}else{// easeOutCubic: 1 - (1-t)^3\nconst t=blurElapsed/blurDur;const ease=1-Math.pow(1-t,3);const currentBlur=blurInt*(1-ease);canvasRef.current.style.filter=`blur(${currentBlur.toFixed(1)}px)`;}}// Throttled resize check — every 30 frames (~0.5s) as fallback for ResizeObserver\nif(++st._resizeCounter>=30&&wrapRef.current){st._resizeCounter=0;const cw=wrapRef.current.clientWidth;const ch=wrapRef.current.clientHeight;if(cw&&ch){const dpr=renderer.getPixelRatio()||1;const rw=renderer.domElement.width/dpr;const rh=renderer.domElement.height/dpr;const resizeCfg=settingsRef.current;const targetDpr=_getOptimizedDpr(resizeCfg);if(Math.abs(cw-rw)>1||Math.abs(ch-rh)>1||Math.abs(targetDpr-(st._lastRenderDpr||dpr))>.01){scheduleResize(false);}}}statsMonitor?.end?.();};loop();return()=>{st._disposed=true;_webglCoordinator.unregister(st._coordId);st._coordId=0;cancelAnimationFrame(rafRef.current);// Clean up per-mesh interaction state\n_meshAutoRotates.clear();_meshMouseRotates.clear();_clearInteractResolvedConfigCache();_interactMatchCache=null;_interactMatchCacheKey=\"\";_meshObjectBaseTransforms.clear();_meshObjectTransformModelUUID=\"\";_meshObjectTransformCacheKey=\"\";_interactionHoverMeshesCache=[];_interactionHoverMeshesCacheKey=\"\";_interactionHoverVisibleMeshes.length=0;_meshAnimMatchCache=null;_meshAnimMatchCacheKey=\"\";// Clean up blur filter on unmount\nif(canvasRef.current){canvasRef.current.style.opacity=\"1\";canvasRef.current.style.filter=\"\";canvasRef.current.style.willChange=\"\";}document.removeEventListener(\"visibilitychange\",onVisibilityChange);window.removeEventListener(\"resize\",onWindowLayoutChange);window.removeEventListener(\"scroll\",onWindowLayoutChange);document.removeEventListener(\"scroll\",onWindowLayoutChange,true);vv?.removeEventListener(\"resize\",onWindowLayoutChange);vv?.removeEventListener(\"scroll\",onWindowLayoutChange);window.removeEventListener(\"touchmove\",onTouchMoveLayoutDirty);if(io)io.disconnect();ro.disconnect();if(resizeRaf)cancelAnimationFrame(resizeRaf);if(resizeTimeout)clearTimeout(resizeTimeout);if(st._scheduleResize===scheduleResize){delete st._scheduleResize;}delayedResizeTimers.forEach(timer=>clearTimeout(timer));_removeStatsMonitor(st);controls.dispose();_debugImport3DRendererEvent(\"dispose\",{role:\"slot\",ownerId:rendererOwnerId,canvas,reason:\"slot cleanup\",bridgeMode:_getImport3DBridgeState().renderMode,renderTarget:RenderTarget.current(),rootCount:_getImport3DBridgeState().rootCount||0,slotCount:_getImport3DBridgeState().slots?.size||0,forceLog:!!_getImport3DBridgeState().rendererDebug});disposePostFxPipeline();renderer.dispose();_releaseEnvironmentMap(st);// Dispose particle system\nif(particleSystem){st.scene.remove(particleSystem);particleSystem.geometry.dispose();particleSystem.material.dispose();}if(st.mixer){_clearAnimationOnceCompleteListener(st,st.mixer);st.mixer.stopAllAction();st._lastAnimationRequestSig=\"\";}// Dispose dissolve particles\ndisposeDissolveParticles(st.dissolveParticles);st.dissolveParticles=null;st._dissolvePendingIn=false;// Dispose dissolve old model if still active\nif(st.dissolveOldModel){st.scene.remove(st.dissolveOldModel);// Materials only — geometries shared with _modelCache\n_disposeMaterialsOnly(st.dissolveOldModel);st.dissolveOriginalMaterials.clear();}// Dispose all dissolve materials\nfor(const dissolveMat of st.dissolveMaterials.values()){dissolveMat.dispose();}st.dissolveMaterials.clear();// Dispose sub-scenes (materials only — geometries shared with _modelCache)\nfor(const[,ss]of st.subScenes){if(ss.group){st.scene.remove(ss.group);_disposeMaterialsOnly(ss.group);}if(ss.mixer){_clearAnimationOnceCompleteListener(ss,ss.mixer);ss.mixer.stopAllAction();ss._lastAnimationRequestSig=\"\";}}st.subScenes.clear();document.removeEventListener(\"mousemove\",onMouseMove);document.removeEventListener(\"mousemove\",onMeshHelperMove);_unhighlightMeshHelper();// Cleanup mesh interaction listeners\ndocument.removeEventListener(\"mousemove\",onModelHoverEventMoveRaf);if(_modelHoverMoveRaf)cancelAnimationFrame(_modelHoverMoveRaf);_emitModelHover(false,null,true);window.removeEventListener(\"scroll\",onWindowScrollInteractionPause);canvas.removeEventListener(\"pointerdown\",onCanvasPointerCaptureDown);canvas.removeEventListener(\"wheel\",onCanvasWheel,true);document.removeEventListener(\"mousemove\",onInteractMoveRaf);if(_interactMoveRaf)cancelAnimationFrame(_interactMoveRaf);document.removeEventListener(\"click\",onInteractClick);canvas.removeEventListener(\"pointerdown\",onInteractPointerDown);document.removeEventListener(\"pointermove\",onInteractPointerMoveRaf);if(_interactPointerMoveRaf)cancelAnimationFrame(_interactPointerMoveRaf);document.removeEventListener(\"pointerup\",onInteractPointerUp);document.removeEventListener(\"pointerup\",onCanvasPointerCaptureUp);document.removeEventListener(\"pointercancel\",onInteractPointerUp);document.removeEventListener(\"pointercancel\",onCanvasPointerCaptureUp);canvas.removeEventListener(\"touchstart\",onInteractPointerDown);document.removeEventListener(\"touchmove\",onInteractPointerMoveRaf);document.removeEventListener(\"touchend\",onInteractPointerUp);document.removeEventListener(\"touchend\",onCanvasPointerCaptureUp);st._pointerCaptureLock=false;setModelPointerCapture(false);_unhighlightInteract(false);_dragSnapBack=null;setInteractTooltip(null);// Snap any remaining hover lerp channels on unmount\n_resetPressInteract();_snapHoverChannel(_hoverLerp);_snapHoverChannel(_hoverLerpOut);// Dispose extra lights\nfor(const light of st.extraLightObjects){scene.remove(light);if(light.target&&light.isSpotLight)scene.remove(light.target);if(light.shadow?.map)light.shadow.map.dispose();light.dispose();}st.extraLightObjects.length=0;// ── Final Scene Hierarchy Disposal ──\n// Runtime models share geometry/texture assets with _modelCache.\n// Dispose only per-instance materials/skeletons here so route back can reuse cache.\nif(st.model){scene.remove(st.model);_disposeMaterialsOnly(st.model);}_disposeModelFull(scene);// Clear coordinate references\nst.scene=null;st.camera=null;st.model=null;st.modelInner=null;st.controls=null;st.renderer=null;_lastLoadedModelUrl=null;};},[webglRuntimeActive]);useEffect(()=>{const st=stateRef.current;st?._scheduleResize?.(true);},[performanceDprCap,performanceMobileDprCap,performanceMaxPixelCount]);// ─────────────── Load Model ───────────────\nuseEffect(()=>{let cancelled=false;let fromCache=false// tracks if model came from preload cache (textures already ready)\n;const st=stateRef.current;const cfg=settingsRef.current;if(!st)return;if(!modelUrl){startTransition(()=>{setStatus(\"Set a model URL or upload a file\");});return;}st.lastSceneHash=\"\";st.lastMaterialHash=\"\";st.lastLightingHash=\"\";st.lastEnvHash=\"\";st.lastEffectsHash=\"\";// Skip loading text if: (a) remount with same URL, (b) model in parsed cache,\n// (c) preload already in-flight (splash handles loading UI), or\n// (d) splash/external system already managing loading state\nconst isRemountSameUrl=_lastLoadedModelUrl===modelUrl;const hasCachedModel=_modelCache.has(modelUrl);const isPreloading=_preloadInFlight.has(modelUrl);const splashHandlesLoading=typeof window!==\"undefined\"&&window.__modelLoadingState?.isLoading;if(isRemountSameUrl||hasCachedModel||isPreloading||splashHandlesLoading){// Suppress canvas \"Loading…\" — model coming from cache/preload, or splash UI active\nstartTransition(()=>{setStatus(\"\");});}else{startTransition(()=>{setStatus(\"Loading…\");});if(typeof window!==\"undefined\"&&window.__modelLoadingState){window.__modelLoadingState.setLoading(modelUrl);}}// Reset blur reveal state when model URL changes\nif(st._blurRevealStart>0&&canvasRef.current){canvasRef.current.style.opacity=\"1\";canvasRef.current.style.filter=\"\";canvasRef.current.style.willChange=\"\";st._blurRevealStart=0;}if(!cfg.dissolveEnabled){st._dissolvePendingIn=false;}// Start dissolve transition if enabled and there's an existing model\nif(cfg.dissolveEnabled&&st.model&&!st.dissolveActive){// Clear any previous dissolve materials\nfor(const dissolveMat of st.dissolveMaterials.values()){dissolveMat.dispose();}st.dissolveMaterials.clear();st.dissolveOriginalMaterials.clear();st.dissolveOldModel=st.model;st.dissolveActive=true;st._dissolvePendingIn=false;st.dissolveProgress=0;st.dissolveDirection=1// dissolve out\n;// Snapshot current transform (including smoothed values if scroll animation active)\n// This ensures dissolve happens from the VISIBLE state, not config state\nconst snapshotPos=st.dissolveOldModel.position.clone();const snapshotRot=st.dissolveOldModel.rotation.clone();const snapshotScale=st.dissolveOldModel.scale.clone();// Store original materials and apply initial dissolve shader\nst.dissolveOldModel.traverse(child=>{if(child.isMesh){st.dissolveOriginalMaterials.set(child.uuid,child.material);// Apply dissolve material immediately\nconst dissolveMat=createDissolveMaterial(child.material,{progress:mapDissolveProgress(0,cfg.dissolveAmplitude,cfg.dissolveEdgeWidth),noiseScale:cfg.dissolveNoiseScale,amplitude:cfg.dissolveAmplitude,edgeWidth:cfg.dissolveEdgeWidth,emissiveColor:cfg.dissolveEmissiveColor,emissiveIntensity:cfg.dissolveEmissiveIntensity});st.dissolveMaterials.set(child.uuid,dissolveMat);child.material=dissolveMat;}});// Create particles for dissolve-out using snapshots\nif(cfg.dissolveParticlesEnabled){disposeDissolveParticles(st.dissolveParticles);st.dissolveParticles=createDissolveParticles(st.dissolveOldModel,cfg);st.dissolveParticles.points.position.copy(snapshotPos);st.dissolveParticles.points.rotation.copy(snapshotRot);st.dissolveParticles.points.scale.copy(snapshotScale);st.scene.add(st.dissolveParticles.points);st.dissolveParticles.mat.uniforms.uProgress.value=mapDissolveProgress(0,cfg.dissolveAmplitude,cfg.dissolveEdgeWidth);}// Store snapshot for new model to inherit (smooth transition instead of teleport)\nif(enableScrollAnimation){st._dissolveOldSmoothedRotX=st.smoothedRotX;st._dissolveOldSmoothedRotY=st.smoothedRotY;st._dissolveOldSmoothedRotZ=st.smoothedRotZ;st._dissolveOldSmoothedOffX=st.smoothedOffX;st._dissolveOldSmoothedOffY=st.smoothedOffY;st._dissolveOldSmoothedOffZ=st.smoothedOffZ;st._dissolveOldSmoothedScale=st.smoothedScale;}// Don't remove model yet - will be removed after dissolve\nst.model=null;st.modelInner=null;}else if(st.model){st._dissolvePendingIn=false;// No dissolve - immediate cleanup\n// Use materials-only dispose: geometries are shared with _modelCache\nst.scene.remove(st.model);_disposeMaterialsOnly(st.model);st.model=null;st.modelInner=null;}if(st.mixer){_clearAnimationOnceCompleteListener(st,st.mixer);st.mixer.stopAllAction();st.mixer=null;st._activeAnimationAction=null;st._activeAnimationKey=\"\";st._activeAnimationClipName=\"\";st._lastAnimationRequestSig=\"\";st._animationActionCache=new Set;st._animationOnceCompleteListener=null;st._animationOnceCompleteAction=null;st._animationWarmupDone=false;st._modelHoverGateInitialized=false;st._modelHoverBaseAnimationClip=\"\";st._modelHoverPendingAnimationClip=\"\";}const format=detectFormat(modelUrl);const onLoaded=(object,animations)=>{if(cancelled)return;if(!st?.renderer||!st?.scene)return;// Clean up skinned mesh artifacts: bind-pose duplicates, bone helpers\n_cleanupSkinnedScene(object);const safeAnimations=_sanitizeAnimationClipsForObject(object,animations||[]);const box=_computeMeshOnlyBoundingBox(object);const center=box.getCenter(new THREE.Vector3);const size=box.getSize(new THREE.Vector3);const maxDim=Math.max(size.x,size.y,size.z)||1;const normalizeScale=1/maxDim;const wrapper=new THREE.Group;object.position.sub(center);wrapper.add(object);wrapper.scale.setScalar(normalizeScale);const cfg=settingsRef.current;const maxAniso=_getOptimizedAnisotropy(st.renderer,cfg);wrapper.traverse(child=>{if(child.isMesh){child.castShadow=true;child.receiveShadow=true;// SkinnedMesh vertices are transformed by bones on GPU —\n// static bounding box from bind pose is unreliable for frustum culling\nchild.frustumCulled=!child.isSkinnedMesh;const mats=Array.isArray(child.material)?child.material:[child.material];for(const mat of mats){// Color space\nif(mat.map)mat.map.colorSpace=THREE.SRGBColorSpace;if(mat.emissiveMap)mat.emissiveMap.colorSpace=THREE.SRGBColorSpace;// Anisotropic filtering — sharper textures at glancing angles\nconst texKeys=[\"map\",\"normalMap\",\"roughnessMap\",\"metalnessMap\",\"aoMap\",\"emissiveMap\"];for(const k of texKeys){if(mat[k]){mat[k].anisotropy=maxAniso;}}}}});// OPTIMIZATION: BVH Generation for Fast Raycasting\n_computeBVHForModel(wrapper);st._lastAppearReplayHash=appearReplayHash(cfg);// If the old model is dissolving out, or it already finished before\n// this model loaded, keep the new model hidden until dissolve-in starts.\nif(st.dissolveActive&&st.dissolveDirection===1||st._dissolvePendingIn){wrapper.visible=false;}st.scene.add(wrapper);st.model=wrapper;st.modelInner=object;// ── Model Axes: attach to newly loaded model if enabled ──\nif(st.modelAxesHelper){// Old helper from previous model — already removed with old model tree\nst.modelAxesHelper=null;}if(cfg.showModelAxes){const ma=new THREE.AxesHelper(cfg.showModelAxesSize||2);ma.renderOrder=998;ma.material.depthTest=false;wrapper.add(ma);st.modelAxesHelper=ma;}// ── Mesh Animations: discover and log mesh names for targeting ──\nconst discoveredMeshNames=[];const discoveredMeshTree=[];// Build hierarchy tree — include Groups that have mesh descendants\nfunction _buildMeshTree(node,depth){const isMesh=node.isMesh||node.isSkinnedMesh;const isGroup=node.isGroup||node.isObject3D;const hasName=!!node.name;if(isMesh&&hasName){discoveredMeshNames.push(node.name);let verts=0;if(node.geometry?.attributes?.position){verts=node.geometry.attributes.position.count;}discoveredMeshTree.push({name:node.name,type:node.isSkinnedMesh?\"SkinnedMesh\":\"Mesh\",depth,verts,isGroup:false,childMeshCount:0});}else if(isGroup&&hasName&&node!==object){// Count mesh descendants\nlet meshCount=0;node.traverse(d=>{if(d!==node&&(d.isMesh||d.isSkinnedMesh))meshCount++;});if(meshCount>0){discoveredMeshTree.push({name:node.name,type:\"Group\",depth,verts:0,isGroup:true,childMeshCount:meshCount});}}for(const child of node.children){_buildMeshTree(child,depth+(hasName&&node!==object?1:0));}}_buildMeshTree(object,0);// Store mesh name list & tree for external access\nst._discoveredMeshNames=discoveredMeshNames;st._discoveredMeshTree=discoveredMeshTree;const normalizedBox=_computeMeshOnlyBoundingBox(wrapper);const modelCenter=normalizedBox.getCenter(new THREE.Vector3);st.camera.position.set(cfg.cameraPositionX,cfg.cameraPositionY,cfg.cameraPositionZ);st.camera.near=.01;st.camera.far=2e3;// Ensure camera aspect/frustum matches current container before auto-fit\nif(wrapRef.current){const cw=wrapRef.current.clientWidth;const ch=wrapRef.current.clientHeight;if(cw&&ch){if(st.camera.isOrthographicCamera){const aspect=cw/ch;st.camera.left=-_ORTHO_FRUSTUM*aspect/2;st.camera.right=_ORTHO_FRUSTUM*aspect/2;st.camera.top=_ORTHO_FRUSTUM/2;st.camera.bottom=-_ORTHO_FRUSTUM/2;}else{st.camera.aspect=cw/ch;}}}st.camera.updateProjectionMatrix();st.controls.target.set(0,0,0);st.controls.update();// Auto-fit — camera distance to origin\nconst normSize=normalizedBox.getSize(new THREE.Vector3);const fitRatio=_getAutoFitRatio(st.camera,normSize);// Store for reactive updates\nst.normalizeScale=normalizeScale;st.fitRatio=fitRatio;// Store per-model scale factors for correct scroll smoothing during dissolve\nwrapper._modelNormalizeScale=normalizeScale;wrapper._modelFitRatio=fitRatio;const ms=Math.max(.01,cfg.modelScale||1);wrapper.scale.setScalar(normalizeScale*fitRatio*ms);// Apply position offset\napplyModelTransform(st,cfg);st.lastModelScale=cfg.modelScale;st.lastOffsetX=cfg.modelOffsetX;st.lastOffsetY=cfg.modelOffsetY;st.lastOffsetZ=cfg.modelOffsetZ;st.lastRotX=cfg.modelRotationX;st.lastRotY=cfg.modelRotationY;st.lastRotZ=cfg.modelRotationZ;// If loading during dissolve transition with scroll animation active,\n// init smoothed values from old model's snapshot to enable smooth transition\nif((st.dissolveActive||st._dissolvePendingIn)&&enableScrollAnimation){st.smoothedRotX=st._dissolveOldSmoothedRotX;st.smoothedRotY=st._dissolveOldSmoothedRotY;st.smoothedRotZ=st._dissolveOldSmoothedRotZ;st.smoothedOffX=st._dissolveOldSmoothedOffX;st.smoothedOffY=st._dissolveOldSmoothedOffY;st.smoothedOffZ=st._dissolveOldSmoothedOffZ;st.smoothedScale=st._dissolveOldSmoothedScale;}if(st._dissolvePendingIn){for(const dissolveMat of st.dissolveMaterials.values()){dissolveMat.dispose();}st.dissolveMaterials.clear();st.dissolveOriginalMaterials.clear();_startDissolveInForModel(st,cfg);}if(_hasAppearTransformMotion(cfg)){_restartAppearPlayback(st,cfg,canvasRef.current,true);}if(safeAnimations&&safeAnimations.length>0){st.mixer=new THREE.AnimationMixer(object);st.animations=safeAnimations;_warmAnimationActions(st,st.mixer,safeAnimations,cfg);// Detect and expose animation clip names for UI\nconst clipNames=safeAnimations.map(c=>c.name).filter(Boolean);if(clipNames.length){startTransition(()=>{setDetectedAnimations(clipNames);});}if(cfg.enableAnimation){_playConfiguredAnimation(st,st.mixer,safeAnimations,cfg,cfg.animationMode,cfg.animationClip);st.mixer.timeScale=cfg.animationSpeed;}}else{startTransition(()=>{setDetectedAnimations([]);});}// ── Blur Reveal: start blurred, animate to sharp ──\nif(cfg.blurReveal&&canvasRef.current){const intensity=cfg.blurRevealIntensity||12;canvasRef.current.style.filter=`blur(${intensity}px)`;canvasRef.current.style.willChange=\"filter\";st._blurRevealStart=performance.now();}// ── Progressive Loading: Phase 1 — show placeholder, then swap ──\n// Skip progressive when model came from cache — textures are already parsed & in memory\nif(cfg.progressiveLoading&&!fromCache){// Store originals, replace with placeholder materials\nconst allTextures=_storeAndReplacePlaceholder(wrapper);// Apply lighting & effects (no material override yet — placeholders shown)\napplyLightingChanges(st,cfg);applyEffectsChanges(st,cfg);st.lastSceneHash=sceneConfigHash(cfg);st.lastLightingHash=lightingHash(cfg);st.lastEnvHash=envHash(cfg);st.lastEffectsHash=effectsHash(cfg);st.lastMaterialHash=\"\";// Show placeholder at full brightness\nsetModelFade(wrapper,1);startTransition(()=>{setStatus(\"\");});// Broadcast: geometry loaded (30% progress)\nif(typeof window!==\"undefined\"&&window.__modelLoadingState){window.__modelLoadingState.setProgress(modelUrl,.3);}// Phase 2 — preload textures in background\n_preloadTexturesProgressive(st.renderer,allTextures,progress=>{// Map texture progress 0-1 to overall 30%-90%\nconst overall=.3+progress*.6;if(typeof window!==\"undefined\"&&window.__modelLoadingState){window.__modelLoadingState.setProgress(modelUrl,overall);}}).then(()=>{if(cancelled)return;// Phase 3 — restore original materials with fade\n_restoreProgressiveMaterials(wrapper);// Now apply material override/preset on top of restored originals\napplyMaterialOverride(wrapper,cfg);_syncSceneHashTrackers(st,cfg);// Fade in from placeholder brightness to full material\nconst fadeDur=cfg.progressiveFadeDuration||.8;const fadeStart=performance.now();st._progressiveFadeActive=true;const doFade=()=>{if(cancelled||!st._progressiveFadeActive)return;const elapsed=(performance.now()-fadeStart)/1e3;const t=Math.min(elapsed/fadeDur,1);// Materials already restored — use model fade for smooth transition\nsetModelFade(wrapper,t);if(t<1){requestAnimationFrame(doFade);}else{setModelFade(wrapper,1);st._progressiveFadeActive=false;// Broadcast: fully complete — model is visible with full materials\n_stopSyntheticProgress();_lastLoadedModelUrl=modelUrl;if(typeof window!==\"undefined\"&&window.__modelLoadingState){window.__modelLoadingState.setProgress(modelUrl,1);window.__modelLoadingState.setComplete(modelUrl);}}};requestAnimationFrame(doFade);});}else{// ── Standard (non-progressive) loading path ──\n// Apply all scene config immediately on first load (no transition)\napplyMaterialOverride(wrapper,cfg);applyLightingChanges(st,cfg);applyEffectsChanges(st,cfg);// Environment already set during init — just sync hash\n_syncSceneHashTrackers(st,cfg);// Ensure model starts at full brightness (no fade)\nsetModelFade(wrapper,1);startTransition(()=>{setStatus(\"\");});// Stop synthetic progress — real loading is done\n_stopSyntheticProgress();// Force one render so model pixels are on canvas BEFORE splash hides\ntry{if(_runtimeNeedsPostFx(cfg)&&wrapRef.current&&st.ensurePostFxPipeline&&st.ensurePostFxPipeline(cfg,wrapRef.current.clientWidth||1,wrapRef.current.clientHeight||1)){st.composer?.render();}else if(st.renderer&&st.scene&&st.camera){st.renderer.render(st.scene,st.camera);}}catch(_){}// Delay setComplete by 2 frames: frame 1 = browser composites the rendered pixels,\n// frame 2 = safe to hide splash (model guaranteed visible on screen)\n_lastLoadedModelUrl=modelUrl;if(typeof window!==\"undefined\"&&window.__modelLoadingState){window.__modelLoadingState.setProgress(modelUrl,.98);}requestAnimationFrame(()=>{if(cancelled)return;if(typeof window!==\"undefined\"&&window.__modelLoadingState){window.__modelLoadingState.setProgress(modelUrl,.99);}requestAnimationFrame(()=>{if(cancelled)return;if(typeof window!==\"undefined\"&&window.__modelLoadingState){window.__modelLoadingState.setProgress(modelUrl,1);window.__modelLoadingState.setComplete(modelUrl);}});});}};const onError=err=>{if(!cancelled){console.error(err);startTransition(()=>{setStatus(err?.message||\"Load error\");});_stopSyntheticProgress();// Notify splash screen that loading failed (still count as complete to unblock)\nif(typeof window!==\"undefined\"&&window.__modelLoadingState){window.__modelLoadingState.setComplete(modelUrl);}}};// Download progress callback — broadcasts 0-30% for progressive, 0-100% for standard\nconst onDownloadProgress=event=>{if(!event.lengthComputable)return;// Real progress received — kill synthetic animation\nif(!_hasRealProgress){_hasRealProgress=true;_stopSyntheticProgress();}const pct=event.loaded/event.total;if(typeof window!==\"undefined\"&&window.__modelLoadingState){if(cfg.progressiveLoading){window.__modelLoadingState.setProgress(modelUrl,pct*.3);}else{window.__modelLoadingState.setProgress(modelUrl,pct*.95);}}};try{// ── Check parsed model cache first ──\nconst cached=_modelCache.get(modelUrl);if(cached){fromCache=true;const{scene:clonedScene,animations:clonedAnims}=_cloneCachedModel(cached);onLoaded(clonedScene,clonedAnims);}else if(_preloadInFlight.has(modelUrl)){// Preload is already downloading — wait for it instead of starting a duplicate request\n_preloadInFlight.get(modelUrl).then(()=>{if(cancelled)return;const preloaded=_modelCache.get(modelUrl);if(preloaded){fromCache=true;const{scene:clonedScene,animations:clonedAnims}=_cloneCachedModel(preloaded);onLoaded(clonedScene,clonedAnims);}else{// Preload failed — fall back to direct load\nconsole.warn(\"[LoadModel] Preload finished but no cache entry — loading directly\");if(!window.__modelLoadingState?.isLoading){startTransition(()=>{setStatus(\"Loading…\");});}_loadModelDirect(modelUrl,format,onLoaded,onDownloadProgress,onError);}});}else{// No cache, no preload in flight — direct load\n// Start synthetic progress in case Content-Length is missing\n_startSyntheticProgress(modelUrl);_loadModelDirect(modelUrl,format,onLoaded,onDownloadProgress,onError);}}catch(err){onError(err);}return()=>{cancelled=true;// Cancel any active progressive fade\nif(stateRef.current)stateRef.current._progressiveFadeActive=false;_progressiveOrigMaterials.clear();// Only reset loading state if URL is changing to a DIFFERENT url\n// Don't reset on unmount/remount with same URL (e.g. splash variant transition)\n// The next useEffect run will set the correct state\n};},[modelUrl,cameraType,webglRuntimeActive]);useEffect(()=>{const st=stateRef.current;if(!st?.mixer)return;let raf=0;raf=requestAnimationFrame(()=>{const live=stateRef.current;if(!live?.mixer||live!==st)return;const cfg=settingsRef.current;_warmAnimationActions(live,live.mixer,live.animations,cfg);if(enableAnimation){_playConfiguredAnimation(live,live.mixer,live.animations,cfg,animationMode,animationClip);}else{_clearAnimationOnceCompleteListener(live,live.mixer);live.mixer.stopAllAction();live._activeAnimationAction=null;live._activeAnimationKey=\"\";live._activeAnimationClipName=\"\";live._lastAnimationRequestSig=\"\";}// Also re-sync sub-scene animations (non-overridden follow primary)\nif(live.subScenes){const sceneItems=subSceneItems||[];const subSceneCfg={...cfg,onAnimationOnceComplete:null};for(const[idx,ss]of live.subScenes){if(!ss.mixer||!ss.animations?.length)continue;if(ss.group&&ss.group.visible===false)continue;_warmAnimationActions(ss,ss.mixer,ss.animations,cfg);const item=sceneItems[idx];if(item?.animOverride){const overrideSig=[\"override\",enableAnimation?1:0,item.animMode??\"all\",item.animClip??\"\",cfg.animationBlendDuration??0,cfg.animationWarp?1:0,cfg.animationSyncPhase?1:0,cfg.animationRestartOnSwitch?1:0,cfg.animationLoopMode??\"repeat\",runtimeAnimationReplayHash].join(\"|\");if(enableAnimation){if(ss._lastSubSceneAnimationSyncSig!==overrideSig){ss._lastSubSceneAnimationSyncSig=overrideSig;_playAnimations(ss.mixer,ss.animations,item.animMode??\"all\",item.animClip??\"\",_getAnimationBlendOptions(ss,cfg));}}else{_clearAnimationOnceCompleteListener(ss,ss.mixer);ss.mixer.stopAllAction();ss._activeAnimationAction=null;ss._activeAnimationKey=\"\";ss._activeAnimationClipName=\"\";ss._lastAnimationRequestSig=\"\";ss._lastSubSceneAnimationSyncSig=\"\";}}else{const followSig=[\"follow\",enableAnimation?1:0,animationMode,animationClip??\"\",cfg.animationBlendDuration??0,cfg.animationWarp?1:0,cfg.animationSyncPhase?1:0,cfg.animationRestartOnSwitch?1:0,cfg.animationLoopMode??\"repeat\",cfg.animationModelHoverGate?1:0,hasAnimationOnceCompleteHandler?1:0,runtimeAnimationReplayHash].join(\"|\");if(enableAnimation){ss._modelHoverRaycastActive=live._modelHoverRaycastActive;if(ss._lastSubSceneAnimationSyncSig!==followSig){ss._lastSubSceneAnimationSyncSig=followSig;_playConfiguredAnimation(ss,ss.mixer,ss.animations,subSceneCfg,animationMode,animationClip);}}else{_clearAnimationOnceCompleteListener(ss,ss.mixer);ss.mixer.stopAllAction();ss._activeAnimationAction=null;ss._activeAnimationKey=\"\";ss._activeAnimationClipName=\"\";ss._lastAnimationRequestSig=\"\";ss._lastSubSceneAnimationSyncSig=\"\";}}}}});return()=>cancelAnimationFrame(raf);},[enableAnimation,animationMode,animationClip,animationBlendDuration,animationWarp,animationSyncPhase,animationRestartOnSwitch,animationLoopMode,animationModelHoverGate,animationWarmClips,hasAnimationOnceCompleteHandler,runtimeAnimationReplayHash,subSceneAnimationKey]);// Animation speed (timeScale) — apply to main + all sub-scene mixers\nuseEffect(()=>{const st=stateRef.current;if(!st?.mixer)return;let raf=0;raf=requestAnimationFrame(()=>{const live=stateRef.current;if(!live?.mixer||live!==st)return;if(live.mixer.timeScale!==animationSpeed){live.mixer.timeScale=animationSpeed;}if(live.subScenes){const sceneItems=subSceneItems||[];for(const[idx,ss]of live.subScenes){if(!ss.mixer)continue;if(ss.group&&ss.group.visible===false)continue;const item=sceneItems[idx];if(item?.animOverride&&item.animSpeed!=null){if(ss.mixer.timeScale!==item.animSpeed){ss.mixer.timeScale=item.animSpeed;}}else{if(ss.mixer.timeScale!==animationSpeed){ss.mixer.timeScale=animationSpeed;}}}}});return()=>cancelAnimationFrame(raf);},[animationSpeed,subSceneAnimationKey]);useEffect(()=>{const st=stateRef.current;if(!st)return;st.camera.position.set(cameraPositionX,cameraPositionY,cameraPositionZ);st.controls.update();},[cameraPositionX,cameraPositionY,cameraPositionZ]);// Orthographic zoom — update camera zoom when prop changes\nuseEffect(()=>{const st=stateRef.current;if(!st?.camera?.isOrthographicCamera)return;st.camera.zoom=orthoZoom;st.camera.updateProjectionMatrix();},[orthoZoom]);// Stereo eye separation — update when prop changes\nuseEffect(()=>{const st=stateRef.current;if(!st?.stereoCamera)return;st.stereoCamera.eyeSep=stereoEyeSep;},[stereoEyeSep]);// ── Grid Helper — add/remove/update on toggle or param change ──\nuseEffect(()=>{const st=stateRef.current;if(!st)return;// Remove old grid\nif(st.gridHelper){st.scene.remove(st.gridHelper);st.gridHelper.geometry?.dispose();st.gridHelper.material?.dispose();st.gridHelper=null;}if(showGrid){const g=new THREE.GridHelper(showGridSize,showGridDivisions,parseColor(showGridColor1),parseColor(showGridColor2));g.material.transparent=true;g.material.opacity=.6;g.material.depthWrite=false;g.renderOrder=-1;st.scene.add(g);st.gridHelper=g;}},[showGrid,showGridSize,showGridDivisions,showGridColor1,showGridColor2]);// ── Axes Helper — add/remove/update on toggle or size change ──\nuseEffect(()=>{const st=stateRef.current;if(!st)return;// Remove old axes\nif(st.axesHelper){st.scene.remove(st.axesHelper);st.axesHelper.geometry?.dispose();if(Array.isArray(st.axesHelper.material)){st.axesHelper.material.forEach(m=>m.dispose());}else{st.axesHelper.material?.dispose();}st.axesHelper=null;}if(showAxes){const a=new THREE.AxesHelper(showAxesSize);a.renderOrder=999;a.material.depthTest=false// always visible\n;st.scene.add(a);st.axesHelper=a;}},[showAxes,showAxesSize]);// ── Model Axes Helper — attached to model, follows its transforms ──\nuseEffect(()=>{const st=stateRef.current;if(!st)return;// Remove old model axes\nif(st.modelAxesHelper){st.modelAxesHelper.parent?.remove(st.modelAxesHelper);st.modelAxesHelper.geometry?.dispose();if(Array.isArray(st.modelAxesHelper.material)){st.modelAxesHelper.material.forEach(m=>m.dispose());}else{st.modelAxesHelper.material?.dispose();}st.modelAxesHelper=null;}if(showModelAxes&&st.model){const ma=new THREE.AxesHelper(showModelAxesSize);ma.renderOrder=998;ma.material.depthTest=false;st.model.add(ma);st.modelAxesHelper=ma;}},[showModelAxes,showModelAxesSize]);// ─────────────── Load/Unload Sub-Scenes ───────────────\nuseEffect(()=>{const st=stateRef.current;if(!st)return;let cancelled=false;// Build a map of desired sub-scenes: index → modelUrl\nconst desired=new Map;for(let i=0;i<subSceneItems.length;i++){const item=subSceneItems[i];if(item&&item.modelUrl&&item.modelUrl.trim()){desired.set(i,item.modelUrl.trim());}}const totalToLoad=desired.size;let loadedCount=0;const updatePreloadProgress=()=>{loadedCount++;startTransition(()=>{setPreloadProgress({loaded:loadedCount,total:totalToLoad});});};// Count already-loaded scenes\nfor(const[idx,ss]of st.subScenes){if(ss._loaded&&desired.has(idx)&&desired.get(idx)===ss.loadedUrl){loadedCount++;}}startTransition(()=>{setPreloadProgress({loaded:loadedCount,total:totalToLoad});});// Collect old sub-scenes that need replacement (URL changed) — keep alive until new one loads\nconst pendingReplace=new Map// idx → old sub-scene state (for deferred swap)\n;// Remove sub-scenes no longer desired; mark URL-changed ones for deferred swap\nfor(const[idx,ss]of st.subScenes){const wantUrl=desired.get(idx);if(!wantUrl){// Slot removed entirely — dispose immediately\ndisposeSubScene(st,ss);st.subScenes.delete(idx);}else if(wantUrl!==ss.loadedUrl){// URL changed — keep old scene alive as \"pending replace\" so user sees no gap\npendingReplace.set(idx,ss);st.subScenes.delete(idx);}}// Load new or changed sub-scenes\nfor(const[idx,url]of desired){if(st.subScenes.has(idx))continue;// already loaded & same URL\nconst oldSs=pendingReplace.get(idx)// may be null if brand new\n;// Register placeholder — inherit crossfade opacity & scroll state from old scene\nst.subScenes.set(idx,{group:null,modelInner:null,mixer:null,animations:[],normalizeScale:1,fitRatio:1,floatBaseY:0,loadedUrl:url,_loaded:false,// Keep old scene rendering until new one is ready\n_oldScene:oldSs||null,_lastSubSceneAnimationSyncSig:\"\"});const format=detectFormat(url);const imageFormat=detectImageFormat(url);const onSubLoaded=(object,animations)=>{if(cancelled)return;if(!st?.renderer||!st?.scene||!st?.camera)return;const cfg=settingsRef.current;_cleanupSkinnedScene(object);const safeAnimations=_sanitizeAnimationClipsForObject(object,animations||[]);const box=_computeMeshOnlyBoundingBox(object);const center=box.getCenter(new THREE.Vector3);const size=box.getSize(new THREE.Vector3);const maxDim=Math.max(size.x,size.y,size.z)||1;const normalizeScale=1/maxDim;const group=new THREE.Group;object.position.sub(center);group.add(object);group.scale.setScalar(1);_tmpBox3.copy(_computeMeshOnlyBoundingBox(group));const baseCenter=_tmpBox3.getCenter(new THREE.Vector3);const baseMinY=_tmpBox3.min.y;group.scale.setScalar(normalizeScale);// Texture setup\nconst maxAniso=_getOptimizedAnisotropy(st.renderer,cfg);group.traverse(child=>{if(child.isMesh){child.castShadow=!imageFormat;child.receiveShadow=!imageFormat;child.frustumCulled=!child.isSkinnedMesh;const mats=Array.isArray(child.material)?child.material:[child.material];for(const mat of mats){if(mat.map)mat.map.colorSpace=THREE.SRGBColorSpace;if(mat.emissiveMap)mat.emissiveMap.colorSpace=THREE.SRGBColorSpace;const texKeys=[\"map\",\"normalMap\",\"roughnessMap\",\"metalnessMap\",\"aoMap\",\"emissiveMap\"];for(const k of texKeys){if(mat[k])mat[k].anisotropy=maxAniso;}}}});// Auto-fit (same logic as primary model)\nconst normalizedBox=_computeMeshOnlyBoundingBox(group);const normSize=normalizedBox.getSize(new THREE.Vector3);const fitRatio=_getAutoFitRatio(st.camera,normSize);// Use LIVE settings (not stale closure) for initial transform\nconst liveItems=cfg.subSceneItems||[];const item=liveItems[idx]||subSceneItems[idx];const ssScale=Math.max(.01,item?.scale??1);group.scale.setScalar(normalizeScale*fitRatio*ssScale);// Retrieve the current placeholder to inherit its state\nconst placeholder=st.subScenes.get(idx);group.visible=item?.visible!==false;st.scene.add(group);// Apply material override/preset to sub-scene (sync with primary model)\nif(!imageFormat){applyMaterialOverride(group,cfg);}// Now dispose the old scene that was kept alive during loading\nif(placeholder?._oldScene){disposeSubScene(st,placeholder._oldScene);}let mixer=null;const subSceneAnimState={_activeAnimationAction:null,_activeAnimationKey:\"\",_activeAnimationClipName:\"\",_lastAnimationRequestSig:\"\",_lastSubSceneAnimationSyncSig:\"\",_animationActionCache:new Set,_animationOnceCompleteListener:null,_animationOnceCompleteAction:null,_animationWarmupDone:false,_modelHoverRaycastActive:st._modelHoverRaycastActive,_modelHoverGateInitialized:false,_modelHoverBaseAnimationClip:\"\",_modelHoverPendingAnimationClip:\"\"};if(safeAnimations&&safeAnimations.length>0){mixer=new THREE.AnimationMixer(object);_warmAnimationActions(subSceneAnimState,mixer,safeAnimations,cfg);if(cfg.enableAnimation){// Use per-scene animation settings if overridden\nconst useOverride=item?.animOverride;const overrideClip=item?.animClip??\"\";const playMode=useOverride?String(overrideClip).trim()?\"single\":\"all\":cfg.animationMode;const playClip=useOverride?overrideClip:cfg.animationClip;if(useOverride){_playAnimations(mixer,safeAnimations,playMode,playClip,_getAnimationBlendOptions(subSceneAnimState,cfg));}else{const subSceneCfg={...cfg,onAnimationOnceComplete:null};_playConfiguredAnimation(subSceneAnimState,mixer,safeAnimations,subSceneCfg,playMode,playClip);}// Apply per-scene speed\nif(useOverride&&item.animSpeed!=null){mixer.timeScale=item.animSpeed;}else{mixer.timeScale=cfg.animationSpeed;}}}// Initialize _smoothState with current live values to prevent snap on first frame\nconst initSmooth=cfg.enableScrollAnimation?{scale:item?.scale??1,offX:item?.offX??0,offY:item?.offY??0,offZ:item?.offZ??0,rotX:item?.rotX??0,rotY:item?.rotY??0,rotZ:item?.rotZ??0}:null;st.subScenes.set(idx,{group,modelInner:object,mixer,animations:safeAnimations||[],normalizeScale,fitRatio,floatBaseY:0,loadedUrl:url,_loaded:true,_oldScene:null,_smoothState:initSmooth,_activeAnimationAction:subSceneAnimState._activeAnimationAction,_activeAnimationKey:subSceneAnimState._activeAnimationKey,_activeAnimationClipName:subSceneAnimState._activeAnimationClipName,_lastAnimationRequestSig:subSceneAnimState._lastAnimationRequestSig,_lastSubSceneAnimationSyncSig:subSceneAnimState._lastSubSceneAnimationSyncSig,_animationActionCache:subSceneAnimState._animationActionCache,_animationOnceCompleteListener:subSceneAnimState._animationOnceCompleteListener,_animationOnceCompleteAction:subSceneAnimState._animationOnceCompleteAction,_animationWarmupDone:subSceneAnimState._animationWarmupDone,_modelHoverRaycastActive:subSceneAnimState._modelHoverRaycastActive,_modelHoverGateInitialized:subSceneAnimState._modelHoverGateInitialized,_modelHoverBaseAnimationClip:subSceneAnimState._modelHoverBaseAnimationClip,_modelHoverPendingAnimationClip:subSceneAnimState._modelHoverPendingAnimationClip,_ownsResources:!!imageFormat,_baseCenterX:baseCenter.x,_baseCenterY:baseCenter.y,_baseCenterZ:baseCenter.z,_baseMinY:baseMinY});updatePreloadProgress();};const onSubError=err=>{if(!cancelled){console.warn(`Sub-scene ${idx} load error:`,err);// Dispose old scene that was kept alive during loading attempt\nconst placeholder=st.subScenes.get(idx);if(placeholder?._oldScene){disposeSubScene(st,placeholder._oldScene);placeholder._oldScene=null;}}updatePreloadProgress()// still count toward progress\n;};try{if(imageFormat){loadImageAsSubScene(url,st.renderer,onSubLoaded,onSubError);continue;}// ── Check parsed model cache first ──\nconst cached=_modelCache.get(url);if(cached){const{scene:clonedScene,animations:clonedAnims}=_cloneCachedModel(cached);onSubLoaded(clonedScene,clonedAnims);}else if(_preloadInFlight.has(url)){// Preload already in progress — wait for it\n_preloadInFlight.get(url).then(()=>{if(cancelled)return;const preloaded=_modelCache.get(url);if(preloaded){const{scene:cs,animations:ca}=_cloneCachedModel(preloaded);onSubLoaded(cs,ca);}else{_loadModelDirect(url,format,onSubLoaded,undefined,onSubError);}});}else{_loadModelDirect(url,format,onSubLoaded,undefined,onSubError);}}catch(err){onSubError(err);}}return()=>{cancelled=true;// Dispose any lingering old scenes kept alive for deferred swap\nfor(const[,ss]of st.subScenes){if(ss._oldScene){disposeSubScene(st,ss._oldScene);ss._oldScene=null;}}};},[subSceneModelUrlKey,webglRuntimeActive]);// When orbit controls are OFF, make the entire wrapper transparent to pointer events\n// so the canvas never blocks buttons/links/triggers underneath or on top of it.\n// When orbit controls or mesh interactions are ON, pointer capture is enabled\n// only while the cursor is on the actual model (or while dragging).\n// Mouse rotation uses document-level listeners so it works regardless.\nconst hasInteractions=meshInteractionsRaw.map(resolveThreeJSRuntimeObjectEventItem).some(ic=>ic?.meshName&&(ic.__hasInteractionEvent??true));const needsPointerCapture=enableOrbitControls||hasInteractions;const shouldCapturePointer=needsPointerCapture&&modelPointerCapture;const cursorStyle=shouldCapturePointer?\"grab\":\"default\";const shouldUseLayoutPosition=layoutPositionMode!==\"relative\"&&layoutLayerMatched;const layoutPositionStyle=shouldUseLayoutPosition?{position:layoutPositionMode,zIndex:layoutZIndex,top:layoutTop,left:layoutLeft,...layoutRight!==null&&layoutRight!==\"\"?{right:layoutRight}:{},...layoutBottom!==null&&layoutBottom!==\"\"?{bottom:layoutBottom}:{}}:{};return /*#__PURE__*/_jsxs(\"div\",{ref:wrapRef,id:runtimeSlotDomId,\"data-import-3d-runtime-slot-id\":slotId,style:{width:\"100%\",height:\"100%\",...style,...layoutPositionStyle,cursor:cursorStyle,overflow:\"hidden\",background:transparentBackground?\"transparent\":undefined,pointerEvents:shouldCapturePointer?\"auto\":\"none\",touchAction:enableOrbitControls?\"pan-y\":\"auto\"},children:[effectiveWebglActive&&/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,\"data-3d-canvas-id\":canvasId,style:{display:\"block\",width:\"100%\",height:\"100%\",opacity:1,pointerEvents:shouldCapturePointer?\"auto\":\"none\",touchAction:enableOrbitControls?\"pan-y\":\"auto\"}}),rootRendererActive&&isDesignCanvas&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",inset:4,display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",background:\"rgba(110, 89, 255, 0.05)\",backgroundSize:\"16px 16px\",border:\"1.5px dashed rgba(110, 89, 255, 0.4)\",borderRadius:12,padding:20,textAlign:\"center\",gap:16,color:\"#888\",userSelect:\"none\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsxs(\"svg\",{width:\"32\",height:\"32\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"rgba(110, 89, 255, 0.6)\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"}),/*#__PURE__*/_jsx(\"polyline\",{points:\"3.27 6.96 12 12.01 20.73 6.96\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"22.08\",x2:\"12\",y2:\"12\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12,fontWeight:500,letterSpacing:\"0.02em\",opacity:.8,fontFamily:'Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'},children:\"Nhấn preview hoặc publish để xem scene\"})]}),rootRendererActive&&!isDesignCanvas&&/*#__PURE__*/_jsx(\"div\",{\"data-import-3d-renderer-slot\":\"true\",style:{width:\"100%\",height:\"100%\",pointerEvents:\"none\",background:\"transparent\"}}),showMeshHelper&&meshTooltip&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:Math.min(meshTooltip.x+16,(wrapRef.current?.clientWidth||300)-220),top:Math.max(meshTooltip.y-10,4),pointerEvents:\"none\",zIndex:100},children:/*#__PURE__*/_jsxs(\"div\",{style:{background:\"rgba(0,0,0,0.92)\",border:\"1px solid rgba(255,255,255,0.12)\",borderRadius:8,padding:\"8px 12px\",backdropFilter:\"blur(12px)\",minWidth:140,maxWidth:260},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:6,marginBottom:4},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:8,height:8,borderRadius:2,background:meshTooltip.type===\"SkinnedMesh\"?\"#a855f7\":\"#3b82f6\"}}),/*#__PURE__*/_jsx(\"span\",{style:{color:\"#fff\",fontWeight:600,fontSize:12,letterSpacing:\"-0.01em\"},children:meshTooltip.name})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",gap:\"4px 10px\",marginTop:2},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",padding:\"1px 5px\",borderRadius:4,fontSize:9,background:meshTooltip.type===\"SkinnedMesh\"?\"rgba(168,85,247,0.15)\":\"rgba(59,130,246,0.15)\",color:meshTooltip.type===\"SkinnedMesh\"?\"#c084fc\":\"#60a5fa\",border:`1px solid ${meshTooltip.type===\"SkinnedMesh\"?\"rgba(168,85,247,0.2)\":\"rgba(59,130,246,0.2)\"}`},children:meshTooltip.type}),/*#__PURE__*/_jsxs(\"span\",{style:{color:\"rgba(255,255,255,0.4)\",fontSize:10},children:[meshTooltip.verts.toLocaleString(),\" verts\"]}),meshTooltip.mat&&/*#__PURE__*/_jsx(\"span\",{style:{color:\"rgba(255,255,255,0.3)\",fontSize:10},children:meshTooltip.mat})]}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:4,color:\"rgba(255,255,255,0.2)\",fontSize:9,wordBreak:\"break-all\"},children:meshTooltip.path})]})}),interactTooltip?interactTooltip.isFixed&&typeof document!==\"undefined\"?createPortal(/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",left:Math.min(interactTooltip.x+12,typeof window!==\"undefined\"?window.innerWidth-180:800),top:Math.max(interactTooltip.y-32,4),pointerEvents:\"none\",zIndex:2147483647},children:/*#__PURE__*/_jsx(\"div\",{style:{background:\"rgba(0,0,0,0.88)\",color:\"#fff\",padding:\"4px 10px\",borderRadius:6,fontSize:12,fontFamily:\"system-ui, sans-serif\",whiteSpace:\"nowrap\",boxShadow:\"0 2px 8px rgba(0,0,0,0.3)\",border:\"1px solid rgba(255,255,255,0.1)\",maxWidth:220,overflow:\"hidden\",textOverflow:\"ellipsis\"},children:interactTooltip.text})}),document.body):/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:Math.min(interactTooltip.x+12,(wrapRef.current?.clientWidth||300)-180),top:Math.max(interactTooltip.y-32,4),pointerEvents:\"none\",zIndex:999999},children:/*#__PURE__*/_jsx(\"div\",{style:{background:\"rgba(0,0,0,0.88)\",color:\"#fff\",padding:\"4px 10px\",borderRadius:6,fontSize:12,fontFamily:\"system-ui, sans-serif\",whiteSpace:\"nowrap\",boxShadow:\"0 2px 8px rgba(0,0,0,0.3)\",border:\"1px solid rgba(255,255,255,0.1)\",maxWidth:220,overflow:\"hidden\",textOverflow:\"ellipsis\"},children:interactTooltip.text})}):null,showMeshHelper&&stateRef.current?._discoveredMeshTree?.length>0&&isCanvasTarget&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",right:10,top:10,maxHeight:\"70%\",overflowY:\"auto\",padding:\"6px 0\",fontSize:10,color:\"rgba(255,255,255,0.85)\",background:\"rgba(0,0,0,0.6)\",borderRadius:8,backdropFilter:\"blur(10px)\",pointerEvents:\"auto\",minWidth:180,maxWidth:300,lineHeight:1.5,zIndex:50,border:\"1px solid rgba(255,255,255,0.08)\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"4px 10px 6px\",fontSize:10,color:\"rgba(255,255,255,0.5)\",borderBottom:\"1px solid rgba(255,255,255,0.1)\",marginBottom:2,display:\"flex\",alignItems:\"center\",gap:5},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",width:7,height:7,borderRadius:2,background:\"#3b82f6\"}}),/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600,color:\"rgba(255,255,255,0.7)\"},children:\"Scene Hierarchy\"}),/*#__PURE__*/_jsxs(\"span\",{style:{marginLeft:\"auto\",fontSize:9},children:[stateRef.current._discoveredMeshNames.length,\" \",\"meshes\"]})]}),stateRef.current._discoveredMeshTree.map((item,i)=>{const isHovered=meshTooltip?.name===item.name;const indent=item.depth*12;if(item.isGroup){// ── Group row ──\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{padding:`3px 10px 3px ${10+indent}px`,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\",display:\"flex\",alignItems:\"center\",gap:5,borderTop:i>0?\"1px solid rgba(255,255,255,0.04)\":\"none\",marginTop:i>0?1:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:8,color:\"#f59e0b\",flexShrink:0},children:\"▾\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600,fontSize:11,color:\"#fbbf24\",letterSpacing:\"0.01em\"},children:item.name}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:8,color:\"rgba(255,255,255,0.25)\",marginLeft:\"auto\",flexShrink:0,padding:\"1px 4px\",borderRadius:3,background:\"rgba(245,158,11,0.1)\",border:\"1px solid rgba(245,158,11,0.15)\"},children:item.childMeshCount})]},`g-${i}`);}// ── Mesh row ──\nconst typeColor=item.type===\"SkinnedMesh\"?{bg:\"rgba(168,85,247,0.12)\",border:\"rgba(168,85,247,0.2)\",text:\"#c084fc\"}:{bg:\"rgba(59,130,246,0.1)\",border:\"rgba(59,130,246,0.15)\",text:\"#60a5fa\"};return /*#__PURE__*/_jsxs(\"div\",{style:{padding:`2px 10px 2px ${10+indent}px`,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\",display:\"flex\",alignItems:\"center\",gap:5,color:isHovered?\"#60a5fa\":\"rgba(255,255,255,0.6)\",background:isHovered?\"rgba(59,130,246,0.1)\":\"transparent\",transition:\"background 0.15s, color 0.15s\",fontSize:10},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:4,height:4,borderRadius:\"50%\",background:isHovered?\"#60a5fa\":\"rgba(255,255,255,0.2)\",flexShrink:0}}),/*#__PURE__*/_jsx(\"span\",{style:{overflow:\"hidden\",textOverflow:\"ellipsis\"},children:item.name}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:8,color:typeColor.text,padding:\"0 3px\",borderRadius:3,background:typeColor.bg,border:`1px solid ${typeColor.border}`,flexShrink:0,marginLeft:\"auto\"},children:item.type===\"SkinnedMesh\"?\"Skin\":\"Mesh\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:8,color:\"rgba(255,255,255,0.2)\",flexShrink:0},children:item.verts>999?`${(item.verts/1e3).toFixed(1)}k`:item.verts})]},`m-${i}`);}),/*#__PURE__*/_jsx(\"div\",{style:{padding:\"4px 10px 2px\",fontSize:8,color:\"rgba(255,255,255,0.2)\",borderTop:\"1px solid rgba(255,255,255,0.08)\",marginTop:2},children:\"Hover model to identify meshes\"})]}),status&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:\"50%\",top:\"50%\",transform:\"translate(-50%, -50%)\",padding:\"10px 16px\",fontSize:13,background:\"rgba(0,0,0,0.75)\",color:\"#fff\",borderRadius:10,backdropFilter:\"blur(8px)\",pointerEvents:\"none\"},children:status}),!status&&preloadProgress.total>0&&preloadProgress.loaded<preloadProgress.total&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:\"50%\",bottom:12,transform:\"translateX(-50%)\",padding:\"4px 10px\",fontSize:10,background:\"rgba(0,0,0,0.5)\",color:\"rgba(255,255,255,0.7)\",borderRadius:6,backdropFilter:\"blur(6px)\",pointerEvents:\"none\",whiteSpace:\"nowrap\"},children:[\"Preloading \",preloadProgress.loaded,\"/\",preloadProgress.total]}),enableAnimation&&detectedAnimations.length>0&&isCanvasTarget&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:10,bottom:10,maxHeight:\"40%\",overflowY:\"auto\",padding:\"6px 0\",fontSize:10,color:\"rgba(255,255,255,0.85)\",background:\"rgba(0,0,0,0.55)\",borderRadius:8,backdropFilter:\"blur(8px)\",pointerEvents:\"auto\",minWidth:120,lineHeight:1.6},children:[/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"2px 10px 4px\",fontSize:9,color:\"rgba(255,255,255,0.45)\",borderBottom:\"1px solid rgba(255,255,255,0.1)\",marginBottom:2},children:[\"Animations (\",detectedAnimations.length,\")\"]}),detectedAnimations.map(name=>/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"2px 10px\",cursor:\"default\",background:animationMode===\"single\"&&animationClip===name?\"rgba(77,155,255,0.3)\":\"transparent\",color:animationMode===\"single\"&&animationClip===name?\"#4d9bff\":\"rgba(255,255,255,0.75)\",whiteSpace:\"nowrap\"},children:[animationMode===\"all\"||animationMode===\"single\"&&animationClip===name?\"▶ \":\"   \",name]},name)),animationMode===\"all\"&&/*#__PURE__*/_jsx(\"div\",{style:{padding:\"2px 10px\",fontSize:9,color:\"rgba(255,255,255,0.35)\",borderTop:\"1px solid rgba(255,255,255,0.1)\",marginTop:2},children:\"Mode: All Clips\"})]}),showControls&&enableOrbitControls&&!status&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",right:10,bottom:10,padding:\"4px 8px\",fontSize:9,color:\"rgba(255,255,255,0.25)\",background:\"rgba(0,0,0,0.3)\",borderRadius:6,pointerEvents:\"none\",lineHeight:1.4,textAlign:\"right\"},children:[\"Drag to orbit\",enableZoom?\" \\xb7 Scroll to zoom\":\"\"]})]});}/* ═══════════════════════════════════════════════════════════\n   Shared Runtime Config\n   ═══════════════════════════════════════════════════════════ *//**\n * Normalizes transformation data (position, rotation, scale) for models.\n * Handles the mapping between Framer's coordinate system and Three.js.\n *//**\n * Resolves camera positioning, model transformation, and responsive layout settings.\n * Handles desktop/mobile overrides and coordinate mapping.\n * @param props Component properties from Framer\n * @param options Resolution options (width, useMobile override)\n *//**\n * Resolves user interaction settings (orbit controls, zoom, auto-rotate)\n * and skeletal animation parameters.\n *//**\n * resolveThreeJSRuntimeConfig\n * Normalizes and deeply merges complex Framer properties into a flat,\n * predictable configuration object used by the WebGL rendering bridge.\n */// @api ConfigResolution.resolveRuntimeConfig\n/**\n * Resolves the appearance and transition configuration (dissolve effects, progressive loading, etc.).\n * Maps current property controls to the flat runtime configuration object.\n *//**\n * Aggregates all sub-configurations into a final runtime settings object.\n * This is the primary entry point for converting Framer props into internal engine state.\n */// @api ConfigResolution.buildRuntimeSettings\nexport const Slot={Component:_ThreeJSRuntimeSlot}// #endregion\n;\nexport const __FramerMetadata__ = {\"exports\":{\"Slot\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_clearModelCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"_startModelPreload\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{updateNimbusTech}from\"https://framerusercontent.com/modules/5Y5eNnruVlEDN4Nlaxhn/992OACxl4zEJdAfDHdex/nimbusScroll.js\";// #region 24. ROOT RENDERER COMPONENT\n/**\n * ThreeJSRuntimeRoot\n * The singleton engine that creates and manages the actual WebGLRenderer and ThreeJS Scene.\n * It reads from the WebGLCoordinator state and renders all registered ThreeJSRuntimeSlots.\n *\n * Consumed by ../../ThreeJS_Runtime.tsx as `Root.Component` / `Root.controls`,\n * mirroring the `Slot` export from ./slotRuntime.tsx.\n */import{THREE,MeshoptDecoder,GLTFLoader,DRACOLoader,SkeletonUtils,BufferGeometryUtils,_loadFBXLoader,_loadPostFxModules,React,ControlType,RenderTarget,useIsOnFramerCanvas}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{_ORTHO_FRUSTUM,TONE_MAPPINGS}from\"https://framerusercontent.com/modules/XjjyoJUCKGbb3Dbpn7ls/3ZkJcGJ3N9KtUeV0TkDB/constants.js\";import{_getImport3DBridgeState,_emitImport3DBridge,_subscribeImport3DBridge,_snapshotImport3DBridge}from\"https://framerusercontent.com/modules/k3J7THOMV5sPcC9EjGVq/b6mlYDX51KTLflCnOxsJ/bridge.js\";import{_debugImport3DRendererEvent}from\"https://framerusercontent.com/modules/YM17MJwxtWeSs0sFM9GB/4r44enqUb9DGkkm7wxsa/diagnostics.js\";import{useBrowserLayoutEffect,NOISE_GLSL,VignetteShader,ChromaticAberrationShader,FilmGrainShader,AlphaRestoreShader,AlphaSavePass,ColorGradingShader,createFramerTilePixelatePass,applyEffectsChanges}from\"https://framerusercontent.com/modules/IdGzsHdzJFZjoerrm1R6/ZDt4dFJIJ9EMLZbVIXUQ/postprocessing.js\";import{UI_STYLES}from\"https://framerusercontent.com/modules/g7ZpK2wMpFDbWq2zFtRU/OA8T078LXim2Tn0CtB5I/propertyControls.js\";import{_tmpVec3A,_tmpVec3B,_tmpBox3,_tmpSubScenePivotOffset,_tmpSubScenePivotEuler,_tmpSubScenePivotQuat,_createAsyncTextureLoader,_rootTooltipHandler}from\"https://framerusercontent.com/modules/e3Gn61f7n8O6N477csEc/XQABUbxjpsQJSmz595Po/state.js\";import{materialHash,lightingHash,envHash,effectsHash,appearReplayHash,sceneConfigHash}from\"https://framerusercontent.com/modules/aFcmtpYRlhyp7w3gDzcI/L0O59n8ERYAkLQU9GKye/hashes.js\";import{parseColor,_getObjectEventScrollProgress}from\"https://framerusercontent.com/modules/u74BD3xKC5d1g16sQ0Dj/jhyOe4VVQQNXkyFEvqoo/formatAndColor.js\";import{_findAnimationClip,_clearAnimationOnceCompleteListener,_isAnimationOnceActionComplete,_bindAnimationOnceComplete,_bindAnimationOnceCompleteActions,_warmAnimationActions,_canAdvanceAnimationMixer}from\"https://framerusercontent.com/modules/OW6JuxITky0baeSUblwC/SQrxhGqqDBbtN2sdADeq/animationUtils.js\";import{_releaseEnvironmentMap,applyEnvironmentChanges}from\"https://framerusercontent.com/modules/yTDeUaM613tgGAJ9WKa4/jE52leYsnmj4KuWdBOo5/environment.js\";import{applyLightingChanges}from\"https://framerusercontent.com/modules/9w1GUetMBcd5tGkwVEaC/mW7mdtQJNCTLnn6MVRmg/lighting.js\";import{_removeStatsMonitor,_syncStatsMonitor}from\"https://framerusercontent.com/modules/s7jz5uIzZtPhhkq2KDZB/ItIOP5YatoakoLrZN8vu/statsMonitor.js\";import{_getVisibleSize,_getAutoFitVisibleSize,_getAutoFitRatio,_runtimeNeedsPostFx,_postFxPipelineSignature,getFramerRuntimeMode}from\"https://framerusercontent.com/modules/VBWlX7Xj9c0TDGr87Yag/aMS7pZCDBphxkvSKFGKw/renderMetrics.js\";import{_sanitizeAnimationClipsForObject,_computeMeshOnlyBoundingBox}from\"https://framerusercontent.com/modules/AFUuT451C58PCzmVhCV6/LtpaPYvKQJsZkRBrz1k0/object3DUtils.js\";import{_loadFromZip,_cleanupSkinnedScene,_disposeMaterialsOnly}from\"https://framerusercontent.com/modules/ZJHKxOkDkbAZkHcbiSxh/dUmMyRmOORWdCMBkW5w2/modelLoading.js\";import{createDissolveParticles,updateDissolveParticles,disposeDissolveParticles,syncParticleAttributes,_backupMaterial,_restoreMaterial,applyMaterialOverride}from\"https://framerusercontent.com/modules/Edc710chG3tFyabyrK1M/nazrAnvcxYaZjkQMA0fu/materialSystem.js\";import{_computeBVHForModel}from\"https://framerusercontent.com/modules/Ico5PLrXB0RNY2cRCaPV/itWMfldJwUT6Nn7u0Jm1/runtimeGlue.js\";import{_shouldReplayAppear,_isMobileInteraction}from\"https://framerusercontent.com/modules/XlKFBNR7wMf9MHWMxVZK/nWj9ryT67KRfHxbqxqKO/sceneTransforms.js\";import{_getMeshAnimationDesired,_clearObjectEventHoverBaseTransform,_makeObjectEventTransformTargets,_objectEventScrollAnimations,resolveThreeJSRuntimeTransform,resolveThreeJSRuntimePositionConfig,resolveThreeJSRuntimeAppearConfig,resolveThreeJSRuntimeSubSceneItem,buildThreeJSRuntimeSettings}from\"https://framerusercontent.com/modules/RFE6e41gBPanm7J7Fw4E/Ht3zzQoaqP0VvoJSU4Zl/configResolution.js\";// @api RootRenderer.component\nexport const Root=(()=>{// Root-specific constants (global _IMPORT_3D_BRIDGE_KEY, _ORTHO_FRUSTUM, _AUTO_FIT_MAX_ASPECT are reused)\nconst _ROOT_AUTO_FIT_MIN_VISIBLE=1e-4;const _ROOT_SCROLL_CANVAS_PADDING=.25;const _ROOT_DISSOLVE_EPSILON=1e-4;let _rootDracoLoader=null;let _rootGltfLoader=null;let _rootFbxLoader=null;let _rootTextureLoader=null;// Postprocessing (EffectComposer + FX passes) is fetched lazily, shared\n// with the per-slot pipeline's cached dynamic import in deps.tsx.\nlet _rootPostFxMods=null;let _rootPostFxModsLoading=false;function _ensureRootPostFxModulesLoaded(){if(_rootPostFxMods||_rootPostFxModsLoading)return;_rootPostFxModsLoading=true;_loadPostFxModules().then(mods=>{_rootPostFxMods=mods;_rootPostFxModsLoading=false;}).catch(err=>{_rootPostFxModsLoading=false;console.warn(\"ThreeJS Runtime: post-processing modules failed to load:\",err);});}const _rootModelCache=new Map;const _rootTextureCache=new Map;const _ROOT_DISSOLVE_NOISE_GLSL=NOISE_GLSL;function _getRootGltfLoader(){if(!_rootGltfLoader){_rootDracoLoader=new DRACOLoader;_rootDracoLoader.setDecoderPath(\"https://www.gstatic.com/draco/versioned/decoders/1.5.6/\");_rootGltfLoader=new GLTFLoader;_rootGltfLoader.setDRACOLoader(_rootDracoLoader);_rootGltfLoader.setMeshoptDecoder(MeshoptDecoder);}return _rootGltfLoader;}async function _getRootFbxLoader(){if(!_rootFbxLoader){const FBXLoader=await _loadFBXLoader();if(!_rootFbxLoader)_rootFbxLoader=new FBXLoader;}return _rootFbxLoader;}function _getRootTextureLoader(){if(!_rootTextureLoader)_rootTextureLoader=_createAsyncTextureLoader();return _rootTextureLoader;}function _rootModelUrlFromProps(props){const source=props?.modelSource||\"url\";const fileUrl=props?.modelFile||\"\";const url=props?.modelUrl||props?.modelUrlProp||\"\";return String(source===\"file\"?fileUrl||url:url||fileUrl).trim();}function _isRootSlotWebglEnabled(slot){const props=slot?.props||{};const perf=props.performance||{};const ui=props.ui||{};return perf.webglActive??ui.webglActive??true;}function _rootRecordKeyForSlot(slot){if(!slot?.id)return\"\";if(!_isRootSlotWebglEnabled(slot))return\"\";const url=_rootModelUrlFromProps(slot.props);const hasSubScenes=_rootHasRenderableSubScenes(slot.props,slot.runtimeSettings||slot.props?.__import3DRuntimeSettings);if(!url&&!hasSubScenes)return\"\";return`${slot.id}|${url||\"__subscenes__\"}`;}function _rootModelFormat(url){const clean=String(url||\"\").split(\"?\")[0].split(\"#\")[0].toLowerCase();if(clean.endsWith(\".fbx\"))return\"fbx\";if(clean.endsWith(\".glb\")||clean.endsWith(\".gltf\"))return\"gltf\";if(clean.endsWith(\".png\")||clean.endsWith(\".jpg\")||clean.endsWith(\".jpeg\")||clean.endsWith(\".webp\"))return\"image\";if(clean.endsWith(\".zip\"))return\"zip\";return\"\";}function _rootSubSceneUrlFromItem(item){const source=item?.modelSource||\"url\";const fileUrl=item?.modelFile||\"\";const url=item?.modelUrl||\"\";return String(source===\"file\"?fileUrl||url:url||fileUrl).trim();}function _loadRootTexture(url){if(!url)return Promise.reject(new Error(\"Missing texture URL\"));if(_rootTextureCache.has(url))return _rootTextureCache.get(url);const promise=new Promise((resolve,reject)=>{_getRootTextureLoader().load(url,texture=>{texture.colorSpace=THREE.SRGBColorSpace;texture.needsUpdate=true;resolve(texture);},undefined,reject);});_rootTextureCache.set(url,promise);return promise;}function _createRootImagePlane(texture){const image=texture?.image||{};const aspect=image.width&&image.height?image.width/Math.max(1,image.height):1;const geometry=new THREE.PlaneGeometry(aspect>=1?aspect:1,aspect>=1?1:1/aspect);const material=new THREE.MeshBasicMaterial({map:texture,transparent:true,alphaTest:.001,depthWrite:false,side:THREE.DoubleSide});return new THREE.Mesh(geometry,material);}function _loadRootModel(url){if(!url)return Promise.reject(new Error(\"Missing model URL\"));if(_rootModelCache.has(url))return _rootModelCache.get(url);const promise=new Promise((resolve,reject)=>{const format=_rootModelFormat(url);if(format===\"zip\"){_loadFromZip(url,(object,animations=[])=>{_cleanupSkinnedScene(object);const safeAnimations=_sanitizeAnimationClipsForObject(object,animations);resolve({object,animations:safeAnimations,format:\"zip\"});},undefined,reject);return;}if(format===\"image\"){_loadRootTexture(url).then(texture=>resolve({object:_createRootImagePlane(texture),animations:[],format:\"image\"})).catch(reject);return;}if(format===\"fbx\"){_getRootFbxLoader().then(loader=>{loader.load(url,object=>resolve({object,animations:_sanitizeAnimationClipsForObject(object,object.animations||[]),format:\"fbx\"}),undefined,reject);}).catch(reject);return;}_getRootGltfLoader().load(url,gltf=>resolve({object:gltf.scene,animations:_sanitizeAnimationClipsForObject(gltf.scene,gltf.animations||[]),format:\"gltf\"}),undefined,reject);});_rootModelCache.set(url,promise);promise.catch(()=>{if(_rootModelCache.get(url)===promise){_rootModelCache.delete(url);}});return promise;}function _applyRootCanonicalMaterial(object,cfg){if(!object||object.userData?._rootFormat===\"image\")return;applyMaterialOverride(object,cfg);}function _notifyRootModelLoadingStart(){if(typeof window===\"undefined\")return;const state=window.__modelLoadingState;if(!state||state.isLoading||state.isComplete)return;state.setLoading?.();}function _notifyRootModelLoadingComplete(){if(typeof window===\"undefined\")return;const state=window.__modelLoadingState;if(!state||state.isComplete)return;state.setProgress?.(1);state.setComplete?.();}function _preloadRootModel3D(url){const cleanUrl=String(url||\"\").trim();if(!cleanUrl)return Promise.resolve();if(_rootModelCache.has(cleanUrl))return Promise.resolve();_notifyRootModelLoadingStart();return _loadRootModel(cleanUrl).then(()=>{if(typeof window===\"undefined\")return;const state=window.__modelLoadingState;if(state?.isLoading&&!state?.isComplete){state.setProgress?.(.95);}}).catch(error=>{console.warn(\"[Import_3D_Canvas_Root] preload failed\",error);});}function _installRootPreloadBridge(){if(typeof window===\"undefined\")return;const win=window;const previousPreload=win.__preloadModel3D;if(previousPreload?._rootCanvasPreload)return;const preload=url=>{const pending=[_preloadRootModel3D(url)];if(typeof previousPreload===\"function\"){try{pending.push(Promise.resolve(previousPreload(url)));}catch(error){console.warn(\"[Import_3D_Canvas_Root] previous preload failed\",error);}}return Promise.allSettled(pending).then(()=>undefined);};preload._rootCanvasPreload=true;preload._previousPreload=previousPreload;win.__preloadModel3D=preload;}_installRootPreloadBridge();function _centerAndNormalizeRootModel(model){const box=_computeMeshOnlyBoundingBox(model);const size=box.getSize(new THREE.Vector3);const center=box.getCenter(new THREE.Vector3);model.position.sub(center);const maxSize=Math.max(size.x,size.y,size.z,1e-4);const normalizeScale=1/maxSize;model.scale.setScalar(normalizeScale);return normalizeScale;}function _optimizeStaticGeometries(model){model.updateMatrixWorld(true);const byMaterial=new Map;const byGeomMat=new Map;model.traverse(child=>{if(!child.isMesh||child.isSkinnedMesh)return;if(!child.geometry||!child.geometry.attributes.position)return;let matKey=\"\";if(Array.isArray(child.material)){matKey=child.material.map(m=>m.uuid).join(\"|\");}else if(child.material){matKey=child.material.uuid;}else{return;}const geomKey=child.geometry.uuid;const instKey=matKey+\"___\"+geomKey;if(!byGeomMat.has(instKey)){byGeomMat.set(instKey,{meshes:[],material:child.material,geometry:child.geometry});}byGeomMat.get(instKey).meshes.push(child);});const toRemove=[];const invMatrix=new THREE.Matrix4().copy(model.matrixWorld).invert();// 1. Process Instancing\nfor(const[instKey,group]of byGeomMat.entries()){if(group.meshes.length>2){const count=group.meshes.length;const instancedMesh=new THREE.InstancedMesh(group.geometry,group.material,count);instancedMesh.name=\"Instanced_\"+instKey.substring(0,12);const _matrix=new THREE.Matrix4;for(let i=0;i<count;i++){const mesh=group.meshes[i];_matrix.copy(mesh.matrixWorld);_matrix.premultiply(invMatrix);instancedMesh.setMatrixAt(i,_matrix);toRemove.push(mesh);mesh.userData._instanced=true;}model.add(instancedMesh);}}// 2. Process Merging for remaining static meshes\nmodel.traverse(child=>{if(!child.isMesh||child.isSkinnedMesh||child.userData._instanced||toRemove.includes(child))return;if(!child.geometry||!child.geometry.attributes.position)return;let matKey=\"\";if(Array.isArray(child.material)){matKey=child.material.map(m=>m.uuid).join(\"|\");}else if(child.material){matKey=child.material.uuid;}else{return;}const attrKeys=Object.keys(child.geometry.attributes).sort().join(\"-\");const mergeKey=matKey+\"___\"+attrKeys;if(!byMaterial.has(mergeKey)){byMaterial.set(mergeKey,{meshes:[],material:child.material});}byMaterial.get(mergeKey).meshes.push(child);});for(const[mergeKey,group]of byMaterial.entries()){if(group.meshes.length>1){const geometriesToMerge=[];for(const mesh of group.meshes){const clonedGeom=mesh.geometry.clone();clonedGeom.applyMatrix4(mesh.matrixWorld);clonedGeom.applyMatrix4(invMatrix);geometriesToMerge.push(clonedGeom);toRemove.push(mesh);}try{const mergedGeometry=BufferGeometryUtils.mergeGeometries(geometriesToMerge,false);if(mergedGeometry){const mergedMesh=new THREE.Mesh(mergedGeometry,group.material);mergedMesh.name=\"Merged_\"+mergeKey.substring(0,12);model.add(mergedMesh);}}catch(e){console.warn(\"ThreeJS Runtime: Could not merge geometries for key:\",mergeKey,e);for(const mesh of group.meshes){const idx=toRemove.indexOf(mesh);if(idx>-1)toRemove.splice(idx,1);}}finally{for(const geom of geometriesToMerge){geom.dispose();}}}}for(const mesh of toRemove){if(mesh.parent){mesh.parent.remove(mesh);}if(!mesh.userData._instanced){mesh.geometry?.dispose?.();}}return model;}// Camera helper functions now use global _getVisibleSize, _getAutoFitVisibleSize, _getAutoFitRatio\nfunction _prepareRootModel(model){model.traverse(child=>{if(!child?.isMesh)return;child.frustumCulled=false;child.castShadow=false;child.receiveShadow=false;if(child.material){child.material=Array.isArray(child.material)?child.material.map(mat=>mat?.clone?.()||mat):child.material.clone?.()||child.material;}const materials=Array.isArray(child.material)?child.material:[child.material];materials.forEach(mat=>{if(!mat)return;mat.userData=mat.userData||{};if(!mat.userData._rootOriginal){mat.userData._rootOriginal={color:mat.color?.clone?.(),emissive:mat.emissive?.clone?.(),metalness:mat.metalness,roughness:mat.roughness,opacity:mat.opacity,transparent:mat.transparent,wireframe:mat.wireframe,envMapIntensity:mat.envMapIntensity};}mat.needsUpdate=true;if(mat.transparent&&mat.opacity==null)mat.opacity=1;if(mat.userData._rootBaseOpacity===undefined){mat.userData._rootBaseOpacity=mat.opacity??1;}if(mat.userData._rootBaseTransparent===undefined){mat.userData._rootBaseTransparent=mat.transparent??false;}});});}function _rootMapDissolveProgress(t,amp,edge){const range=(amp||16)+(edge||.8);return-range+t*2*range;}function _rootCreateDissolveMaterial(originalMaterial,appear){const mat=originalMaterial.clone();const edgeColor=new THREE.Color(appear.dissolveEmissiveColor||\"#ff7a32\");mat.userData=mat.userData||{};mat.userData._rootDissolveProgress=_rootMapDissolveProgress(1,appear.dissolveAmplitude,appear.dissolveEdgeWidth);mat.userData._rootDissolveFreq=appear.dissolveNoiseScale??.25;mat.userData._rootDissolveAmp=appear.dissolveAmplitude??16;mat.userData._rootDissolveEdge=appear.dissolveEdgeWidth??.8;mat.userData._rootDissolveEdgeColor=edgeColor;mat.userData._rootDissolveEdgeIntensity=appear.dissolveEmissiveIntensity??3;mat.userData._rootBaseOpacity=originalMaterial?.userData?._rootBaseOpacity??originalMaterial?.opacity??1;mat.userData._rootBaseTransparent=originalMaterial?.userData?._rootBaseTransparent??originalMaterial?.transparent??false;mat.transparent=true;mat.onBeforeCompile=shader=>{shader.uniforms.uProgress={value:mat.userData._rootDissolveProgress};shader.uniforms.uFreq={value:mat.userData._rootDissolveFreq};shader.uniforms.uAmp={value:mat.userData._rootDissolveAmp};shader.uniforms.uEdge={value:mat.userData._rootDissolveEdge};shader.uniforms.uEdgeColor={value:mat.userData._rootDissolveEdgeColor};shader.uniforms.uEdgeIntensity={value:mat.userData._rootDissolveEdgeIntensity};mat.userData._rootDissolveUniforms=shader.uniforms;shader.vertexShader=shader.vertexShader.replace(\"#include <common>\",`#include <common>\nvarying vec3 vRootDissolvePos;`);shader.vertexShader=shader.vertexShader.replace(\"#include <begin_vertex>\",`#include <begin_vertex>\nvRootDissolvePos = position;`);shader.fragmentShader=shader.fragmentShader.replace(\"#include <common>\",`#include <common>\nvarying vec3 vRootDissolvePos;\nuniform float uProgress;\nuniform float uFreq;\nuniform float uAmp;\nuniform float uEdge;\nuniform vec3 uEdgeColor;\nuniform float uEdgeIntensity;\n${_ROOT_DISSOLVE_NOISE_GLSL}\n`);shader.fragmentShader=shader.fragmentShader.replace(\"#include <dithering_fragment>\",`#include <dithering_fragment>\nfloat rootNoise = snoise(vRootDissolvePos * uFreq) * uAmp;\nif (rootNoise < uProgress) discard;\nfloat rootEdgeEnd = uProgress + uEdge;\nif (rootNoise > uProgress && rootNoise < rootEdgeEnd) {\n    float rootEdgeMix = 1.0 - smoothstep(uProgress, rootEdgeEnd, rootNoise);\n    vec3 rootGlow = uEdgeColor * uEdgeIntensity * rootEdgeMix;\n    gl_FragColor = vec4(gl_FragColor.rgb + rootGlow, gl_FragColor.a);\n}\n`);};mat.needsUpdate=true;return mat;}function _rootRestoreAppearDissolve(object){if(!object)return;const state=object.userData?._rootAppearDissolve;if(!state?.active)return;object.traverse(child=>{if(!child?.isMesh)return;const original=state.originalMaterials.get(child.uuid);if(original)child.material=original;const dissolve=state.dissolveMaterials.get(child.uuid);(Array.isArray(dissolve)?dissolve:[dissolve]).forEach(mat=>mat?.dispose?.());});state.originalMaterials.clear();state.dissolveMaterials.clear();if(state.particles){disposeDissolveParticles(state.particles);if(state.particles.parent)state.particles.parent.remove(state.particles);state.particles=null;}state.active=false;state.hash=\"\";}function _syncRootAppearDissolve(object,visibility,appear){if(!object)return;const clampedVisibility=Math.max(0,Math.min(1,visibility??1));const t=1-clampedVisibility;const enabled=!!appear?.dissolveEnabled;const shouldBeActive=enabled&&t>_ROOT_DISSOLVE_EPSILON;const dissolveHash=[appear.dissolveNoiseScale,appear.dissolveAmplitude,appear.dissolveEdgeWidth,appear.dissolveEmissiveColor,appear.dissolveEmissiveIntensity,appear.dissolveParticleEnabled].join(\"|\");const state=object.userData._rootAppearDissolve||(object.userData._rootAppearDissolve={active:false,hash:\"\",originalMaterials:new Map,dissolveMaterials:new Map,particles:null});if(!shouldBeActive){_rootRestoreAppearDissolve(object);return;}if(!state.active||state.hash!==dissolveHash){_rootRestoreAppearDissolve(object);object.traverse(child=>{if(!child?.isMesh||!child.material)return;const original=child.material;state.originalMaterials.set(child.uuid,original);const nextMaterial=Array.isArray(original)?original.map(mat=>_rootCreateDissolveMaterial(mat,appear)):_rootCreateDissolveMaterial(original,appear);state.dissolveMaterials.set(child.uuid,nextMaterial);child.material=nextMaterial;});if(appear.dissolveParticleEnabled){state.particles=createDissolveParticles(object,appear);if(object.parent){object.parent.add(state.particles.points);}}state.active=true;state.hash=dissolveHash;}const mappedProgress=_rootMapDissolveProgress(t,appear.dissolveAmplitude,appear.dissolveEdgeWidth);object.traverse(child=>{if(!child?.isMesh||!child.material)return;const materials=Array.isArray(child.material)?child.material:[child.material];materials.forEach(mat=>{if(!mat?.userData)return;mat.userData._rootDissolveProgress=mappedProgress;const uniforms=mat.userData._rootDissolveUniforms;if(!uniforms)return;uniforms.uProgress.value=mappedProgress;uniforms.uFreq.value=appear.dissolveNoiseScale??.25;uniforms.uAmp.value=appear.dissolveAmplitude??16;uniforms.uEdge.value=appear.dissolveEdgeWidth??.8;uniforms.uEdgeColor.value.set(appear.dissolveEmissiveColor||\"#ff7a32\");uniforms.uEdgeIntensity.value=appear.dissolveEmissiveIntensity??3;});});if(state.particles){// Mirrors Slot's per-frame dissolve particle sync (slotRuntime.tsx):\n// advance the CPU-side particle state, then push it to the GPU\n// attributes — updateDissolveParticles alone only mutates typed\n// arrays, it never marks the BufferAttributes dirty.\nstate.particles.mat.uniforms.uProgress.value=mappedProgress;state.particles.mat.uniforms.uFreq.value=appear.dissolveNoiseScale??.25;state.particles.mat.uniforms.uAmp.value=appear.dissolveAmplitude??16;state.particles.mat.uniforms.uEdge.value=appear.dissolveEdgeWidth??.8;state.particles.mat.uniforms.uBaseSize.value=appear.dissolveParticleBaseSize||80;state.particles.mat.uniforms.uColor.value.copy(parseColor(appear.dissolveParticleColor||appear.dissolveEmissiveColor||\"#ff7a32\"));state.particles.state.speed=appear.dissolveParticleSpeed||.02;state.particles.state.waveAmp=appear.dissolveParticleWaveAmp||0;state.particles.state.velFactor.x=appear.dissolveParticleVelX||2.5;state.particles.state.velFactor.y=appear.dissolveParticleVelY||2;updateDissolveParticles(state.particles.state);syncParticleAttributes(state.particles.geo,state.particles.state);}}function _isRootDocumentScrollContainer(node){if(typeof window===\"undefined\")return true;return!node||node===window||node===document.body||node===document.documentElement||node===document.scrollingElement;}function _getRootScrollMetrics(scrollContainer){if(typeof window===\"undefined\"){return{scrollContainer:null,isDocument:true,scrollLeft:0,scrollTop:0,viewportWidth:1,viewportHeight:1,viewportLeft:0,viewportTop:0,viewportRight:1,viewportBottom:1,containerRect:{left:0,top:0,right:1,bottom:1,width:1,height:1}};}const isDocument=_isRootDocumentScrollContainer(scrollContainer);const scrollEl=isDocument?document.scrollingElement||document.documentElement||document.body:scrollContainer;const viewportWidth=Math.max(1,isDocument?window.innerWidth||1:scrollEl?.clientWidth||1);const viewportHeight=Math.max(1,isDocument?window.innerHeight||1:scrollEl?.clientHeight||1);const containerRect=isDocument?{left:0,top:0,right:viewportWidth,bottom:viewportHeight,width:viewportWidth,height:viewportHeight}:scrollEl.getBoundingClientRect();return{scrollContainer:scrollEl,isDocument,scrollLeft:scrollEl?.scrollLeft||window.scrollX||0,scrollTop:scrollEl?.scrollTop||window.scrollY||0,viewportWidth,viewportHeight,viewportLeft:containerRect.left,viewportTop:containerRect.top,viewportRight:containerRect.left+viewportWidth,viewportBottom:containerRect.top+viewportHeight,containerRect};}function _getRootEffectiveDomOpacity(node){if(typeof window===\"undefined\"||!node)return 1;let current=node;let opacity=1;while(current&&current!==document.body&&current!==document.documentElement){if(!(current instanceof HTMLElement)){current=current.parentElement;continue;}const style=window.getComputedStyle(current);if(style.display===\"none\"||style.visibility===\"hidden\"){return 0;}const ownOpacity=Number.parseFloat(style.opacity||\"1\");if(Number.isFinite(ownOpacity))opacity*=ownOpacity;current=current.parentElement;}return Math.max(0,Math.min(1,opacity));}function _rootRectsNearlyEqual(a,b,tolerance=1){if(!a||!b)return false;return Math.abs((a.left||0)-(b.left||0))<=tolerance&&Math.abs((a.top||0)-(b.top||0))<=tolerance&&Math.abs((a.width||0)-(b.width||0))<=tolerance&&Math.abs((a.height||0)-(b.height||0))<=tolerance;}function _compareRootVariantPriority(a,b){const pointerDelta=Number(!!b?.pointerHit)-Number(!!a?.pointerHit);if(pointerDelta!==0)return pointerDelta;const opacityDelta=(b?.domOpacity||0)-(a?.domOpacity||0);if(Math.abs(opacityDelta)>.001)return opacityDelta;const updatedDelta=(b?.updatedAt||0)-(a?.updatedAt||0);if(Math.abs(updatedDelta)>.5)return updatedDelta;const visibilityDelta=(b?.visibility||0)-(a?.visibility||0);if(Math.abs(visibilityDelta)>.001)return visibilityDelta;return(a?.distance||0)-(b?.distance||0);}function _compareRootRenderOrder(a,b){const sameRect=_rootRectsNearlyEqual(a?.rect,b?.rect);if(sameRect){const opacityDelta=(a?.domOpacity||0)-(b?.domOpacity||0);if(Math.abs(opacityDelta)>.001)return opacityDelta;const updatedDelta=(a?.updatedAt||0)-(b?.updatedAt||0);if(Math.abs(updatedDelta)>.5)return updatedDelta;}return(a?.distance||0)-(b?.distance||0);}function _compareRootPreloadOrder(a,b){const visibilityDelta=(b?.visibility||0)-(a?.visibility||0);if(Math.abs(visibilityDelta)>.001)return visibilityDelta;return(a?.distance||0)-(b?.distance||0);}function _resolveRootResponsiveTransform(transform,width){return resolveThreeJSRuntimeTransform(transform,{width});}function _normalizeRootLayerMatchValue(value){return String(value??\"\").trim().toLowerCase();}function _isRootLayerMatchCandidateUsable(node,slotNode){if(!node||node.nodeType!==1)return false;if(slotNode&&slotNode.contains?.(node))return false;if(node.getAttribute?.(\"data-3d-canvas-id\"))return false;const rect=node.getBoundingClientRect?.();if(!rect||rect.width<1||rect.height<1)return false;let current=node;while(current&&current!==document.body){if(current.getAttribute?.(\"aria-hidden\")===\"true\"||current.getAttribute?.(\"data-framer-hidden\")===\"true\"){return false;}const style=typeof window!==\"undefined\"?window.getComputedStyle(current):null;if(style&&(style.display===\"none\"||style.visibility===\"hidden\"||Number(style.opacity)===0)){return false;}current=current.parentElement;}return true;}function _matchesRootLayerSelector(rootNode,selector){const targets=String(selector??\"\").split(\",\").map(_normalizeRootLayerMatchValue).flatMap(value=>[value,value.replace(/^[#.]/,\"\")]).filter(Boolean);if(!targets.length)return true;let node=rootNode;while(node&&node!==document.body){const values=[node.id,node.getAttribute?.(\"aria-label\"),node.getAttribute?.(\"data-framer-name\"),node.getAttribute?.(\"data-framer-component-name\"),node.getAttribute?.(\"data-section-id\"),node.getAttribute?.(\"data-name\"),node.getAttribute?.(\"title\")];if(node.classList)values.push(...Array.from(node.classList));if(values.filter(Boolean).map(_normalizeRootLayerMatchValue).some(value=>targets.includes(value))){return true;}node=node.parentElement;}return false;}function _findRootLayerMatchElement(selector,slotNode=null){if(typeof document===\"undefined\")return null;const targets=String(selector??\"\").split(\",\").map(_normalizeRootLayerMatchValue).map(value=>value.replace(/^[#.]/,\"\")).filter(Boolean);if(!targets.length)return null;const exactCandidates=document.querySelectorAll(\"[data-section-id],[id]\");for(const target of targets){for(const node of exactCandidates){if(!_isRootLayerMatchCandidateUsable(node,slotNode))continue;const sectionId=_normalizeRootLayerMatchValue(node.getAttribute?.(\"data-section-id\"));if(sectionId&&sectionId===target)return node;}for(const node of exactCandidates){if(!_isRootLayerMatchCandidateUsable(node,slotNode))continue;const id=_normalizeRootLayerMatchValue(node.id);if(id&&id===target)return node;}}return null;}function _getRootScrollLayoutViewport(record,wrapNode,scrollContainer,now){if(record._rootScrollLayoutMeasureAt&&now-record._rootScrollLayoutMeasureAt<16){if(record._rootScrollLayoutWrapNode===wrapNode&&record._rootScrollLayoutScrollContainer===scrollContainer&&record._rootScrollLayoutViewport){return record._rootScrollLayoutViewport;}}record._rootScrollLayoutMeasureAt=now;record._rootScrollLayoutWrapNode=wrapNode;record._rootScrollLayoutScrollContainer=scrollContainer;if(record._rootScrollLayoutRectCache?.clear){record._rootScrollLayoutRectCache.clear();}else{record._rootScrollLayoutRectCache=new Map;}const metrics=_getRootScrollMetrics(scrollContainer);record._rootScrollLayoutViewport=metrics.isDocument?{left:0,top:0,width:metrics.viewportWidth,height:metrics.viewportHeight,local:false}:{left:0,top:0,width:metrics.viewportWidth,height:metrics.viewportHeight,local:true,wrapRect:metrics.containerRect,scaleX:1,scaleY:1};return record._rootScrollLayoutViewport;}function _getRootScrollLayoutRect(record,node,viewport){if(!node)return null;const rectCache=record._rootScrollLayoutRectCache;if(rectCache?.has(node))return rectCache.get(node);const rawRect=node.getBoundingClientRect();if(!viewport?.local||!viewport.wrapRect){rectCache?.set(node,rawRect);return rawRect;}const scaleX=viewport.scaleX||1;const scaleY=viewport.scaleY||1;const left=(rawRect.left-viewport.wrapRect.left)/scaleX;const top=(rawRect.top-viewport.wrapRect.top)/scaleY;const width=rawRect.width/scaleX;const height=rawRect.height/scaleY;const rect={left,top,width,height,right:left+width,bottom:top+height};rectCache?.set(node,rect);return rect;}function _rootPositionConfig(props,rectWidth=0){return resolveThreeJSRuntimePositionConfig(props,{width:rectWidth});}function _applyRootPositionToObject(object,positionState){if(!object||!positionState)return;const scrollTarget=positionState.scrollTarget||{};const progress=positionState.transformActive?Math.max(0,Math.min(1,positionState.progress??0)):0;object.position.x+=positionState.followX||0;object.position.y+=positionState.followY||0;if(positionState.transformActive){object.position.x+=(scrollTarget.offX??0)*progress;object.position.y+=(scrollTarget.offY??0)*progress;object.position.z+=(scrollTarget.offZ??0)*progress;const scaleMultiplier=scrollTarget.scale!=null?1+(scrollTarget.scale-1)*progress:1;object.scale.multiplyScalar(scaleMultiplier);object.rotation.x+=(scrollTarget.rotX??0)*progress*Math.PI/180;object.rotation.y+=(scrollTarget.rotY??0)*progress*Math.PI/180;object.rotation.z+=(scrollTarget.rotZ??0)*progress*Math.PI/180;}}function _measureRootAnchorProgress(el,slotRect,anchorY=.5){const rect=el?.getBoundingClientRect?.();if(!rect||!slotRect)return{progress:0,inView:false};const anchorScreenY=rect.top+rect.height*anchorY-slotRect.top;const progress=Math.max(0,Math.min(1,1-anchorScreenY/slotRect.height));const inView=rect.right>slotRect.left&&rect.left<slotRect.right&&rect.bottom>slotRect.top&&rect.top<slotRect.bottom;return{progress,inView};}function _getRootFollowOffset(record,cfg,wrapNode,scrollContainer,camera,now){const prevMatch=record._rootFollowMatch;if(!cfg.followEnabled||!cfg.followMatch||typeof window===\"undefined\"){record._rootFollowOffsetX=0;record._rootFollowOffsetY=0;record._rootFollowLastVisibleX=undefined;record._rootFollowLastVisibleY=undefined;record._rootFollowTransitionId=\"\";record._rootFollowTransitionStart=0;record._rootFollowEl=null;record._rootFollowMatch=\"\";return{x:0,y:0,active:false,inView:true,progress:0};}const transitionTargetId=String(cfg.transitionTargetId??\"\").trim();const transitionRequested=!!cfg.transitionEnabled;const matchChanged=prevMatch!==cfg.followMatch;if(matchChanged||!record._rootFollowEl||!record._rootFollowEl.isConnected||!_isRootLayerMatchCandidateUsable(record._rootFollowEl,wrapNode)||now>=(record._rootFollowLookupAt||0)){const prevResolvedEl=record._rootFollowEl;record._rootFollowMatch=cfg.followMatch;record._rootFollowEl=_findRootLayerMatchElement(cfg.followMatch,wrapNode);record._rootFollowLookupAt=now+500;if(prevResolvedEl&&prevResolvedEl!==record._rootFollowEl){record._rootFollowTransitionId=\"\";record._rootFollowTransitionStart=0;}}let el=record._rootFollowEl;if(el&&!_isRootLayerMatchCandidateUsable(el,wrapNode)){record._rootFollowEl=_findRootLayerMatchElement(cfg.followMatch,wrapNode);record._rootFollowLookupAt=now+500;el=record._rootFollowEl;record._rootFollowTransitionId=\"\";record._rootFollowTransitionStart=0;}const prevEl=prevMatch&&prevMatch!==cfg.followMatch?_findRootLayerMatchElement(prevMatch,wrapNode):null;const transitionTargetMatches=!transitionTargetId||!!prevEl&&_matchesRootLayerSelector(prevEl,transitionTargetId)||_normalizeRootLayerMatchValue(transitionTargetId)===_normalizeRootLayerMatchValue(prevMatch)||_normalizeRootLayerMatchValue(transitionTargetId)===_normalizeRootLayerMatchValue(record._rootFollowLastTransitionFromMatch);const transitionEnabled=transitionRequested&&transitionTargetMatches;if(!el){record._rootFollowOffsetX=0;record._rootFollowOffsetY=0;record._rootFollowLastVisibleX=undefined;record._rootFollowLastVisibleY=undefined;record._rootFollowTransitionId=\"\";record._rootFollowTransitionStart=0;return{x:0,y:0,active:false,inView:false,progress:0};}const viewport=_getRootScrollLayoutViewport(record,wrapNode,scrollContainer,now);const measureAnchorOffset=node=>{if(!node||typeof window===\"undefined\")return null;const rect=_getRootScrollLayoutRect(record,node,viewport);if(!rect)return null;const viewW=viewport.width;const viewH=viewport.height;if(!viewW||!viewH)return null;const anchorX=cfg.anchorX??.5;const anchorY=cfg.anchorY??.5;const pxX=rect.left+rect.width*anchorX-(viewport.left+viewW/2);const pxY=rect.top+rect.height*anchorY-(viewport.top+viewH/2);const anchorScreenY=rect.top+rect.height*anchorY-viewport.top;const progress=Math.max(0,Math.min(1,1-anchorScreenY/viewH));let pxToWorldX;let pxToWorldY;if(camera?.isOrthographicCamera){pxToWorldX=(camera.right-camera.left)/(camera.zoom||1)/viewW;pxToWorldY=(camera.top-camera.bottom)/(camera.zoom||1)/viewH;}else{const camDist=camera?.position?.length?.()||1;const visible=_getVisibleSize(camera,camDist);pxToWorldX=visible.width/viewW;pxToWorldY=visible.height/viewH;}return{x:pxX*pxToWorldX*(cfg.followX??1),y:-pxY*pxToWorldY*(cfg.followY??1),inView:rect.right>viewport.left&&rect.left<viewport.left+viewW&&rect.bottom>viewport.top&&rect.top<viewport.top+viewH,progress};};const currentMeasure=measureAnchorOffset(el);if(!currentMeasure){return{x:0,y:0,active:false,inView:true,progress:0};}const prevMeasure=measureAnchorOffset(prevEl);const isInViewport=currentMeasure.inView;const targetX=currentMeasure.x;const targetY=currentMeasure.y;if(cfg.responsiveIsMobile){record._rootFollowTransitionId=\"\";record._rootFollowTransitionStart=0;record._rootFollowOffsetX=targetX;record._rootFollowOffsetY=targetY;record._rootFollowLastVisibleX=targetX;record._rootFollowLastVisibleY=targetY;return{x:targetX,y:targetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}if(matchChanged&&prevMatch&&!prevMeasure){record._rootFollowTransitionId=\"\";record._rootFollowTransitionStart=0;record._rootFollowOffsetX=targetX;record._rootFollowOffsetY=targetY;record._rootFollowLastVisibleX=targetX;record._rootFollowLastVisibleY=targetY;return{x:targetX,y:targetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}const transitionChanged=!!record._rootFollowTransitionId!==transitionEnabled;if(transitionEnabled&&(matchChanged||transitionChanged)&&(record._rootFollowOffsetX!==undefined&&record._rootFollowOffsetY!==undefined||prevMeasure)){record._rootFollowLastTransitionFromMatch=prevMatch||\"\";record._rootFollowTransitionId=transitionEnabled;record._rootFollowTransitionFromX=record._rootFollowOffsetX??prevMeasure?.x??targetX;record._rootFollowTransitionFromY=record._rootFollowOffsetY??prevMeasure?.y??targetY;record._rootFollowTransitionToX=targetX;record._rootFollowTransitionToY=targetY;record._rootFollowTransitionStart=now;record._rootFollowTransitionDuration=Math.max(180,560-(cfg.followSmooth??1)*320);}else if(!transitionEnabled){record._rootFollowTransitionId=\"\";record._rootFollowTransitionStart=0;}else{record._rootFollowTransitionId=true;}if(!transitionEnabled&&matchChanged&&prevMatch){record._rootFollowOffsetX=targetX;record._rootFollowOffsetY=targetY;record._rootFollowLastVisibleX=targetX;record._rootFollowLastVisibleY=targetY;return{x:targetX,y:targetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}if(transitionEnabled&&record._rootFollowTransitionStart>0){record._rootFollowTransitionToX=targetX;record._rootFollowTransitionToY=targetY;const duration=Math.max(1,record._rootFollowTransitionDuration||280);const t=Math.min(1,(now-record._rootFollowTransitionStart)/duration);const eased=1-Math.pow(1-t,3);record._rootFollowOffsetX=(record._rootFollowTransitionFromX??targetX)+((record._rootFollowTransitionToX??targetX)-(record._rootFollowTransitionFromX??targetX))*eased;record._rootFollowOffsetY=(record._rootFollowTransitionFromY??targetY)+((record._rootFollowTransitionToY??targetY)-(record._rootFollowTransitionFromY??targetY))*eased;record._rootFollowLastVisibleX=record._rootFollowOffsetX;record._rootFollowLastVisibleY=record._rootFollowOffsetY;if(t>=1){record._rootFollowTransitionStart=0;record._rootFollowTransitionFromX=record._rootFollowOffsetX;record._rootFollowTransitionFromY=record._rootFollowOffsetY;}return{x:record._rootFollowOffsetX,y:record._rootFollowOffsetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}const smooth=Math.max(0,Math.min(1,cfg.followSmooth??1));const prevX=record._rootFollowOffsetX??targetX;const prevY=record._rootFollowOffsetY??targetY;record._rootFollowOffsetX=prevX+(targetX-prevX)*smooth;record._rootFollowOffsetY=prevY+(targetY-prevY)*smooth;record._rootFollowLastVisibleX=record._rootFollowOffsetX;record._rootFollowLastVisibleY=record._rootFollowOffsetY;return{x:record._rootFollowOffsetX,y:record._rootFollowOffsetY,active:true,inView:isInViewport,progress:currentMeasure.progress};}function _getRootTransformOffset(record,cfg,wrapNode,scrollContainer,now){if(!cfg.transformEnabled||!cfg.transformMatch||typeof window===\"undefined\"){record._rootTransformEl=null;record._rootTransformMatch=\"\";return{active:false,inView:true,progress:0};}const match=cfg.transformMatch;if(record._rootTransformMatch!==match||!record._rootTransformEl||!record._rootTransformEl.isConnected||!_isRootLayerMatchCandidateUsable(record._rootTransformEl,wrapNode)||now>=(record._rootTransformLookupAt||0)){record._rootTransformMatch=match;record._rootTransformEl=_findRootLayerMatchElement(match,wrapNode);record._rootTransformLookupAt=now+500;}const el=record._rootTransformEl;if(!el){return{active:false,inView:false,progress:0};}const viewport=_getRootScrollLayoutViewport(record,wrapNode,scrollContainer,now);const rect=_getRootScrollLayoutRect(record,el,viewport);if(!rect){return{active:false,inView:true,progress:0};}const viewW=viewport.width;const viewH=viewport.height;if(!viewW||!viewH){return{active:false,inView:true,progress:0};}const anchorY=cfg.anchorY??.5;const anchorScreenY=rect.top+rect.height*anchorY-viewport.top;const progress=Math.max(0,Math.min(1,1-anchorScreenY/viewH));const inView=rect.right>viewport.left&&rect.left<viewport.left+viewW&&rect.bottom>viewport.top&&rect.top<viewport.top+viewH;return{active:true,inView,progress};}function _getRootPositionState(record,props,slot,rect,camera,runtimeCfg=null){const cfg=runtimeCfg||_rootPositionConfig(props,rect?.width||0);const now=typeof performance!==\"undefined\"?performance.now():Date.now();const slotNode=slot?.element||null;const scrollContainer=slot?.scrollContainer||null;const followOffset=_getRootFollowOffset(record,cfg,slotNode,scrollContainer,camera,now);const transformOffset=_getRootTransformOffset(record,cfg,slotNode,scrollContainer,now);return{followX:followOffset.x,followY:followOffset.y,followActive:followOffset.active,followInView:followOffset.inView,followProgress:followOffset.progress,progress:transformOffset.progress,transformActive:transformOffset.active,transformInView:transformOffset.inView,scrollTarget:cfg.scrollTarget};}function _rootAppearConfig(props){return resolveThreeJSRuntimeAppearConfig(props);}function _resolveRootRuntimeConfig(props,rectWidth=0){const cfg=buildThreeJSRuntimeSettings(props,{rectWidth,host:\"root\"});const slotRuntime=props?.__import3DRuntimeSettings;if(slotRuntime){return{...cfg,...slotRuntime};}return cfg;}function _normalizeRootRuntimeSceneItems(items=[]){return(items||[]).map(item=>{if(!item)return item;return resolveThreeJSRuntimeSubSceneItem(item);});}function _getRootRuntimeSceneItems(props,runtimeCfg=null){const rawItems=props?.scenes||[];const hasRootGeneratedItems=rawItems.some(item=>item?.__groupRuntimeCfg||item?.__groupSlotProps||item?.__fromGroupedSlot);if(hasRootGeneratedItems){return _normalizeRootRuntimeSceneItems(rawItems);}const runtimeItems=runtimeCfg?.subSceneItems||props?.__import3DRuntimeSettings?.subSceneItems;if(Array.isArray(runtimeItems)){return _normalizeRootRuntimeSceneItems(runtimeItems);}return _normalizeRootRuntimeSceneItems(rawItems);}function _cacheRootObjectBaseBounds(object){if(!object||object.userData?._rootBaseBoundsReady)return;const prevPosition=object.position?.clone?.();const prevRotation=object.rotation?.clone?.();const prevScale=object.scale?.clone?.();object.position?.set?.(0,0,0);object.rotation?.set?.(0,0,0);object.scale?.setScalar?.(1);object.updateMatrixWorld?.(true);_tmpBox3.copy(_computeMeshOnlyBoundingBox(object));const center=_tmpBox3.getCenter(_tmpVec3A);const size=_tmpBox3.getSize(_tmpVec3B);object.userData=object.userData||{};object.userData._rootBaseCenterX=center.x;object.userData._rootBaseCenterY=center.y;object.userData._rootBaseCenterZ=center.z;object.userData._rootBaseMinY=_tmpBox3.min.y;object.userData._rootBaseSizeX=size.x;object.userData._rootBaseSizeY=size.y;object.userData._rootBaseSizeZ=size.z;object.userData._rootBaseBoundsReady=true;if(prevPosition)object.position.copy(prevPosition);if(prevRotation)object.rotation.copy(prevRotation);if(prevScale)object.scale.copy(prevScale);object.updateMatrixWorld?.(true);}function _rootCreateParticleSystem(record,count,size,color,spread){if(!record||!record.scene)return;if(record.particleSystem){record.scene.remove(record.particleSystem);record.particleSystem.geometry.dispose();record.particleSystem.material.dispose();}const geometry=new THREE.BufferGeometry;const positions=new Float32Array(count*3);const velocities=new Float32Array(count*3);for(let i=0;i<count;i++){const i3=i*3;const r=spread*Math.random();const theta=Math.random()*Math.PI*2;const phi=Math.acos(2*Math.random()-1);positions[i3]=r*Math.sin(phi)*Math.cos(theta);positions[i3+1]=r*Math.sin(phi)*Math.sin(theta);positions[i3+2]=r*Math.cos(phi);velocities[i3]=(Math.random()-.5)*.02;velocities[i3+1]=(Math.random()-.5)*.02;velocities[i3+2]=(Math.random()-.5)*.02;}geometry.setAttribute(\"position\",new THREE.BufferAttribute(positions,3));geometry.setAttribute(\"velocity\",new THREE.BufferAttribute(velocities,3));const material=new THREE.PointsMaterial({size:size,color:new THREE.Color(color),transparent:true,opacity:.6,blending:THREE.AdditiveBlending,depthWrite:false});record.particleSystem=new THREE.Points(geometry,material);record.scene.add(record.particleSystem);}function _rootUpdateParticles(record,speed,spread){if(!record?.particleSystem)return;const positions=record.particleSystem.geometry.attributes.position.array;const velocities=record.particleSystem.geometry.attributes.velocity.array;const count=positions.length/3;for(let i=0;i<count;i++){const i3=i*3;positions[i3]+=velocities[i3]*speed;positions[i3+1]+=velocities[i3+1]*speed;positions[i3+2]+=velocities[i3+2]*speed;const distSq=positions[i3]*positions[i3]+positions[i3+1]*positions[i3+1]+positions[i3+2]*positions[i3+2];if(distSq>spread*spread){const r=spread*Math.random()*.5;const theta=Math.random()*Math.PI*2;const phi=Math.acos(2*Math.random()-1);positions[i3]=r*Math.sin(phi)*Math.cos(theta);positions[i3+1]=r*Math.sin(phi)*Math.sin(theta);positions[i3+2]=r*Math.cos(phi);}}record.particleSystem.geometry.attributes.position.needsUpdate=true;}function _ensureRootRuntimeAdapter(record,renderer){if(!record||record._rootRuntimeAdapterReady)return;record._renderer=renderer;record.ambientLight=record.ambientLight||record.ambient;record.extraLightObjects=record.extraLightObjects||[];if(!record.ground){const ground=new THREE.Mesh(new THREE.PlaneGeometry(50,50),new THREE.ShadowMaterial({opacity:.25}));ground.rotation.x=-Math.PI/2;ground.receiveShadow=true;ground.visible=false;record.ground=ground;record.scene?.add?.(ground);}record._rootRuntimeAdapterReady=true;}function _rootNeedsPostFx(cfg){return _runtimeNeedsPostFx(cfg);}function _disposeRootPostFxPipeline(record){if(!record)return;record._rootComposer?.dispose?.();record._rootHdrRT?.dispose?.();if(record._rootAlphaSave)record._rootAlphaSave.dispose?.();else record._rootAlphaRT?.dispose?.();record._rootSsaoPass?.dispose?.();record._rootDofPass?.dispose?.();record._rootBloomPass?.dispose?.();record._rootColorGradingPass?.material?.dispose?.();record._rootVignettePass?.material?.dispose?.();record._rootChromaticPass?.material?.dispose?.();record._rootFilmGrainPass?.material?.dispose?.();record._rootPixelatedPass?.dispose?.();record._rootOutputPass?.dispose?.();record._rootFxaaPass?.material?.dispose?.();record._rootAlphaRestorePass?.material?.dispose?.();record._rootComposer=null;record._rootHdrRT=null;record._rootAlphaRT=null;record._rootRenderPass=null;record._rootSsaoPass=null;record._rootDofPass=null;record._rootBloomPass=null;record._rootColorGradingPass=null;record._rootVignettePass=null;record._rootChromaticPass=null;record._rootFilmGrainPass=null;record._rootPixelatedPass=null;record._rootOutputPass=null;record._rootFxaaPass=null;record._rootAlphaSave=null;record._rootAlphaRestorePass=null;record._bloom=null;record._ssao=null;record._dof=null;record._colorGrading=null;record._vignette=null;record._chromaticAberration=null;record._filmGrain=null;record._pixelated=null;record._fxaa=null;record._alphaSave=null;record._alphaRestore=null;record._rootComposerWidth=0;record._rootComposerHeight=0;record._rootComposerDpr=0;record._rootPostFxSignature=\"\";record.lastEffectsHash=\"\";}function _ensureRootPostFxPipeline(record,renderer,width,height,cfg){if(!record||!renderer||!cfg||!_rootNeedsPostFx(cfg)){_disposeRootPostFxPipeline(record);return false;}if(!_rootPostFxMods){_ensureRootPostFxModulesLoaded();return false;}const{EffectComposer,RenderPass,UnrealBloomPass,ShaderPass,SSAOPass,BokehPass,OutputPass,FXAAShader}=_rootPostFxMods;const w=Math.max(1,Math.round(width||1));const h=Math.max(1,Math.round(height||1));const dpr=Math.max(.5,renderer.getPixelRatio?.()||1);const renderW=Math.max(1,Math.round(w*dpr));const renderH=Math.max(1,Math.round(h*dpr));const pipelineSig=_postFxPipelineSignature(cfg);if(!record._rootComposer||record._rootComposerRenderer!==renderer||record._rootPostFxSignature!==pipelineSig){_disposeRootPostFxPipeline(record);const hdrRT=new THREE.WebGLRenderTarget(renderW,renderH,{type:THREE.HalfFloatType,format:THREE.RGBAFormat,minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,colorSpace:THREE.SRGBColorSpace});const composer=new EffectComposer(renderer,hdrRT);composer.setPixelRatio(dpr);composer.setSize(w,h);let renderPass=new RenderPass(record.scene,record.camera);renderPass.clear=true;renderPass.clearDepth=true;composer.addPass(renderPass);let pixelatedPass=null;let ssaoPass=null;if(cfg.enableSSAO){ssaoPass=new SSAOPass(record.scene,record.camera,renderW,renderH);ssaoPass.output=SSAOPass.OUTPUT.Default;composer.addPass(ssaoPass);}const needDof=cfg.enableDOF&&cfg.cameraType!==\"orthographic\";const needAlphaFix=(cfg.bloomEnabled||needDof)&&cfg.transparentBackground;let alphaRT=null;let alphaSave=null;if(needAlphaFix){alphaRT=new THREE.WebGLRenderTarget(renderW,renderH,{type:THREE.HalfFloatType,format:THREE.RGBAFormat,minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter});alphaSave=new AlphaSavePass(alphaRT);composer.addPass(alphaSave);}let dofPass=null;if(needDof){dofPass=new BokehPass(record.scene,record.camera,{focus:cfg.dofFocus,aperture:cfg.dofAperture,maxblur:cfg.dofMaxBlur});composer.addPass(dofPass);}let bloomPass=null;if(cfg.bloomEnabled){bloomPass=new UnrealBloomPass(new THREE.Vector2(renderW,renderH),cfg.bloomStrength,cfg.bloomRadius,cfg.bloomThreshold);composer.addPass(bloomPass);}let colorGradingPass=null;if(cfg.enableColorGrading){colorGradingPass=new ShaderPass(ColorGradingShader);composer.addPass(colorGradingPass);}let vignettePass=null;if(cfg.enableVignette){vignettePass=new ShaderPass(VignetteShader);composer.addPass(vignettePass);}let chromaticPass=null;if(cfg.enableChromaticAberration){chromaticPass=new ShaderPass(ChromaticAberrationShader);composer.addPass(chromaticPass);}let filmGrainPass=null;if(cfg.enableFilmGrain){filmGrainPass=new ShaderPass(FilmGrainShader);composer.addPass(filmGrainPass);}let alphaRestorePass=null;if(needAlphaFix){alphaRestorePass=new ShaderPass(AlphaRestoreShader);alphaRestorePass.uniforms.tAlpha.value=alphaRT.texture;composer.addPass(alphaRestorePass);}let outputPass=null;if(cfg.enablePixelate){// Convert the post-processing chain to display-ready RGB\n// before the final screen-space effect(s).\noutputPass=new OutputPass;composer.addPass(outputPass);}let fxaaPass=null;if(cfg.enableFXAA){fxaaPass=new ShaderPass(FXAAShader);composer.addPass(fxaaPass);}if(cfg.enablePixelate){pixelatedPass=createFramerTilePixelatePass(ShaderPass);pixelatedPass.setPixelRatio?.(dpr);pixelatedPass.setSize?.(renderW,renderH);pixelatedPass.setTilePixelateConfig?.(cfg);composer.addPass(pixelatedPass);}record._rootComposer=composer;record._rootComposerRenderer=renderer;record._rootPostFxSignature=pipelineSig;record._rootHdrRT=hdrRT;record._rootAlphaRT=alphaRT;record._rootRenderPass=renderPass;record._rootPixelatedPass=pixelatedPass;record._rootSsaoPass=ssaoPass;record._rootAlphaSave=alphaSave;record._rootDofPass=dofPass;record._rootBloomPass=bloomPass;record._rootColorGradingPass=colorGradingPass;record._rootVignettePass=vignettePass;record._rootChromaticPass=chromaticPass;record._rootFilmGrainPass=filmGrainPass;record._rootOutputPass=outputPass;record._rootFxaaPass=fxaaPass;record._rootAlphaRestorePass=alphaRestorePass;record._bloom=bloomPass;record._ssao=ssaoPass;record._dof=dofPass;record._colorGrading=colorGradingPass;record._vignette=vignettePass;record._chromaticAberration=chromaticPass;record._filmGrain=filmGrainPass;record._pixelated=pixelatedPass;record._outputPass=outputPass;record._fxaa=fxaaPass;record._alphaSave=alphaSave;record._alphaRestore=alphaRestorePass;record.lastEffectsHash=\"\";}if(record._rootRenderPass){record._rootRenderPass.scene=record.scene;record._rootRenderPass.camera=record.camera;}if(record._rootPixelatedPass){record._rootPixelatedPass.scene=record.scene;record._rootPixelatedPass.camera=record.camera;}if(record._rootSsaoPass){record._rootSsaoPass.scene=record.scene;record._rootSsaoPass.camera=record.camera;}if(record._rootDofPass){record._rootDofPass.scene=record.scene;record._rootDofPass.camera=record.camera;}if(record._rootComposerWidth!==w||record._rootComposerHeight!==h||Math.abs((record._rootComposerDpr||0)-dpr)>.01){record._rootComposerWidth=w;record._rootComposerHeight=h;record._rootComposerDpr=dpr;record._rootComposer?.setPixelRatio?.(dpr);record._rootComposer?.setSize?.(w,h);record._rootHdrRT?.setSize?.(renderW,renderH);record._rootAlphaRT?.setSize?.(renderW,renderH);record._rootAlphaSave?.setSize?.(renderW,renderH);record._rootSsaoPass?.setSize?.(renderW,renderH);record._rootBloomPass?.resolution?.set?.(renderW,renderH);record._rootPixelatedPass?.setPixelRatio?.(dpr);record._rootPixelatedPass?.setSize?.(renderW,renderH);record._rootFxaaPass?.uniforms?.resolution?.value?.set?.(1/renderW,1/renderH);record._rootChromaticPass?.uniforms?.resolution?.value?.set?.(renderW,renderH);}if(record._rootAlphaRestorePass&&record._rootAlphaRT){record._rootAlphaRestorePass.uniforms.tAlpha.value=record._rootAlphaRT.texture;}applyEffectsChanges(record,cfg);record.lastEffectsHash=cfg._effectsHash??effectsHash(cfg);return true;}function _lerpRootSceneOpacity(record,factor){const clamped=Math.max(0,Math.min(1,factor));const applyObj=obj=>{if(!obj)return;obj.traverse?.(child=>{if(!child.isMesh)return;const mats=Array.isArray(child.material)?child.material:[child.material];for(const mat of mats){if(!mat)continue;if(mat._rootFadeOrig===undefined){mat._rootFadeOrig=mat.opacity??1;mat._rootFadeWasTransp=mat.transparent??false;}mat.opacity=(mat._rootFadeOrig??1)*clamped;mat.transparent=mat.opacity<.999;mat.needsUpdate=true;}});};applyObj(record.model);for(const[,entry]of record.subScenes||[]){applyObj(entry?.group);}}function _clearRootSceneOpacity(record){const restoreObj=obj=>{if(!obj)return;obj.traverse?.(child=>{if(!child.isMesh)return;const mats=Array.isArray(child.material)?child.material:[child.material];for(const mat of mats){if(!mat||mat._rootFadeOrig===undefined)continue;mat.opacity=mat._rootFadeOrig;mat.transparent=mat._rootFadeWasTransp??mat.opacity<.999;mat.needsUpdate=true;delete mat._rootFadeOrig;delete mat._rootFadeWasTransp;}});};restoreObj(record.model);for(const[,entry]of record.subScenes||[]){restoreObj(entry?.group);}}function _syncRootVisualRuntimePipeline(record,cfg,renderer,dt=0){if(!record||!cfg||!renderer)return;_ensureRootRuntimeAdapter(record,renderer);const sceneHash=cfg._sceneConfigHash??sceneConfigHash(cfg);const nextMaterialHash=cfg._materialHash??materialHash(cfg);const nextLightingHash=cfg._lightingHash??lightingHash(cfg);const nextEnvHash=cfg._envHash??envHash(cfg);const nextEffectsHash=cfg._effectsHash??effectsHash(cfg);const materialChanged=nextMaterialHash!==record.lastMaterialHash;const envChanged=nextEnvHash!==record.lastEnvHash;const lightingChanged=nextLightingHash!==record.lastLightingHash;const effectsChanged=nextEffectsHash!==record.lastEffectsHash;if(materialChanged||envChanged){const duration=cfg.materialTransitionDuration||.3;if(duration<=.01){// Instant\nif((record._rootFadeProgress||0)>0){_clearRootSceneOpacity(record);}record._rootFadeProgress=0;record._rootFadeTargetHash=null;record._rootFadeTargetCfg=null;record._rootSceneSwapped=false;}else if((record._rootFadeProgress||0)===0){// Start fade\nrecord._rootFadeProgress=.01;record._rootFadeTargetHash=sceneHash;record._rootFadeTargetCfg={...cfg};record._rootSceneSwapped=false;}else if(sceneHash!==record._rootFadeTargetHash){// Target changed while fading\nif(record._rootFadeProgress>.5){if(!record._rootSceneSwapped&&record._rootFadeTargetCfg){_clearRootSceneOpacity(record);const tc=record._rootFadeTargetCfg;_applyRootCanonicalMaterial(record.model,tc);for(const[,entry]of record.subScenes||[]){if(entry?._rootOwnRuntimeCfg)continue;if(entry?.group)_applyRootCanonicalMaterial(entry.group,tc);}record.lastMaterialHash=tc._materialHash??materialHash(tc);applyEnvironmentChanges(record,tc,renderer,record.scene);record.lastEnvHash=tc._envHash??envHash(tc);applyLightingChanges(record,tc);record.lastLightingHash=tc._lightingHash??lightingHash(tc);if(record._rootComposer)applyEffectsChanges(record,tc);record.lastEffectsHash=tc._effectsHash??effectsHash(tc);}else{_lerpRootSceneOpacity(record,1);}record._rootFadeProgress=.01;record._rootFadeTargetHash=sceneHash;record._rootFadeTargetCfg={...cfg};record._rootSceneSwapped=false;}else{record._rootFadeTargetHash=sceneHash;record._rootFadeTargetCfg={...cfg};record._rootSceneSwapped=false;}}}if((record._rootFadeProgress||0)===0){// Apply immediately if not fading\nif(materialChanged){_applyRootCanonicalMaterial(record.model,cfg);for(const[,entry]of record.subScenes||[]){if(entry?._rootOwnRuntimeCfg)continue;if(entry?.group)_applyRootCanonicalMaterial(entry.group,cfg);}record.lastMaterialHash=nextMaterialHash;}if(lightingChanged){applyLightingChanges(record,cfg);record.lastLightingHash=nextLightingHash;}if(envChanged){applyEnvironmentChanges(record,cfg,renderer,record.scene);record.lastEnvHash=nextEnvHash;}if(effectsChanged){if(record._rootComposer){applyEffectsChanges(record,cfg);}record.lastEffectsHash=nextEffectsHash;}}else{// Handle fade transition\nconst duration=Math.max(.05,cfg.materialTransitionDuration||.3);const fadeSpeed=1/duration;record._rootFadeProgress+=dt*fadeSpeed;const SWAP_AT=.35;const MIN_F=.03;const easeInOutQuad=x=>x<.5?2*x*x:1-Math.pow(-2*x+2,2)/2;if(record._rootFadeProgress<SWAP_AT){const t=record._rootFadeProgress/SWAP_AT;const factor=MIN_F+(1-MIN_F)*(1-easeInOutQuad(t));_lerpRootSceneOpacity(record,factor);}else{if(!record._rootSceneSwapped){const tc=record._rootFadeTargetCfg||cfg;_clearRootSceneOpacity(record);_applyRootCanonicalMaterial(record.model,tc);for(const[,entry]of record.subScenes||[]){if(entry?._rootOwnRuntimeCfg)continue;if(entry?.group)_applyRootCanonicalMaterial(entry.group,tc);}record.lastMaterialHash=tc._materialHash??materialHash(tc);applyEnvironmentChanges(record,tc,renderer,record.scene);record.lastEnvHash=tc._envHash??envHash(tc);applyLightingChanges(record,tc);record.lastLightingHash=tc._lightingHash??lightingHash(tc);if(record._rootComposer)applyEffectsChanges(record,tc);record.lastEffectsHash=tc._effectsHash??effectsHash(tc);record._rootSceneSwapped=true;_lerpRootSceneOpacity(record,MIN_F);}if(record._rootFadeProgress>=1){_clearRootSceneOpacity(record);record._rootFadeProgress=0;record._rootFadeTargetHash=null;record._rootFadeTargetCfg=null;record._rootSceneSwapped=false;}else{const t=(record._rootFadeProgress-SWAP_AT)/(1-SWAP_AT);const factor=MIN_F+(1-MIN_F)*easeInOutQuad(t);_lerpRootSceneOpacity(record,factor);}}}record.scene.environmentIntensity=cfg.enableEnvironment?cfg.environmentIntensity:1;if(record.scene.environment&&cfg.showEnvironmentBackground&&!cfg.transparentBackground&&cfg.environmentType!==\"hdri\"){record.scene.background=record.scene.environment;}const particleKey=`${cfg.enableParticles}|${cfg.particleCount}|${cfg.particleSize}|${cfg.particleColor}|${cfg.particleSpread}`;if(record._rootParticleKey!==particleKey){record._rootParticleKey=particleKey;if(cfg.enableParticles){_rootCreateParticleSystem(record,cfg.particleCount||100,cfg.particleSize||.1,cfg.particleColor||\"#ffffff\",cfg.particleSpread||10);}else if(record.particleSystem){record.scene.remove(record.particleSystem);record.particleSystem.geometry?.dispose?.();record.particleSystem.material?.dispose?.();record.particleSystem=null;}}record.lastSceneHash=sceneHash;}function _disposeRootHelperObject(helper){if(!helper)return;helper.parent?.remove?.(helper);helper.geometry?.dispose?.();const material=helper.material;if(Array.isArray(material)){material.forEach(mat=>mat?.dispose?.());}else{material?.dispose?.();}}function _syncRootHelperRuntime(record,cfg){if(!record?.scene||!cfg)return;const gridKey=[!!cfg.showGrid,cfg.showGridSize??10,cfg.showGridDivisions??10,cfg.showGridColor1??\"rgba(255,255,255,0.25)\",cfg.showGridColor2??\"rgba(255,255,255,0.1)\"].join(\"|\");if(record._rootGridHelperKey!==gridKey){_disposeRootHelperObject(record.gridHelper);record.gridHelper=null;record._rootGridHelperKey=gridKey;if(cfg.showGrid){const grid=new THREE.GridHelper(cfg.showGridSize??10,cfg.showGridDivisions??10,parseColor(cfg.showGridColor1??\"rgba(255,255,255,0.25)\"),parseColor(cfg.showGridColor2??\"rgba(255,255,255,0.1)\"));const material=grid.material;material.transparent=true;material.opacity=.6;material.depthWrite=false;grid.renderOrder=-1;record.scene.add(grid);record.gridHelper=grid;}}const axesKey=[!!cfg.showAxes,cfg.showAxesSize??3].join(\"|\");if(record._rootAxesHelperKey!==axesKey){_disposeRootHelperObject(record.axesHelper);record.axesHelper=null;record._rootAxesHelperKey=axesKey;if(cfg.showAxes){const axes=new THREE.AxesHelper(cfg.showAxesSize??3);axes.renderOrder=999;const material=axes.material;if(Array.isArray(material)){material.forEach(mat=>{mat.depthTest=false;});}else if(material){material.depthTest=false;}record.scene.add(axes);record.axesHelper=axes;}}const modelAxesKey=[!!cfg.showModelAxes,cfg.showModelAxesSize??2,record.model?.uuid||\"no-model\"].join(\"|\");if(record._rootModelAxesHelperKey!==modelAxesKey){_disposeRootHelperObject(record.modelAxesHelper);record.modelAxesHelper=null;record._rootModelAxesHelperKey=modelAxesKey;if(cfg.showModelAxes&&record.model){const modelAxes=new THREE.AxesHelper(cfg.showModelAxesSize??2);modelAxes.renderOrder=998;const material=modelAxes.material;if(Array.isArray(material)){material.forEach(mat=>{mat.depthTest=false;});}else if(material){material.depthTest=false;}record.model.add(modelAxes);record.modelAxesHelper=modelAxes;}}}function _getRootSmoothedTransform(record,props,rectWidth=0,cfg=null){const tr=cfg?{scale:cfg.modelScale,offX:cfg.modelOffsetX,offY:cfg.modelOffsetY,offZ:cfg.modelOffsetZ,rotX:cfg.modelRotationX,rotY:cfg.modelRotationY,rotZ:cfg.modelRotationZ}:_resolveRootResponsiveTransform(props?.transform||{},rectWidth);const target={scale:tr.scale??1,offX:tr.offX??0,offY:tr.offY??0,offZ:tr.offZ??0,rotX:tr.rotX??0,rotY:tr.rotY??0,rotZ:tr.rotZ??0,camX:cfg?.cameraPositionX??-1,camY:cfg?.cameraPositionY??2,camZ:cfg?.cameraPositionZ??10};if(!cfg?.enableScrollAnimation){record._rootScrollSmoothingActive=false;return target;}const smooth=Math.max(0,Math.min(1,cfg.scrollSmoothing??.05));if(record._rootSmoothFrameId===record._rootFrameId&&record._rootSmoothTransform){return record._rootSmoothTransform;}if(!record._rootSmoothTransform){record._rootSmoothTransform={...target};record._rootSmoothFrameId=record._rootFrameId;return record._rootSmoothTransform;}const live=record._rootSmoothTransform;if(smooth>=1){record._rootSmoothTransform={...target};record._rootSmoothFrameId=record._rootFrameId;record._rootScrollSmoothingActive=false;return record._rootSmoothTransform;}let hasSmoothingDelta=false;for(const key of Object.keys(target)){if(Math.abs(target[key]-live[key])>.001){hasSmoothingDelta=true;}live[key]+=(target[key]-live[key])*smooth;}record._rootScrollSmoothingActive=hasSmoothingDelta;record._rootSmoothFrameId=record._rootFrameId;return live;}function _applyRootCameraSmoothing(record,cfg,rectWidth=0){if(!record?.camera||!cfg?.enableScrollAnimation)return;const smoothed=_getRootSmoothedTransform(record,record._rootLatestSlotProps||{},rectWidth,cfg);record.camera.position.set(smoothed.camX,smoothed.camY,smoothed.camZ);record.camera.updateProjectionMatrix?.();}function _rootHasAppearTransformMotion(appear){if(!appear)return false;return Math.abs(appear.offX??0)>1e-4||Math.abs(appear.offY??0)>1e-4||Math.abs(appear.offZ??0)>1e-4||Math.abs((appear.scale??1)-1)>1e-4||Math.abs(appear.rotX??0)>1e-4||Math.abs(appear.rotY??0)>1e-4||Math.abs(appear.rotZ??0)>1e-4;}function _rootShouldAnimateAppear(appear){return!!appear?.dissolveEnabled||_rootHasAppearTransformMotion(appear);}function _restartRootAppearPlayback(record,cfg,force=false){if(!record||!force&&!cfg?.dissolveEnabled&&!_rootHasAppearTransformMotion(cfg)){return;}record._rootAppearStart=performance.now();record._rootAppearVisibility=0;}function _syncRootAppear(record,cfg){const nextHash=appearReplayHash(cfg||{});const shouldAnimate=_rootShouldAnimateAppear(cfg);const shouldReplay=_shouldReplayAppear(cfg);if(!record._rootAppearInit){record._rootAppearInit=true;record._rootAppearHash=nextHash;record._rootAppearVisibility=shouldAnimate?0:1;record._rootAppearStart=shouldAnimate?performance.now():0;record._rootAppearPendingReplay=false;}else{if(record._rootAppearPendingReplay){if(shouldReplay){_restartRootAppearPlayback(record,cfg,true);}record._rootAppearPendingReplay=false;}const hasPreviousAppearHash=!!record._rootAppearHash;if(nextHash!==record._rootAppearHash){record._rootAppearHash=nextHash;if(hasPreviousAppearHash&&shouldAnimate&&shouldReplay){_restartRootAppearPlayback(record,cfg,true);}}}let visibility=1;if(record._rootAppearStart>0){const elapsed=(performance.now()-record._rootAppearStart)/1e3;const duration=Math.max(.001,cfg?.dissolveDuration||1.5);if(elapsed>=duration){record._rootAppearStart=0;}else{const t=elapsed/duration;visibility=1-Math.pow(1-t,3);}}record._rootAppearVisibility=visibility;record._rootAppearBlurPx=cfg?.blurReveal?Math.max(0,(cfg?.blurRevealIntensity||12)*(1-visibility)):0;return visibility;}function _resetRootAppearTransformOffset(object){if(!object)return;object._rootAppearAppliedX=0;object._rootAppearAppliedY=0;object._rootAppearAppliedZ=0;object._rootAppearAppliedRotX=0;object._rootAppearAppliedRotY=0;object._rootAppearAppliedRotZ=0;object._rootAppearAppliedScale=1;}function _applyRootAppearTransformOffset(object,visibility,appear){if(!object)return;const motionVisibility=Math.max(0,Math.min(1,visibility??1));const t=1-motionVisibility;const targetX=(appear.offX??0)*t;const targetY=(appear.offY??0)*t;const targetZ=(appear.offZ??0)*t;const targetScale=1+((appear.scale??1)-1)*t;const targetRotX=(appear.rotX??0)*Math.PI/180*t;const targetRotY=(appear.rotY??0)*Math.PI/180*t;const targetRotZ=(appear.rotZ??0)*Math.PI/180*t;const anyObject=object;object.position.x+=targetX-(anyObject._rootAppearAppliedX||0);object.position.y+=targetY-(anyObject._rootAppearAppliedY||0);object.position.z+=targetZ-(anyObject._rootAppearAppliedZ||0);object.rotation.x+=targetRotX-(anyObject._rootAppearAppliedRotX||0);object.rotation.y+=targetRotY-(anyObject._rootAppearAppliedRotY||0);object.rotation.z+=targetRotZ-(anyObject._rootAppearAppliedRotZ||0);const prevScale=anyObject._rootAppearAppliedScale||1;if(prevScale!==0){object.scale.multiplyScalar(targetScale/prevScale);}anyObject._rootAppearAppliedX=targetX;anyObject._rootAppearAppliedY=targetY;anyObject._rootAppearAppliedZ=targetZ;anyObject._rootAppearAppliedRotX=targetRotX;anyObject._rootAppearAppliedRotY=targetRotY;anyObject._rootAppearAppliedRotZ=targetRotZ;anyObject._rootAppearAppliedScale=targetScale;}function _applyRootAppearOpacity(object,visibility){if(!object)return;const motionVisibility=Math.max(0,Math.min(1,visibility??1));object.traverse(child=>{if(!child?.isMesh||!child.material)return;const materials=Array.isArray(child.material)?child.material:[child.material];materials.forEach(mat=>{if(!mat)return;mat.userData=mat.userData||{};if(mat.userData._rootBaseOpacity===undefined){mat.userData._rootBaseOpacity=mat.userData?._rootOriginal?.opacity??mat.opacity??1;}if(mat.userData._rootBaseTransparent===undefined){mat.userData._rootBaseTransparent=mat.userData?._rootOriginal?.transparent??mat.transparent??false;}const baseOpacity=mat.userData?._rootBaseOpacity??mat.opacity??1;const baseTransparent=mat.userData?._rootBaseTransparent??mat.transparent??false;const nextOpacity=baseOpacity*motionVisibility;mat.opacity=nextOpacity;mat.transparent=baseTransparent||nextOpacity<.999;mat.depthWrite=nextOpacity>=.999;mat.needsUpdate=true;});});}function _syncRootCanvasAppearStyle(canvas,record,enabled){if(!canvas)return;if(!enabled||!record){canvas.style.opacity=\"1\";canvas.style.filter=\"\";canvas.style.willChange=\"transform\";return;}const visibility=Math.max(0,Math.min(1,(record._rootAppearVisibility??1)*(record._rootDomOpacity??1)));const blurPx=Math.max(0,record._rootAppearBlurPx??0);canvas.style.opacity=visibility>=.999?\"1\":visibility.toFixed(3);canvas.style.filter=blurPx>.05?`blur(${blurPx.toFixed(1)}px)`:\"\";canvas.style.willChange=blurPx>.05||visibility<.999?\"transform, opacity, filter\":\"transform\";}function _applyRootSlotTransform(model,props,rectWidth=0,positionState=null,record=null,runtimeCfg=null){const tr=record?_getRootSmoothedTransform(record,props,rectWidth,runtimeCfg):_resolveRootResponsiveTransform(props?.transform||{},rectWidth);const scale=tr.scale??1;const offX=tr.offX??0;const offY=tr.offY??0;const offZ=tr.offZ??0;const rotX=tr.rotX??0;const rotY=tr.rotY??0;const rotZ=tr.rotZ??0;const baseScale=(model.userData?._rootNormalizeScale||1)*(model.userData?._rootFitRatio||1);const effectiveUserScale=scale;const effectiveScale=baseScale*Math.max(.001,effectiveUserScale);_cacheRootObjectBaseBounds(model);const center={x:(model.userData?._rootBaseCenterX||0)*effectiveScale,y:(model.userData?._rootBaseCenterY||0)*effectiveScale,z:(model.userData?._rootBaseCenterZ||0)*effectiveScale};const baseGroundY=(model.userData?._rootBaseMinY||0)*effectiveScale;model.scale.setScalar(effectiveScale);model.position.set(-center.x+offX,-center.y+offY,-center.z+offZ);model.rotation.set(rotX*Math.PI/180,rotY*Math.PI/180,rotZ*Math.PI/180);model.userData._rootBaseGroundY=baseGroundY;model.userData._rootBaseTransform={scale:effectiveUserScale,offX,offY,offZ,rotX,rotY,rotZ};model.userData._rootBaseGroundWorldY=model.position.y+baseGroundY-.001;_applyRootPositionToObject(model,positionState);model.userData._rootCurrentTransform={scale:model.scale.x/Math.max(1e-4,baseScale),offX:model.position.x+center.x,offY:model.position.y+center.y,offZ:model.position.z+center.z,rotX:model.rotation.x*180/Math.PI,rotY:model.rotation.y*180/Math.PI,rotZ:model.rotation.z*180/Math.PI};}function _makeRootCamera(cfg,aspect){const type=cfg?.cameraType||\"perspective\";if(type===\"orthographic\"){const halfH=_ORTHO_FRUSTUM/2;const camera=new THREE.OrthographicCamera(-halfH*aspect,halfH*aspect,halfH,-halfH,.01,1e3);camera.zoom=cfg?.orthoZoom??1;camera.position.set(cfg?.cameraPositionX??-1,cfg?.cameraPositionY??2,cfg?.cameraPositionZ??10);camera.lookAt(0,0,0);camera.updateProjectionMatrix();return camera;}const camera=new THREE.PerspectiveCamera(cfg?.fov??35,aspect,.01,1e3);camera.position.set(cfg?.cameraPositionX??-1,cfg?.cameraPositionY??2,cfg?.cameraPositionZ??10);camera.lookAt(0,0,0);camera.updateProjectionMatrix();return camera;}function _rootCameraHash(cfg,aspect){return[cfg?.cameraType||\"perspective\",Number(aspect||1).toFixed(4),cfg?.cameraPositionX??-1,cfg?.cameraPositionY??2,cfg?.cameraPositionZ??10,cfg?.orthoZoom??1,cfg?.fov??35,cfg?.stereoEyeSep??.064].join(\"|\");}function _getRootCamera(record,cfg,aspect){const hash=_rootCameraHash(cfg,aspect);if(!record.camera||record._rootCameraHash!==hash){record.camera=_makeRootCamera(cfg,aspect);record._rootCameraHash=hash;}if(cfg?.cameraType===\"stereo\"){if(!record.stereoCamera)record.stereoCamera=new THREE.StereoCamera;record.stereoCamera.eyeSep=cfg?.stereoEyeSep??.064;}return record.camera;}function _makeRootScene(cfg,aspect){const scene=new THREE.Scene;const ambient=new THREE.AmbientLight(16777215,cfg?.ambientLightIntensity??.8);const dir=new THREE.DirectionalLight(16777215,cfg?.directionalLightIntensity??1.5);dir.color.set(cfg?.directionalLightColor||\"#ffffff\");dir.position.set(cfg?.dirLightPosX??5,cfg?.dirLightPosY??10,cfg?.dirLightPosZ??7);// Mirrors the Slot's always-on fill + hemisphere lights (slotRuntime.tsx)\n// so Root-bridged scenes match Standalone lighting instead of looking flatter.\nconst fillLight=new THREE.DirectionalLight(12636415,.4);fillLight.position.set(-5,3,-5);const hemisphereLight=new THREE.HemisphereLight(16777215,4473924,.15);scene.add(ambient,dir,fillLight,hemisphereLight);return{scene,ambient,dirLight:dir,fillLight,hemisphereLight,camera:_makeRootCamera(cfg,aspect),model:null,loadedUrl:\"\",loadingUrl:\"\",mixer:null,animations:[],subScenes:new Map,timer:new THREE.Timer,_animationActionCache:new Set,_activeAnimationAction:null,_activeAnimationKey:\"\",_activeAnimationClipName:\"\",_lastAnimationRequestSig:\"\",_rootCameraHash:\"\"};}function _getRootTimerDelta(record){const timer=record?.timer;if(!timer)return 0;timer.update?.();return Math.min(.05,timer.getDelta?.()||0);}function _findRootClip(animations,clipName){if(!animations?.length)return null;if(!clipName)return animations[0];const needle=String(clipName).toLowerCase();return animations.find(clip=>String(clip.name).toLowerCase()===needle)||animations.find(clip=>String(clip.name).toLowerCase().includes(needle))||null;}function _configureRootAnimationLoop(action,loopMode){const mode=String(loopMode||\"repeat\").toLowerCase();if(mode===\"once\"){action.setLoop(THREE.LoopOnce,1);action.clampWhenFinished=true;}else if(mode===\"pingpong\"){action.setLoop(THREE.LoopPingPong,Infinity);action.clampWhenFinished=false;}else{action.setLoop(THREE.LoopRepeat,Infinity);action.clampWhenFinished=false;}}function _syncRootAnimationPhase(prevAction,nextAction){const prevClip=prevAction?.getClip?.();const nextClip=nextAction?.getClip?.();if(!prevClip?.duration||!nextClip?.duration)return;const normalizedTime=(prevAction.time%prevClip.duration+prevClip.duration)%prevClip.duration;nextAction.time=normalizedTime/prevClip.duration*nextClip.duration;}const _rootHoverRaycaster=new THREE.Raycaster;_rootHoverRaycaster.firstHitOnly=true;const _rootHoverMouse=new THREE.Vector2;const _rootBaseCameraPosition=new THREE.Vector3;const _rootOrbitOffset=new THREE.Vector3;const _rootOrbitSpherical=new THREE.Spherical;const _rootInteractionPlane=new THREE.Plane;const _rootInteractionVecA=new THREE.Vector3;const _rootInteractionVecB=new THREE.Vector3;const _rootInteractionColor=new THREE.Color;const _rootInteractionBox=new THREE.Box3;function _markRootHoverMeshesDirty(record){if(!record)return;record._rootHoverMeshVersion=(record._rootHoverMeshVersion||0)+1;}function _syncRootMouseRotationState(record,rect,state){if(!record||!rect)return;const x=state?.pointerX;const y=state?.pointerY;const inside=!!state?.pointerActive&&Number.isFinite(x)&&Number.isFinite(y)&&x>=rect.left&&x<=rect.right&&y>=rect.top&&y<=rect.bottom;if(inside){record._rootMouseTargetX=(x-rect.left)/Math.max(1,rect.width)*2-1;record._rootMouseTargetY=(y-rect.top)/Math.max(1,rect.height)*2-1;}else{record._rootMouseTargetX=0;record._rootMouseTargetY=0;}record._rootMouseX=(record._rootMouseX||0)+((record._rootMouseTargetX||0)-(record._rootMouseX||0))*.08;record._rootMouseY=(record._rootMouseY||0)+((record._rootMouseTargetY||0)-(record._rootMouseY||0))*.08;}function _applyRootMouseRotation(object,record,cfg,multiplier=1){if(!object||!record||!(cfg?.enableMouseRotation??false))return;const intensity=(cfg?.mouseRotationIntensity??.1)*multiplier;object.rotation.y+=(record._rootMouseX||0)*intensity;object.rotation.x+=(record._rootMouseY||0)*intensity*.5;}function _applyRootOrbitCamera(record,cfg){const camera=record?.camera;if(!record||!camera)return;const target=_rootInteractionVecA.set(0,0,0);_rootBaseCameraPosition.set(cfg?.cameraPositionX??-1,cfg?.cameraPositionY??2,cfg?.cameraPositionZ??10);// Mirrors Slot's OrbitControls.enableZoom (slotRuntime.tsx). Root has no\n// OrbitControls instance, so scroll-to-zoom is a hand-rolled distance\n// multiplier driven by onRootCanvasWheel, clamped to a sane range.\nconst zoomFactor=cfg?.enableZoom?Math.max(.2,Math.min(4,record._rootOrbitZoom??1)):1;record._rootOrbitZoom=zoomFactor;if(cfg?.enableOrbitControls){_rootOrbitOffset.copy(_rootBaseCameraPosition);_rootOrbitSpherical.setFromVector3(_rootOrbitOffset);_rootOrbitSpherical.theta+=record._rootOrbitTheta||0;_rootOrbitSpherical.phi=Math.max(.05,Math.min(Math.PI-.05,_rootOrbitSpherical.phi+(record._rootOrbitPhi||0)));_rootOrbitSpherical.radius*=zoomFactor;_rootOrbitOffset.setFromSpherical(_rootOrbitSpherical);camera.position.copy(target).add(_rootOrbitOffset);}else{camera.position.copy(_rootBaseCameraPosition).multiplyScalar(zoomFactor).add(target);record._rootOrbitTheta=0;record._rootOrbitPhi=0;}if(camera.isOrthographicCamera){camera.zoom=(cfg?.orthoZoom??1)/zoomFactor;}camera.lookAt(target);camera.updateMatrixWorld?.(true);camera.updateProjectionMatrix?.();}function _emitRootMeshInteractionEvent(config,eventName,event,obj){const handler=config?.[eventName];if(!handler)return;if(event&&typeof event===\"object\"){try{event.meshName=obj?.name??config?.meshName??\"\";event.meshObject=obj;event.meshInteraction=config;}catch{}}try{if(event)handler(event);else handler();}catch(error){console.warn(\"[Import_3D_Canvas_Root] mesh interaction failed\",error);}}function _rootInteractionCacheKey(record,cfg){const parts=[record?.model?.uuid||\"no-main\",record?.model?.visible!==false?\"main-visible\":\"main-hidden\",cfg?.meshInteractionRuntimeKey||cfg?.meshInteractionLookupKey||\"\"];if(record?.subScenes){for(const[key,entry]of record.subScenes){const subCfg=entry?._rootOwnRuntimeCfg;parts.push(`${key}:${entry?.group?.uuid||\"none\"}:${entry?.group?.visible!==false}:${subCfg?.meshInteractionRuntimeKey||subCfg?.meshInteractionLookupKey||\"\"}`);}}return parts.join(\"|\");}function _collectRootInteractiveMeshes(record,cfg){if(!record)return[];const key=_rootInteractionCacheKey(record,cfg);if(record._rootInteractiveMeshesKey!==key){const meshes=[];if(record.model?.visible!==false){record.model?.traverse?.(child=>{if(child?.isMesh)meshes.push(child);});}if(record.subScenes){for(const[,entry]of record.subScenes){if(!entry?.group||entry.group.visible===false)continue;entry.group.traverse?.(child=>{if(child?.isMesh)meshes.push(child);});}}record._rootInteractiveMeshes=meshes;record._rootInteractiveMeshesKey=key;record._rootInteractConfigCache=new Map;}return(record._rootInteractiveMeshes||[]).filter(mesh=>mesh?.visible!==false);}function _findRootInteractConfig(record,obj,cfg){const items=cfg?.meshInteractionItems||[];if(!items.length||!obj)return null;if(!record._rootInteractConfigCache){record._rootInteractConfigCache=new Map;}const cfgKey=cfg?.meshInteractionRuntimeKey||cfg?.meshInteractionLookupKey||\"\";const cacheKey=`${obj.uuid||\"\"}|${cfgKey}`;if(record._rootInteractConfigCache.has(cacheKey)){return record._rootInteractConfigCache.get(cacheKey);}const name=String(obj.name||\"\").toLowerCase();let matched=null;if(name){for(const item of items){const target=String(item?.meshName||\"\").trim().toLowerCase();if(target&&name.includes(target)){matched=item;break;}}}record._rootInteractConfigCache.set(cacheKey,matched);return matched;}function _findRootInteractiveObject(record,hitObject,cfg){let obj=hitObject;while(obj&&obj!==record?.scene&&obj!==record?.model&&obj!==record?.modelInner){const config=_findRootInteractConfig(record,obj,cfg);if(config){const name=String(config.meshName||\"\").trim().toLowerCase();const matchedObj=record._rootMeshInteractionTargets?.get?.(name);if(matchedObj){obj=matchedObj;}return{obj,config};}obj=obj.parent;}return null;}function _findRootGroupSlotInfo(record,hitObject){let obj=hitObject;while(obj&&obj!==record?.scene){if(obj.userData?._rootGroupSlotProps){return{id:obj.userData?._rootGroupSlotId||\"\",props:obj.userData._rootGroupSlotProps,runtimeSettings:obj.userData?._rootGroupRuntimeSettings||null};}obj=obj.parent;}return{id:\"\",props:record?._rootLatestSlotProps||null,runtimeSettings:record?._rootLatestSlotRuntimeSettings||null};}function _resolveRootHitInteractionConfig(record,rect,hitObject,fallbackCfg){const slotInfo=_findRootGroupSlotInfo(record,hitObject);const slotProps=slotInfo?.props||null;if(!slotProps||slotProps===record?._rootLatestSlotProps){return fallbackCfg;}const ownerProps=slotInfo?.runtimeSettings?{...slotProps,__import3DRuntimeSettings:slotInfo.runtimeSettings}:slotProps;const ownerCfg=_resolveRootRuntimeConfig(ownerProps,rect?.width||0);return ownerCfg?.hasEnabledMeshInteractions?ownerCfg:fallbackCfg;}function _findRootInteractiveHit(record,rect,hitObject,fallbackCfg){const ownerCfg=_resolveRootHitInteractionConfig(record,rect,hitObject,fallbackCfg);const ownerMatch=_findRootInteractiveObject(record,hitObject,ownerCfg);if(ownerMatch||ownerCfg===fallbackCfg)return ownerMatch;return _findRootInteractiveObject(record,hitObject,fallbackCfg);}function _rootSlotHasEnabledMeshInteractions(slot,cfg){if(cfg?.hasEnabledMeshInteractions)return true;return _getRootRuntimeSceneItems(slot?.props,cfg).some(item=>item?.__groupRuntimeCfg?.hasEnabledMeshInteractions);}function _rootPropsHasModelHoverHandlers(props,runtimeSettings=null){const runtime=runtimeSettings||props?.__import3DRuntimeSettings;return!!(props?.onModelHoverStart||props?.onModelHoverEnd||runtime?.onModelHoverStart||runtime?.onModelHoverEnd);}function _getRootModelHoverHandler(slot,active){if(slot?.hoverHandlers){return active?slot.hoverHandlers.start:slot.hoverHandlers.end;}const props=slot?.props||{};const runtime=slot?.runtimeSettings||props.__import3DRuntimeSettings||{};return active?props.onModelHoverStart||runtime.onModelHoverStart:props.onModelHoverEnd||runtime.onModelHoverEnd;}function _makeRootGroupedModelHoverSlot(slot){let start=null;let end=null;for(const item of _getRootRuntimeSceneItems(slot?.props,slot?.runtimeSettings)){const props=item?.__groupSlotProps||{};const runtime=item?.__groupRuntimeSettings||props.__import3DRuntimeSettings||{};start=start||props.onModelHoverStart||runtime.onModelHoverStart;end=end||props.onModelHoverEnd||runtime.onModelHoverEnd;if(start&&end)break;}if(!start&&!end)return null;return{id:`${slot?.id||\"group\"}:model-hover`,props:{onModelHoverStart:start||undefined,onModelHoverEnd:end||undefined},runtimeSettings:null,hoverHandlers:{start,end},element:slot?.element,scrollContainer:slot?.scrollContainer};}function _rootSlotNeedsModelHover(slot,cfg){if(_rootPropsHasModelHoverHandlers(slot?.props,slot?.runtimeSettings)||cfg?.animationModelHoverGate){return true;}return _getRootRuntimeSceneItems(slot?.props,cfg).some(item=>{const props=item?.__groupSlotProps;return _rootPropsHasModelHoverHandlers(props,item?.__groupRuntimeSettings);});}function _rootSlotFromHitOwner(slot,owner){if(owner?.props&&owner.props!==slot?.props){return{id:owner.id||slot?.id||\"\",props:owner.props,runtimeSettings:owner.runtimeSettings||null,element:slot?.element,scrollContainer:slot?.scrollContainer};}return slot;}function _findRootModelHoverSlotFromHits(record,slot,hits,cfg){const groupedHoverSlot=_makeRootGroupedModelHoverSlot(slot);for(const hit of hits||[]){const owner=_findRootGroupSlotInfo(record,hit?.object);const hoverSlot=_rootSlotFromHitOwner(slot,owner);if(_rootPropsHasModelHoverHandlers(hoverSlot?.props,hoverSlot?.runtimeSettings)){return groupedHoverSlot||hoverSlot;}}if(groupedHoverSlot&&hits?.length){return groupedHoverSlot;}if(cfg?.animationModelHoverGate&&hits?.length){return slot;}return null;}function _raycastRootInteractiveAt(record,rect,x,y,cfg){if(!record?.camera||!rect)return[];if(!Number.isFinite(x)||!Number.isFinite(y)||x<rect.left||x>rect.right||y<rect.top||y>rect.bottom){return[];}const meshes=_collectRootInteractiveMeshes(record,cfg);if(!meshes.length)return[];record.camera.updateMatrixWorld?.(true);record.scene.updateMatrixWorld?.(true);_rootHoverMouse.x=(x-rect.left)/Math.max(1,rect.width)*2-1;_rootHoverMouse.y=-((y-rect.top)/Math.max(1,rect.height))*2+1;_rootHoverRaycaster.setFromCamera(_rootHoverMouse,record.camera);// Native intersectObjects is now accelerated globally by three-mesh-bvh\n// since we always generate the BVH trees.\nreturn _rootHoverRaycaster.intersectObjects(meshes,false);}function _collectRootChildMeshes(obj){const meshes=[];if(obj?.isMesh)meshes.push(obj);else obj?.traverse?.(child=>{if(child?.isMesh)meshes.push(child);});return meshes;}function _saveRootOrigEmissive(meshes){const map=new Map;for(const mesh of meshes){if(!mesh?.material)continue;const mats=Array.isArray(mesh.material)?mesh.material:[mesh.material];map.set(mesh,mats.map(mat=>{if(!mat?.emissive)return null;mat.userData=mat.userData||{};if(!mat.userData.__framerBaseEmissive){mat.userData.__framerBaseEmissive=mat.emissive.clone();}return mat.userData.__framerBaseEmissive.clone();}));}return map;}function _applyRootHoverLerp(channel){if(!channel?.mesh)return;const t=Math.max(0,Math.min(1,channel.progress??0));if(channel.origEmissive&&channel.targetColor){channel.origEmissive.forEach((saved,mesh)=>{if(!mesh?.material)return;const mats=Array.isArray(mesh.material)?mesh.material:[mesh.material];mats.forEach((mat,index)=>{if(!mat?.emissive)return;const orig=saved?.[index];if(orig)_rootInteractionColor.copy(orig);else _rootInteractionColor.setHex(0);mat.emissive.copy(_rootInteractionColor.lerp(channel.targetColor,t));});});}if(channel.origScale&&channel.targetScale){channel.mesh.scale.x+=(channel.targetScale.x-channel.origScale.x)*t;channel.mesh.scale.y+=(channel.targetScale.y-channel.origScale.y)*t;channel.mesh.scale.z+=(channel.targetScale.z-channel.origScale.z)*t;}if(channel.origPosition&&channel.targetPosition){channel.mesh.position.x+=(channel.targetPosition.x-channel.origPosition.x)*t;channel.mesh.position.y+=(channel.targetPosition.y-channel.origPosition.y)*t;channel.mesh.position.z+=(channel.targetPosition.z-channel.origPosition.z)*t;}if(channel.origRotation&&channel.targetRotation){channel.mesh.rotation.x+=(channel.targetRotation.x-channel.origRotation.x)*t;channel.mesh.rotation.y+=(channel.targetRotation.y-channel.origRotation.y)*t;channel.mesh.rotation.z+=(channel.targetRotation.z-channel.origRotation.z)*t;}}function _snapRootHoverChannel(channel){if(!channel?.mesh)return;channel.progress=0;_applyRootHoverLerp(channel)// Resets emissive color to orig\n;if(!channel.mesh._meshAnimOrigPos){if(channel.origPosition)channel.mesh.position.copy(channel.origPosition);if(channel.origRotation)channel.mesh.rotation.copy(channel.origRotation);if(channel.origScale)channel.mesh.scale.copy(channel.origScale);}_clearObjectEventHoverBaseTransform(channel.mesh);channel.mesh=null;channel.config=null;channel.origEmissive=null;channel.origPosition=null;channel.origRotation=null;channel.origScale=null;channel.targetColor=null;channel.targetPosition=null;channel.targetRotation=null;channel.targetScale=null;}function _ensureRootInteractionState(record){if(!record._rootHoverLerp){record._rootHoverLerp={mesh:null,config:null,progress:0,target:0,origEmissive:null,origPosition:null,origRotation:null,origScale:null,targetColor:null,targetPosition:null,targetRotation:null,targetScale:null};record._rootHoverLerpOut={mesh:null,config:null,progress:0,target:0,origEmissive:null,origPosition:null,origRotation:null,origScale:null,targetColor:null,targetPosition:null,targetRotation:null,targetScale:null};record._rootPressLerp={mesh:null,config:null,progress:0,target:0,origEmissive:null,origPosition:null,origRotation:null,origScale:null,targetColor:null,targetPosition:null,targetRotation:null,targetScale:null};}}function _resetRootPressInteract(record){if(!record?._rootPressLerp?.mesh)return;const channel=record._rootPressLerp;channel.progress=0;_applyRootHoverLerp(channel);channel.mesh=null;channel.config=null;channel.origPosition=null;channel.origRotation=null;channel.origScale=null;channel.targetPosition=null;channel.targetRotation=null;channel.targetScale=null;}function _applyRootPressInteract(record,obj,config){if(!record||!obj||!config?.pressEnabled||config?.draggable)return;_ensureRootInteractionState(record);if(record._rootPressLerp?.mesh&&record._rootPressLerp.mesh!==obj){_resetRootPressInteract(record);}const channel=record._rootPressLerp;const targets=_makeObjectEventTransformTargets(obj,config,\"pressTransform\");channel.mesh=obj;channel.config=config;channel.progress=1;channel.target=1;channel.origPosition=targets.origPosition;channel.origRotation=targets.origRotation;channel.origScale=targets.origScale;channel.targetPosition=targets.targetPosition;channel.targetRotation=targets.targetRotation;channel.targetScale=targets.targetScale;_applyRootHoverLerp(channel);}function _unhighlightRootInteract(record,emitEvent=true,event=null){if(!record)return;if(record._rootInteractHoverEndTimer){clearTimeout(record._rootInteractHoverEndTimer);record._rootInteractHoverEndTimer=null;}_ensureRootInteractionState(record);const hovered=record._rootInteractHovered;if(hovered){if(emitEvent){_emitRootMeshInteractionEvent(record._rootInteractHoveredConfig,\"onMeshLeave\",event,hovered);}if(_rootTooltipHandler)_rootTooltipHandler(null,0,0);const active=record._rootHoverLerp;const leaving=record._rootHoverLerpOut;if(leaving.mesh&&leaving.mesh!==hovered)_snapRootHoverChannel(leaving);leaving.mesh=active.mesh;leaving.config=active.config;leaving.progress=active.progress;leaving.origEmissive=active.origEmissive;leaving.origPosition=active.origPosition;leaving.origRotation=active.origRotation;leaving.origScale=active.origScale;leaving.targetColor=active.targetColor;leaving.targetPosition=active.targetPosition;leaving.targetRotation=active.targetRotation;leaving.targetScale=active.targetScale;active.mesh=null;active.config=null;active.progress=0;active.target=0;active.origEmissive=null;active.origPosition=null;active.origRotation=null;active.origScale=null;active.targetColor=null;active.targetPosition=null;active.targetRotation=null;active.targetScale=null;}record._rootInteractHovered=null;record._rootInteractHoveredConfig=null;}function _scheduleUnhighlightRootInteract(record,event=null){if(!record?._rootInteractHovered||record._rootInteractHoverEndTimer)return;record._rootInteractHoverEndTimer=setTimeout(()=>{record._rootInteractHoverEndTimer=null;_unhighlightRootInteract(record,true,event);},90);}function _highlightRootInteract(record,obj,config,event=null){if(!record||!obj||!config)return;if(record._rootInteractHoverEndTimer){clearTimeout(record._rootInteractHoverEndTimer);record._rootInteractHoverEndTimer=null;}_ensureRootInteractionState(record);if(record._rootInteractHovered===obj){const tooltipText=(config.hoverTooltip??\"\").trim();if(tooltipText&&_rootTooltipHandler&&event){_rootTooltipHandler(tooltipText,event.clientX??0,event.clientY??0);}return;}const leaving=record._rootHoverLerpOut;const active=record._rootHoverLerp;if(leaving.mesh===obj){active.mesh=leaving.mesh;active.config=leaving.config;active.progress=leaving.progress;active.target=1;active.origEmissive=leaving.origEmissive;active.origPosition=leaving.origPosition;active.origRotation=leaving.origRotation;active.origScale=leaving.origScale;active.targetColor=leaving.targetColor;active.targetPosition=leaving.targetPosition;active.targetRotation=leaving.targetRotation;active.targetScale=leaving.targetScale;leaving.mesh=null;leaving.config=null;leaving.progress=0;leaving.origEmissive=null;leaving.origPosition=null;leaving.origRotation=null;leaving.origScale=null;leaving.targetColor=null;leaving.targetPosition=null;leaving.targetRotation=null;leaving.targetScale=null;record._rootInteractHovered=obj;record._rootInteractHoveredConfig=config;_emitRootMeshInteractionEvent(config,\"onMeshEnter\",event,obj);const tooltipText=(config.hoverTooltip??\"\").trim();if(tooltipText&&_rootTooltipHandler&&event){_rootTooltipHandler(tooltipText,event.clientX??0,event.clientY??0);}return;}_unhighlightRootInteract(record,true,event);record._rootInteractHovered=obj;record._rootInteractHoveredConfig=config;_emitRootMeshInteractionEvent(config,\"onMeshEnter\",event,obj);const tooltipText=(config.hoverTooltip??\"\").trim();if(tooltipText&&_rootTooltipHandler&&event){_rootTooltipHandler(tooltipText,event.clientX??0,event.clientY??0);}const hoverEffect=config.hoverEffect??\"highlight\";if(hoverEffect===\"none\")return;active.mesh=obj;active.config=config;active.progress=0;active.target=1;// Always apply color (parameters linked)\nconst childMeshes=_collectRootChildMeshes(obj);active.origEmissive=_saveRootOrigEmissive(childMeshes);active.targetColor=parseColor(config.hoverColor??\"#4466ff\");if(hoverEffect===\"scale\"){active.origScale=obj.scale.clone();active.targetScale=obj.scale.clone().multiplyScalar(config.hoverScale??1.1);}else if(hoverEffect===\"transform\"){const targets=_makeObjectEventTransformTargets(obj,config,\"hoverTransform\");active.origPosition=targets.origPosition;active.origRotation=targets.origRotation;active.origScale=targets.origScale;active.targetPosition=targets.targetPosition;active.targetRotation=targets.targetRotation;active.targetScale=targets.targetScale;}}function _syncRootMeshHover(record,slot,rect,state,cfg){if(!record||!_rootSlotHasEnabledMeshInteractions(slot,cfg)||cfg?.responsiveIsMobile){_unhighlightRootInteract(record,true,state?.pointerEvent);return;}const x=state?.pointerX;const y=state?.pointerY;if(!state?.pointerActive||!Number.isFinite(x)||!Number.isFinite(y)||(state?.suppressHoverUntil||0)>performance.now()){_unhighlightRootInteract(record,true,state?.pointerEvent);return;}const now=performance.now();const pointerSeq=state?.pointerSeq??0;const hoverInterval=record._rootInteractHovered?36:64;if(now-(record._rootLastMeshHoverCheckAt||0)<hoverInterval){return;}if(record._rootLastMeshHoverPointerSeq===pointerSeq&&now-(record._rootLastMeshHoverCheckAt||0)<120){return;}record._rootLastMeshHoverPointerSeq=pointerSeq;record._rootLastMeshHoverCheckAt=now;const hits=_raycastRootInteractiveAt(record,rect,x,y,cfg);for(const hit of hits){const matched=_findRootInteractiveHit(record,rect,hit.object,cfg);if(matched){_highlightRootInteract(record,matched.obj,matched.config,state?.pointerEvent);return;}}_scheduleUnhighlightRootInteract(record,state?.pointerEvent);}function _syncRootMeshInteractionFrame(record,cfg,dt){if(!record)return;_ensureRootInteractionState(record);const active=record._rootHoverLerp;const leaving=record._rootHoverLerpOut;if(dt>0){if(active.mesh){const speed=active.config?.hoverSpeed??10;active.progress+=(1-active.progress)*Math.min(1,dt*speed);if(Math.abs(1-active.progress)<.001)active.progress=1;_applyRootHoverLerp(active);}if(leaving.mesh){const speed=leaving.config?.hoverSpeed??10;leaving.progress+=(0-leaving.progress)*Math.min(1,dt*speed);if(leaving.progress<.001)_snapRootHoverChannel(leaving);else _applyRootHoverLerp(leaving);}if(record._rootDragSnapBack?.mesh&&record._rootDragSnapBack?.targetPos){const snap=record._rootDragSnapBack;snap.mesh.position.lerp(snap.targetPos,Math.min(1,dt*8));if(snap.mesh.position.distanceTo(snap.targetPos)<5e-4){snap.mesh.position.copy(snap.targetPos);record._rootDragSnapBack=null;}}}let hasAnyInteractions=!!cfg?.hasEnabledMeshInteractions;if(!hasAnyInteractions&&record.subScenes){for(const[,entry]of record.subScenes){if(entry?._rootOwnRuntimeCfg?.hasEnabledMeshInteractions){hasAnyInteractions=true;break;}}}if(!hasAnyInteractions)return;const items=[...cfg?.meshInteractionItems||[]];if(record.subScenes){for(const[,entry]of record.subScenes){const subCfg=entry?._rootOwnRuntimeCfg;if(subCfg?.hasEnabledMeshInteractions&&subCfg.meshInteractionItems){items.push(...subCfg.meshInteractionItems);}}}if(!items.length)return;if(record._rootMeshInteractionApplyKey!==_rootInteractionCacheKey(record,cfg)){record._rootMeshInteractionApplyKey=_rootInteractionCacheKey(record,cfg);record._rootMeshInteractionTargets=new Map;for(const item of items){const name=String(item?.meshName||\"\").trim().toLowerCase();if(!name||record._rootMeshInteractionTargets.has(name))continue;let matched=null;const roots=[record.model];if(record.subScenes){for(const[,entry]of record.subScenes)roots.push(entry?.group);}for(const root of roots){if(matched||!root)continue;root.traverse?.(node=>{if(matched)return;if(node===root)return;if(String(node?.name||\"\").toLowerCase().includes(name)){matched=node;}});}record._rootMeshInteractionTargets.set(name,matched);}}for(const item of items){const name=String(item?.meshName||\"\").trim().toLowerCase();const target=record._rootMeshInteractionTargets?.get?.(name);if(!target)continue;if(item.autoRotate&&dt>0){const speed=(item.meshAutoRotateSpeed??1)*dt;const axis=item.meshAutoRotateAxis||\"y\";if(axis===\"x\")target.rotation.x+=speed;else if(axis===\"z\")target.rotation.z+=speed;else target.rotation.y+=speed;}if(item.mouseRotate&&!cfg.responsiveIsMobile){if(!target._rootInteractMouseOrig){target._rootInteractMouseOrig={x:target.rotation.x,y:target.rotation.y};}const intensity=item.meshMouseRotateIntensity??.1;target.rotation.y=target._rootInteractMouseOrig.y+(record._rootMouseX||0)*intensity;target.rotation.x=target._rootInteractMouseOrig.x+(record._rootMouseY||0)*intensity*.5;}}}function _applyRootMeshHoverTransforms(record){if(!record)return;const active=record._rootHoverLerp;const leaving=record._rootHoverLerpOut;const press=record._rootPressLerp;const resetMeshes=new Set;const tryReset=channel=>{if(channel?.mesh&&!resetMeshes.has(channel.mesh)){resetMeshes.add(channel.mesh);if(!channel.mesh._meshAnimOrigPos){if(channel.origPosition)channel.mesh.position.copy(channel.origPosition);if(channel.origRotation)channel.mesh.rotation.copy(channel.origRotation);if(channel.origScale)channel.mesh.scale.copy(channel.origScale);}}};tryReset(active);tryReset(leaving);tryReset(press);if(active?.mesh)_applyRootHoverLerp(active);if(leaving?.mesh)_applyRootHoverLerp(leaving);if(press?.mesh)_applyRootHoverLerp(press);}function _rootMeshAnimationCacheKey(record,cfg){const parts=[record?.model?.uuid||\"no-main\",cfg?.meshAnimationLookupKey||\"\"];if(record?.subScenes){for(const[key,entry]of record.subScenes){parts.push(`${key}:${entry?.group?.uuid||\"none\"}:${entry?.group?.visible!==false}`);}}return parts.join(\"|\");}function _syncRootMeshAnimations(record,cfg){if(!record)return;record._rootMeshAnimationSmoothingActive=false;if(!cfg?.hasEnabledMeshAnimations)return;const items=cfg.meshAnimationItems||[];if(!items.length)return;if(!record._rootMeshSmooth)record._rootMeshSmooth=new Map;const cacheKey=_rootMeshAnimationCacheKey(record,cfg);if(record._rootMeshAnimationMatchKey!==cacheKey){record._rootMeshAnimationMatchKey=cacheKey;record._rootMeshAnimationTargets=new Map;const roots=[record.model];if(record.subScenes){for(const[,entry]of record.subScenes)roots.push(entry?.group);}for(const anim of items){const name=String(anim?.meshName||\"\").trim().toLowerCase();if(!name||record._rootMeshAnimationTargets.has(name))continue;let matched=null;for(const root of roots){if(matched||!root)continue;root.traverse?.(node=>{if(matched)return;if(node===root)return;if((node?.isMesh||node?.isGroup||node?.isObject3D)&&String(node?.name||\"\").toLowerCase().includes(name)){matched=node;}});}record._rootMeshAnimationTargets.set(name,matched);}}const lerpFactor=cfg.enableScrollAnimation?Math.max(.001,Math.min(1,cfg.scrollSmoothing||.05)):1;const degToRad=Math.PI/180;let hasSmoothingDelta=false;for(const anim of items){const meshName=String(anim?.meshName||\"\").trim();if(!meshName)continue;const key=meshName.toLowerCase();const target=record._rootMeshAnimationTargets?.get?.(key);if(!target)continue;const desired=_getMeshAnimationDesired(anim,_getObjectEventScrollProgress(anim.scrollMatch,null,anim.scrollAnchorY));const scrollMatch=String(anim?.scrollMatch??\"\").trim();let smooth=record._rootMeshSmooth.get(key);if(!smooth||smooth._scrollMatch!==scrollMatch){// A mesh can keep its name while its Scroll ID changes. Do not\n// carry the previous target's eased transform into the new\n// scroll source.\nsmooth={...desired,_scrollMatch:scrollMatch};record._rootMeshSmooth.set(key,smooth);}else{const currentScaleX=smooth.scaleX??smooth.scale??1;const currentScaleY=smooth.scaleY??smooth.scale??1;const currentScaleZ=smooth.scaleZ??smooth.scale??1;if(lerpFactor<1&&(Math.abs(desired.posX-smooth.posX)>.001||Math.abs(desired.posY-smooth.posY)>.001||Math.abs(desired.posZ-smooth.posZ)>.001||Math.abs(desired.rotX-smooth.rotX)>.001||Math.abs(desired.rotY-smooth.rotY)>.001||Math.abs(desired.rotZ-smooth.rotZ)>.001||Math.abs(desired.scaleX-currentScaleX)>.001||Math.abs(desired.scaleY-currentScaleY)>.001||Math.abs(desired.scaleZ-currentScaleZ)>.001||Math.abs(desired.opacity-(smooth.opacity??1))>.001)){hasSmoothingDelta=true;}smooth.posX+=(desired.posX-smooth.posX)*lerpFactor;smooth.posY+=(desired.posY-smooth.posY)*lerpFactor;smooth.posZ+=(desired.posZ-smooth.posZ)*lerpFactor;smooth.rotX+=(desired.rotX-smooth.rotX)*lerpFactor;smooth.rotY+=(desired.rotY-smooth.rotY)*lerpFactor;smooth.rotZ+=(desired.rotZ-smooth.rotZ)*lerpFactor;if(smooth.scaleX===undefined){const legacyScale=smooth.scale??1;smooth.scaleX=legacyScale;smooth.scaleY=legacyScale;smooth.scaleZ=legacyScale;}smooth.scaleX+=(desired.scaleX-smooth.scaleX)*lerpFactor;smooth.scaleY+=(desired.scaleY-smooth.scaleY)*lerpFactor;smooth.scaleZ+=(desired.scaleZ-smooth.scaleZ)*lerpFactor;smooth.opacity+=(desired.opacity-smooth.opacity)*lerpFactor;}if(target._meshAnimOrigPos===undefined){target._meshAnimOrigPos=target.position.clone();target._meshAnimOrigRot=target.rotation.clone();target._meshAnimOrigScale=target.scale.clone();}target.position.x=target._meshAnimOrigPos.x+smooth.posX;target.position.y=target._meshAnimOrigPos.y+smooth.posY;target.position.z=target._meshAnimOrigPos.z+smooth.posZ;target.rotation.x=target._meshAnimOrigRot.x+smooth.rotX*degToRad;target.rotation.y=target._meshAnimOrigRot.y+smooth.rotY*degToRad;target.rotation.z=target._meshAnimOrigRot.z+smooth.rotZ*degToRad;target.scale.x=target._meshAnimOrigScale.x*Math.max(.001,smooth.scaleX);target.scale.y=target._meshAnimOrigScale.y*Math.max(.001,smooth.scaleY);target.scale.z=target._meshAnimOrigScale.z*Math.max(.001,smooth.scaleZ);const opacity=Math.max(0,Math.min(1,smooth.opacity));if(target._meshAnimLastOpacity!==opacity){let opacityTargets=target._meshAnimOpacityTargets;if(!opacityTargets){opacityTargets=target.isMesh?[target]:[];if(!target.isMesh){target.traverse?.(node=>{if(node?.isMesh&&node.material)opacityTargets.push(node);});}target._meshAnimOpacityTargets=opacityTargets;}for(const node of opacityTargets){const mats=Array.isArray(node.material)?node.material:[node.material];mats.forEach(mat=>{if(!mat)return;mat.opacity=opacity;mat.transparent=opacity<1||!!mat.transparent;mat.needsUpdate=true;});}target._meshAnimLastOpacity=opacity;}}record._rootMeshAnimationSmoothingActive=hasSmoothingDelta;}function _findRootMeshHelperGroup(record,hitObj){const parent=hitObj?.parent;if(parent&&parent!==record?.scene&&parent!==record?.model&&!parent.isMesh){return parent;}return hitObj;}function _buildRootMeshHelperInfo(record,hitObj,rect,x,y){if(!record||!hitObj||!rect)return null;const group=_findRootMeshHelperGroup(record,hitObj);const name=group?.name||hitObj?.name||\"<unnamed>\";const type=hitObj?.isSkinnedMesh?\"SkinnedMesh\":\"Mesh\";const groupMeshes=[];if(group?.isMesh)groupMeshes.push(group);else{group?.traverse?.(child=>{if(child?.isMesh)groupMeshes.push(child);});}let verts=0;for(const mesh of groupMeshes){const attr=mesh?.geometry?.getAttribute?.(\"position\");if(attr)verts+=attr.count||0;}let mat=\"\";if(hitObj?.material){if(Array.isArray(hitObj.material)){mat=hitObj.material.map(material=>material?.name||material?.type||\"\").filter(Boolean).join(\", \");}else{mat=hitObj.material.name||hitObj.material.type||\"\";}}let path=name;let current=group?.parent;while(current&&current!==record.scene){if(current.name)path=`${current.name} › ${path}`;current=current.parent;}return{x:x-rect.left,y:y-rect.top,screenX:x,screenY:y,name,type,verts,mat,path};}function _countRootDescendantMeshes(node){let count=0;node?.traverse?.(child=>{if(child?.isMesh)count++;});return count;}function _buildRootMeshHelperTree(record){if(!record)return[];const rows=[];const roots=[];if(record.model)roots.push(record.model);if(record.subScenes){for(const[,entry]of record.subScenes){if(entry?.group)roots.push(entry.group);}}const visit=(node,depth)=>{if(!node||rows.length>=240)return;if(node.isMesh){const attr=node.geometry?.getAttribute?.(\"position\");rows.push({name:node.name||\"<unnamed>\",type:node.isSkinnedMesh?\"SkinnedMesh\":\"Mesh\",depth,verts:attr?.count||0,isGroup:false});return;}const childMeshCount=_countRootDescendantMeshes(node);if(node.name&&childMeshCount>0){rows.push({name:node.name,type:\"Group\",depth,verts:0,isGroup:true,childMeshCount});}const nextDepth=node.name?depth+1:depth;for(const child of node.children||[])visit(child,nextDepth);};roots.forEach(root=>visit(root,0));return rows;}function _playRootMeshClickAnimation(record,config,event,obj){const clipName=String(config?.clickAnimClip||\"\").trim();if(!clipName||!record?.mixer||!record.animations?.length)return;const clip=_findAnimationClip(record.animations,clipName);if(!clip)return;const action=record.mixer.clipAction(clip);if(action?.isRunning?.()){if(action._meshCompleteListener){record.mixer.removeEventListener(\"finished\",action._meshCompleteListener);action._meshCompleteListener=null;}action.stop();return;}if(action._meshCompleteListener){record.mixer.removeEventListener(\"finished\",action._meshCompleteListener);action._meshCompleteListener=null;}const loopMode=config.clickAnimLoop??\"once\";if(loopMode===\"repeat\"){action.setLoop(THREE.LoopRepeat,Infinity);action.clampWhenFinished=false;}else if(loopMode===\"pingPong\"){action.setLoop(THREE.LoopPingPong,Infinity);action.clampWhenFinished=false;}else{action.setLoop(THREE.LoopOnce,1);action.clampWhenFinished=true;}action.timeScale=config.clickAnimReverse?-1:1;if(config.clickAnimReverse){action.time=clip.duration;}if(loopMode===\"once\"&&config.onAnimationComplete){const onFinished=evt=>{if(evt?.action!==action)return;record.mixer.removeEventListener(\"finished\",onFinished);action._meshCompleteListener=null;_emitRootMeshInteractionEvent(config,\"onAnimationComplete\",event,obj);};record.mixer.addEventListener(\"finished\",onFinished);action._meshCompleteListener=onFinished;}action.reset();if(config.clickAnimReverse){action.time=clip.duration;action.paused=false;}action.play();}function _applyRootMeshClickAction(record,config,event,obj){const action=config?.clickAction??\"none\";if(action===\"openUrl\"){const url=config.clickUrl??\"\";if(url){if(config.clickUrlNewTab)window.open(url,\"_blank\",\"noopener\");else window.location.href=url;}}else if(action===\"toggleVisibility\"){const targetName=String(config.clickTargetMesh||\"\").trim().toLowerCase();if(!targetName){obj.visible=!obj.visible;_markRootHoverMeshesDirty(record);return;}const toggle=node=>{if(!node)return;node.traverse?.(child=>{if(String(child?.name||\"\").toLowerCase().includes(targetName)){child.visible=!child.visible;}});};toggle(record.model);if(record.subScenes){for(const[,entry]of record.subScenes)toggle(entry?.group);}_markRootHoverMeshesDirty(record);}else if(action===\"changeColor\"){const meshes=_collectRootChildMeshes(obj);const applied=!!obj._interactColorApplied;for(const mesh of meshes){if(applied){_restoreMaterial(mesh);}else if(mesh.material){_backupMaterial(mesh);const mats=Array.isArray(mesh.material)?mesh.material:[mesh.material];const color=parseColor(config.clickColor??\"#ff0000\");mats.forEach(mat=>{if(mat?.color)mat.color.copy(color);});}}obj._interactColorApplied=!applied;}else if(action===\"playAnimation\"){_playRootMeshClickAnimation(record,config,event,obj);}}function _getRootAnimationOnceProxy(record){if(!record)return null;if(!record._rootAnimationOnceProxy){record._rootAnimationOnceProxy=event=>{const handler=record._rootLatestSlotRuntimeSettings?.onAnimationOnceComplete||record._rootLatestSlotProps?.onAnimationOnceComplete;if(!handler)return;handler(event);};}return record._rootAnimationOnceProxy;}function _setRootModelHoverActive(record,slot,active,eventLike=null,immediate=false){if(!record)return;if(active&&record._rootModelHoverEndTimer){clearTimeout(record._rootModelHoverEndTimer);record._rootModelHoverEndTimer=null;record._rootModelHoverPendingEndEvent=null;}if(!active&&immediate&&record._rootModelHoverEndTimer){clearTimeout(record._rootModelHoverEndTimer);record._rootModelHoverEndTimer=null;record._rootModelHoverPendingEndEvent=null;}const wasInitialized=record._rootModelHoverInitialized===true;const nextSlotId=active?slot?.id||\"\":\"\";const prevSlot=record._rootModelHoverSlot||slot;const prevSlotId=record._rootModelHoverSlotId||\"\";const sameHoverTarget=wasInitialized&&record._rootModelHoverActive===active&&(!active||prevSlotId===nextSlotId);if(sameHoverTarget){if(active&&slot)record._rootModelHoverSlot=slot;return;}if(!active&&wasInitialized&&!immediate){record._rootModelHoverPendingEndEvent=eventLike;if(record._rootModelHoverEndTimer)return;record._rootModelHoverEndTimer=setTimeout(()=>{record._rootModelHoverEndTimer=null;const pendingEvent=record._rootModelHoverPendingEndEvent;record._rootModelHoverPendingEndEvent=null;_setRootModelHoverActive(record,slot,false,pendingEvent,true);},90);return;}if(active&&wasInitialized&&record._rootModelHoverActive&&prevSlotId&&prevSlotId!==nextSlotId){const prevHandler=_getRootModelHoverHandler(prevSlot,false);if(prevHandler){try{if(eventLike)prevHandler(eventLike);else prevHandler();}catch(error){console.warn(\"[Import_3D_Canvas_Root] model hover handler failed\",error);}}}record._rootModelHoverInitialized=true;record._rootModelHoverActive=active;record._rootModelHoverSlot=active?slot:null;record._rootModelHoverSlotId=active?nextSlotId:\"\";record._modelHoverRaycastActive=active;if(record.subScenes){for(const[,entry]of record.subScenes){entry._modelHoverRaycastActive=active;}}if(!wasInitialized&&!active)return;const eventSlot=active?slot:prevSlot;const handler=_getRootModelHoverHandler(eventSlot,active);if(!handler)return;try{if(eventLike)handler(eventLike);else handler();}catch(error){console.warn(\"[Import_3D_Canvas_Root] model hover handler failed\",error);}}function _syncRootModelHover(record,slot,rect,state){const cfg=record?._rootRuntimeCfg;const needsHover=_rootSlotNeedsModelHover(slot,cfg);if(!needsHover||!record?.camera||!rect){_setRootModelHoverActive(record,slot,false,null,true);return;}const x=state?.pointerX;const y=state?.pointerY;const pointerActive=!!state?.pointerActive;const pointerInside=pointerActive&&Number.isFinite(x)&&Number.isFinite(y)&&x>=rect.left&&x<=rect.right&&y>=rect.top&&y<=rect.bottom;if(!pointerInside){_setRootModelHoverActive(record,slot,false,state?.pointerEvent,true);return;}const now=performance.now();if((state?.suppressHoverUntil||0)>now){return;}const pointerSeq=state?.pointerSeq??0;const hoverRectSig=[Math.round(rect.left),Math.round(rect.top),Math.round(rect.width),Math.round(rect.height),record._rootHoverMeshVersion||0].join(\"|\");const hoverCheckInterval=record._rootModelHoverActive?96:64;if(record._rootLastHoverRectSig===hoverRectSig&&now-(record._rootLastHoverCheckAt||0)<hoverCheckInterval){return;}if(record._rootLastHoverPointerSeq===pointerSeq&&record._rootLastHoverRectSig===hoverRectSig){return;}record._rootLastHoverPointerSeq=pointerSeq;record._rootLastHoverRectSig=hoverRectSig;record._rootLastHoverCheckAt=now;const hits=_raycastRootInteractiveAt(record,rect,x,y,cfg);if(hits.length>0){const hoverSlot=_findRootModelHoverSlotFromHits(record,slot,hits,cfg);if(hoverSlot){_setRootModelHoverActive(record,hoverSlot,true,state?.pointerEvent);return;}}_setRootModelHoverActive(record,slot,false,state?.pointerEvent);}function _resetRootModelHoverGateState(holder,clipName=\"\"){if(!holder)return;holder._modelHoverGateInitialized=false;holder._modelHoverBaseAnimationClip=clipName;holder._modelHoverPendingAnimationClip=clipName;}function _resolveRootModelHoverGatedClip(holder,cfg,clipName){if(!cfg?.animationModelHoverGate||cfg?.animationMode!==\"single\"){_resetRootModelHoverGateState(holder,String(clipName??\"\"));return clipName;}const requestedClip=String(clipName??\"\");if(!holder._modelHoverGateInitialized){holder._modelHoverGateInitialized=true;holder._modelHoverBaseAnimationClip=requestedClip;}holder._modelHoverPendingAnimationClip=requestedClip;if(holder._modelHoverRaycastActive){return requestedClip;}return holder._modelHoverBaseAnimationClip||holder._activeAnimationClipName||requestedClip;}function _getRootAnimationOnceCallback(holder,requestSig,callback){if(holder._rootAnimationOnceCallbackSig!==requestSig||holder._rootAnimationOnceCallbackSource!==callback){holder._rootAnimationOnceCallbackSig=requestSig;holder._rootAnimationOnceCallbackSource=callback;holder._rootAnimationOnceCallback=event=>{holder._rootAnimationOnceCompletedSig=requestSig;callback?.(event);};}return holder._rootAnimationOnceCallback;}function _getRootAnimationOnceAllCallback(holder,requestSig,callback){if(holder._rootAnimationOnceAllCallbackSig!==requestSig||holder._rootAnimationOnceAllCallbackSource!==callback){holder._rootAnimationOnceAllCallbackSig=requestSig;holder._rootAnimationOnceAllCallbackSource=callback;holder._rootAnimationOnceAllCallback=event=>{holder._rootAnimationOnceCompletedSig=requestSig;callback?.(event);};}return holder._rootAnimationOnceAllCallback;}function _syncRootAnimations(holder,cfg){const animations=holder.animations||[];if(!holder.mixer||!animations.length||!(cfg?.enableAnimation??false)){if(holder._activeAnimationKey)holder.mixer?.stopAllAction?.();_clearAnimationOnceCompleteListener(holder,holder.mixer);holder._activeAnimationKey=\"\";holder._activeAnimationAction=null;holder._activeAnimationClipName=\"\";holder._lastAnimationRequestSig=\"\";holder._rootAnimationOnceCompletedSig=\"\";return;}const mode=cfg?.animationMode||\"all\";const clipName=_resolveRootModelHoverGatedClip(holder,cfg,cfg?.animationClip||\"\");const speed=cfg?.animationSpeed??1;const loopMode=cfg?.hasAnimationOnceCompleteHandler?\"once\":cfg?.animationLoopMode||\"repeat\";const normalizedLoopMode=String(loopMode||\"repeat\").toLowerCase();const restartOnSwitch=!!(cfg?.animationRestartOnSwitch||cfg?.hasAnimationOnceCompleteHandler);holder.mixer.timeScale=speed;if(mode===\"single\"){const clip=_findRootClip(animations,clipName);if(!clip){if(holder._activeAnimationKey)holder.mixer.stopAllAction();_clearAnimationOnceCompleteListener(holder,holder.mixer);holder._activeAnimationKey=\"\";holder._activeAnimationAction=null;holder._activeAnimationClipName=\"\";holder._lastAnimationRequestSig=\"\";holder._rootAnimationOnceCompletedSig=\"\";return;}const blendDuration=Math.max(0,cfg?.animationBlendDuration??.35);const actionKey=`${clip.name}|${loopMode}`;const requestSig=[\"single\",actionKey,blendDuration,cfg?.animationWarp?1:0,cfg?.animationSyncPhase?1:0,restartOnSwitch?1:0,normalizedLoopMode===\"once\"?cfg?._animationReplayHash||\"\":\"\"].join(\"|\");const nextAction=holder.mixer.clipAction(clip);const requestChanged=holder._lastAnimationRequestSig!==requestSig;if(requestChanged){holder._rootAnimationOnceCompletedSig=\"\";}const onceAlreadyCompleted=normalizedLoopMode===\"once\"&&holder._rootAnimationOnceCompletedSig===requestSig;if(holder._activeAnimationKey===actionKey&&holder._lastAnimationRequestSig===requestSig){const activeAction=holder._activeAnimationAction||nextAction;_configureRootAnimationLoop(activeAction,loopMode);activeAction.enabled=true;if(!(normalizedLoopMode===\"once\"&&_isAnimationOnceActionComplete(activeAction))){activeAction.paused=false;}activeAction.setEffectiveTimeScale(1);if(!onceAlreadyCompleted&&!activeAction.isRunning()&&!(normalizedLoopMode===\"once\"&&_isAnimationOnceActionComplete(activeAction))){activeAction.play();}holder._activeAnimationAction=activeAction;holder._activeAnimationClipName=clip.name;if(normalizedLoopMode===\"once\"&&!onceAlreadyCompleted&&cfg?.hasAnimationOnceCompleteHandler&&cfg?.onAnimationOnceComplete){const onceCallback=_getRootAnimationOnceCallback(holder,requestSig,cfg.onAnimationOnceComplete);if(holder._animationOnceCompleteAction!==activeAction||holder._animationOnceCompleteCallback!==onceCallback){_bindAnimationOnceComplete(holder,holder.mixer,activeAction,onceCallback);}}else{_clearAnimationOnceCompleteListener(holder,holder.mixer);}return;}const prevAction=holder._activeAnimationAction||null;const sameAction=prevAction===nextAction;const seenAction=holder._animationActionCache?.has?.(actionKey);const hasPreviousClip=!!prevAction&&!sameAction;const canContinuePhase=hasPreviousClip&&normalizedLoopMode!==\"once\"&&!restartOnSwitch;const shouldSyncPhase=canContinuePhase&&(cfg?.animationSyncPhase||blendDuration>0);_configureRootAnimationLoop(nextAction,loopMode);nextAction.enabled=true;if(!(normalizedLoopMode===\"once\"&&_isAnimationOnceActionComplete(nextAction))){nextAction.paused=false;}nextAction.setEffectiveWeight(1);nextAction.setEffectiveTimeScale(1);const shouldRestart=restartOnSwitch||!prevAction&&!seenAction||normalizedLoopMode===\"once\"&&holder._lastAnimationRequestSig!==requestSig;if(shouldRestart){nextAction.reset();}else if(shouldSyncPhase){_syncRootAnimationPhase(prevAction,nextAction);}nextAction.play();if(sameAction){if(!nextAction.isRunning())nextAction.play();}else if(prevAction){if(blendDuration>0){prevAction.crossFadeTo(nextAction,blendDuration,!!cfg?.animationWarp);}else{prevAction.stop();}}else if(blendDuration>0){nextAction.fadeIn(blendDuration);}if(!holder._animationActionCache){holder._animationActionCache=new Set;}holder._animationActionCache.add(actionKey);holder._activeAnimationAction=nextAction;holder._activeAnimationKey=actionKey;holder._activeAnimationClipName=clip.name;holder._lastAnimationRequestSig=requestSig;if(normalizedLoopMode===\"once\"&&cfg?.hasAnimationOnceCompleteHandler&&cfg?.onAnimationOnceComplete){const onceCallback=_getRootAnimationOnceCallback(holder,requestSig,cfg.onAnimationOnceComplete);_bindAnimationOnceComplete(holder,holder.mixer,nextAction,onceCallback);}else{_clearAnimationOnceCompleteListener(holder,holder.mixer);}return;}const allRequestSig=[\"all\",loopMode,cfg?.hasAnimationOnceCompleteHandler?1:0,normalizedLoopMode===\"once\"?cfg?._animationReplayHash||\"\":\"\"].join(\"|\");if(holder._activeAnimationKey===\"all\"&&holder._lastAnimationRequestSig===allRequestSig){return;}holder.mixer.stopAllAction();_clearAnimationOnceCompleteListener(holder,holder.mixer);const allActions=[];animations.forEach(clip=>{const action=holder.mixer.clipAction(clip);_configureRootAnimationLoop(action,loopMode);action.enabled=true;action.paused=false;action.reset().play();allActions.push(action);});if(normalizedLoopMode===\"once\"&&cfg?.hasAnimationOnceCompleteHandler&&cfg?.onAnimationOnceComplete){const onceCallback=_getRootAnimationOnceAllCallback(holder,allRequestSig,cfg.onAnimationOnceComplete);_bindAnimationOnceCompleteActions(holder,holder.mixer,allActions,onceCallback);}holder._activeAnimationAction=null;holder._activeAnimationKey=\"all\";holder._activeAnimationClipName=\"\";holder._lastAnimationRequestSig=allRequestSig;holder._rootAnimationOnceCompletedSig=\"\";}function _safeSyncRootAnimations(holder,cfg,label=\"model\"){if(!holder)return;try{_syncRootAnimations(holder,cfg);holder._rootAnimationSyncErrorSig=\"\";}catch(error){const errorSig=[label,cfg?.animationMode||\"\",cfg?.animationClip||\"\",cfg?.animationLoopMode||\"\"].join(\"|\");if(holder._rootAnimationSyncErrorSig!==errorSig){holder._rootAnimationSyncErrorSig=errorSig;console.warn(\"[Import_3D_Canvas_Root] animation sync failed; rendering model without animation sync\",error);}holder._lastAnimationRequestSig=\"\";}}function _safeUpdateRootMixer(holder,dt,label=\"model\"){if(!holder?.mixer)return;try{holder.mixer.update(dt);holder._rootMixerUpdateError=false;}catch(error){if(!holder._rootMixerUpdateError){holder._rootMixerUpdateError=true;console.warn(`[Import_3D_Canvas_Root] mixer update failed for ${label}; keeping render loop alive`,error);}}}function _safeSyncRootModelHover(record,slot,rect,state){try{_syncRootModelHover(record,slot,rect,state);record._rootHoverSyncError=false;}catch(error){if(!record._rootHoverSyncError){record._rootHoverSyncError=true;console.warn(\"[Import_3D_Canvas_Root] hover/state sync failed; keeping render loop alive\",error);}}}function _rootSubSceneHashFromItems(items=[]){return(items||[]).map((item,index)=>{const url=_rootSubSceneUrlFromItem(item);return`${index}:${url}`;}).join(\"|\");}function _rootSubSceneHash(props,runtimeCfg=null){return _rootSubSceneHashFromItems(_getRootRuntimeSceneItems(props,runtimeCfg));}function _rootHasRenderableSubScenes(props,runtimeCfg=null){const items=_getRootRuntimeSceneItems(props,runtimeCfg);return items.some(item=>{const url=_rootSubSceneUrlFromItem(item);return!!url;});}function _getRootSubSceneSmoothedItem(entry,item,cfg){const resolved=resolveThreeJSRuntimeSubSceneItem(item)||{};const target={scale:resolved.scale??1,offX:resolved.offX??0,offY:resolved.offY??0,offZ:resolved.offZ??0,rotX:resolved.rotX??0,rotY:resolved.rotY??0,rotZ:resolved.rotZ??0};if(!cfg?.enableScrollAnimation){entry._rootScrollSmoothingActive=false;return target;}if(entry._rootSmoothFrameId===entry._rootFrameId&&entry._smoothState){return entry._smoothState;}if(!entry._smoothState){entry._smoothState={...target};entry._rootSmoothFrameId=entry._rootFrameId;entry._rootScrollSmoothingActive=false;return entry._smoothState;}const live=entry._smoothState;const smooth=Math.max(0,Math.min(1,cfg.scrollSmoothing??.05));if(smooth>=1){entry._smoothState={...target};entry._rootSmoothFrameId=entry._rootFrameId;entry._rootScrollSmoothingActive=false;return entry._smoothState;}// Feature-enabled is not the same as currently moving: let the root\n// renderer sleep once this sub-scene has eased to its latest target.\nlet hasSmoothingDelta=false;for(const key of Object.keys(target)){if(Math.abs(target[key]-live[key])>.001){hasSmoothingDelta=true;}live[key]+=(target[key]-live[key])*smooth;}entry._rootScrollSmoothingActive=hasSmoothingDelta;entry._rootSmoothFrameId=entry._rootFrameId;return live;}function _applyRootSubSceneTransform(entry,item,props,parent,mainGroundY=0,rectWidth=0,positionState=null,record=null,runtimeCfg=null){const group=entry?.group;if(!group)return;entry._rootFrameId=record?._rootFrameId||entry._rootFrameId||0;const local=_getRootSubSceneSmoothedItem(entry,item,runtimeCfg);const parentToMain=!!(item?.parentToMain??item?.parent);const parentPivot=parentToMain&&(item?.parentPivot??item?.pivotMode)===\"main\"?\"main\":\"own\";const parentCurrent=parent?.userData?._rootBaseTransform||{};const baseScale=((parentToMain?parent?.userData?._rootNormalizeScale:group.userData?._rootNormalizeScale)||1)*((parentToMain?parent?.userData?._rootFitRatio:group.userData?._rootFitRatio)||1);const parentScale=parentToMain?parentCurrent.scale??1:1;const parentOffX=parentToMain?parentCurrent.offX??0:0;const parentOffY=parentToMain?parentCurrent.offY??0:0;const parentOffZ=parentToMain?parentCurrent.offZ??0:0;const parentRotX=parentToMain?parentCurrent.rotX??0:0;const parentRotY=parentToMain?parentCurrent.rotY??0:0;const parentRotZ=parentToMain?parentCurrent.rotZ??0:0;const localOffX=local.offX;const localOffY=local.offY;const localOffZ=local.offZ;const localRotX=local.rotX;const localRotY=local.rotY;const localRotZ=local.rotZ;const useScale=parentScale*local.scale;const useOffX=parentOffX+localOffX;const useOffY=parentOffY+localOffY;const useOffZ=parentOffZ+localOffZ;const useRotX=parentRotX+localRotX;const useRotY=parentRotY+localRotY;const useRotZ=parentRotZ+localRotZ;group.visible=item?.visible!==false;if(!group.visible)return;const effectiveScale=baseScale*Math.max(.01,useScale);_cacheRootObjectBaseBounds(group);group.scale.setScalar(effectiveScale);const center={x:(group.userData?._rootBaseCenterX||0)*effectiveScale,y:(group.userData?._rootBaseCenterY||0)*effectiveScale,z:(group.userData?._rootBaseCenterZ||0)*effectiveScale};const minY=(group.userData?._rootBaseMinY||0)*effectiveScale;if(item?.__groupAnchor){group.position.set(-center.x+useOffX+(item.__groupAnchor.x||0),-center.y+useOffY+(item.__groupAnchor.y||0),-center.z+useOffZ);}else if(parentToMain&&parentPivot===\"main\"){// Reuse shared scratch objects (state.tsx) instead of allocating a\n// fresh Euler/Vector3/Quaternion per sub-scene per frame — mirrors\n// Slot's identical pivot math in slotRuntime.tsx.\n_tmpSubScenePivotEuler.set(parentRotX*Math.PI/180,parentRotY*Math.PI/180,parentRotZ*Math.PI/180,\"XYZ\");_tmpSubScenePivotQuat.setFromEuler(_tmpSubScenePivotEuler);_tmpSubScenePivotOffset.set(-center.x+localOffX,mainGroundY-minY+localOffY,-center.z+localOffZ).applyQuaternion(_tmpSubScenePivotQuat);group.position.set(parentOffX+_tmpSubScenePivotOffset.x,parentOffY+_tmpSubScenePivotOffset.y,parentOffZ+_tmpSubScenePivotOffset.z);}else{group.position.set(-center.x+useOffX,mainGroundY-minY+useOffY,-center.z+useOffZ);}group.rotation.set(useRotX*Math.PI/180,useRotY*Math.PI/180,useRotZ*Math.PI/180);_applyRootPositionToObject(group,positionState);}function _syncRootSubScenes(record,props,runtimeCfg=null,sceneItems=null){const items=sceneItems||_getRootRuntimeSceneItems(props,runtimeCfg||record?._rootRuntimeCfg);const nextHash=_rootSubSceneHashFromItems(items);if(record._subSceneHash===nextHash)return;record._subSceneHash=nextHash;const wanted=new Set;items.forEach((item,index)=>{const url=_rootSubSceneUrlFromItem(item);if(!url)return;const key=`${index}|${url}`;wanted.add(key);if(record.subScenes.has(key))return;const placeholder={key,index,url,group:null,mixer:null,animations:[],_rootOwnRuntimeCfg:item?.__groupRuntimeCfg||null,_rootGroupSlotProps:item?.__groupSlotProps||null,_rootGroupRuntimeSettings:item?.__groupRuntimeSettings||null,_animationActionCache:new Set,_activeAnimationAction:null,_activeAnimationKey:\"\",_activeAnimationClipName:\"\",_lastAnimationRequestSig:\"\"};record.subScenes.set(key,placeholder);_loadRootModel(url).then(loaded=>{if(!record.subScenes.has(key))return;const group=SkeletonUtils.clone(loaded.object);const normalizeScale=_centerAndNormalizeRootModel(group);const fitRatio=record.model?.userData?._rootFitRatio||1;const normalizedSize=_computeMeshOnlyBoundingBox(group).getSize(new THREE.Vector3);_prepareRootModel(group);_cacheRootObjectBaseBounds(group);group.userData._rootFormat=loaded.format||\"\";group.userData._rootNormalizeScale=normalizeScale;group.userData._rootNormalizedSize=normalizedSize.clone();group.userData._rootFitRatio=fitRatio;group.userData._rootGroupSlotProps=item?.__groupSlotProps||null;group.userData._rootGroupRuntimeSettings=item?.__groupRuntimeSettings||null;group.userData._rootGroupSlotId=item?.__groupSlotId||\"\";group.visible=item?.visible!==false;placeholder.group=group;placeholder.animations=_sanitizeAnimationClipsForObject(group,loaded.animations||[]);placeholder._loaded=true;placeholder.loadedUrl=url;if(placeholder.animations.length){placeholder.mixer=new THREE.AnimationMixer(group);}record.scene.add(group);_markRootHoverMeshesDirty(record);const runtimeCfg=item?.__groupRuntimeCfg||record._rootRuntimeCfg||_resolveRootRuntimeConfig(props,0);_applyRootCanonicalMaterial(group,runtimeCfg);placeholder._rootOwnRuntimeCfg=item?.__groupRuntimeCfg||null;placeholder._rootGroupRuntimeSettings=item?.__groupRuntimeSettings||null;placeholder._rootOwnMaterialHash=runtimeCfg?._materialHash??materialHash(runtimeCfg);}).catch(error=>{console.warn(\"[Import_3D_Canvas_Root] sub-scene load failed\",error);});});for(const[key,entry]of record.subScenes){if(wanted.has(key))continue;if(entry.group)record.scene.remove(entry.group);if(entry.group)_disposeMaterialsOnly(entry.group);entry.mixer?.stopAllAction?.();record.subScenes.delete(key);_markRootHoverMeshesDirty(record);}}// Bridge state management functions now use global _getImport3DBridgeState, _emitImport3DBridge, _subscribeImport3DBridge, _snapshotImport3DBridge\n/**\n     * @framerSupportedLayoutWidth any-prefer-fixed\n     * @framerSupportedLayoutHeight any-prefer-fixed\n     * @framerIntrinsicWidth 200\n     * @framerIntrinsicHeight 40\n     *\n     * @framerDisableUnlink\n     */function Import_3D_Canvas_Root(props){const{style={},mode=\"coordinator\",desktopSlots=3,mobileSlots=2,mobileBreakpoint=768,qualityMode=\"balanced\",dprCapDesktop=1.5,dprCapMobile=1.2,pauseHidden=true,pauseOffscreen=true,destroyOffscreen=false,destroyAfterMs=2e4,canvasZIndex=10,nativeAntialias=false,debug=false}=props;const rootCanvasRef=React.useRef(null);const rootInstanceIdRef=React.useRef(`root-${Math.random().toString(36).slice(2,9)}`);const[bridgeInfo,setBridgeInfo]=React.useState(()=>_snapshotImport3DBridge());const[rootHelper,setRootHelper]=React.useState({tooltip:null,tree:[],meshCount:0});const rootHelperRef=React.useRef(rootHelper);rootHelperRef.current=rootHelper;const isOnFramerCanvas=useIsOnFramerCanvas();const isCanvasTarget=getFramerRuntimeMode(isOnFramerCanvas)===\"canvas\";React.useEffect(()=>{if(mode===\"renderer\")return;const empty={tooltip:null,tree:[],meshCount:0,_sig:\"\"};rootHelperRef.current=empty;setRootHelper(empty);},[mode]);useBrowserLayoutEffect(()=>{const bridge=_getImport3DBridgeState();const syncBridge=()=>{const isMobile=typeof window!==\"undefined\"?(window.innerWidth||0)<=mobileBreakpoint:false;const nextBudget=isMobile?mobileSlots:desktopSlots;bridge.renderMode=mode;bridge._rendererModeAnnounced=mode===\"renderer\";bridge.contextBudget=nextBudget>0?nextBudget:null;bridge.qualityMode=qualityMode||\"balanced\";bridge.dprCapDesktop=dprCapDesktop>0?Number(dprCapDesktop):null;bridge.dprCapMobile=dprCapMobile>0?Number(dprCapMobile):null;bridge.pauseHidden=!!pauseHidden;bridge.pauseOffscreen=!!pauseOffscreen;bridge.destroyOffscreen=!!destroyOffscreen;bridge.destroyAfterMs=Math.max(0,Number(destroyAfterMs)||0);bridge.rendererDebug=!!debug;_emitImport3DBridge();};bridge.rootCount=(bridge.rootCount||0)+1;if(bridge.rootCount>1){console.warn(`[Import_3D] Multiple ThreeJSRuntimeRoot components detected (count: ${bridge.rootCount}). Only ONE root should be used per page to avoid renderer conflicts. Extra roots will be blocked.`);}syncBridge();if(typeof window!==\"undefined\"){window.addEventListener(\"resize\",syncBridge,{passive:true});}return()=>{const nextBridge=_getImport3DBridgeState();nextBridge.rootCount=Math.max(0,(nextBridge.rootCount||0)-1);if(nextBridge.rootCount===0){nextBridge.contextBudget=null;nextBridge.rendererState=null;nextBridge.qualityMode=\"balanced\";nextBridge.dprCapDesktop=null;nextBridge.dprCapMobile=null;nextBridge.pauseHidden=true;nextBridge.pauseOffscreen=true;nextBridge.destroyOffscreen=false;nextBridge.destroyAfterMs=2e4;nextBridge.rendererDebug=false;nextBridge._rendererModeAnnounced=false;nextBridge.renderMode=\"coordinator\";}_emitImport3DBridge();if(typeof window!==\"undefined\"){window.removeEventListener(\"resize\",syncBridge);}};},[mode,desktopSlots,mobileSlots,mobileBreakpoint,qualityMode,dprCapDesktop,dprCapMobile,pauseHidden,pauseOffscreen,destroyOffscreen,destroyAfterMs,debug]);React.useEffect(()=>{if(typeof window===\"undefined\")return;const bridge=_getImport3DBridgeState();if(mode!==\"renderer\"){bridge.rendererState=null;_emitImport3DBridge();return;}let rafId=0;let lastActiveId=\"\";const bootStartedAt=performance.now();let lastBootEmitAt=0;const pointerState={x:-1,y:-1,active:false,event:null,seq:0};const scrollState={lastLeft:Number.NaN,lastTop:Number.NaN,suppressHoverUntil:0};const clamp01=value=>Math.max(0,Math.min(1,Number.isFinite(value)?value:0));const onPointerMove=event=>{pointerState.x=event?.clientX??-1;pointerState.y=event?.clientY??-1;pointerState.active=true;pointerState.event=event||null;pointerState.seq+=1;};const onPointerLeave=()=>{pointerState.active=false;pointerState.x=-1;pointerState.y=-1;pointerState.event=null;pointerState.seq+=1;};const suspendHoverForScroll=()=>{scrollState.suppressHoverUntil=performance.now()+520;};window.addEventListener(\"pointermove\",onPointerMove,{passive:true});window.addEventListener(\"mousemove\",onPointerMove,{passive:true});window.addEventListener(\"pointerleave\",onPointerLeave,{passive:true});window.addEventListener(\"wheel\",suspendHoverForScroll,{passive:true});window.addEventListener(\"touchmove\",suspendHoverForScroll,{passive:true});const tick=()=>{const rawSlots=Array.from(bridge.slots?.values?.()||[]);const primaryScrollContainer=rawSlots.find(slot=>slot?.scrollContainer)?.scrollContainer||null;const metrics=_getRootScrollMetrics(primaryScrollContainer);const viewportWidth=metrics.viewportWidth;const viewportHeight=metrics.viewportHeight;const viewportCenterY=metrics.viewportTop+metrics.viewportHeight/2;const padPx=viewportHeight*_ROOT_SCROLL_CANVAS_PADDING;const currentScrollLeft=metrics.scrollLeft||0;const currentScrollTop=metrics.scrollTop||0;const scrollChanged=!Number.isFinite(scrollState.lastLeft)||!Number.isFinite(scrollState.lastTop)||Math.abs(currentScrollLeft-scrollState.lastLeft)>.5||Math.abs(currentScrollTop-scrollState.lastTop)>.5;if(scrollChanged){scrollState.lastLeft=currentScrollLeft;scrollState.lastTop=currentScrollTop;suspendHoverForScroll();}const hoverSuppressed=scrollState.suppressHoverUntil>performance.now();const measuredSlots=rawSlots.map(slot=>{const el=slot?.element;if(!el?.getBoundingClientRect)return null;const slotWebglActive=_isRootSlotWebglEnabled(slot);const rect=el.getBoundingClientRect();const domOpacity=_getRootEffectiveDomOpacity(el);const pointerInside=pointerState.active&&pointerState.x>=rect.left&&pointerState.x<=rect.right&&pointerState.y>=rect.top&&pointerState.y<=rect.bottom;const canCheckPointerHit=pointerInside&&!hoverSuppressed&&!!document.elementFromPoint;const hitNode=canCheckPointerHit?document.elementFromPoint(pointerState.x,pointerState.y):null;const pointerHit=!!(pointerInside&&hitNode&&el.contains?.(hitNode));const visible=slotWebglActive&&rect.bottom>metrics.viewportTop-padPx&&rect.top<metrics.viewportBottom+padPx&&rect.right>metrics.viewportLeft&&rect.left<metrics.viewportRight&&domOpacity>.001;const distance=Math.abs(rect.top+rect.height/2-viewportCenterY);const localProgress=clamp01((metrics.viewportHeight-(rect.top-metrics.viewportTop))/Math.max(1,metrics.viewportHeight+rect.height));const visibleHeight=Math.min(rect.bottom,metrics.viewportBottom)-Math.max(rect.top,metrics.viewportTop);const visibility=clamp01(visibleHeight/Math.max(1,rect.height));const slotProps=slot?.props||{};const interaction=slotProps.interaction||{};return{id:slot.id,updatedAt:slot.updatedAt||0,rect:{top:rect.top,left:rect.left,width:rect.width,height:rect.height,right:rect.right,bottom:rect.bottom},localRect:{left:rect.left-metrics.viewportLeft,top:rect.top-metrics.viewportTop,width:rect.width,height:rect.height,right:rect.right-metrics.viewportLeft,bottom:rect.bottom-metrics.viewportTop},visible,pointerHit,domOpacity,visibility,distance,localProgress,hasRenderableModel:slotWebglActive&&!!_rootRecordKeyForSlot(slot),debug:{animationClip:slotProps.animClip??interaction.animClip??\"\",animationMode:String(slotProps.animClip??interaction.animClip??\"\").trim()?\"single\":\"all\",animationEnabled:true,animationHoverGate:false}};}).filter(Boolean);const activeSlot=measuredSlots.filter(slot=>slot.visible).sort((a,b)=>{const priority=_compareRootVariantPriority(a,b);if(priority!==0)return priority;return a.distance-b.distance;})[0]||measuredSlots.sort((a,b)=>{const priority=_compareRootVariantPriority(a,b);if(priority!==0)return priority;return a.distance-b.distance;})[0]||null;const maxScroll=Math.max(1,(metrics.scrollContainer?.scrollHeight||0)-(metrics.scrollContainer?.clientHeight||0));const scrollTop=currentScrollTop;const scrollProgress=clamp01(scrollTop/maxScroll);bridge.rendererState={mode:\"renderer\",activeSlotId:activeSlot?.id||\"\",activeRect:activeSlot?.rect||null,activeLocalRect:activeSlot?.localRect||null,activeProgress:activeSlot?.localProgress??0,activeVisibility:activeSlot?.visibility??0,scrollContainer:metrics.scrollContainer,isDocumentScroll:metrics.isDocument,scrollLeft:metrics.scrollLeft,scrollTop,scrollProgress,viewportWidth,viewportHeight,viewportLeft:metrics.viewportLeft,viewportTop:metrics.viewportTop,viewportRight:metrics.viewportRight,viewportBottom:metrics.viewportBottom,containerRect:metrics.containerRect,canvasPaddingRatio:_ROOT_SCROLL_CANVAS_PADDING,canvasPaddingPx:padPx,canvasHeight:viewportHeight+padPx*2,suppressHoverUntil:scrollState.suppressHoverUntil,pointerActive:!!pointerState.active,pointerX:pointerState.x,pointerY:pointerState.y,pointerEvent:pointerState.event,pointerSeq:pointerState.seq,slots:measuredSlots,preloadSlots:measuredSlots.filter(slot=>slot.hasRenderableModel).sort(_compareRootPreloadOrder).slice(0,Math.max(8,bridge.contextBudget||0)),debugSlots:measuredSlots.filter(slot=>slot.visible).slice(0,8).map(slot=>({id:slot.id,pointerHit:!!slot.pointerHit,domOpacity:Number(slot.domOpacity||0).toFixed(3),visibility:Number(slot.visibility||0).toFixed(3),animOn:!!slot.debug?.animationEnabled,hoverGate:!!slot.debug?.animationHoverGate,animMode:slot.debug?.animationMode||\"\",animClip:slot.debug?.animationClip||\"\"})),updatedAt:performance.now()};const now=performance.now();if(debug||(activeSlot?.id||\"\")!==lastActiveId){lastActiveId=activeSlot?.id||\"\";_emitImport3DBridge();}else if(now-bootStartedAt<3e3&&now-lastBootEmitAt>250){lastBootEmitAt=now;_emitImport3DBridge();}rafId=window.requestAnimationFrame(tick);};tick();return()=>{if(rafId)window.cancelAnimationFrame(rafId);window.removeEventListener(\"pointermove\",onPointerMove);window.removeEventListener(\"mousemove\",onPointerMove);window.removeEventListener(\"pointerleave\",onPointerLeave);window.removeEventListener(\"wheel\",suspendHoverForScroll);window.removeEventListener(\"touchmove\",suspendHoverForScroll);bridge.rendererState=null;_emitImport3DBridge();};},[mode]);React.useEffect(()=>{if(typeof window===\"undefined\")return;// UX Fix: Do not initialize the shared renderer on the Framer Design Canvas.\n// In the editor, slots handle their own rendering (standalone) for better UX.\n// We use RenderTarget.current() directly for maximum reliability in distinguishing Canvas vs Preview.\nif(mode!==\"renderer\"||RenderTarget.current()===RenderTarget.canvas)return;_installRootPreloadBridge();const bridge=_getImport3DBridgeState();// Guard: only the first root component should create renderer\nif((bridge.rootCount||0)>1){console.warn(`[Import_3D] Skipping renderer creation for duplicate root (rootCount: ${bridge.rootCount}). Only the first ThreeJSRuntimeRoot creates the shared renderer.`);return;}const rootOwnerId=rootInstanceIdRef.current;const canvas=document.createElement(\"canvas\");rootCanvasRef.current=canvas;canvas.setAttribute(\"data-import-3d-root-canvas\",\"true\");canvas.setAttribute(\"data-import-3d-renderer-owner\",rootOwnerId);canvas.style.position=\"absolute\";canvas.style.left=\"0\";canvas.style.top=\"0\";canvas.style.display=\"none\";canvas.style.pointerEvents=\"none\";canvas.style.zIndex=String(canvasZIndex??10);canvas.style.transform=\"translate3d(0,0,0)\";canvas.style.willChange=\"transform\";const renderer=new THREE.WebGLRenderer({canvas,alpha:true,antialias:!!nativeAntialias,powerPreference:\"high-performance\",premultipliedAlpha:true,stencil:false});renderer.setClearColor(0,0);renderer.__import3DRendererOwner=rootOwnerId;_debugImport3DRendererEvent(\"create\",{role:\"root\",ownerId:rootOwnerId,canvas,bridgeMode:bridge.renderMode,renderTarget:RenderTarget.current(),rootCount:bridge.rootCount||0,slotCount:bridge.slots?.size||0,forceLog:!!debug});const isMobile=(window.innerWidth||0)<=mobileBreakpoint;renderer.setPixelRatio(Math.min(window.devicePixelRatio||1,isMobile?dprCapMobile||1.2:dprCapDesktop||1.5));renderer.setScissorTest(true);let rafId=0;let lastWidth=0;let lastHeight=0;let lastDpr=0;let lastRootPerfLog=0;let lastPrewarmAt=0;// Track local rects rendered in the previous frame so we can clear\n// stale regions (slots that disappeared/moved) without a full canvas clear.\nlet lastRenderedLocalRects=[];const records=new Map;const preloadSigs=new Map;// Mirrors Slot's performancePauseHidden/performancePauseOffscreen\n// (slotRuntime.tsx). One shared page-visibility flag for all records\n// (tab visibility is global) plus a per-record IntersectionObserver\n// so an individual slot that scrolls off-screen can be paused while\n// other slots sharing this Root canvas keep rendering.\nlet rootPageVisible=typeof document===\"undefined\"?true:!document.hidden;const onRootVisibilityChange=()=>{rootPageVisible=!document.hidden;};document.addEventListener(\"visibilitychange\",onRootVisibilityChange);const rootRecordObservers=new Map;const _ensureRootRecordObserver=(record,slot)=>{if(!record||!slot?.element||typeof IntersectionObserver===\"undefined\")return;if(record._rootObservedElement===slot.element)return;const prevObserver=rootRecordObservers.get(record.key);prevObserver?.disconnect?.();record._rootInViewport=true;const observer=new IntersectionObserver(([entry])=>{record._rootInViewport=!!entry?.isIntersecting;},{threshold:[0,.01]});observer.observe(slot.element);rootRecordObservers.set(record.key,observer);record._rootObservedElement=slot.element;};const groupedRuntimeCfgCache=new Map;let groupedRenderViewsSig=\"\";let groupedRenderViewsCache=[];let disposed=false;let hostNode=null;let documentCanvasClipper=null;let patchedPositionHost=null;let patchedPositionPrev=\"\";const restorePatchedHost=()=>{if(patchedPositionHost){patchedPositionHost.style.position=patchedPositionPrev;patchedPositionHost=null;patchedPositionPrev=\"\";}};// Uses the top-level getFramerRuntimeMode() with the\n// React-hook-derived isOnFramerCanvas for accurate detection.\nconst getRuntimeMode=()=>getFramerRuntimeMode(isOnFramerCanvas);const getDocumentCanvasHeight=state=>{const scrollEl=document.scrollingElement||document.documentElement||document.body;const scrollTop=scrollEl?.scrollTop||window.scrollY||state?.scrollTop||0;let contentBottom=Math.max(1,Math.ceil(window.innerHeight||state?.viewportHeight||1));for(const child of Array.from(document.body.children)){if(child===documentCanvasClipper||child===canvas){continue;}if(!(child instanceof HTMLElement))continue;const style=window.getComputedStyle(child);if(style.position===\"fixed\")continue;const rect=child.getBoundingClientRect();if(rect.width<=0&&rect.height<=0)continue;contentBottom=Math.max(contentBottom,Math.ceil(rect.bottom+scrollTop),Math.ceil(child.offsetTop+Math.max(child.scrollHeight,child.offsetHeight)));}if(!documentCanvasClipper?.parentElement){contentBottom=Math.max(contentBottom,Math.ceil(scrollEl?.scrollHeight||0),Math.ceil(document.documentElement?.scrollHeight||0),Math.ceil(document.body?.scrollHeight||0));}return Math.max(1,contentBottom);};const ensureDocumentCanvasClipper=state=>{if(!documentCanvasClipper){documentCanvasClipper=document.createElement(\"div\");documentCanvasClipper.setAttribute(\"data-import-3d-root-canvas-clipper\",\"true\");documentCanvasClipper.style.position=\"absolute\";documentCanvasClipper.style.left=\"0\";documentCanvasClipper.style.top=\"0\";documentCanvasClipper.style.width=\"100%\";documentCanvasClipper.style.overflow=\"hidden\";documentCanvasClipper.style.pointerEvents=\"none\";documentCanvasClipper.style.zIndex=String(canvasZIndex??10);documentCanvasClipper.style.contain=\"paint\";}const framerRuntimeMode=getRuntimeMode();if(framerRuntimeMode===\"canvas\"||framerRuntimeMode===\"preview\"){documentCanvasClipper.style.height=document.documentElement.scrollHeight+\"px\";}else{documentCanvasClipper.style.height=`${getDocumentCanvasHeight(state)}px`;}if(documentCanvasClipper.parentElement!==document.body){document.body.appendChild(documentCanvasClipper);}return documentCanvasClipper;};const ensureCanvasHost=state=>{if(state?.isDocumentScroll){restorePatchedHost();const clipper=ensureDocumentCanvasClipper(state);if(canvas.parentElement&&canvas.parentElement!==clipper){canvas.parentElement.removeChild(canvas);}if(canvas.parentElement!==clipper){clipper.appendChild(canvas);}canvas.style.zIndex=\"0\";hostNode=clipper;return;}const nextHost=state&&!state.isDocumentScroll&&state.scrollContainer?state.scrollContainer:document.body;if(!nextHost||nextHost===hostNode)return;if(canvas.parentElement&&canvas.parentElement!==nextHost){canvas.parentElement.removeChild(canvas);}if(nextHost!==document.body&&nextHost instanceof HTMLElement&&window.getComputedStyle(nextHost).position===\"static\"){restorePatchedHost();patchedPositionHost=nextHost;patchedPositionPrev=nextHost.style.position||\"\";nextHost.style.position=\"relative\";}else if(patchedPositionHost&&patchedPositionHost!==nextHost){restorePatchedHost();}nextHost.appendChild(canvas);canvas.style.zIndex=String(canvasZIndex??10);hostNode=nextHost;};const ensureRootMainModelLoaded=(record,slot,rect,runtimeCfg,recordKey)=>{const url=_rootModelUrlFromProps(slot.props);if(!url){record.loadedUrl=\"\";record.loadingUrl=\"\";if(_rootHasRenderableSubScenes(slot.props,runtimeCfg)){_syncRootSubScenes(record,slot.props,runtimeCfg);}return;}if(record.loadedUrl===url&&record.model)return;if(record.loadingUrl===url&&record._rootLoadPromise)return;if(record._rootNextLoadRetryAt&&performance.now()<record._rootNextLoadRetryAt){return;}record.loadingUrl=url;record._rootNextLoadRetryAt=0;if(!_rootModelCache.has(url)){_notifyRootModelLoadingStart();}record._rootLoadPromise=_loadRootModel(url).then(loaded=>{if(disposed||records.get(recordKey)!==record)return;if(record.model){record.scene.remove(record.model);record.mixer?.stopAllAction?.();}const model=SkeletonUtils.clone(loaded.object);const safeAnimations=_sanitizeAnimationClipsForObject(model,loaded.animations||[]);const normalizeScale=_centerAndNormalizeRootModel(model);const fitCamera=_makeRootCamera(runtimeCfg,rect.width/Math.max(1,rect.height));const normalizedSize=_computeMeshOnlyBoundingBox(model).getSize(new THREE.Vector3);const fitRatio=_getAutoFitRatio(fitCamera,normalizedSize);_prepareRootModel(model);// OPTIMIZATION: Geometry Instancing and Merging for Static Models\nif(runtimeCfg.autoMergeMeshes&&safeAnimations.length===0){_optimizeStaticGeometries(model);}// OPTIMIZATION: BVH Generation for Fast Raycasting\n_computeBVHForModel(model);// OPTIMIZATION (Issue #5): Disable matrixAutoUpdate for internal meshes\n// if the model is completely static (no animations). This saves CPU matrix\n// calculation time every frame. The root model handles the slot's layout transform.\nif(safeAnimations.length===0){model.traverse(child=>{if(child.isMesh&&!child.isSkinnedMesh){child.updateMatrix();child.matrixAutoUpdate=false;}});}_cacheRootObjectBaseBounds(model);model.userData._rootFormat=loaded.format||\"\";model.userData._rootNormalizeScale=normalizeScale;model.userData._rootNormalizedSize=normalizedSize.clone();model.userData._rootFitRatio=fitRatio;record.model=model;record.animations=safeAnimations;record.mixer=record.animations.length?new THREE.AnimationMixer(model):null;record._animationActionCache=new Set;record._activeAnimationAction=null;record._activeAnimationKey=\"\";record._activeAnimationClipName=\"\";record._lastAnimationRequestSig=\"\";if(_rootShouldAnimateAppear(runtimeCfg)){record._rootAppearPendingReplay=true;}record.loadedUrl=url;record.loadingUrl=\"\";record._rootLoadPromise=null;record.scene.add(model);_markRootHoverMeshesDirty(record);_applyRootSlotTransform(model,slot.props,rect.width);// NOTE: Slot's progressive-loading placeholder swap\n// (_storeAndReplacePlaceholder/_restoreProgressiveMaterials)\n// relies on a single shared, non-reentrant module-level\n// cache in materialSystem.tsx that gets fully cleared on\n// every call. That's safe for Slot (one model at a time\n// per component instance) but not for Root, which can\n// load multiple slots concurrently on the same shared\n// renderer — a second slot's load wipes the first slot's\n// cache entry, permanently stranding it on the gray\n// placeholder material. Root intentionally does NOT mirror\n// progressive loading until materialSystem.tsx supports\n// concurrent/keyed placeholder state.\n_applyRootCanonicalMaterial(model,runtimeCfg);_safeSyncRootAnimations(record,runtimeCfg,\"main-load\");_syncRootSubScenes(record,slot.props,runtimeCfg);// Compile shaders asynchronously so the first render frame\n// does not block the main thread with GPU shader compilation.\n// _rootShaderReady=false prevents renderThreeJSRuntimeScene\n// from issuing any draw calls until compile is done.\nrecord._rootShaderReady=false;// CRITICAL: Sync the visual pipeline (environment maps, lights, etc.)\n// BEFORE compiling. If we compile without the env map, the shader\n// lacks USE_ENVMAP. When the next frame applies the env map, the\n// pre-compiled shader is invalidated, causing a synchronous stall!\n_syncRootVisualRuntimePipeline(record,runtimeCfg,renderer);const _compileCamera=fitCamera||record.camera;const _compileAsync=renderer.compileAsync?.bind?.(renderer);if(_compileAsync&&_compileCamera){_compileAsync(record.scene,_compileCamera).catch(()=>{}).finally(()=>{record._rootShaderReady=true;requestAnimationFrame(()=>{requestAnimationFrame(_notifyRootModelLoadingComplete);});});}else{// No async compile — do sync compile now (outside RAF),\n// so the cost is paid in the loader microtask, not render loop.\nif(_compileCamera){try{renderer.compile(record.scene,_compileCamera);}catch(_e){/* */}}record._rootShaderReady=true;requestAnimationFrame(()=>{requestAnimationFrame(_notifyRootModelLoadingComplete);});}}).catch(error=>{record.loadingUrl=\"\";record._rootLoadPromise=null;record._rootNextLoadRetryAt=performance.now()+1e3;_notifyRootModelLoadingComplete();console.warn(\"[Import_3D_Canvas_Root] model load failed\",error);});};const getRecord=(slot,rect)=>{const recordKey=_rootRecordKeyForSlot(slot);if(!recordKey)return null;const runtimeCfg=_resolveRootRuntimeConfig(slot?.props,rect?.width||0);let record=records.get(recordKey);if(!record){record=_makeRootScene(runtimeCfg,rect.width/Math.max(1,rect.height));record.slotId=slot.id;record.key=recordKey;_ensureRootRuntimeAdapter(record,renderer);records.set(recordKey,record);}record._rootRuntimeCfg=runtimeCfg;_ensureRootRecordObserver(record,slot);ensureRootMainModelLoaded(record,slot,rect,runtimeCfg,recordKey);return record;};const createThreeJSRuntimeScene=(slot,rect)=>{return getRecord(slot,rect);};const prewarmThreeJSRuntimeScene=(slot,measured,record)=>{if(!slot?.props||!record||measured?.visible)return false;if(!record.model&&record.subScenes?.size===0)return false;const rect=measured?.rect;if(!rect||rect.width<=1||rect.height<=1)return false;const runtimeCfg=_resolveRootRuntimeConfig(slot.props,rect.width||0);const sig=[record.loadedUrl||\"\",record.model?.uuid||\"\",record.subScenes?.size||0,runtimeCfg?._sceneConfigHash||sceneConfigHash(runtimeCfg),Math.round(rect.width),Math.round(rect.height)].join(\"|\");if(record._rootPrewarmSig===sig||record._rootPrewarmBusy){return false;}record._rootPrewarmBusy=true;record._rootPrewarmSig=sig;try{const aspect=rect.width/Math.max(1,rect.height);record.camera=_getRootCamera(record,runtimeCfg,aspect);_syncRootVisualRuntimePipeline(record,runtimeCfg,renderer);if(record.model){if(record.model.userData?._rootNormalizedSize){record.model.userData._rootFitRatio=_getAutoFitRatio(record.camera,record.model.userData._rootNormalizedSize);}_applyRootSlotTransform(record.model,slot.props,rect.width,null,record,runtimeCfg);_warmAnimationActions(record,record.mixer,record.animations||[],runtimeCfg);}for(const[,entry]of record.subScenes||[]){if(!entry?.group)continue;_warmAnimationActions(entry,entry.mixer,entry.animations||[],runtimeCfg);}const compileAsync=renderer.compileAsync?.bind?.(renderer);if(compileAsync){compileAsync(record.scene,record.camera).catch(()=>{}).finally(()=>{record._rootPrewarmBusy=false;});}else{renderer.compile?.(record.scene,record.camera);record._rootPrewarmBusy=false;}return true;}catch(error){record._rootPrewarmBusy=false;record._rootPrewarmSig=\"\";console.warn(\"[Import_3D_Canvas_Root] preload prewarm failed\",error);return false;}};const preloadThreeJSRuntimeSceneModels=(slot,measured)=>{if(!slot?.props||!measured?.rect)return;const urls=new Set;const mainUrl=_rootModelUrlFromProps(slot.props);if(mainUrl)urls.add(mainUrl);const runtimeCfg=_resolveRootRuntimeConfig(slot.props,measured.rect?.width||0);for(const item of _getRootRuntimeSceneItems(slot.props,runtimeCfg)){const url=_rootSubSceneUrlFromItem(item);if(url)urls.add(url);}const sig=Array.from(urls).sort().join(\"|\");const preloadKey=slot.id||sig;if(!sig||preloadSigs.get(preloadKey)===sig)return;preloadSigs.set(preloadKey,sig);for(const url of urls){_preloadRootModel3D(url);}createThreeJSRuntimeScene(slot,measured.rect);};const disposeThreeJSRuntimeScene=(record,slot=null,options={})=>{if(!record)return;if(record._rootModelHoverEndTimer){clearTimeout(record._rootModelHoverEndTimer);record._rootModelHoverEndTimer=null;record._rootModelHoverPendingEndEvent=null;}if(record._rootModelHoverActive){_setRootModelHoverActive(record,slot,false,null,true);}_unhighlightRootInteract(record,false);if(options?.destroy){if(record.mixer){_clearAnimationOnceCompleteListener(record,record.mixer);record.mixer.stopAllAction?.();}if(record.model){record.scene?.remove?.(record.model);_disposeMaterialsOnly(record.model);record.model=null;}if(record.subScenes){for(const[,entry]of record.subScenes){if(entry?.mixer){_clearAnimationOnceCompleteListener(entry,entry.mixer);entry.mixer.stopAllAction?.();}if(entry?.group){record.scene?.remove?.(entry.group);_disposeMaterialsOnly(entry.group);}}record.subScenes.clear?.();}_releaseEnvironmentMap(record);if(record.extraLightObjects?.length){for(const light of record.extraLightObjects){record.scene?.remove?.(light);if(light.target&&light.isSpotLight){record.scene?.remove?.(light.target);}light.shadow?.map?.dispose?.();light.dispose?.();}record.extraLightObjects.length=0;}if(record.ground){record.scene?.remove?.(record.ground);record.ground.geometry?.dispose?.();record.ground.material?.dispose?.();record.ground=null;}_disposeRootHelperObject(record.gridHelper);_disposeRootHelperObject(record.axesHelper);_disposeRootHelperObject(record.modelAxesHelper);record.gridHelper=null;record.axesHelper=null;record.modelAxesHelper=null;_disposeRootPostFxPipeline(record);_removeStatsMonitor(record);if(record.key){rootRecordObservers.get(record.key)?.disconnect?.();rootRecordObservers.delete(record.key);}record._rootObservedElement=null;record.timer?.dispose?.();record.timer=null;record.animations=[];record._animationActionCache?.clear?.();record._activeAnimationAction=null;record._activeAnimationKey=\"\";record._activeAnimationClipName=\"\";record._lastAnimationRequestSig=\"\";record._rootDisposed=true;}record._rootWasRendered=false;};const clickState={x:-1,y:-1,time:0};const dragState={active:false,kind:\"\",record:null,slot:null,rect:null,obj:null,config:null,plane:null,offset:new THREE.Vector3,pointerId:null,lastX:-1,lastY:-1,moved:false};const endRootModelPressHover=event=>{for(const[,record]of records){if(!record?._rootModelHoverActive)continue;const cfg=record._rootRuntimeCfg||{};if(!_isMobileInteraction(event,cfg))continue;_setRootModelHoverActive(record,record._rootModelHoverSlot,false,event,true);}};const onRootPointerDown=event=>{const x=event?.clientX??-1;const y=event?.clientY??-1;clickState.x=x;clickState.y=y;clickState.time=performance.now();dragState.active=false;dragState.kind=\"\";dragState.record=null;dragState.slot=null;dragState.rect=null;dragState.obj=null;dragState.config=null;dragState.plane=null;dragState.pointerId=event?.pointerId??null;dragState.lastX=x;dragState.lastY=y;dragState.moved=false;if(!Number.isFinite(x)||!Number.isFinite(y))return;const isTouch=event?.pointerType===\"touch\";const measuredSlots=bridge.rendererState?.slots||[];const candidates=makeGroupedRenderViews(measuredSlots.filter(measured=>measured?.visible)).filter(measured=>{const rect=measured?.measured?.rect;if(!rect||!measured?.measured?.visible)return false;return x>=rect.left&&x<=rect.right&&y>=rect.top&&y<=rect.bottom;}).sort((a,b)=>{const priority=_compareRootVariantPriority(a.measured,b.measured);if(priority!==0)return priority;return(a.measured?.distance||0)-(b.measured?.distance||0);});for(const view of candidates){const{measured,slot}=view;if(!slot?.props)continue;const cfg=_resolveRootRuntimeConfig(slot.props,measured.rect?.width||0);const isModelPress=_isMobileInteraction(event,cfg)&&_rootSlotNeedsModelHover(slot,cfg);if(!(cfg?.enableOrbitControls??false)&&!_rootSlotHasEnabledMeshInteractions(slot,cfg)&&!isModelPress)continue;const record=createThreeJSRuntimeScene(slot,measured.rect);if(!record?.model&&!record?.subScenes?.size)continue;const hits=_raycastRootInteractiveAt(record,measured.rect,x,y,cfg);if(!hits.length)continue;if(isModelPress){const owner=_findRootGroupSlotInfo(record,hits[0].object);const pressSlot=owner?.props&&owner.props!==slot?.props?{id:owner.id||slot?.id||\"\",props:owner.props,runtimeSettings:owner.runtimeSettings||null,element:slot?.element,scrollContainer:slot?.scrollContainer}:slot;_setRootModelHoverActive(record,pressSlot,true,event);if(!_rootSlotHasEnabledMeshInteractions(slot,cfg)&&!(cfg?.enableOrbitControls??false)){return;}}if(_rootSlotHasEnabledMeshInteractions(slot,cfg)){for(const hit of hits){const matched=_findRootInteractiveHit(record,measured.rect,hit.object,cfg);if(!matched)continue;if(isTouch){_highlightRootInteract(record,matched.obj,matched.config,event);}_applyRootPressInteract(record,matched.obj,matched.config);if(matched.config?.draggable){_rootHoverRaycaster.ray.intersectPlane(_rootInteractionPlane.setFromNormalAndCoplanarPoint(matched.config.dragPlane===\"xy\"?_rootInteractionVecA.set(0,0,1):matched.config.dragPlane===\"yz\"?_rootInteractionVecA.set(1,0,0):matched.config.dragPlane===\"screen\"?record.camera.getWorldDirection(_rootInteractionVecA).negate():_rootInteractionVecA.set(0,1,0),matched.obj.position),_rootInteractionVecB);dragState.active=true;dragState.kind=\"mesh\";dragState.record=record;dragState.slot=slot;dragState.rect=measured.rect;dragState.obj=matched.obj;dragState.config=matched.config;dragState.plane=_rootInteractionPlane.clone();dragState.offset.copy(_rootInteractionVecB).sub(matched.obj.position);if(!matched.obj._interactOrigPos){matched.obj._interactOrigPos=matched.obj.position.clone();}_emitRootMeshInteractionEvent(matched.config,\"onDragStart\",event,matched.obj);return;}break;}}if(!isTouch&&(cfg?.enableOrbitControls??false)){dragState.active=true;dragState.kind=\"orbit\";dragState.record=record;dragState.slot=slot;dragState.rect=measured.rect;return;}}};const onRootPointerMove=event=>{if(!dragState.active||!dragState.record)return;if(dragState.pointerId!=null&&event?.pointerId!=null&&event.pointerId!==dragState.pointerId){return;}const x=event?.clientX??-1;const y=event?.clientY??-1;if(!Number.isFinite(x)||!Number.isFinite(y))return;const dx=x-dragState.lastX;const dy=y-dragState.lastY;if(Math.abs(dx)+Math.abs(dy)>.5)dragState.moved=true;dragState.lastX=x;dragState.lastY=y;if(dragState.kind===\"mesh\"&&dragState.obj&&dragState.plane){const rect=dragState.rect||bridge.rendererState?.slots?.find?.(slot=>slot.id===dragState.slot?.id)?.rect||null;if(!rect)return;_rootHoverMouse.x=(x-rect.left)/Math.max(1,rect.width)*2-1;_rootHoverMouse.y=-((y-rect.top)/Math.max(1,rect.height))*2+1;_rootHoverRaycaster.setFromCamera(_rootHoverMouse,dragState.record.camera);if(_rootHoverRaycaster.ray.intersectPlane(dragState.plane,_rootInteractionVecB)){_rootInteractionVecB.sub(dragState.offset);const constraint=dragState.config?.dragConstraint??0;const orig=dragState.obj._interactOrigPos;if(constraint>0&&orig){const dist=_rootInteractionVecB.distanceTo(orig);if(dist>constraint){_rootInteractionVecB.sub(orig).normalize().multiplyScalar(constraint).add(orig);}}dragState.obj.position.copy(_rootInteractionVecB);}return;}dragState.record._rootOrbitTheta=(dragState.record._rootOrbitTheta||0)-dx*.006;dragState.record._rootOrbitPhi=(dragState.record._rootOrbitPhi||0)-dy*.006;};const onRootPointerUp=event=>{const x=event?.clientX??-1;const y=event?.clientY??-1;const wasDragging=!!dragState.active&&!!dragState.moved;const dragKind=dragState.kind;const draggedRecord=dragState.record;const draggedObj=dragState.obj;const draggedConfig=dragState.config;for(const[,record]of records){_resetRootPressInteract(record);}dragState.active=false;dragState.kind=\"\";dragState.record=null;dragState.slot=null;dragState.rect=null;dragState.obj=null;dragState.config=null;dragState.plane=null;dragState.pointerId=null;if(dragKind===\"mesh\"&&draggedObj&&draggedConfig){if(draggedConfig.dragSnapBack&&draggedObj._interactOrigPos){draggedRecord._rootDragSnapBack={mesh:draggedObj,targetPos:draggedObj._interactOrigPos.clone()};}_emitRootMeshInteractionEvent(draggedConfig,\"onDragEnd\",event,draggedObj);if(event?.pointerType===\"touch\"){_unhighlightRootInteract(draggedRecord,true,event);}endRootModelPressHover(event);return;}endRootModelPressHover(event);if(!Number.isFinite(x)||!Number.isFinite(y))return;if(wasDragging)return;if(Math.abs(x-clickState.x)>8||Math.abs(y-clickState.y)>8||performance.now()-(clickState.time||0)>900){return;}const measuredSlots=bridge.rendererState?.slots||[];const candidates=makeGroupedRenderViews(measuredSlots.filter(measured=>measured?.visible)).filter(measured=>{const rect=measured?.measured?.rect;if(!rect||!measured?.measured?.visible)return false;return x>=rect.left&&x<=rect.right&&y>=rect.top&&y<=rect.bottom;}).sort((a,b)=>{const priority=_compareRootVariantPriority(a.measured,b.measured);if(priority!==0)return priority;return(a.measured?.distance||0)-(b.measured?.distance||0);});for(const view of candidates){const{measured,slot}=view;const record=createThreeJSRuntimeScene(slot,measured.rect);if(!record?.model&&!record?.subScenes?.size)continue;const cfg=record._rootRuntimeCfg||_resolveRootRuntimeConfig(slot?.props,measured.rect?.width||0);const hits=_raycastRootInteractiveAt(record,measured.rect,x,y,cfg);if(!hits.length)continue;const hitSlotInfo=_findRootGroupSlotInfo(record,hits[0].object);const hitSlotProps=hitSlotInfo?.props||slot?.props;const hitRuntime=hitSlotInfo?.runtimeSettings||hitSlotProps?.__import3DRuntimeSettings||null;const handler=hitSlotProps?.onModelClick||hitRuntime?.onModelClick;try{handler?.(event);}catch(error){console.warn(\"[Import_3D_Canvas_Root] model click handler failed\",error);}if(_rootSlotHasEnabledMeshInteractions(slot,cfg)){for(const hit of hits){const matched=_findRootInteractiveHit(record,measured.rect,hit.object,cfg);if(!matched)continue;_emitRootMeshInteractionEvent(matched.config,\"onMeshClick\",event,matched.obj);_applyRootMeshClickAction(record,matched.config,event,matched.obj);if(event?.pointerType===\"touch\"){_unhighlightRootInteract(record,true,event);}return;}}return;}};// Mirrors Slot's scroll-to-zoom gating (slotRuntime.tsx onCanvasWheel):\n// only capture the wheel event (and zoom) when the slot under the\n// cursor has enableZoom on and isn't using scroll-driven animation.\nconst onRootCanvasWheel=event=>{const x=event?.clientX??-1;const y=event?.clientY??-1;if(!Number.isFinite(x)||!Number.isFinite(y))return;const measuredSlots=bridge.rendererState?.slots||[];const candidates=makeGroupedRenderViews(measuredSlots.filter(measured=>measured?.visible)).filter(measured=>{const rect=measured?.measured?.rect;if(!rect||!measured?.measured?.visible)return false;return x>=rect.left&&x<=rect.right&&y>=rect.top&&y<=rect.bottom;});for(const view of candidates){const{measured,slot}=view;if(!slot?.props)continue;const cfg=_resolveRootRuntimeConfig(slot.props,measured.rect?.width||0);if(!cfg?.enableZoom||cfg?.enableScrollAnimation)continue;const record=createThreeJSRuntimeScene(slot,measured.rect);if(!record)continue;event.preventDefault?.();const factor=Math.exp((event.deltaY||0)*.0015);record._rootOrbitZoom=Math.max(.2,Math.min(4,(record._rootOrbitZoom??1)*factor));return;}};canvas.addEventListener(\"wheel\",onRootCanvasWheel,{passive:false});window.addEventListener(\"pointerdown\",onRootPointerDown,{passive:true});window.addEventListener(\"pointermove\",onRootPointerMove,{passive:true});window.addEventListener(\"pointerup\",onRootPointerUp,{passive:true});window.addEventListener(\"pointercancel\",onRootPointerUp,{passive:true});const renderThreeJSRuntimeScene=(record,measured,state)=>{const localRect=measured?.localRect;if(!record||!localRect)return;if(!record.model&&record.subScenes.size===0)return;// Skip rendering until async shader compilation completes.\n// _rootShaderReady is set to false after model load and true\n// once compileAsync resolves, preventing a synchronous GPU stall\n// on the first rendered frame.\nif(record._rootShaderReady===false)return;const padPx=state?.canvasPaddingPx||0;const viewLeft=localRect.left;const viewTop=localRect.top+padPx;const viewRight=viewLeft+localRect.width;const viewBottom=viewTop+localRect.height;const scissorLeft=Math.max(0,viewLeft);const scissorRight=Math.min(lastWidth,viewRight);const scissorTop=Math.max(0,viewTop);const scissorBottom=Math.min(lastHeight,viewBottom);const scissorWidth=scissorRight-scissorLeft;const scissorHeight=scissorBottom-scissorTop;if(scissorWidth<=1||scissorHeight<=1)return;renderer.setViewport(Math.round(viewLeft),Math.round(lastHeight-viewBottom),Math.round(localRect.width),Math.round(localRect.height));renderer.setScissor(Math.round(scissorLeft),Math.round(lastHeight-scissorBottom),Math.round(scissorWidth),Math.round(scissorHeight));const cfg=record._rootRuntimeCfg||_resolveRootRuntimeConfig(record._rootLatestSlotProps||{},localRect.width||0);// Apply per-slot Tone Mapping and Exposure to shared renderer\n// FIX: In bridge mode, switching tone mapping per-slot causes massive shader recompilation\n// every frame. We lock it to ACESFilmic globally to prevent stuttering.\nif(bridge.renderMode!==\"bridge\"){renderer.toneMapping=TONE_MAPPINGS[cfg.toneMapping]||THREE.ACESFilmicToneMapping;}else{renderer.toneMapping=THREE.ACESFilmicToneMapping;}renderer.toneMappingExposure=cfg.exposure;// Continuous Interaction Updates\nconst dt=_getRootTimerDelta(record);if(cfg.enableParticles){_rootUpdateParticles(record,cfg.particleSpeed||1,cfg.particleSpread||10);}if(cfg?.cameraType===\"stereo\"){if(!record.stereoCamera){record.stereoCamera=new THREE.StereoCamera;}record.stereoCamera.eyeSep=cfg?.stereoEyeSep??.064;record.stereoCamera.update(record.camera);const halfWidth=localRect.width/2;const renderEye=(eyeCamera,eyeIndex)=>{const eyeLeft=viewLeft+halfWidth*eyeIndex;const eyeRight=eyeLeft+halfWidth;const eyeScissorLeft=Math.max(0,eyeLeft);const eyeScissorRight=Math.min(lastWidth,eyeRight);const eyeScissorWidth=eyeScissorRight-eyeScissorLeft;if(eyeScissorWidth<=1||scissorHeight<=1)return;renderer.setViewport(Math.round(eyeLeft),Math.round(lastHeight-viewBottom),Math.round(halfWidth),Math.round(localRect.height));renderer.setScissor(Math.round(eyeScissorLeft),Math.round(lastHeight-scissorBottom),Math.round(eyeScissorWidth),Math.round(scissorHeight));renderer.render(record.scene,eyeCamera);};renderEye(record.stereoCamera.cameraL,0);renderEye(record.stereoCamera.cameraR,1);return;}const hasPostFx=_ensureRootPostFxPipeline(record,renderer,localRect.width,localRect.height,cfg);if(hasPostFx&&record._rootComposer){if(record._filmGrain?.enabled){record._filmGrain.uniforms.time.value=performance.now()*.001;}renderer.setRenderTarget(null);renderer.setViewport(Math.round(viewLeft),Math.round(lastHeight-viewBottom),Math.round(localRect.width),Math.round(localRect.height));renderer.setScissor(Math.round(scissorLeft),Math.round(lastHeight-scissorBottom),Math.round(scissorWidth),Math.round(scissorHeight));renderer.setScissorTest(true);record._rootComposer.renderToScreen=true;record._rootComposer.render();}else{renderer.render(record.scene,record.camera);}};const updateRootHelperOverlay=next=>{const tooltip=next?.tooltip||null;const tree=next?.tree||[];const sig=[tooltip?.name||\"\",tooltip?Math.round(tooltip.screenX||0):-1,tooltip?Math.round(tooltip.screenY||0):-1,tree.length,tree[0]?.name||\"\"].join(\"|\");if(rootHelperRef.current?._sig===sig)return;const value={tooltip,tree,meshCount:tree.filter(item=>!item.isGroup).length,_sig:sig};rootHelperRef.current=value;setRootHelper(value);};const syncRootHelperOverlay=(state,visibleViews)=>{if(!visibleViews?.length){updateRootHelperOverlay(null);return;}const pointerX=state?.pointerX;const pointerY=state?.pointerY;const pointerActive=!!state?.pointerActive&&Number.isFinite(pointerX)&&Number.isFinite(pointerY);let fallback=null;for(const view of visibleViews){const measured=view?.measured||view;const slot=view?.slot||bridge.slots?.get?.(measured.id);if(!slot?.props)continue;const cfg=_resolveRootRuntimeConfig(slot.props,measured.rect?.width||0);if(!cfg?.showMeshHelper)continue;const recordKey=_rootRecordKeyForSlot(slot);const record=recordKey?records.get(recordKey):null;if(!record||!record.model&&!record.subScenes?.size){continue;}const tree=_buildRootMeshHelperTree(record);if(!fallback)fallback={tooltip:null,tree};const rect=measured.rect;const inside=pointerActive&&rect&&pointerX>=rect.left&&pointerX<=rect.right&&pointerY>=rect.top&&pointerY<=rect.bottom;if(!inside)continue;const hits=_raycastRootInteractiveAt(record,rect,pointerX,pointerY,cfg);if(!hits.length){updateRootHelperOverlay({tooltip:null,tree});return;}const tooltip=_buildRootMeshHelperInfo(record,hits[0].object,rect,pointerX,pointerY);updateRootHelperOverlay({tooltip,tree});return;}updateRootHelperOverlay(fallback);};const syncThreeJSRuntimeScene=(slot,measured,state,useCanvasAppearStyle)=>{const rect=measured?.rect;const localRect=measured?.localRect;if(!slot?.props||!rect||!localRect||rect.width<=1||rect.height<=1){return;}const record=createThreeJSRuntimeScene(slot,rect);if(!record)return;record._rootLatestSlotProps=slot.props;record._rootLatestSlotRuntimeSettings=slot.runtimeSettings;record._rootFrameId=(record._rootFrameId||0)+1;const runtimeCfg=record._rootRuntimeCfg||_resolveRootRuntimeConfig(slot?.props,rect?.width||0);if(runtimeCfg?.hasAnimationOnceCompleteHandler){runtimeCfg.onAnimationOnceComplete=_getRootAnimationOnceProxy(record);}const rootSceneItems=_getRootRuntimeSceneItems(slot.props,runtimeCfg);_syncRootSubScenes(record,slot.props,runtimeCfg,rootSceneItems);const dt=_getRootTimerDelta(record);const aspect=rect.width/Math.max(1,rect.height);record.camera=_getRootCamera(record,runtimeCfg,aspect);_applyRootCameraSmoothing(record,runtimeCfg,rect.width);_applyRootOrbitCamera(record,runtimeCfg);_syncRootVisualRuntimePipeline(record,runtimeCfg,renderer,dt);_syncRootHelperRuntime(record,runtimeCfg);_syncRootMouseRotationState(record,rect,state);if(record._rootWasRendered===false&&_rootShouldAnimateAppear(runtimeCfg)){record._rootAppearPendingReplay=true;}record._rootWasRendered=true;const appearVisibility=_syncRootAppear(record,runtimeCfg);const domOpacity=Math.max(0,Math.min(1,measured?.domOpacity??1));record._rootDomOpacity=domOpacity;const renderVisibility=appearVisibility*domOpacity;const positionState=_getRootPositionState(record,slot.props,slot,rect,record.camera,runtimeCfg);if(record.model){if(record.model.userData?._rootNormalizedSize){record.model.userData._rootFitRatio=_getAutoFitRatio(record.camera,record.model.userData._rootNormalizedSize);}_applyRootSlotTransform(record.model,slot.props,rect.width,positionState,record,runtimeCfg);if(runtimeCfg.enableAutoRotate??false){const rotateSpeed=runtimeCfg.autoRotateSpeed??.5;record.model.userData._rootAutoRotateY=(record.model.userData._rootAutoRotateY||0)+dt*rotateSpeed;record.model.rotation.y+=record.model.userData._rootAutoRotateY;}else{record.model.userData._rootAutoRotateY=0;}const floatEnabled=runtimeCfg.enableFloat??false;if(floatEnabled){const speed=runtimeCfg.floatSpeed??.4;const amp=runtimeCfg.floatAmplitude??.8;const baseY=record.model.position.y;record.model.userData._rootFloatBaseY=baseY;record.model.position.y=baseY+Math.sin(performance.now()*.001*speed)*amp;}else{record.model.userData._rootFloatBaseY=record.model.position.y;}_resetRootAppearTransformOffset(record.model);_applyRootAppearTransformOffset(record.model,appearVisibility,runtimeCfg);_applyRootMouseRotation(record.model,record,runtimeCfg);_syncRootAppearDissolve(record.model,appearVisibility,runtimeCfg);const modelOpacityVisibility=runtimeCfg.dissolveEnabled?domOpacity:renderVisibility;_applyRootAppearOpacity(record.model,useCanvasAppearStyle?1:modelOpacityVisibility);_safeUpdateRootMixer(record,dt,\"main\");record._rootMainGroundY=record.model.userData?._rootBaseGroundWorldY??record.model.position.y+(record.model.userData?._rootBaseGroundY??0)-.001;}const sceneItems=rootSceneItems;for(const[key,entry]of record.subScenes){const index=Number(String(key).split(\"|\")[0]);const item=sceneItems[index]||{};if(!entry.group)continue;const itemRuntimeCfg=item?.__groupRuntimeCfg||runtimeCfg;const itemMeasured=item?.__groupMeasured||measured;const itemSlot=item?.__groupSlotProps?{id:item?.__groupSlotId||slot.id,props:item.__groupSlotProps,runtimeSettings:item?.__groupRuntimeSettings||null,element:slot.element,scrollContainer:slot.scrollContainer}:slot;entry._rootOwnRuntimeCfg=item?.__groupRuntimeCfg||null;entry._rootGroupSlotProps=item?.__groupSlotProps||null;entry._rootGroupRuntimeSettings=item?.__groupRuntimeSettings||null;const itemMaterialHash=itemRuntimeCfg?._materialHash??materialHash(itemRuntimeCfg);if(entry._rootOwnRuntimeCfg&&entry._rootOwnMaterialHash!==itemMaterialHash){_applyRootCanonicalMaterial(entry.group,itemRuntimeCfg);entry._rootOwnMaterialHash=itemMaterialHash;}if(entry.group.userData?._rootNormalizedSize){entry.group.userData._rootFitRatio=item?.parentToMain&&record.model?record.model.userData?._rootFitRatio||1:_getAutoFitRatio(record.camera,entry.group.userData._rootNormalizedSize);}const itemPositionState=item?.__groupRuntimeCfg?_getRootPositionState(record,item.__groupSlotProps||slot.props,itemSlot,itemMeasured?.rect||rect,record.camera,itemRuntimeCfg):positionState;entry.group.userData._rootGroupSlotProps=item?.__groupSlotProps||null;entry.group.userData._rootGroupRuntimeSettings=item?.__groupRuntimeSettings||null;entry.group.userData._rootGroupSlotId=item?.__groupSlotId||\"\";if(item?.__groupAnchorPx){const visible=_getAutoFitVisibleSize(record.camera,record.camera?.position?.length?.()||1);item.__groupAnchor={x:item.__groupAnchorPx.x/Math.max(1,rect.width||1)*visible.width,y:-item.__groupAnchorPx.y/Math.max(1,rect.height||1)*visible.height};}_applyRootSubSceneTransform(entry,item,slot.props,record.model,record._rootMainGroundY??0,itemMeasured?.rect?.width||rect.width,itemPositionState,record,itemRuntimeCfg);if(entry.group.visible===false)continue;if(itemRuntimeCfg.enableAutoRotate??false){const rotateSpeed=itemRuntimeCfg.autoRotateSpeed??.5;entry.group.userData._rootAutoRotateY=(entry.group.userData._rootAutoRotateY||0)+dt*rotateSpeed;entry.group.rotation.y+=entry.group.userData._rootAutoRotateY;}else{entry.group.userData._rootAutoRotateY=0;}if(itemRuntimeCfg.enableFloat??false){const speed=itemRuntimeCfg.floatSpeed??.4;const amp=itemRuntimeCfg.floatAmplitude??.8;const baseY=entry.group.position.y;entry.group.userData._rootFloatBaseY=baseY;entry.group.position.y=baseY+Math.sin(performance.now()*.001*speed)*amp;}else{entry.group.userData._rootFloatBaseY=entry.group.position.y;}const itemAppearVisibility=item?.__groupRuntimeCfg?_syncRootAppear(entry,itemRuntimeCfg):appearVisibility;const itemDomOpacity=Math.max(0,Math.min(1,itemMeasured?.domOpacity??measured?.domOpacity??1));const itemRenderVisibility=itemAppearVisibility*itemDomOpacity;_resetRootAppearTransformOffset(entry.group);_applyRootAppearTransformOffset(entry.group,itemAppearVisibility,itemRuntimeCfg);_applyRootMouseRotation(entry.group,record,itemRuntimeCfg);_syncRootAppearDissolve(entry.group,itemAppearVisibility,itemRuntimeCfg);const itemOpacityVisibility=itemRuntimeCfg.dissolveEnabled?itemDomOpacity:itemRenderVisibility;_applyRootAppearOpacity(entry.group,useCanvasAppearStyle?1:itemOpacityVisibility);_safeUpdateRootMixer(entry,dt,\"sub-scene\");}_safeSyncRootModelHover(record,slot,rect,state);_syncRootMeshHover(record,slot,rect,state,runtimeCfg);_syncRootMeshAnimations(record,runtimeCfg);_syncRootMeshInteractionFrame(record,runtimeCfg,dt);_applyRootMeshHoverTransforms(record);updateNimbusTech(record,slot.props,slot.element,rect,THREE);if(record.model){_safeSyncRootAnimations(record,runtimeCfg,\"main\");}const sceneItemsForAnimation=rootSceneItems;for(const[key,entry]of record.subScenes){const index=Number(String(key).split(\"|\")[0]);const item=sceneItemsForAnimation[index]||{};const baseRuntimeCfg=item?.__groupRuntimeCfg||runtimeCfg;const allowGroupedOnceComplete=!!(item?.__groupRuntimeCfg&&baseRuntimeCfg?.hasAnimationOnceCompleteHandler);const subAnimClip=item?.animClip||\"\";const subAnimCfg=item?.animOverride?{...baseRuntimeCfg,enableAnimation:true,animationMode:String(subAnimClip).trim()?\"single\":\"all\",animationClip:subAnimClip,animationSpeed:item.animSpeed??1,animationBlendDuration:item.animBlend??baseRuntimeCfg.animationBlendDuration,animationLoopMode:item.animLoopMode??baseRuntimeCfg.animationLoopMode,animationWarp:item.animWarp??baseRuntimeCfg.animationWarp,animationSyncPhase:item.animSyncPhase??baseRuntimeCfg.animationSyncPhase,animationRestartOnSwitch:item.animRestart??baseRuntimeCfg.animationRestartOnSwitch,hasAnimationOnceCompleteHandler:allowGroupedOnceComplete,onAnimationOnceComplete:allowGroupedOnceComplete?baseRuntimeCfg.onAnimationOnceComplete:null}:{...baseRuntimeCfg,hasAnimationOnceCompleteHandler:allowGroupedOnceComplete,onAnimationOnceComplete:allowGroupedOnceComplete?baseRuntimeCfg.onAnimationOnceComplete:null};_safeSyncRootAnimations(entry,subAnimCfg,\"sub-scene\");}if(!record.model&&record.subScenes.size===0)return;return record;};const getRootRenderDpr=(state,width,height)=>{const isMobile=(window.innerWidth||0)<=mobileBreakpoint;const cap=isMobile?dprCapMobile||1.2:dprCapDesktop||1.5;let dpr=Math.min(window.devicePixelRatio||1,cap);let maxPixelCount=0;for(const measured of state?.slots||[]){if(!measured?.visible)continue;const slot=bridge.slots?.get?.(measured.id);if(!slot?.props)continue;const cfg=_resolveRootRuntimeConfig(slot.props,measured.rect?.width||0);const slotMax=cfg?.performanceMaxPixelCount||0;if(slotMax>0){maxPixelCount=maxPixelCount>0?Math.min(maxPixelCount,slotMax):slotMax;}}if(maxPixelCount>0){const cssPixels=Math.max(1,width*height);const targetPixels=cssPixels*dpr*dpr;if(targetPixels>maxPixelCount){dpr=Math.max(.5,Math.sqrt(maxPixelCount/cssPixels));}}return Math.max(.5,dpr);};const resize=state=>{const visualViewportWidth=Math.max(1,Math.round(window.visualViewport?.width||window.innerWidth||state?.viewportWidth||1));const width=Math.max(1,Math.min(Math.round(state?.viewportWidth||1),visualViewportWidth));const height=Math.max(1,Math.round(state?.canvasHeight||1));const dpr=getRootRenderDpr(state,width,height);if(width===lastWidth&&height===lastHeight&&Math.abs(dpr-lastDpr)<=.01)return;lastWidth=width;lastHeight=height;lastDpr=dpr;renderer.setPixelRatio(dpr);renderer.setSize(width,height,false);canvas.style.width=`${width}px`;canvas.style.height=`${height}px`;};const syncCanvasPlacement=state=>{if(!state){canvas.style.display=\"none\";return;}ensureCanvasHost(state);canvas.style.display=\"block\";canvas.style.transform=`translate3d(${Math.round(state.scrollLeft||0)}px, ${Math.round((state.scrollTop||0)-(state.canvasPaddingPx||0))}px, 0)`;};const getSlotGroupName=slot=>{const props=slot?.props||{};if(props.role!==\"group\"&&!props.asGroup)return\"\";return String(props.groupName||\"\").trim();};const getSlotGroupKey=slot=>getSlotGroupName(slot).toLowerCase();const getRenderViewKey=view=>{const recordKey=_rootRecordKeyForSlot(view?.slot)||\"\";return`${view?.measured?.id||\"\"}|${recordKey}`;};const getRenderViewRect=(view,state)=>{const rect=view?.measured?.localRect;if(!rect)return null;const padPx=state?.canvasPaddingPx||0;const left=Math.round(rect.left||0);const top=Math.round((rect.top||0)+padPx);const width=Math.round(rect.width||0);const height=Math.round(rect.height||0);if(width<=1||height<=1)return null;return{key:getRenderViewKey(view),sig:`${left}:${top}:${width}:${height}`,left,top,width,height};};const clearRootScissorRect=rect=>{const sl=Math.max(0,rect.left);const sr=Math.min(lastWidth,rect.left+rect.width);const st=Math.max(0,rect.top);const sb=Math.min(lastHeight,rect.top+rect.height);const sw=sr-sl;const sh=sb-st;if(sw<=1||sh<=1)return;renderer.setScissor(Math.round(sl),Math.round(lastHeight-sb),Math.round(sw),Math.round(sh));renderer.clearColor();renderer.clearDepth();};const rootHoverChannelActive=channel=>!!channel?.mesh&&Math.abs((channel.target??0)-(channel.progress??0))>.001;const rootHolderAnimating=holder=>{if(!holder?.mixer||!_canAdvanceAnimationMixer(holder,holder.mixer)){return false;}const action=holder._activeAnimationAction;return!action||action.isRunning?.()!==false;};const rootRecordHasActiveMotion=(record,cfg,state)=>{if(!record||!cfg)return false;if(record._rootAppearStart>0||record._rootAppearPendingReplay||(record._rootFadeProgress||0)>0){return true;}if(cfg.enableParticles||cfg.enableFloat||cfg.enableAutoRotate||cfg.enableFilmGrain||record._rootScrollSmoothingActive||record._rootMeshAnimationSmoothingActive){return true;}if(cfg.enableMouseRotation&&state?.pointerActive)return true;if(rootHolderAnimating(record))return true;if(rootHoverChannelActive(record._rootHoverLerp)||rootHoverChannelActive(record._rootHoverLerpOut)||rootHoverChannelActive(record._rootPressLerp)||!!record._rootDragSnapBack?.mesh){return true;}for(const[,entry]of record.subScenes||[]){const entryCfg=entry?._rootOwnRuntimeCfg||cfg;if(entry?._rootAppearStart>0||entry?._rootAppearPendingReplay||entryCfg?.enableFloat||entryCfg?.enableAutoRotate||entry?._rootScrollSmoothingActive||rootHolderAnimating(entry)){return true;}}return false;};const rootRenderSignature=(view,record,cfg,state)=>{const rect=view?.measured?.localRect||{};return[getRenderViewKey(view),view?.slot?.updatedAt||0,view?.measured?.updatedAt||0,Math.round(rect.left||0),Math.round(rect.top||0),Math.round(rect.width||0),Math.round(rect.height||0),Math.round((view?.measured?.domOpacity??1)*1e3),Math.round(state?.scrollLeft||0),Math.round(state?.scrollTop||0),cfg?._sceneConfigHash||\"\",cfg?._materialHash||\"\",cfg?._envHash||\"\",cfg?._effectsHash||\"\",cfg?.meshAnimationLookupKey||\"\",cfg?.meshInteractionLookupKey||\"\",record?.model?.uuid||\"\",record?.subScenes?.size||0,record?._rootAppearHash||\"\"].join(\"|\");};const shouldRenderRootRecord=(view,record,cfg,state)=>{if(!record)return false;if(cfg?.performanceMode&&(cfg.performancePauseHidden&&!rootPageVisible||cfg.performancePauseOffscreen&&record._rootInViewport===false)){return false;}if(record._rootShaderReady===false){record._rootDirtyFrames=Math.max(record._rootDirtyFrames||0,3);return false;}const sig=rootRenderSignature(view,record,cfg,state);if(sig!==record._rootLastRenderSig){record._rootLastRenderSig=sig;record._rootDirtyFrames=Math.max(record._rootDirtyFrames||0,3);}if(rootRecordHasActiveMotion(record,cfg,state)){record._rootDirtyFrames=Math.max(record._rootDirtyFrames||0,2);return true;}if((record._rootDirtyFrames||0)>0){record._rootDirtyFrames-=1;return true;}return false;};const getGroupedSlotCacheSignature=slot=>{const props=slot?.props||{};const runtime=slot?.runtimeSettings||props.__import3DRuntimeSettings||{};return[props.role||\"\",props.asGroup?1:0,props.groupName||\"\",_rootModelUrlFromProps(props),runtime._animationReplayHash||\"\",runtime._sceneConfigHash||\"\",runtime.meshInteractionLookupKey||\"\",runtime.meshAnimationLookupKey||\"\",JSON.stringify(props.meshInteractions||[]),JSON.stringify(props.meshAnimations||[]),JSON.stringify(_getRootRuntimeSceneItems(props,runtime).map(item=>({url:_rootSubSceneUrlFromItem(item),visible:item?.visible,scale:item?.scale,offX:item?.offX,offY:item?.offY,offZ:item?.offZ,rotX:item?.rotX,rotY:item?.rotY,rotZ:item?.rotZ,animOverride:item?.animOverride,animClip:item?.animClip})))].join(\":\");};const getGroupedSlotRuntimeCfg=(slot,measured)=>{const width=Math.round(measured?.rect?.width||0);const key=[slot?.id||\"\",getGroupedSlotCacheSignature(slot),width].join(\"|\");if(groupedRuntimeCfgCache.has(key)){return groupedRuntimeCfgCache.get(key);}const cfg=_resolveRootRuntimeConfig(slot?.props||{},width);groupedRuntimeCfgCache.set(key,cfg);if(groupedRuntimeCfgCache.size>128){const firstKey=groupedRuntimeCfgCache.keys().next().value;groupedRuntimeCfgCache.delete(firstKey);}return cfg;};const attachGroupedSlotRuntime=(item,slot,measured)=>{if(!item)return item;const resolved=resolveThreeJSRuntimeSubSceneItem(item);return{...resolved,__groupSlotId:slot?.id||\"\",__groupSlotProps:slot?.props||{},__groupRuntimeSettings:slot?.runtimeSettings||slot?.props?.__import3DRuntimeSettings||null,__groupMeasured:measured||null,__groupRuntimeCfg:getGroupedSlotRuntimeCfg(slot,measured)};};const slotModelAsSceneItem=(slot,measured)=>{const props=slot?.props||{};const rawTr=_resolveRootResponsiveTransform(props.transform||{},measured?.rect?.width||0);const runtime=slot?.runtimeSettings||props.__import3DRuntimeSettings||null;const tr=runtime?{scale:runtime.modelScale??rawTr.scale,offX:runtime.modelOffsetX??rawTr.offX,offY:runtime.modelOffsetY??rawTr.offY,offZ:runtime.modelOffsetZ??rawTr.offZ,rotX:runtime.modelRotationX??rawTr.rotX,rotY:runtime.modelRotationY??rawTr.rotY,rotZ:runtime.modelRotationZ??rawTr.rotZ}:rawTr;const source=props.modelSource||\"url\";const modelUrl=source===\"file\"?props.modelFile||props.modelUrl||\"\":props.modelUrl||props.modelUrlProp||props.modelFile||\"\";if(!String(modelUrl||\"\").trim())return null;return attachGroupedSlotRuntime({modelSource:source,modelUrl,modelFile:props.modelFile||\"\",visible:true,parentToMain:false,__fromGroupedSlot:true,scale:tr.scale??1,offX:tr.offX??0,offY:tr.offY??0,offZ:tr.offZ??0,rotX:tr.rotX??0,rotY:tr.rotY??0,rotZ:tr.rotZ??0,animOverride:false},slot,measured);};const unionMeasuredRects=members=>{const rects=members.map(m=>m.measured?.rect).filter(Boolean);const localRects=members.map(m=>m.measured?.localRect).filter(Boolean);const union=items=>{const left=Math.min(...items.map(r=>r.left));const top=Math.min(...items.map(r=>r.top));const right=Math.max(...items.map(r=>r.right));const bottom=Math.max(...items.map(r=>r.bottom));return{left,top,right,bottom,width:right-left,height:bottom-top};};return{rect:union(rects),localRect:union(localRects)};};const applyGroupedSlotAnchors=(items,groupMeasured)=>items.map(item=>{if(!item?.__fromGroupedSlot)return item;const childRect=item.__groupMeasured?.rect;const groupRect=groupMeasured?.rect;if(!childRect||!groupRect)return item;const childCenterX=childRect.left+childRect.width/2;const childCenterY=childRect.top+childRect.height/2;const groupCenterX=groupRect.left+groupRect.width/2;const groupCenterY=groupRect.top+groupRect.height/2;return{...item,__groupAnchorPx:{x:childCenterX-groupCenterX,y:childCenterY-groupCenterY}};});const makeGroupedRenderViews=visibleSlots=>{const sig=visibleSlots.map(measured=>{const slot=bridge.slots?.get?.(measured.id);const groupKey=getSlotGroupKey(slot);const rect=measured?.rect||{};const localRect=measured?.localRect||{};return[measured?.id||\"\",slot?.updatedAt||0,getGroupedSlotCacheSignature(slot),groupKey,Math.round(rect.left||0),Math.round(rect.top||0),Math.round(rect.width||0),Math.round(rect.height||0),Math.round(localRect.left||0),Math.round(localRect.top||0),Math.round(localRect.width||0),Math.round(localRect.height||0)].join(\":\");}).join(\"|\");if(sig===groupedRenderViewsSig){return groupedRenderViewsCache;}const views=[];const groups=new Map;for(const measured of visibleSlots){const slot=bridge.slots?.get?.(measured.id);const groupKey=getSlotGroupKey(slot);if(!groupKey){views.push({measured,slot});continue;}if(!groups.has(groupKey))groups.set(groupKey,[]);groups.get(groupKey).push({measured,slot});}for(const[groupKey,members]of groups){if(members.length<=1){views.push(members[0]);continue;}const leader=members.find(m=>!!_rootModelUrlFromProps(m.slot?.props))||members[0];const scenes=members.map(m=>slotModelAsSceneItem(m.slot,m.measured)).filter(Boolean);for(const member of members){const memberSceneItems=_getRootRuntimeSceneItems(member.slot?.props,member.slot?.runtimeSettings||member.slot?.props?.__import3DRuntimeSettings);scenes.push(...memberSceneItems.map(item=>attachGroupedSlotRuntime(item,member.slot,member.measured)));}const meshAnimations=members.flatMap(member=>[...member.slot?.props?.meshAnimations||[],..._objectEventScrollAnimations(member.slot?.props?.meshInteractions||[])]);const meshInteractions=members.flatMap(member=>member.slot?.props?.meshInteractions||[]);const rects=unionMeasuredRects(members);const groupName=getSlotGroupName(leader.slot)||groupKey;const measured={...leader.measured,id:`group:${groupKey}`,rect:rects.rect,localRect:rects.localRect,visible:true,visibility:Math.max(...members.map(m=>m.measured?.visibility||0)),domOpacity:Math.max(...members.map(m=>m.measured?.domOpacity??1))};const anchoredScenes=applyGroupedSlotAnchors(scenes,measured);const slot={...leader.slot,id:`group:${groupKey}`,props:{...leader.slot.props,groupName,modelUrl:\"\",modelUrlProp:\"\",modelFile:\"\",scenes:anchoredScenes,meshAnimations,meshInteractions},element:leader.slot.element,scrollContainer:leader.slot.scrollContainer,runtimeSettings:leader.slot.runtimeSettings};views.push({measured,slot});}groupedRenderViewsSig=sig;groupedRenderViewsCache=views.sort((a,b)=>_compareRootRenderOrder(a.measured,b.measured));return groupedRenderViewsCache;};const tick=()=>{try{const state=bridge.rendererState;syncCanvasPlacement(state);if(state){resize(state);renderer.setScissorTest(true);const budget=typeof bridge.contextBudget===\"number\"&&bridge.contextBudget>0?bridge.contextBudget:Number.POSITIVE_INFINITY;const visibleSlots=(state?.slots||[]).filter(slot=>slot.visible).sort(_compareRootRenderOrder).slice(0,budget);const renderViews=makeGroupedRenderViews(visibleSlots);state._renderViews=renderViews;state.renderedSlotCount=renderViews.length;const currentRenderedRects=renderViews.map(view=>getRenderViewRect(view,state)).filter(Boolean);const currentRectSigs=new Set(currentRenderedRects.map(rect=>rect.sig));// Clear only stale scissor regions. Unchanged visible slots\n// are cleared by renderer.render() inside their own scissor,\n// so clearing them here just duplicates GPU work.\nfor(const prevRect of lastRenderedLocalRects){if(!currentRectSigs.has(prevRect.sig)){clearRootScissorRect(prevRect);}}for(const view of renderViews){try{preloadThreeJSRuntimeSceneModels(view.slot,view.measured);}catch(error){console.warn(\"[Import_3D_Canvas_Root] grouped preload failed\",error);}}for(const measured of state?.preloadSlots||[]){const slot=bridge.slots?.get?.(measured.id);if(!slot)continue;try{const record=createThreeJSRuntimeScene(slot,measured.rect);const now=performance.now();if(record&&now-lastPrewarmAt>160&&prewarmThreeJSRuntimeScene(slot,measured,record)){lastPrewarmAt=now;}}catch(error){console.warn(\"[Import_3D_Canvas_Root] preload record sync failed\",error);}}const renderedRecordKeys=new Set;const visibleSlotIds=new Set;for(const view of renderViews){const{measured,slot}=view;if(slot?.id)visibleSlotIds.add(slot.id);const recordKey=_rootRecordKeyForSlot(slot);if(recordKey)renderedRecordKeys.add(recordKey);}for(const[recordKey,record]of records){if(!renderedRecordKeys.has(recordKey)){if(visibleSlotIds.has(record.slotId)){disposeThreeJSRuntimeScene(record,bridge.slots?.get?.(record.slotId),{destroy:true});records.delete(recordKey);continue;}disposeThreeJSRuntimeScene(record,bridge.slots?.get?.(record.slotId));}}const useCanvasAppearStyle=renderViews.length===1;// Resolved once per view here and reused below for the perf-log\n// check — avoids a second _resolveRootRuntimeConfig pass (which\n// rebuilds the whole settings object) over the same slots every\n// single frame just to read one boolean flag.\nlet shouldLogPerf=false;for(const view of renderViews){const{measured,slot}=view;try{const cfg=slot?.props?_resolveRootRuntimeConfig(slot.props,measured.rect?.width||0):null;if(cfg?.performanceStats)shouldLogPerf=true;const record=syncThreeJSRuntimeScene(slot,measured,state,useCanvasAppearStyle&&!cfg?.dissolveEnabled);if(shouldRenderRootRecord(view,record,cfg,state)){// Mirrors Slot's Stats.js overlay (slotRuntime.tsx) so the\n// debug panel also works for slots rendered via the Root bridge.\nconst statsMonitor=cfg?.showStatsMonitor?_syncStatsMonitor(record,cfg,slot?.element):(_removeStatsMonitor(record),null);statsMonitor?.begin?.();renderThreeJSRuntimeScene(record,measured,state);statsMonitor?.end?.();}}catch{// Suppress per-frame group render failures; keep render flow unchanged.\n}}lastRenderedLocalRects=currentRenderedRects;syncRootHelperOverlay(state,renderViews);if(renderViews.length){const now=performance.now();if(shouldLogPerf&&now-lastRootPerfLog>2e3){console.log(\"[Import_3D root perf]\",{dpr:Number(renderer.getPixelRatio().toFixed(2)),pixels:(renderer.domElement.width||0)*(renderer.domElement.height||0),size:`${renderer.domElement.width||0}x${renderer.domElement.height||0}`,slotViews:renderViews.length,calls:renderer.info.render.calls,triangles:renderer.info.render.triangles,geometries:renderer.info.memory.geometries,textures:renderer.info.memory.textures});lastRootPerfLog=now;}}const activeMeasured=useCanvasAppearStyle?renderViews[0]?.measured:null;const activeSlot=useCanvasAppearStyle?renderViews[0]?.slot:null;const activeRecordKey=activeSlot?_rootRecordKeyForSlot(activeSlot):\"\";const activeRecord=activeRecordKey?records.get(activeRecordKey):null;const activeCfg=activeSlot?.props?_resolveRootRuntimeConfig(activeSlot.props,activeMeasured?.rect?.width||0):null;_syncRootCanvasAppearStyle(canvas,activeRecord,useCanvasAppearStyle&&!activeCfg?.dissolveEnabled);}else{updateRootHelperOverlay(null);}}catch(error){console.warn(\"[Import_3D_Canvas_Root] renderer tick failed; retrying next frame\",error);}rafId=window.requestAnimationFrame(tick);};tick();return()=>{disposed=true;if(rafId)window.cancelAnimationFrame(rafId);window.removeEventListener(\"pointerdown\",onRootPointerDown);window.removeEventListener(\"pointermove\",onRootPointerMove);window.removeEventListener(\"pointerup\",onRootPointerUp);window.removeEventListener(\"pointercancel\",onRootPointerUp);canvas.removeEventListener(\"wheel\",onRootCanvasWheel);document.removeEventListener(\"visibilitychange\",onRootVisibilityChange);for(const observer of rootRecordObservers.values()){observer.disconnect();}rootRecordObservers.clear();if(canvas.parentElement){canvas.parentElement.removeChild(canvas);}if(documentCanvasClipper?.parentElement){documentCanvasClipper.parentElement.removeChild(documentCanvasClipper);}documentCanvasClipper=null;restorePatchedHost();rootCanvasRef.current=null;renderer.setScissorTest(false);for(const[,record]of records){disposeThreeJSRuntimeScene(record,bridge.slots?.get?.(record.slotId),{destroy:true});}records.clear();_debugImport3DRendererEvent(\"dispose\",{role:\"root\",ownerId:rootOwnerId,canvas,reason:\"root renderer effect cleanup\",bridgeMode:_getImport3DBridgeState().renderMode,renderTarget:RenderTarget.current(),rootCount:_getImport3DBridgeState().rootCount||0,slotCount:_getImport3DBridgeState().slots?.size||0,forceLog:!!debug});renderer.dispose();};},[mode,dprCapDesktop,dprCapMobile,mobileBreakpoint,canvasZIndex,nativeAntialias,isOnFramerCanvas]);React.useEffect(()=>{const sync=()=>{setBridgeInfo(_snapshotImport3DBridge());};sync();return _subscribeImport3DBridge(sync);},[]);return /*#__PURE__*/_jsxs(\"div\",{style:{width:debug?\"auto\":0,height:debug?\"auto\":0,...UI_STYLES.canvasContainer,...style},children:[debug&&/*#__PURE__*/_jsxs(\"div\",{style:{...UI_STYLES.debugOverlay,lineHeight:1.6,backdropFilter:\"blur(10px)\"},children:[/*#__PURE__*/_jsx(\"div\",{style:UI_STYLES.debugTitle,children:\"Root Coordinator\"}),/*#__PURE__*/_jsxs(\"div\",{children:[\"roots: \",/*#__PURE__*/_jsx(\"b\",{children:bridgeInfo.rootCount})]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"slots: \",/*#__PURE__*/_jsx(\"b\",{children:bridgeInfo.slots.length})]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"active budget:\",\" \",/*#__PURE__*/_jsx(\"b\",{children:bridgeInfo.contextBudget??\"auto (device)\"})]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"mode: \",/*#__PURE__*/_jsx(\"b\",{children:bridgeInfo.renderMode})]}),bridgeInfo.rendererState&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{children:[\"active slot:\",\" \",/*#__PURE__*/_jsx(\"b\",{children:bridgeInfo.rendererState.activeSlotId||\"none\"})]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"progress:\",\" \",/*#__PURE__*/_jsx(\"b\",{children:bridgeInfo.rendererState.activeProgress.toFixed(3)})]})]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"quality: \",/*#__PURE__*/_jsx(\"b\",{children:bridgeInfo.qualityMode})]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"dpr:\",\" \",/*#__PURE__*/_jsxs(\"b\",{children:[bridgeInfo.dprCapDesktop??\"auto\",\" /\",\" \",bridgeInfo.dprCapMobile??\"auto\"]})]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"pause:\",\" \",/*#__PURE__*/_jsxs(\"b\",{children:[bridgeInfo.pauseHidden?\"hidden\":\"-\",\" \\xb7\",\" \",bridgeInfo.pauseOffscreen?\"offscreen\":\"-\"]})]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"destroy:\",\" \",/*#__PURE__*/_jsx(\"b\",{children:bridgeInfo.destroyOffscreen?`${Math.round((bridgeInfo.destroyAfterMs||0)/1e3)}s`:\"off\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{opacity:.55,fontSize:10,marginTop:3},children:bridgeInfo.renderMode===\"renderer\"?`root canvas \\xb7 ${bridgeInfo.rendererState?.renderedSlotCount??0} slot views`:\"inline canvas \\xb7 native scroll sync\"}),bridgeInfo.rendererState?.debugSlots?.length?/*#__PURE__*/_jsx(\"div\",{style:{marginTop:8,paddingTop:6,borderTop:\"1px solid rgba(0,255,0,0.25)\",opacity:.85,fontSize:9,maxWidth:260},children:bridgeInfo.rendererState.debugSlots.slice(0,4).map(slot=>/*#__PURE__*/_jsxs(\"div\",{children:[slot.pointerHit?\"hit\":\"box\",\" \\xb7\",\" \",slot.animOn?\"anim\":\"no-anim\",\" \\xb7\",\" \",slot.hoverGate?\"gate\":\"free\",\" \\xb7\",\" \",slot.animMode||\"-\",\" \\xb7\",\" \",slot.animClip||\"-\"]},slot.id))}):null]}),rootHelper.tooltip&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",left:Math.min((rootHelper.tooltip.screenX||0)+16,(typeof window!==\"undefined\"?window.innerWidth:300)-230),top:Math.max((rootHelper.tooltip.screenY||0)-10,4),pointerEvents:\"none\",zIndex:(canvasZIndex??10)+1e3},children:/*#__PURE__*/_jsxs(\"div\",{style:{background:\"rgba(0,0,0,0.92)\",border:\"1px solid rgba(255,255,255,0.12)\",borderRadius:8,padding:\"8px 12px\",backdropFilter:\"blur(12px)\",minWidth:140,maxWidth:260,boxShadow:\"0 8px 28px rgba(0,0,0,0.35)\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:6,marginBottom:4},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:8,height:8,borderRadius:2,background:rootHelper.tooltip.type===\"SkinnedMesh\"?\"#a855f7\":\"#3b82f6\"}}),/*#__PURE__*/_jsx(\"span\",{style:{color:\"#fff\",fontWeight:600,fontSize:12,letterSpacing:\"-0.01em\"},children:rootHelper.tooltip.name})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",gap:\"4px 10px\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{padding:\"1px 5px\",borderRadius:4,fontSize:9,background:rootHelper.tooltip.type===\"SkinnedMesh\"?\"rgba(168,85,247,0.15)\":\"rgba(59,130,246,0.15)\",color:rootHelper.tooltip.type===\"SkinnedMesh\"?\"#c084fc\":\"#60a5fa\"},children:rootHelper.tooltip.type}),/*#__PURE__*/_jsxs(\"span\",{style:{color:\"rgba(255,255,255,0.45)\",fontSize:10},children:[rootHelper.tooltip.verts.toLocaleString(),\" \",\"verts\"]}),rootHelper.tooltip.mat&&/*#__PURE__*/_jsx(\"span\",{style:{color:\"rgba(255,255,255,0.32)\",fontSize:10},children:rootHelper.tooltip.mat})]}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:4,color:\"rgba(255,255,255,0.25)\",fontSize:9,wordBreak:\"break-all\"},children:rootHelper.tooltip.path})]})}),(debug||isCanvasTarget)&&rootHelper.tree?.length>0&&/*#__PURE__*/_jsxs(\"div\",{style:{...UI_STYLES.sceneOverlay,zIndex:(canvasZIndex??10)+999},children:[/*#__PURE__*/_jsxs(\"div\",{style:UI_STYLES.sceneHeader,children:[/*#__PURE__*/_jsx(\"span\",{style:UI_STYLES.debugHighlight,children:\"Scene Hierarchy\"}),/*#__PURE__*/_jsxs(\"span\",{style:UI_STYLES.debugRight,children:[rootHelper.meshCount,\" meshes\"]})]}),rootHelper.tree.slice(0,160).map((item,i)=>{const indent=Math.min(80,(item.depth||0)*12);const hovered=rootHelper.tooltip?.name&&rootHelper.tooltip.name===item.name;return /*#__PURE__*/_jsxs(\"div\",{style:{...UI_STYLES.sceneItem,padding:`2px 10px 2px ${10+indent}px`,color:item.isGroup?\"#fbbf24\":hovered?\"#60a5fa\":\"rgba(255,255,255,0.62)\",background:hovered?\"rgba(59,130,246,0.1)\":\"transparent\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{...UI_STYLES.sceneDot,borderRadius:item.isGroup?2:\"50%\",background:item.isGroup?\"#f59e0b\":hovered?\"#60a5fa\":\"rgba(255,255,255,0.22)\"}}),/*#__PURE__*/_jsx(\"span\",{style:UI_STYLES.sceneEllipsis,children:item.name}),/*#__PURE__*/_jsx(\"span\",{style:{marginLeft:\"auto\",flexShrink:0,fontSize:8,color:item.isGroup?\"rgba(251,191,36,0.8)\":item.type===\"SkinnedMesh\"?\"#c084fc\":\"#60a5fa\"},children:item.isGroup?item.childMeshCount:item.type===\"SkinnedMesh\"?\"Skin\":\"Mesh\"})]},`${item.isGroup?\"g\":\"m\"}-${i}-${item.name}`);})]})]});}Import_3D_Canvas_Root.defaultProps={mode:\"coordinator\",desktopSlots:3,mobileSlots:2,mobileBreakpoint:768,qualityMode:\"balanced\",dprCapDesktop:1.5,dprCapMobile:1.2,pauseHidden:true,pauseOffscreen:true,destroyOffscreen:false,destroyAfterMs:2e4,canvasZIndex:10,nativeAntialias:false,debug:false};const ROOT_PROPERTY_CONTROLS={mode:{type:ControlType.Enum,title:\"Mode\",options:[\"coordinator\",\"renderer\"],optionTitles:[\"Coordinator\",\"Renderer Bridge\"],defaultValue:\"coordinator\"},desktopSlots:{type:ControlType.Number,title:\"Desktop Slots\",defaultValue:3,min:0,max:8,step:1,displayStepper:true},mobileSlots:{type:ControlType.Number,title:\"Mobile Slots\",defaultValue:2,min:0,max:6,step:1,displayStepper:true},mobileBreakpoint:{type:ControlType.Number,title:\"Mobile <=\",defaultValue:768,min:320,max:1440,step:1,displayStepper:true},canvasZIndex:{type:ControlType.Number,title:\"Canvas Z\",defaultValue:10,min:-999,max:9999,step:1,displayStepper:true,hidden:p=>p.mode!==\"renderer\"},nativeAntialias:{type:ControlType.Boolean,title:\"Native AA\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",hidden:p=>p.mode!==\"renderer\",description:\"On = Smoother edges\"},qualityMode:{type:ControlType.Enum,title:\"Quality\",options:[\"performance\",\"balanced\",\"quality\"],optionTitles:[\"Performance\",\"Balanced\",\"Quality\"],defaultValue:\"balanced\"},dprCapDesktop:{type:ControlType.Number,title:\"DPR Desktop\",defaultValue:1.5,min:.5,max:3,step:.1,displayStepper:true},dprCapMobile:{type:ControlType.Number,title:\"DPR Mobile\",defaultValue:1.2,min:.5,max:3,step:.1,displayStepper:true},pauseHidden:{type:ControlType.Boolean,title:\"Pause Hidden\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},pauseOffscreen:{type:ControlType.Boolean,title:\"Pause Offscreen\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},destroyOffscreen:{type:ControlType.Boolean,title:\"Destroy Far\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},destroyAfterMs:{type:ControlType.Number,title:\"Destroy After\",defaultValue:2e4,min:1e3,max:12e4,step:1e3,displayStepper:true,unit:\"ms\",hidden:props=>!props.destroyOffscreen},debug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"On = Show bridge debug\"}};return{Component:Import_3D_Canvas_Root,controls:ROOT_PROPERTY_CONTROLS};})()// #endregion\n;\nexport const __FramerMetadata__ = {\"exports\":{\"Root\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// @ts-nocheck\n// #region 24. MAIN EXPORT — ROOT/SLOT DISPATCHER\n/**\n * ============================================================\n * 3D Model Importer for Framer - v4.0 PBR + Post-FX\n * Supports: GLB, GLTF, FBX (via URL or File Upload), ZIP Archives\n * Features: Full PBR Material Override, Material Presets,\n *   Environment Presets, Advanced Post-Processing,\n *   Animations, Float Effect, Orbit Controls, Root/Slot Renderer Bridge\n * ============================================================\n *\n * Copy this file (and the ./runtime/ folder) into Framer:\n * Assets -> Code -> New Component. This file is the canonical entry\n * point Framer publishes; it only wires together the modules under\n * ./runtime/ and exposes the memoized Root/Slot dispatcher.\n *\n * Module map (see ./runtime/<folder>/ for implementation):\n *  - core/          deps, types, constants, global runtime state\n *  - utils/         hashes, format/color parsing, object3D + animation utils\n *  - config/        Framer prop -> runtime config resolution\n *  - loaders/       GLTF/FBX/ZIP model loading\n *  - materials/     material system, dissolve/fade transitions\n *  - scene/         scene transforms, lighting, environment\n *  - rendering/     postprocessing, render metrics, diagnostics, stats\n *  - bridge/        Root/Slot registry (bridge.tsx) and WebGL budget gate (coordinator.tsx)\n *  - framer/        property control schema, runtime glue helpers\n *  - components/    slotRuntime.tsx (Slot) and rootRuntime.tsx (Root) — the two\n *                    renderer implementations this file dispatches between\n *\n * API navigation:\n *  - List API anchors: rg -n \"@api\" \"src/ThreeJS_Runtime.tsx\" \"src/runtime\"\n *  - Bridge bugs: @api RenderBridge.getState, @api RootRenderer.component\n *  - Render ownership: @api RendererDiagnostics.logEvent\n *  - Model loading: @api ModelLoading.preload, @api ModelLoading.loadDirect\n *  - Materials and stylized presets: @api MaterialSystem.applyOverride\n *  - Framer controls: @api FramerControls.schema, @api ConfigResolution.resolveRuntimeConfig\n *  - Lifecycle/UI symptoms: @api Slot.component, @api PublicExport.ThreeJS_Runtime\n * ============================================================\n */import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{React,useId,createPortal,addPropertyControls,ControlType}from\"https://framerusercontent.com/modules/ZNOgv1TxdKaEtTtEzlKJ/kw52R9vHBg4qGF8UzxIF/deps.js\";import{IMPORT_3D_PROPERTY_CONTROLS}from\"https://framerusercontent.com/modules/g7ZpK2wMpFDbWq2zFtRU/OA8T078LXim2Tn0CtB5I/propertyControls.js\";import{_withRuntimeRoleHidden}from\"https://framerusercontent.com/modules/Ico5PLrXB0RNY2cRCaPV/itWMfldJwUT6Nn7u0Jm1/runtimeGlue.js\";import{Slot,_startModelPreload}from\"https://framerusercontent.com/modules/llv7nCr7N1SVVPsRcwBe/U9GUQ9JuFvCzpzGTjaRE/slotRuntime.js\";import{Root}from\"https://framerusercontent.com/modules/k2NVYa2a1IG7NbVNNeuB/Z2bzFg9MAAd8CpWNZsBL/rootRuntime.js\";export{IMPORT_3D_PROPERTY_CONTROLS}from\"https://framerusercontent.com/modules/g7ZpK2wMpFDbWq2zFtRU/OA8T078LXim2Tn0CtB5I/propertyControls.js\";function NimbusPartLabel({part,label,text,buttonStyle,visible,curve,unit,mobile,onOpen,onMeasure,onHover}){const node=React.useRef(null);React.useLayoutEffect(()=>{const element=node.current;if(!element)return;const measure=()=>onMeasure(part.key,element.getBoundingClientRect().width);measure();const observer=new ResizeObserver(measure);observer.observe(element);return()=>observer.disconnect();},[part.key,onMeasure]);return /*#__PURE__*/_jsxs(\"button\",{ref:node,className:\"nimbus-label-motion\",\"aria-hidden\":!visible,tabIndex:visible?0:-1,onPointerEnter:()=>onHover(part.key),onPointerLeave:()=>onHover(null),onFocus:()=>onHover(part.key),onBlur:()=>onHover(null),onClick:()=>onOpen?.(part.key),style:{...buttonStyle,position:\"absolute\",top:label.top,left:label.left,width:\"max-content\",height:mobile?24:30,display:\"flex\",alignItems:\"center\",gap:mobile?4:8*unit,textTransform:\"uppercase\",letterSpacing:\"normal\",opacity:visible?1:0,transition:`opacity ${visible?.75:.5}s ${curve}`,pointerEvents:visible?\"auto\":\"none\"},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{opacity:.5,flexShrink:0},children:\"[+]\"}),/*#__PURE__*/_jsx(\"span\",{style:{whiteSpace:\"nowrap\"},children:text})]});}function NimbusTechUI({id,hover,onOpenRef,onOpen,labelStyle}){const[labelHover,setLabelHover]=React.useState(null);const[labelWidths,setLabelWidths]=React.useState({});const measureLabel=React.useCallback((key,width)=>{setLabelWidths(previous=>Math.abs((previous[key]||0)-width)<.5?previous:{...previous,[key]:width});},[]);const[mounted,setMounted]=React.useState(false),[frame,setFrame]=React.useState(null),[pointer,setPointer]=React.useState({x:0,y:0});React.useEffect(()=>{setMounted(true);const receive=e=>{if(e.detail?.id===id)setFrame(e.detail);};const move=e=>setPointer({x:e.clientX,y:e.clientY});const leave=e=>{if(!e.relatedTarget)setPointer({x:-1,y:-1});};window.addEventListener(\"botanika:nimbus-tech-frame\",receive);document.addEventListener(\"pointermove\",move,true);document.addEventListener(\"mousemove\",move,true);document.addEventListener(\"pointerleave\",leave,true);return()=>{window.removeEventListener(\"botanika:nimbus-tech-frame\",receive);document.removeEventListener(\"pointermove\",move,true);document.removeEventListener(\"mousemove\",move,true);document.removeEventListener(\"pointerleave\",leave,true);};},[id,onOpenRef]);if(!mounted||!frame||typeof document===\"undefined\")return null;const rect=frame.rect,mobile=window.innerWidth<768,vi=document.documentElement.lang.startsWith(\"vi\");if(!rect||rect.bottom<=0||rect.top>=window.innerHeight)return null;const overModel=frame.hitRegions?.some(region=>pointer.x>=region.left&&pointer.x<=region.right&&pointer.y>=region.top&&pointer.y<=region.bottom);const labels=labelStyle||{};const value=(number,fallback)=>typeof number===\"number\"&&Number.isFinite(number)?number:fallback;const labelsVisible=frame.explode>=value(labels.showAt,60)/100;const lineColor=\"#adb2bf\";const lineWidth=.7;const lineOpacity=.6;const lineDuration=Math.max(.1,value(labels.lineDuration,.75));const lineDelay=labelsVisible?Math.max(0,value(labels.lineDelay,.25)):0;const curve=\"cubic-bezier(0.215, 0.61, 0.355, 1)\";const unit=Math.min(rect.width/1440,rect.height/800);const labelSize=mobile?Math.max(7,value(labels.mobileSize,9)*Math.min(1,rect.width/390)):Math.max(10,value(labels.fontSize,12)*unit);const parts=[{key:\"shell\",en:\"Upper enclosure\",vi:\"Vỏ tr\\xean\",side:1,row:0},{key:\"drive\",en:\"Storage assembly\",vi:\"Cụm lưu trữ\",side:-1,row:0},{key:\"bracket\",en:\"Mounting bracket\",vi:\"Khung đỡ\",side:1,row:1},{key:\"heatsink\",en:\"Heatsink\",vi:\"Bộ tản nhiệt\",side:-1,row:1},{key:\"board\",en:\"Mainboard\",vi:\"Bo mạch ch\\xednh\",side:1,row:2},{key:\"base\",en:\"Base enclosure\",vi:\"Phần đế\",side:-1,row:2}];// Labels and leaders share one grid, including the underline baseline.\nconst labelLayout=part=>{const gutter=rect.width*(mobile?.035:.045);const column=rect.width*(mobile?.29:.25);const inner=part.side<0?rect.left+gutter+column:rect.right-gutter-column;const measuredWidth=labelWidths[part.key]||column;const left=part.side<0?inner-measuredWidth:inner;const top=rect.top+rect.height*(mobile?.4+part.row*.16:.28+part.row*.22);const lineY=top+(mobile?29:36);return{left,top,column,lineY,inner};};const button={appearance:\"none\",border:0,background:\"none\",color:\"#bdc4d4\",fontFamily:'\"DM Mono\", \"SFMono-Regular\", Consolas, monospace',fontSize:labelSize,fontWeight:400,lineHeight:\"1.33\",cursor:\"pointer\",textAlign:\"left\",padding:0};return createPortal(/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",inset:0,zIndex:4,pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`@media (prefers-reduced-motion: reduce) { .nimbus-label-motion { transition: none !important; } }`}),/*#__PURE__*/_jsx(\"svg\",{\"aria-hidden\":\"true\",width:\"100%\",height:\"100%\",style:{position:\"absolute\",inset:0},children:parts.map(part=>{const point=frame.points.find(item=>item.key===part.key);const label=labelLayout(part);const outer=part.side<0?label.left:label.left+(labelWidths[part.key]||label.column);if(!point?.visible)return null;return /*#__PURE__*/_jsxs(\"g\",{children:[/*#__PURE__*/_jsx(\"path\",{className:\"nimbus-label-motion\",d:`M${point.x},${point.y} L${label.inner},${label.lineY} H${outer}`,fill:\"none\",stroke:lineColor,strokeWidth:lineWidth,strokeOpacity:lineOpacity,pathLength:\"1\",strokeDasharray:\"1 1\",vectorEffect:\"non-scaling-stroke\",style:{strokeDashoffset:labelsVisible?0:1,transition:`stroke-dashoffset ${labelsVisible?lineDuration:.5}s ${curve} ${lineDelay}s`}}),/*#__PURE__*/_jsx(\"circle\",{className:\"nimbus-label-motion\",cx:point.x,cy:point.y,r:\"2.5\",fill:\"#ff7828\",style:{transformOrigin:`${point.x}px ${point.y}px`,transform:`scale(${labelsVisible?1:0})`,transition:`transform 0.5s ${curve}`}})]},part.key);})}),parts.map(part=>/*#__PURE__*/_jsx(NimbusPartLabel,{part:part,label:labelLayout(part),text:vi?part.vi:part.en,buttonStyle:button,visible:labelsVisible,curve:curve,unit:unit,mobile:mobile,onOpen:onOpen,onMeasure:measureLabel,onHover:setLabelHover},part.key)),(overModel||hover||frame.modelHovered||labelHover&&labelsVisible)&&/*#__PURE__*/_jsxs(\"div\",{role:\"tooltip\",style:{position:\"absolute\",left:Math.max(8,Math.min(pointer.x+16,window.innerWidth-100)),top:Math.min(pointer.y+16,window.innerHeight-50),background:\"#eee\",color:\"#101011\",borderRadius:6,padding:\"8px 12px\",fontSize:12},children:[vi?\"Chi tiết\":\"Details\",\" ↗\"]})]}),document.body);}const ThreeJSRuntimeSlot=Slot.Component;const ThreeJSRuntimeRoot=Root.Component;const ROOT_RUNTIME_PROPERTY_CONTROLS=Root.controls;// Missing global shared refs from original monolith\nlet _rootSharedFinalScene=null;let _rootSharedFinalCamera=null;let _rootSharedFinalMaterial=null;const SLOT_RUNTIME_PROPERTY_CONTROLS=_withRuntimeRoleHidden(IMPORT_3D_PROPERTY_CONTROLS,props=>props.role===\"root\");const ROOT_RUNTIME_CONTROLS=_withRuntimeRoleHidden(ROOT_RUNTIME_PROPERTY_CONTROLS,props=>props.role!==\"root\");/* Framer property-control schema is defined in ./runtime/propertyControls.tsx. */addPropertyControls(ThreeJS_Runtime,{nimbusTech:{type:ControlType.Boolean,title:\"Nimbus Tech Specs\",defaultValue:false},nimbusScroll:{type:ControlType.Object,title:\"Nimbus Scroll\",hidden:p=>!p.nimbusTech||p.role===\"root\",description:\"Rotate and Open use percentages of the same scroll range. Match their start/end values to animate together.\",controls:{start:{type:ControlType.Number,title:\"Start\",defaultValue:360,min:0,max:4e3,step:10,unit:\"px\"},mobileStart:{type:ControlType.Number,title:\"Mobile Start\",defaultValue:240,min:0,max:4e3,step:10,unit:\"px\"},distance:{type:ControlType.Number,title:\"Distance\",defaultValue:160,min:1,max:600,step:5,unit:\"vh\"},rotateStart:{type:ControlType.Number,title:\"Rotate Start\",defaultValue:0,min:0,max:100,step:1,unit:\"%\"},rotateEnd:{type:ControlType.Number,title:\"Rotate End\",defaultValue:100,min:0,max:100,step:1,unit:\"%\"},openStart:{type:ControlType.Number,title:\"Open Start\",defaultValue:0,min:0,max:100,step:1,unit:\"%\"},openEnd:{type:ControlType.Number,title:\"Open End\",defaultValue:100,min:0,max:100,step:1,unit:\"%\"},rotation:{type:ControlType.Number,title:\"Rotation\",defaultValue:360,min:-720,max:720,step:5,unit:\"deg\"},spread:{type:ControlType.Number,title:\"Spread\",defaultValue:100,min:0,max:200,step:5,unit:\"%\"}}},nimbusLabels:{type:ControlType.Object,title:\"Nimbus Labels\",hidden:p=>!p.nimbusTech||p.role===\"root\",description:\"Lines draw from the model toward the labels. Font Size is the base size at 1440 \\xd7 800 and scales with the viewport.\",controls:{fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:12,min:8,max:24,step:1,unit:\"px\"},mobileSize:{type:ControlType.Number,title:\"Mobile Size\",defaultValue:9,min:7,max:14,step:1,unit:\"px\"},showAt:{type:ControlType.Number,title:\"Show At\",defaultValue:60,min:0,max:100,step:1,unit:\"%\"},lineDuration:{type:ControlType.Number,title:\"Line Duration\",defaultValue:.75,min:.1,max:2,step:.05,unit:\"s\"},lineDelay:{type:ControlType.Number,title:\"Line Delay\",defaultValue:.25,min:0,max:1,step:.05,unit:\"s\"}}},role:{type:ControlType.Enum,title:\"Role\",options:[\"slot\",\"group\",\"root\"],optionTitles:[\"Slot\",\"Group\",\"Root\"],defaultValue:\"slot\"},groupName:{type:ControlType.String,title:\"Group Name\",defaultValue:\"\",placeholder:\"hero-world\",hidden:p=>p.role!==\"group\"&&!p.asGroup},...SLOT_RUNTIME_PROPERTY_CONTROLS,...ROOT_RUNTIME_CONTROLS});const ThreeJSRuntimeRootMemo=React.memo(ThreeJSRuntimeRoot);const ThreeJSRuntimeSlotMemo=React.memo(ThreeJSRuntimeSlot);/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 800\n * @framerIntrinsicHeight 600\n *\n * @framerDisableUnlink\n */// @api PublicExport.ThreeJS_Runtime\nexport default function ThreeJS_Runtime(props){const{role=\"slot\"}=props;const nimbusTechId=useId();const[nimbusHover,setNimbusHover]=React.useState(false);if(props.nimbusTech&&role!==\"root\")return /*#__PURE__*/_jsxs(\"div\",{\"data-nimbus-tech\":nimbusTechId,style:{...props.style,position:\"relative\",width:\"100%\",height:\"100%\"},children:[/*#__PURE__*/_jsx(ThreeJSRuntimeSlotMemo,{...props,nimbusTechId:nimbusTechId,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\"},onModelHoverStart:event=>{setNimbusHover(true);props.onModelHoverStart?.(event);},onModelHoverEnd:event=>{setNimbusHover(false);props.onModelHoverEnd?.(event);},onModelClick:props.onModelClick,asGroup:role===\"group\"||!!props.asGroup}),/*#__PURE__*/_jsx(NimbusTechUI,{labelStyle:props.nimbusLabels,id:nimbusTechId,hover:nimbusHover,onOpen:()=>props.onModelClick?.()})]});if(role===\"root\")return /*#__PURE__*/_jsx(ThreeJSRuntimeRootMemo,{...props});return /*#__PURE__*/_jsx(ThreeJSRuntimeSlotMemo,{...props,asGroup:role===\"group\"||!!props.asGroup});}// Expose globally so splash screen or external scripts can trigger preload early\nif(typeof window!==\"undefined\"){window.__preloadModel3D=_startModelPreload;}ThreeJS_Runtime.defaultProps={...ThreeJSRuntimeSlot.defaultProps,...ThreeJSRuntimeRoot.defaultProps,role:\"slot\",asGroup:false,groupName:\"\"}// #endregion\n;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ThreeJS_Runtime\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"800\",\"framerIntrinsicHeight\":\"600\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"IMPORT_3D_PROPERTY_CONTROLS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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AG,GAAG,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAe,GAAsB,6B,2DCZ3xC,GAA4B,CACzC,YAAY,CAAC,KAAK5H,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,MAAM,MAAM,EAAE,aAAa,CAAC,MAAM,QAAQ,EAAE,aAAa,MAAM,wBAAwB,EAAI,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,gCAAgC,YAAY,IAAI,OAAO,GAAGT,EAAE,cAAc,MAAM,EAAE,UAAU,CAAC,KAAKS,EAAY,KAAK,MAAM,aAAa,iBAAiB,CAAC,MAAM,OAAO,MAAM,KAAK,EAAE,OAAO,GAAGT,EAAE,cAAc,MAAM,EAAE,gBAAgB,CAAC,KAAKS,EAAY,QAAQ,MAAM,kBAAkB,aAAa,GAAM,YAAY,6EAA6E,EAC1mB,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,SAAS,CAAC,OAAO,CAAC,KAAKA,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,OAAO,YAAY,cAAc,WAAW,EAAE,aAAa,CAAC,kBAAkB,YAAY,eAAe,YAAY,EAAE,aAAa,MAAM,EAAE,mBAAmB,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,eAAe,GAAK,OAAO,GAAGT,EAAE,SAAS,WAAW,EAAE,eAAe,CAAC,KAAKS,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,OAAO,GAAGT,EAAE,SAAS,WAAW,EAAE,uBAAuB,CAAC,KAAKS,EAAY,MAAM,MAAM,WAAW,aAAa,UAAU,OAAO,GAAGT,EAAE,SAAS,WAAW,EAAE,2BAA2B,CAAC,KAAKS,EAAY,OAAO,MAAM,iBAAiB,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,eAAe,GAAK,OAAO,GAAGT,EAAE,SAAS,WAAW,EAAE,gBAAgB,CAAC,KAAKS,EAAY,MAAM,MAAM,eAAe,aAAa,UAAU,OAAO,GAAGT,EAAE,SAAS,aAAa,EAAE,gBAAgB,CAAC,KAAKS,EAAY,MAAM,MAAM,cAAc,aAAa,UAAU,OAAO,GAAGT,EAAE,SAAS,aAAa,EAAE,oBAAoB,CAAC,KAAKS,EAAY,OAAO,MAAM,cAAc,aAAa,KAAK,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,eAAe,GAAK,OAAO,GAAGT,EAAE,SAAS,aAAa,EAAE,YAAY,CAAC,KAAKS,EAAY,OAAO,MAAM,gBAAgB,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,KAAK,eAAe,GAAK,OAAO,GAAGT,EAAE,SAAS,aAAa,EAAE,SAAS,CAAC,KAAKS,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAGT,EAAE,SAAS,MAAM,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,mBAAmB,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,UAAUA,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,SAAS,YAAY,2BAA2B,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,UAAUA,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,MAAM,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,UAAUA,EAAE,eAAe,EAAE,YAAY,qBAAqB,EAAE,QAAQ,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,UAAU,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,YAAY,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,eAAe,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,UAAUA,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,eAAe,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,UAAUA,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,KAAKS,EAAY,MAAM,MAAM,cAAc,aAAa,UAAU,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,UAAUA,EAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,kBAAkB,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAKS,EAAY,MAAM,MAAM,iBAAiB,aAAa,UAAU,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,UAAUA,EAAE,oBAAoB,CAAC,EAAE,UAAU,CAAC,KAAKS,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAGT,EAAE,SAAS,QAAQ,CAACA,EAAE,QAAQ,EAAE,mBAAmB,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,sBAAsB,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,IAAI,YAAY,sBAAsB,CAAC,CAAC,EAC/+I,YAAY,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,SAAS,CAAC,MAAM,CAAC,KAAKA,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EAAE,KAAK,CAAC,KAAKA,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,MAAM,YAAY,GAAG,EAAE,WAAW,CAAC,KAAKS,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EAAE,YAAY,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,WAAW,YAAY,GAAG,EAAE,MAAM,CAAC,KAAKS,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,KAAK,EAAE,WAAW,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,MAAM,YAAY,GAAG,EAAE,YAAY,CAAC,KAAKS,EAAY,QAAQ,MAAM,eAAe,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,qBAAqB,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,kBAAkB,aAAa,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,YAAY,YAAY,GAAG,EAAE,UAAU,CAAC,KAAKS,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,cAAc,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,SAAS,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,OAAO,aAAa,IAAI,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,SAAS,EAAE,cAAc,CAAC,KAAKS,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,OAAO,GAAG,CAACT,EAAE,SAAS,EAAE,cAAc,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,SAAS,EAAE,eAAe,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,SAAS,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,UAAU,YAAY,GAAG,CAAC,CAAC,EAC19D,iBAAiB,CAAC,KAAKS,EAAY,MAAM,MAAM,gBAAgB,YAAY,IAAI,SAAS,GAAG,QAAQ,CAAC,KAAKA,EAAY,OAAO,SAAS,CAAC,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,aAAa,GAAG,YAAY,qBAAqB,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,aAAa,GAAG,WAAW,EAAI,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,MAAM,mBAAmB,SAAS,CAAC,MAAM,CAAC,KAAKA,EAAY,OAAO,MAAM,QAAQ,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,WAAW,EAAI,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,WAAW,EAAI,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,WAAW,EAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAKA,EAAY,OAAO,MAAM,QAAQ,SAAS,CAAC,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,OAAO,CAAC,KAAKA,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,OAAO,UAAU,mBAAmB,cAAc,eAAe,EAAE,aAAa,CAAC,OAAO,WAAW,oBAAoB,eAAe,gBAAgB,EAAE,aAAa,OAAO,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,IAAI,CAAC,KAAKS,EAAY,KAAK,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,SAAS,SAAS,EAAE,OAAO,CAAC,KAAKS,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAK,aAAa,MAAM,cAAc,KAAK,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,SAAS,SAAS,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,YAAY,kCAAkC,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,SAAS,kBAAkB,EAAE,MAAM,CAAC,KAAKS,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,SAAS,aAAa,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,sBAAsB,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,SAAS,eAAe,EAAE,SAAS,CAAC,KAAKS,EAAY,KAAK,MAAM,YAAY,QAAQ,CAAC,OAAO,SAAS,UAAU,EAAE,aAAa,CAAC,OAAO,SAAS,WAAW,EAAE,aAAa,OAAO,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,SAAS,eAAe,EAAE,YAAY,CAAC,KAAKS,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAM,aAAa,MAAM,cAAc,KAAK,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,SAAS,eAAe,EAAE,QAAQ,CAAC,KAAKS,EAAY,aAAa,MAAM,iBAAiB,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAKS,EAAY,aAAa,MAAM,mBAAmB,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,KAAKS,EAAY,OAAO,MAAM,QAAQ,SAAS,CAAC,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,MAAM,CAAC,KAAKA,EAAY,MAAM,MAAM,cAAc,aAAa,UAAU,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,eAAe,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,kBAAkB,CAAC,KAAKS,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,QAAQ,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,kBAAkB,CAAC,KAAKS,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,QAAQ,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,MAAM,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAKS,EAAY,OAAO,MAAM,UAAU,aAAa,GAAG,YAAY,wBAAwB,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAKS,EAAY,aAAa,MAAM,cAAc,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAKS,EAAY,aAAa,MAAM,eAAe,OAAO,GAAG,CAACT,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,KAAKS,EAAY,OAAO,MAAM,QAAQ,SAAS,CAAC,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,eAAe,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,kBAAkB,CAAC,KAAKS,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,QAAQ,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,kBAAkB,CAAC,KAAKS,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,QAAQ,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,KAAKS,EAAY,OAAO,MAAM,cAAc,SAAS,CAAC,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,WAAW,CAAC,KAAKA,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,YAAY,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,SAAS,CAACA,EAAE,UAAU,EAAE,WAAW,CAAC,KAAKS,EAAY,KAAK,MAAM,cAAc,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE,aAAa,CAAC,SAAS,YAAY,aAAa,EAAE,aAAa,IAAI,OAAO,GAAG,CAACT,EAAE,SAAS,CAACA,EAAE,UAAU,EAAE,YAAY,CAAC,KAAKS,EAAY,QAAQ,MAAM,eAAe,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,qBAAqB,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,SAAS,CAACA,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,KAAKS,EAAY,OAAO,MAAM,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,MAAM,CAAC,KAAKA,EAAY,KAAK,MAAM,QAAQ,QAAQ,CAAC,KAAK,KAAK,KAAK,QAAQ,EAAE,aAAa,CAAC,aAAa,YAAY,YAAY,QAAQ,EAAE,aAAa,KAAK,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,SAAS,CAAC,KAAKS,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,WAAW,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAKS,EAAY,aAAa,MAAM,gBAAgB,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,MAAM,CAAC,KAAKS,EAAY,aAAa,MAAM,cAAc,OAAO,GAAG,CAACT,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,KAAKS,EAAY,OAAO,MAAM,SAAS,SAAS,CAAC,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,MAAM,CAAC,KAAKA,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,OAAO,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,OAAO,CAAC,KAAKS,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,MAAM,SAAS,QAAQ,EAAE,aAAa,CAAC,MAAM,SAAS,QAAQ,EAAE,aAAa,SAAS,wBAAwB,GAAK,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,MAAM,CAAC,KAAKS,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,eAAe,GAAK,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,QAAQ,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,QAAQ,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,UAAU,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,KAAKS,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,eAAe,EAAI,EAAE,cAAc,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,OAAO,EAAE,cAAc,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,OAAO,EACp2N,OAAO,CAAC,KAAKA,EAAY,MAAM,MAAM,aAAa,YAAY,IAAI,SAAS,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,SAAS,CAAC,YAAY,CAAC,KAAKA,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,MAAM,MAAM,EAAE,aAAa,CAAC,MAAM,QAAQ,EAAE,aAAa,MAAM,wBAAwB,EAAI,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,gCAAgC,YAAY,+BAA+B,OAAO,GAAGT,EAAE,cAAc,MAAM,EAAE,UAAU,CAAC,KAAKS,EAAY,KAAK,MAAM,aAAa,iBAAiB,CAAC,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,EAAE,YAAY,IAAI,OAAO,GAAGT,EAAE,cAAc,MAAM,EAAE,QAAQ,CAAC,KAAKS,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAK,aAAa,OAAO,cAAc,MAAM,EAAE,aAAa,CAAC,KAAKA,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAM,aAAa,cAAc,cAAc,MAAM,YAAY,6BAA6B,EAAE,YAAY,CAAC,KAAKA,EAAY,KAAK,MAAM,QAAQ,QAAQ,CAAC,MAAM,MAAM,EAAE,aAAa,CAAC,YAAY,YAAY,EAAE,aAAa,MAAM,OAAO,GAAG,CAACT,EAAE,aAAa,YAAY,yBAAyB,EAAE,MAAM,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,OAAO,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,aAAa,QAAQ,YAAY,QAAQ,YAAY,GAAG,EAC/3C,aAAa,CAAC,KAAKA,EAAY,QAAQ,MAAM,gBAAgB,aAAa,GAAM,aAAa,SAAS,cAAc,cAAc,YAAY,oBAAoB,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,sBAAsB,OAAO,GAAG,CAACT,EAAE,YAAY,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,KAAKS,EAAY,OAAO,MAAM,eAAe,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,eAAe,EAAI,EAAE,wBAAwB,CAAC,KAAKA,EAAY,OAAO,MAAM,kBAAkB,aAAa,QAAQ,YAAY,OAAO,EAAE,wBAAwB,CAAC,KAAKA,EAAY,OAAO,MAAM,kBAAkB,aAAa,QAAQ,YAAY,OAAO,EAAE,aAAa,CAAC,KAAKA,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EACl4B,mBAAmB,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,WAAW,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,gBAAgB,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,OAAO,EAC3U,MAAM,CAAC,KAAKS,EAAY,OAAO,MAAM,iBAAiB,OAAO,GAAG,CAACT,EAAE,QAAQ,SAAS,CACpF,WAAW,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,IAAI,IAAI,KAAK,IAAI,EAAE,KAAK,IAAI,EACnH,UAAU,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,EAChH,KAAK,CAAC,KAAKA,EAAY,OAAO,MAAM,gBAAgB,OAAO,GAAG,CAACT,EAAE,QAAQ,SAAS,CAClF,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,cAAc,CAAC,KAAKA,EAAY,MAAM,MAAM,QAAQ,aAAa,SAAS,EACtL,kBAAkB,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,EACtH,UAAU,CAAC,KAAKA,EAAY,OAAO,MAAM,qBAAqB,OAAO,GAAG,CAACT,EAAE,QAAQ,YAAY,IAAI,SAAS,CAC5G,QAAQ,CAAC,KAAKS,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,OAAO,aAAa,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,EAAE,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,MAAM,CAAC,KAAKS,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,MAAM,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,KAAK,OAAO,GAAG,CAACT,EAAE,OAAO,EAChc,QAAQ,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,iBAAiB,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,KAAK,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,IAAI,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,KAAK,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,QAAQ,YAAY,GAAG,CAAC,CAAC,EAC9hB,YAAY,CAAC,KAAKS,EAAY,QAAQ,MAAM,mBAAmB,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,gBAAgB,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,YAAY,YAAY,GAAG,EAAE,WAAW,CAAC,KAAKS,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAClZ,cAAc,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,iBAAiB,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,CAACT,EAAE,UAAU,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,gBAAgB,aAAa,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,WAAW,YAAY,GAAG,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,MAAM,YAAY,OAAO,GAAK,SAAS,CAAC,MAAM,CAAC,KAAKA,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,eAAe,EAAI,EAAE,KAAK,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,YAAY,GAAG,EAAE,KAAK,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,KAAKA,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,MAAM,EAAE,sBAAsB,CAAC,KAAKA,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,MAAM,SAAS,QAAQ,EAAE,aAAa,CAAC,MAAM,SAAS,QAAQ,EAAE,aAAa,SAAS,wBAAwB,EAAI,EAAE,qBAAqB,CAAC,KAAKA,EAAY,OAAO,MAAM,eAAe,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,eAAe,EAAI,EAAE,wBAAwB,CAAC,KAAKA,EAAY,OAAO,MAAM,kBAAkB,aAAa,QAAQ,YAAY,OAAO,EAAE,wBAAwB,CAAC,KAAKA,EAAY,OAAO,MAAM,kBAAkB,aAAa,QAAQ,YAAY,QAAQ,YAAY,GAAG,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,YAAY,aAAa,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,eAAe,EAAI,EAAE,aAAa,CAAC,KAAKA,EAAY,KAAK,MAAM,YAAY,YAAY,IAAI,QAAQ,CAAC,SAAS,OAAO,UAAU,EAAE,aAAa,CAAC,SAAS,OAAO,WAAW,EAAE,aAAa,QAAQ,EACjrE,YAAY,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,SAAS,CAClE,YAAY,CAAC,KAAKA,EAAY,QAAQ,MAAM,iBAAiB,aAAa,GAAK,aAAa,MAAM,cAAc,KAAK,YAAY,GAAG,EAAE,QAAQ,CAAC,KAAKA,EAAY,MAAM,MAAM,WAAW,aAAa,kBAAkB,OAAO,GAAGT,EAAE,YAAY,YAAY,GAAG,EAC7P,QAAQ,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,UAAU,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,SAAS,CAAC,KAAKA,EAAY,MAAM,MAAM,YAAY,aAAa,oBAAoB,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,YAAY,GAAG,EAC7oB,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EAAE,KAAK,CAAC,KAAKA,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,aAAa,MAAM,EAAE,aAAa,CAAC,aAAa,mBAAmB,EAAE,aAAa,aAAa,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,OAAO,CAAC,KAAKS,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,SAAS,SAAS,OAAO,QAAQ,YAAY,SAAS,EAAE,aAAa,CAAC,SAAS,SAAS,OAAO,QAAQ,YAAY,SAAS,EAAE,aAAa,SAAS,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,OAAO,YAAY,EAAE,WAAW,CAAC,KAAKS,EAAY,KAAK,MAAM,OAAO,QAAQ,OAAO,KAAK6H,EAAY,EAAE,aAAa,OAAO,OAAOA,EAAY,CAAC,CAAC,IAAI,GAAGQ,EAAE,KAAK,EAAE,aAAa,kBAAkB,OAAO,GAAG,CAAC9I,EAAE,SAASA,EAAE,OAAO,MAAM,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,MAAM,aAAa,aAAa,GAAG,YAAY,8BAA8B,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,KAAKS,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAM,aAAa,MAAM,cAAc,KAAK,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,OAAO,MAAM,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,QAAQ,YAAY,GAAG,EAClpC,QAAQ,CAAC,KAAKS,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,WAAW,CAAC,KAAKA,EAAY,KAAK,MAAM,iBAAiB,QAAQ,CAAC,MAAM,OAAO,OAAO,MAAM,EAAE,aAAa,CAAC,YAAY,cAAc,YAAY,YAAY,EAAE,aAAa,OAAO,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,WAAW,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,MAAM,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,iBAAiB,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,IAAI,IAAI,EAAE,IAAI,GAAG,KAAK,KAAK,YAAY,IAAI,OAAO,GAAG,CAACT,EAAE,OAAO,CAAC,CAAC,EACtmB,QAAQ,CAAC,KAAKS,EAAY,OAAO,MAAM,UAAU,SAAS,CAC1D,MAAM,CAAC,KAAKA,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,KAAK,EAAE,YAAY,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,KAAK,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,SAAS,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,MAAM,YAAY,GAAG,EAC5f,YAAY,CAAC,KAAKS,EAAY,KAAK,MAAM,WAAW,QAAQ,CAAC,OAAO,WAAW,SAAS,SAAS,MAAM,SAAS,EAAE,aAAa,CAAC,cAAc,WAAW,SAAS,SAAS,MAAM,SAAS,EAAE,aAAa,MAAM,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,IAAI,YAAY,GAAG,EAAE,KAAK,CAAC,KAAKA,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EACnb,aAAa,CAAC,KAAKA,EAAY,QAAQ,MAAM,gBAAgB,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,WAAW,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,YAAY,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,YAAY,EAAE,WAAW,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,aAAa,YAAY,GAAG,EACniB,SAAS,CAAC,KAAKS,EAAY,QAAQ,MAAM,WAAW,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,SAAS,YAAY,GAAG,EACrY,WAAW,CAAC,KAAKS,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,KAAK,IAAI,EAAE,IAAI,IAAI,KAAK,KAAK,OAAO,GAAG,CAACT,EAAE,WAAW,YAAY,GAAG,EAC9Q,UAAU,CAAC,KAAKS,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,IAAI,IAAI,EAAE,IAAI,GAAG,KAAK,KAAK,OAAO,GAAG,CAACT,EAAE,UAAU,YAAY,GAAG,EACvQ,SAAS,CAAC,KAAKS,EAAY,QAAQ,MAAM,WAAW,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,YAAY,gDAAgD,EAAE,WAAW,CAAC,KAAKA,EAAY,KAAK,MAAM,QAAQ,QAAQ,CAAC,YAAY,UAAU,UAAU,UAAU,EAAE,aAAa,CAAC,YAAY,UAAU,UAAU,UAAU,EAAE,aAAa,YAAY,OAAO,GAAG,CAACT,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,CAACT,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,UAAU,aAAa,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,QAAQ,EAAE,kBAAkB,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,gBAAgB,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,QAAQ,EAAE,kBAAkB,CAAC,KAAKS,EAAY,KAAK,MAAM,gBAAgB,QAAQ,CAAC,UAAU,MAAM,EAAE,aAAa,CAAC,UAAU,MAAM,EAAE,aAAa,UAAU,OAAO,GAAG,CAACT,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,UAAU,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAKS,EAAY,QAAQ,MAAM,WAAW,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,QAAQ,EAC13C,KAAK,CAAC,KAAKS,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,YAAY,yBAAyB,EAAE,WAAW,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,IAAI,EAAE,YAAY,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,GAAG,CAACT,EAAE,IAAI,EAAE,YAAY,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,cAAc,aAAa,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,CAACT,EAAE,IAAI,CAAC,CAAC,EACliB,YAAY,CAAC,KAAKS,EAAY,MAAM,MAAM,eAAe,YAAY,IAAI,SAAS,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAKA,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAK,aAAa,KAAK,cAAc,KAAK,EAAE,UAAU,CAAC,KAAKA,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,QAAQ,MAAM,EAAE,aAAa,CAAC,cAAc,YAAY,EAAE,aAAa,QAAQ,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,MAAM,CAAC,KAAKS,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,UAAU,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,KAAK,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,KAAK,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,KAAK,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,QAAQ,YAAY,GAAG,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,YAAY,8BAA8B,OAAO,GAAG,CAACT,EAAE,OAAO,EAAE,MAAM,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,YAAY,0BAA0B,OAAO,GAAG,CAACT,EAAE,OAAO,EAC/zC,MAAM,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,aAAa,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,YAAY,sBAAsB,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,YAAY,MAAM,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY,uBAAuB,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,YAAY,MAAM,EAAE,QAAQ,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,YAAY,MAAM,EAAE,QAAQ,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,YAAY,MAAM,EAAE,QAAQ,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,WAAW,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,SAASA,EAAE,YAAY,OAAO,YAAY,GAAG,EAAE,WAAW,CAAC,KAAKS,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,OAAO,CAAC,CAAC,CAAC,EACp9B,OAAO,CAAC,KAAKS,EAAY,OAAO,MAAM,SAAS,SAAS,CAAC,WAAW,CAAC,KAAKA,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,cAAc,eAAe,QAAQ,EAAE,aAAa,CAAC,cAAc,eAAe,QAAQ,EAAE,aAAa,cAAc,YAAY,0BAA0B,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,eAAe,GAAK,YAAY,qBAAqB,OAAO,GAAGT,EAAE,aAAa,cAAc,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,iBAAiB,aAAa,KAAK,IAAI,EAAE,IAAI,GAAG,KAAK,KAAK,YAAY,6BAA6B,OAAO,GAAGT,EAAE,aAAa,QAAQ,EAAE,EAAE,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,IAAI,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,IAAI,aAAa,EAAE,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,IAAI,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAC/6B,IAAI,CAAC,KAAKA,EAAY,QAAQ,MAAM,iBAAiB,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,YAAY,kBAAkB,OAAO,GAAGT,EAAE,aAAa,cAAc,EAAE,SAAS,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,YAAY,yBAAyB,OAAO,GAAG,CAACT,EAAE,KAAKA,EAAE,aAAa,cAAc,EAAE,YAAY,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,KAAK,IAAI,EAAE,IAAI,GAAG,KAAK,KAAK,YAAY,qBAAqB,OAAO,GAAG,CAACT,EAAE,KAAKA,EAAE,aAAa,cAAc,EAAE,WAAW,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,eAAe,aAAa,IAAI,IAAI,EAAE,IAAI,GAAG,KAAK,KAAK,YAAY,yBAAyB,OAAO,GAAG,CAACT,EAAE,KAAKA,EAAE,aAAa,cAAc,CAAC,CAAC,EAC9wB,YAAY,CAAC,KAAKS,EAAY,OAAO,MAAM,cAAc,SAAS,CAAC,KAAK,CAAC,KAAKA,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,YAAY,qBAAqB,EAAE,YAAY,CAAC,KAAKA,EAAY,QAAQ,MAAM,eAAe,aAAa,GAAK,aAAa,SAAS,cAAc,MAAM,YAAY,uBAAuB,EAAE,OAAO,CAAC,KAAKA,EAAY,OAAO,MAAM,UAAU,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,eAAe,GAAK,OAAO,GAAG,CAACT,EAAE,KAAK,YAAY,sBAAsB,EAAE,aAAa,CAAC,KAAKS,EAAY,OAAO,MAAM,aAAa,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,IAAI,eAAe,GAAK,OAAO,GAAG,CAACT,EAAE,KAAK,YAAY,sBAAsB,EAAE,cAAc,CAAC,KAAKS,EAAY,OAAO,MAAM,aAAa,aAAa,IAAI,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,eAAe,GAAK,OAAO,GAAG,CAACT,EAAE,KAAK,YAAY,0BAA0B,EAAE,UAAU,CAAC,KAAKS,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,KAAK,YAAY,yBAAyB,EAAE,UAAU,CAAC,KAAKS,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,KAAK,YAAY,oBAAoB,EAAE,YAAY,CAAC,KAAKS,EAAY,QAAQ,MAAM,eAAe,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,KAAK,YAAY,uBAAuB,EAAE,eAAe,CAAC,KAAKS,EAAY,QAAQ,MAAM,kBAAkB,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,KAAK,YAAY,sBAAsB,EAAE,MAAM,CAAC,KAAKS,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAM,aAAa,MAAM,cAAc,MAAM,OAAO,GAAG,CAACT,EAAE,KAAK,YAAY,uBAAuB,CAAC,CAAC,EAC3qD,GAAG,CAAC,KAAKS,EAAY,OAAO,MAAM,SAAS,SAAS,CAAC,UAAU,CAAC,KAAKA,EAAY,QAAQ,MAAM,gBAAgB,aAAa,GAAK,aAAa,OAAO,cAAc,MAAM,EAAE,WAAW,CAAC,KAAKA,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,YAAY,sBAAsB,EAAE,aAAa,CAAC,KAAKA,EAAY,QAAQ,MAAM,gBAAgB,aAAa,GAAM,aAAa,OAAO,cAAc,OAAO,YAAY,yBAAyB,EAAE,WAAW,CAAC,KAAKA,EAAY,KAAK,MAAM,cAAc,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,aAAa,CAAC,MAAM,KAAK,IAAI,EAAE,aAAa,MAAM,OAAO,GAAG,CAACT,EAAE,YAAY,EAAE,SAAS,CAAC,KAAKS,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAM,aAAa,OAAO,cAAc,OAAO,YAAY,gBAAgB,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,OAAO,GAAG,CAACT,EAAE,SAAS,YAAY,sBAAsB,EAAE,cAAc,CAAC,KAAKS,EAAY,OAAO,eAAe,GAAK,MAAM,iBAAiB,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,OAAO,GAAG,CAACT,EAAE,SAAS,YAAY,0BAA0B,EAAE,WAAW,CAAC,KAAKS,EAAY,MAAM,MAAM,eAAe,aAAa,yBAAyB,OAAO,GAAG,CAACT,EAAE,SAAS,YAAY,qBAAqB,EAAE,WAAW,CAAC,KAAKS,EAAY,MAAM,MAAM,eAAe,aAAa,wBAAwB,OAAO,GAAG,CAACT,EAAE,SAAS,YAAY,kBAAkB,EAAE,SAAS,CAAC,KAAKS,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAM,aAAa,OAAO,cAAc,OAAO,YAAY,sBAAsB,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,YAAY,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,SAAS,YAAY,sBAAsB,EAAE,cAAc,CAAC,KAAKS,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAM,aAAa,OAAO,cAAc,OAAO,YAAY,sBAAsB,EAAE,cAAc,CAAC,KAAKA,EAAY,OAAO,eAAe,GAAK,MAAM,kBAAkB,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,CAACT,EAAE,cAAc,YAAY,4BAA4B,EAAE,aAAa,CAAC,KAAKS,EAAY,QAAQ,MAAM,iBAAiB,aAAa,GAAM,YAAY,uBAAuB,CAAC,CAAC,EACnpE,kBAAkB,CAAC,KAAKA,EAAY,aAAa,MAAM,qBAAqB,EAAE,gBAAgB,CAAC,KAAKA,EAAY,aAAa,MAAM,mBAAmB,EAAE,wBAAwB,CAAC,KAAKA,EAAY,aAAa,MAAM,yBAAyB,EAAE,aAAa,CAAC,KAAKA,EAAY,aAAa,MAAM,aAAa,CAAC,EAElO,GAAU,CAAC,gBAAgB,CAAC,SAAS,WAAW,KAAK,EAAE,IAAI,EAAE,SAAS,UAAU,cAAc,MAAM,EAAE,aAAa,CAAC,SAAS,QAAQ,KAAK,GAAG,IAAI,GAAG,OAAO,KAAK,WAAW,mBAAmB,MAAM,OAAO,OAAO,+BAA+B,aAAa,EAAE,QAAQ,WAAW,SAAS,GAAG,WAAW,YAAY,cAAc,OAAO,WAAW,WAAW,SAAS,GAAG,EAAE,WAAW,CAAC,WAAW,IAAI,aAAa,CAAC,EAAE,UAAU,CAAC,MAAM,MAAM,EAAE,eAAe,CAAC,MAAM,UAAU,WAAW,GAAG,EAAE,WAAW,CAAC,WAAW,MAAM,EAAE,WAAW,CAAC,WAAW,OAAO,SAAS,CAAC,EAAE,aAAa,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,GAAG,UAAU,OAAO,UAAU,OAAO,SAAS,IAAI,SAAS,IAAI,QAAQ,QAAQ,MAAM,yBAAyB,WAAW,mBAAmB,OAAO,mCAAmC,aAAa,EAAE,eAAe,aAAa,SAAS,GAAG,WAAW,wBAAwB,WAAW,IAAI,cAAc,MAAM,EAAE,YAAY,CAAC,QAAQ,eAAe,SAAS,GAAG,MAAM,yBAAyB,aAAa,kCAAkC,aAAa,EAAE,QAAQ,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,SAAS,SAAS,SAAS,aAAa,WAAW,QAAQ,OAAO,WAAW,SAAS,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,SAAS,SAAS,aAAa,UAAU,CAAC,C,OC5Cn1C,SAAgBsI,GAAa,EAAI,CAAC,MAAM,GAAGC,EAAI,eAAe,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,oBAAoB,GAAGA,EAAI,YAAY,GAAGA,EAAI,iBAAiB,GAAGA,EAAI,UAAU,GAAGA,EAAI,UAAU,GAAGA,EAAI,UAAU,GAAGA,EAAI,mBAAmB,GAAGA,EAAI,aAAa,GAAGA,EAAI,UAAU,GAAGA,EAAI,IAAI,GAAGA,EAAI,YAAY,GAAGA,EAAI,eAAe,GAAGA,EAAI,MAAM,GAAGA,EAAI,eAAe,GAAGA,EAAI,WAAW,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,kBAAkB,GAAGA,EAAI,cAAc,GAAGA,EAAI,aAAa,GAAGA,EAAI,SAAU,CAAC,SAAgBC,GAAa,EAAI,CAAC,IAAIC,EAAE,GAAGF,EAAI,sBAAsB,GAAGA,EAAI,0BAA0B,GAAGA,EAAI,sBAAsB,GAAGA,EAAI,aAAa,GAAGA,EAAI,aAAa,GAAGA,EAAI,aAAa,GAAGA,EAAI,cAAc,GAAGA,EAAI,cAAc,GAAGA,EAAI,WAAW,GAAGA,EAAI,mBAAmB,GAAGA,EAAI,aAAa,OAAQ,IAAI,IAAM/H,KAAM+H,EAAI,YAAiB/H,IAAY,GAAG,OAAOA,EAAG,QAAQ,GAAGA,EAAG,UAAU,GAAGA,EAAG,MAAM,GAAGA,EAAG,UAAU,GAAGA,EAAG,KAAK,GAAGA,EAAG,KAAK,GAAGA,EAAG,KAAK,GAAGA,EAAG,SAAS,GAAGA,EAAG,MAAM,GAAGA,EAAG,MAAM,GAAGA,EAAG,SAAS,GAAGA,EAAG,QAAQ,GAAGA,EAAG,QAAQ,GAAGA,EAAG,QAAQ,GAAGA,EAAG,cAAe,OAAOiI,CAAE,CAAC,SAAgBC,GAAQ,EAAI,CAAC,MAAM,GAAGH,EAAI,kBAAkB,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,kBAAkB,GAAGA,EAAI,WAAW,GAAGA,EAAI,eAAgB,CAAC,SAAgBI,GAAY,EAAI,CAAC,MAAM,GAAGJ,EAAI,aAAa,GAAGA,EAAI,cAAc,GAAGA,EAAI,eAAe,GAAGA,EAAI,YAAY,GAAGA,EAAI,YAAY,GAAGA,EAAI,SAAS,GAAGA,EAAI,WAAW,GAAGA,EAAI,mBAAmB,GAAGA,EAAI,WAAW,GAAGA,EAAI,SAAS,GAAGA,EAAI,WAAW,GAAGA,EAAI,eAAe,GAAGA,EAAI,eAAe,GAAGA,EAAI,iBAAiB,GAAGA,EAAI,0BAA0B,GAAGA,EAAI,4BAA4B,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,mBAAmB,GAAGA,EAAI,eAAe,GAAGA,EAAI,cAAc,GAAGA,EAAI,aAAa,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,YAAY,GAAGA,EAAI,kBAAkB,GAAGA,EAAI,qBAAqB,GAAGA,EAAI,qBAAqB,GAAGA,EAAI,iBAAiB,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,iBAAiB,GAAGA,EAAI,WAAW,GAAGA,EAAI,WAAW,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,gBAAgB,GAAGA,EAAI,UAAU,GAAGA,EAAI,SAAS,GAAGA,EAAI,YAAY,GAAGA,EAAI,YAAa,CAAC,SAAgBK,GAAiB,EAAI,CAAC,IAAIH,EAAE,CAACF,EAAI,aAAaA,EAAI,WAAWA,EAAI,aAAaA,EAAI,aAAaA,EAAI,aAAaA,EAAI,eAAeA,EAAI,eAAeA,EAAI,eAAeA,EAAI,gBAAgBA,EAAI,iBAAiBA,EAAI,WAAWA,EAAI,oBAAoBA,EAAI,mBAAmBA,EAAI,cAAcA,EAAI,cAAcA,EAAI,cAAcA,EAAI,YAAYA,EAAI,cAAcA,EAAI,cAAcA,EAAI,cAAcA,EAAI,mBAAmBA,EAAI,kBAAkBA,EAAI,kBAAkBA,EAAI,sBAAsBA,EAAI,0BAA0BA,EAAI,gBAAgBA,EAAI,gBAAgBA,EAAI,gBAAgBA,EAAI,UAAUA,EAAI,IAAIA,EAAI,sBAAsBA,EAAI,gBAAgBA,EAAI,oBAAoBA,EAAI,kBAAkBA,EAAI,sBAAsBA,EAAI,sBAAsBA,EAAI,sBAAsBA,EAAI,+BAA+BA,EAAI,2BAA2BA,EAAI,wBAAwBA,EAAI,wBAAwBA,EAAI,wBAAwBA,EAAI,oBAAoBA,EAAI,sBAAsBA,EAAI,sBAAsBA,EAAI,qBAAqB,CAAC,CAAC,KAAK,GAAG,EAAE,GAAGA,EAAI,eAAe,OAAQ,IAAI,IAAMM,KAAQN,EAAI,cAAmBM,IAAc,GAAG,OAAOA,EAAK,QAAQ,GAAGA,EAAK,MAAM,GAAGA,EAAK,KAAK,GAAGA,EAAK,KAAK,GAAGA,EAAK,KAAK,GAAGA,EAAK,KAAK,GAAGA,EAAK,KAAK,GAAGA,EAAK,QAAS,OAAOJ,CAAE,CAAC,SAAgBK,GAAgB,EAAI,CAAC,OAAOR,GAAaC,CAAG,EAAE,KAAKC,GAAaD,CAAG,EAAE,KAAKG,GAAQH,CAAG,EAAE,KAAKI,GAAYJ,CAAG,CAAE,C,uCCApyG,SAAgBS,GAAmB,EAAW,EAAS,CAAC,IAAMC,EAAY,OAAOC,GAAU,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAACD,EAAY,OAAO,KAAK,IAAME,EAAUF,EAAY,YAAY,EAAE,OAAOG,EAAW,KAAK,GAAG5J,EAAE,OAAOyJ,CAAW,GAAGG,EAAW,KAAK,GAAG5J,EAAE,KAAK,YAAY,IAAI2J,CAAS,GAAGC,EAAW,KAAK,GAAG5J,EAAE,KAAK,YAAY,CAAC,CAAC,SAAS2J,CAAS,CAAC,GAAG,IAAK,CAAC,SAAgBE,GAAwB,EAAO,EAAS,CAAIC,IAAW,QAAQC,EAAO,QAAQzU,GAAe,CAAC,EAAE,EAAO,kBAAkB,IAAcwU,IAAW,YAAYC,EAAO,QAAQxU,GAAmB,GAAQ,EAAE,EAAO,kBAAkB,KAAYwU,EAAO,QAAQvU,GAAiB,GAAQ,EAAE,EAAO,kBAAkB,GAAO,CAAC,SAAgBwU,GAAoC,EAAO,EAAM,CAAKC,IAAmBA,EAAO,6BAA6B,aAAaA,EAAO,2BAA2B,EAAMA,EAAO,gCAAgCC,GAAOA,EAAM,oBAAoB,WAAWD,EAAO,8BAA8B,EAAG,EAAO,+BAA+B,KAAK,EAAO,6BAA6B,KAAK,EAAO,8BAA8B,KAAK,EAAO,+BAA+B,KAAK,EAAO,4BAA4B,KAAK,CAAC,SAAgBE,EAA+B,EAAO,CAAC,IAAMC,EAAaL,GAAQ,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,SAASK,CAAY,GAAGA,GAAc,EAAE,MAAO,GAAM,IAAMC,EAAQ,KAAK,IAAI,KAAKD,EAAa,IAAI,EAAqF,OAAnEL,EAAO,WAAW,GAAe,GAASA,EAAO,MAAM,IAAIM,GAAeN,EAAO,MAAM,IAAIK,EAAaC,CAAQ,CAAC,SAAgBC,GAAkC,EAAO,EAAW,EAAS,CAAoS,OAAhSL,EAAO,4BAA4BM,GAAYN,EAAO,+BAA+BO,KAAU,EAAO,0BAA0BD,EAAW,EAAO,6BAA6BC,EAAS,EAAO,uBAAuB,GAAO,CAAC,EAAO,2BAA2BD,EAAWC,IAAWC,CAAK,CAAE,GAAUR,EAAO,sBAAuB,CAAC,SAAgBS,GAA2B,EAAO,EAAM,EAAO,EAAW,CAAC,GAAG,CAACT,GAAQ,CAACC,GAAO,CAACH,GAAQ,CAACY,EAAW,OAAOX,GAAoCC,EAAOC,CAAK,EAAE,IAAMU,EAAS,GAAK,CAAIX,EAAO,+BAA+BF,IAAcC,GAAoCC,EAAOC,CAAK,EAAES,EAAWE,CAAG,EAAE,EAAQC,EAAW,GAAK,CAAID,GAAK,SAASd,GAAca,EAASC,CAAG,CAAE,EAAE,EAAO,+BAA+BC,EAAW,EAAO,6BAA6Bf,EAAO,EAAO,+BAA+BY,EAAWT,EAAM,iBAAiB,WAAWY,CAAU,EAEzjF,IAAMV,EAAaL,EAAO,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,SAASK,CAAY,GAAGA,EAAa,EAAE,CAAC,GAAGD,EAA+BJ,CAAM,GAAG,CAACA,EAAO,YAAY,EAAE,CAAC,EAAO,4BAA4B,eAAe,CAACa,EAAS,CAAC,SAAO,KAAK,uBAAuB,CAAC,CAAE,EAAE,CAAC,EAAE,MAAO,CAAC,IAAMG,EAAU,KAAK,IAAI,IAAIX,GAAcL,EAAO,MAAM,EAAE,EAAQiB,EAAM,KAAK,IAAI,KAAK,KAAK,KAAKjB,EAAO,WAAW,IAAIG,EAAM,WAAW,EAAE,CAAC,EAAE,EAAO,4BAA4B,eAAe,CAACU,EAAS,CAAC,SAAO,KAAK,uBAAuB,CAAC,CAAE,GAAGG,EAAUC,EAAM,KAAK,GAAG,CAAE,CAAC,CAAC,SAAgBC,GAAkC,EAAO,EAAM,EAAQ,EAAW,CAAC,IAAMC,GAAcC,GAAS,CAAC,EAAA,CAAG,OAAO,OAAO,EAAE,GAAG,CAAClB,GAAQ,CAACC,GAAO,CAACgB,EAAa,QAAQ,CAACP,EAAW,OAAOX,GAAoCC,EAAOC,CAAK,EAAE,IAAMkB,EAAQ,IAAI,IAAIF,CAAY,EAAQN,EAAS,GAAK,CAAIX,EAAO,gCAAgCmB,IAAepB,GAAoCC,EAAOC,CAAK,EAAES,EAAWE,CAAG,EAAE,EAAQC,EAAW,GAAK,CAAKM,EAAQ,IAAIP,GAAK,MAAM,IAASO,EAAQ,OAAOP,EAAI,MAAM,EAAKO,EAAQ,OAAO,GAAER,EAASC,CAAG,EAAE,EAAE,EAAO,+BAA+BC,EAAW,EAAO,8BAA8BM,EAAQ,EAAO,+BAA+BT,EAAWT,EAAM,iBAAiB,WAAWY,CAAU,EAAE,IAAIO,EAAa,EAAMC,EAAc,EAAE,IAAI,IAAMvB,KAAUmB,EAAa,CAAC,GAAGf,EAA+BJ,CAAM,GAAG,CAACA,EAAO,YAAY,EAAE,CAACqB,EAAQ,OAAOrB,CAAM,EAAE,IAAgB,QAAS,CAAC,IAAMK,EAAaL,EAAO,UAAU,CAAC,EAAE,UAAU,EAAK,CAAC,OAAO,SAASK,CAAY,GAAGA,GAAc,IAAW,EAAa,KAAK,IAAIiB,EAAa,KAAK,IAAI,IAAIjB,GAAcL,EAAO,MAAM,EAAE,CAAC,EAAE,CAAC,GAAGqB,EAAQ,OAAO,GAAGE,EAAc,EAAG,EAAO,4BAA4B,eAAeV,EAAS,CAAC,QAAQM,EAAa,KAAK,2BAA2B,CAAC,EAAE,CAAC,OAAU,GAAGG,EAAa,EAAE,CAAC,IAAML,EAAM,KAAK,IAAI,KAAK,KAAK,KAAKE,EAAa,EAAE,CAAC,WAAW,IAAIhB,EAAM,WAAW,EAAE,CAAC,EAAE,EAAO,4BAA4B,eAAeU,EAAS,CAAC,QAAQM,EAAa,KAAK,2BAA2B,CAAC,GAAGG,EAAaL,EAAM,KAAK,GAAG,CAAE,CAAC,CAAC,SAAgBO,GAAoB,EAAW,EAAW,CAAC,IAAMC,EAASC,GAAY,UAAU,EAAQC,EAASC,GAAY,UAAU,EAAMH,GAAU,UAAWE,GAAU,WAA6G,EAAW,MAAlFD,EAAW,KAAKD,EAAS,SAASA,EAAS,UAAUA,EAAS,SAAwCA,EAAS,SAASE,EAAS,SAAS,CAAC,SAAgBE,GAAsB,EAAO,EAAM,EAAW,EAAI,CAAkF,GAA9E,CAAC3B,GAAQ,CAACC,GAAO,CAACN,GAAY,QAAiB,CAACb,EAAI,oBAA6BkB,EAAO,qBAAqB,OAAO,EAAO,qBAAqB,GAAK,IAAM4B,EAAMjC,EAAW,MAAM,EAAQkC,EAAU,CAAC,SAAS,OAAO,UAAU,EAAMC,EAAI,EAAQC,MAAa,CAAC,GAAG,CAAC/B,EAAO,sBAAsB,CAACC,EAAM,OAAO,IAAM+B,EAAKJ,EAAM,KAAO,GAAII,EAEnxF,GAAM,WAAWA,CAAI,EAAE,IAAI,IAAMnC,KAAYgC,EAAW7B,EAAO,uBAAuB,MAAM,GAAGgC,EAAK,KAAK,GAAGnC,GAAU,EAAG,sBAAsBkC,CAAQ,CAAlI,CAAoI,EAAE,sBAAsBA,CAAQ,CAAE,CAIxL,SAAgBE,GAAgB,EAAM,EAAW,EAAK,EAAS,EAAQ,CAAC,EAAE,CAAC,GAAIhC,GAAQN,GAAY,OAAc,IAAGuC,IAAO,UAAUzC,EAAS,CAAC,IAAMD,EAAY,OAAOC,CAAQ,CAAC,CAAC,KAAK,EAAQuC,EAAKzC,GAAmBI,EAAWH,CAAW,EAAE,GAAG,CAACwC,EAAK,CAAIG,EAAQ,QAAQpC,GAAoCoC,EAAQ,OAAOlC,CAAK,EAAG,QAAQ,KAAK,qBAAqBT,EAAY,yBAAyBG,EAAW,IAAI,GAAG5J,EAAE,IAAI,CAAC,EAAE,MAAO,CAAC,IAAMqM,EAAc,KAAK,IAAI,EAAED,EAAQ,eAAe,CAAC,EAAQnC,EAAOmC,EAAQ,OAAatC,EAASsC,EAAQ,UAAU,SAAeE,EAAU,GAAGL,EAAK,KAAK,GAAGnC,IAAiByC,EAAUzC,IAAW,QAAOsC,EAAQ,WAAW,GAAY7B,EAAW,UAAU+B,EAAU,GAAGD,EAAc,GAAG,KAAQ,KAAS,GAAG,KAAQ,UAAc,GAAG,KAAQ,gBAAoB,GAAGE,IAAetC,GAAQA,EAAO,2BAA2BM,IAAY,EAAO,2BAA2B,IAAI,IAAMiC,EAAqB1C,IAAW,QAAQG,GAAQ,6BAA6BM,EAAW,GAAG8B,EAAc,GAAGpC,EAAO,CAAC,GAAGA,EAAO,sBAAsBqC,EAAU,CAAC,IAAMG,EAAaxC,EAAO,wBAAwBC,EAAM,WAAW+B,CAAI,EAAQS,EAAYzC,EAAO,2BAA2BM,EAAgf,GAAreV,GAAwB4C,EAAa3C,CAAQ,EAAE,EAAa,QAAQ,GAAUA,IAAW,QAAQK,EAA+BsC,CAAY,IAAI,EAAa,OAAO,IAAOA,EAAa,mBAAmB,CAAC,EAAEA,EAAa,sBAAsB,CAAC,EAAKL,EAAQ,iBAAiB,CAACM,GAAa5C,IAAW,QAAQ,CAAC4C,GAAaD,EAAa,MAAM,EAAEA,EAAa,KAAK,GAAW,CAACA,EAAa,UAAU,GAAG,EAAE3C,IAAW,QAAQK,EAA+BsC,CAAY,IAAIA,EAAa,KAAK,EAAM3C,IAAW,QAAQsC,EAAQ,gBAAgB,CAACI,EAAqB,CAAC,IAAMG,EAAarC,GAAkCL,EAAOM,EAAW6B,EAAQ,cAAc,GAAKnC,EAAO,+BAA+BwC,GAAcxC,EAAO,iCAAiC0C,IAAcjC,GAA2BT,EAAOC,EAAMuC,EAAaE,CAAY,CAAG,MAAM3C,GAAoCC,EAAOC,CAAK,EAAG,EAAO,uBAAuBuC,EAAa,EAAO,yBAAyBR,EAAK,KAAK,EAAO,yBAAyB1B,EAAW,MAAO,CAAC,IAAMoB,EAAWzB,EAAM,WAAW+B,CAAI,EAAQR,EAAWxB,EAAO,uBAA6B2C,EAAY,CAAC,CAACnB,GAAYA,IAAaE,EAAiBkB,EAAc5C,EAAO,uBAAuB,IAAIqC,CAAS,EAAE,AAAkCrC,EAAO,wCAAsB,IAAI,IAAKJ,GAAwB8B,EAAW7B,CAAQ,EAAE,EAAW,QAAQ,GAAUA,IAAW,QAAQK,EAA+BwB,CAAU,IAAI,EAAW,OAAO,IAAOA,EAAW,mBAAmB,CAAC,EAAEA,EAAW,sBAAsB,CAAC,GAAKS,EAAQ,iBAAiBtC,IAAW,QAAQ,CAAC+C,IAAelB,EAAW,MAAM,EAAMS,EAAQ,WAAWX,GAAYA,IAAaE,GAAY,CAACS,EAAQ,iBAAiBb,GAAoBE,EAAWE,CAAU,EAAGA,EAAW,KAAK,EAAK7B,IAAW,QAAQsC,EAAQ,eAA+G1B,GAA2BT,EAAOC,EAAMyB,EAApHrB,GAAkCL,EAAOM,EAAW6B,EAAQ,cAA8E,CAAC,EAAQpC,GAAoCC,EAAOC,CAAK,EAAM0C,EAAanB,EAAW,YAAYE,EAAWU,EAAc,CAAC,CAACD,EAAQ,IAAI,EAAQT,EAAW,OAAOU,CAAa,EAAGpC,EAAO,sBAAsB,IAAIqC,CAAS,EAAE,EAAO,uBAAuBX,EAAW,EAAO,oBAAoBW,EAAU,EAAO,yBAAyBL,EAAK,KAAK,EAAO,yBAAyB1B,EAAW,MAAO,CAAC,IAAMR,EAAOG,EAAM,WAAW+B,CAAI,EAAE,GAAGhC,GAAQA,EAAO,sBAAsBqC,EAAU,CAAC,IAAMI,EAAYzC,EAAO,2BAA2BM,EAA8a,GAAnaV,GAAwBE,EAAOD,CAAQ,EAAE,EAAO,QAAQ,GAAUA,IAAW,QAAQK,EAA+BJ,CAAM,IAAI,EAAO,OAAO,IAAOA,EAAO,mBAAmB,CAAC,EAAEA,EAAO,sBAAsB,CAAC,EAAKqC,EAAQ,iBAAiB,CAACM,GAAa5C,IAAW,QAAQ,CAAC4C,GAAa3C,EAAO,MAAM,EAAEA,EAAO,KAAK,GAAW,CAACA,EAAO,UAAU,GAAG,EAAED,IAAW,QAAQK,EAA+BJ,CAAM,IAAIA,EAAO,KAAK,EAAMD,IAAW,QAAQsC,EAAQ,gBAAgB,CAACI,EAAqB,CAAC,IAAMG,EAAarC,GAAkCL,EAAOM,EAAW6B,EAAQ,cAAc,GAAKnC,EAAO,+BAA+BF,GAAQE,EAAO,iCAAiC0C,IAAcjC,GAA2BT,EAAOC,EAAMH,EAAO4C,CAAY,CAAG,MAAM3C,GAAoCC,EAAOC,CAAK,EAAG,EAAO,uBAAuBH,EAAO,EAAO,oBAAoBuC,EAAU,EAAO,yBAAyBL,EAAK,KAAK,EAAO,yBAAyB1B,EAAW,MAAO,CAAIN,GAAQ,wBAAwBA,EAAO,yBAAyBF,GAAQE,EAAO,uBAAuB,KAAK,EAAGJ,GAAwBE,EAAOD,CAAQ,EAAE,EAAO,QAAQ,GAAUA,IAAW,QAAQK,EAA+BJ,CAAM,IAAI,EAAO,OAAO,IAAOA,EAAO,mBAAmB,CAAC,EAAEA,EAAO,sBAAsB,CAAC,GAAKqC,EAAQ,iBAAiBtC,IAAW,QAAQ,CAACC,EAAO,UAAU,IAAGA,EAAO,MAAM,EAAGA,EAAO,KAAK,EAAKE,IAAWH,IAAW,QAAQsC,EAAQ,eAA+G1B,GAA2BT,EAAOC,EAAMH,EAApHO,GAAkCL,EAAOM,EAAW6B,EAAQ,cAA0E,CAAC,EAAQpC,GAAoCC,EAAOC,CAAK,EAAG,EAAO,uBAAuBH,EAAO,EAAO,oBAAoB,GAAGkC,EAAK,KAAK,GAAGnC,IAAW,EAAO,yBAAyBmC,EAAK,KAAK,EAAO,yBAAyB1B,EAAY,KAAK,CAAC,IAAMT,EAASsC,EAAQ,UAAU,SAAeG,EAAUzC,IAAW,QAAOsC,EAAQ,WAAW,GAAY7B,EAAW,OAAOT,EAAS,GAAG,KAAQ,eAAmB,GAAGyC,IAAmI,GAApHH,EAAQ,QAAQA,EAAQ,OAAO,2BAA2B7B,IAAY,EAAQ,OAAO,2BAA2B,IAAO6B,EAAQ,QAAQ,sBAAsB,OAAOA,EAAQ,QAAQ,2BAA2B7B,EAAY,OAAQL,EAAM,cAAc,EAAE,IAAMiB,EAAQ,CAAC,EACr3L,IAAI,IAAMc,KAAQrC,EAAW,CAAC,IAAMG,EAAOG,EAAM,WAAW+B,CAAI,EAAEpC,GAAwBE,EAAOD,CAAQ,EAAE,EAAO,QAAQ,GAAK,EAAO,OAAO,GAAMC,EAAO,MAAM,CAAC,CAAC,KAAK,EAAEoB,EAAQ,KAAKpB,CAAM,CAAE,CAAC,GAAGqC,EAAQ,OAAO,CAAC,GAAGtC,IAAW,QAAQsC,EAAQ,eAAe,CAAC,IAAMO,EAAarC,GAAkC8B,EAAQ,OAAO7B,EAAW6B,EAAQ,cAAc,EAAEnB,GAAkCmB,EAAQ,OAAOlC,EAAMiB,EAAQwB,CAAY,CAAE,MAAM3C,GAAoCoC,EAAQ,OAAOlC,CAAK,EAAG,EAAQ,OAAO,uBAAuB,KAAK,EAAQ,OAAO,oBAAoB,MAAM,EAAQ,OAAO,yBAAyB,GAAG,EAAQ,OAAO,yBAAyBK,CAAW,CAAC,EAAC,CAA2D,SAAgBuC,GAA0B,EAAO,EAAI,EAAc,CAAC,MAAM,CAAC,SAAO,cAAcT,GAAetD,EAAI,uBAAuB,KAAKA,EAAI,cAAc,UAAUA,EAAI,mBAAmB,gBAAgBA,EAAI,yBAAyB,SAASA,EAAI,kBAAkB,UAAUA,EAAI,oBAAoB,CAAE,CAAC,SAAgBgE,GAA0B,EAAO,EAAM,CAAwB,GAApB,CAAC7C,IAAuBA,EAAM,WAAW,KAAK,EAAE,MAAO,GAAM,IAAM8C,EAAU/C,GAAQ,qBAAqB,GAAG,GAAG,CAAC+C,EAAU,MAAO,GAAM,GAAGA,IAAY,MAAM,MAAO,GAAK,IAAMjD,EAAOE,GAAQ,uBAA+C,OAApBF,EAA2BA,EAAO,UAAU,IAAO,CAACA,EAAO,OAA7C,EAAoD,C,2CCR9sC,SAAgBmD,GAAuB,EAAQ,CAAC,GAAoBC,CAAQ,CAAsjB,SAAgBC,IAA2B,CAAC,IAAMC,EAAa,OAAO,kBAAoB,IAAY,IAAI5X,GAAwB,KAAQ4X,GAAaA,EAAa,WAAW,CAAC,iBAAiB,OAAO,CAAC,EAAE,IAAMC,EAAe,IAAI5X,GAAoB,MAAM,CAAC,KAAK,SAAS,EAAI,EAAO,EAAW,EAAQ,CAAC,IAAM6X,EAAMC,EAAI,YAAY,CAAC,CAAC,SAAS,MAAM,GAAGA,EAAI,WAAW,oBAAoB,EAAE,GAAG,CAACH,GAAcE,EAAO,OAAOD,EAAe,KAAKE,EAAIC,EAAOC,EAAWC,CAAO,EAAG,IAAMC,EAAQ,IAAIjY,EAA4S,OAA9R0X,EAAa,KAAKG,EAAI,SAAS,EAAY,CAAC,EAAQ,MAAMK,EAAY,EAAQ,YAAY,GAAQJ,GAAOA,EAAOG,CAAO,CAAE,EAAEF,EAAW,SAAS,EAAI,CAACJ,EAAe,KAAKE,EAAI,SAAS,EAAI,CAAC,EAAQ,MAAMM,EAAI,MAAM,EAAQ,YAAY,GAAQL,GAAOA,EAAOG,CAAO,CAAE,EAAEF,EAAWC,CAAO,CAAE,CAAC,EAASC,CAAQ,CAAC,CAAE,C,yFAAzjD,GAAU,IAAIhY,EAA2B,GAAU,IAAIA,EAAqC,IAAIA,EAAyB,GAAoB,KAAgH,IAAIA,EAA4C,IAAIA,EAAqC,IAAIC,GAAwC,IAAIA,GAAyC,IAAIC,GAAyB,GAAS,IAAIC,GAAwB,GAAe,IAAIC,GAAuC,IAAIC,EAAgD,IAAIC,GAA2B,GAAwB,IAAIN,EAA2B,GAAuB,IAAIE,GAAyB,GAAsB,IAAID,GAAo0B,mBAAY,IAAI,IAAiB,mBAAiB,IAAI,IAAiB,mBAAc,IAAI,IAAiB,mBAAU,IAAI,IAAiB,mBAAa,IAAI,IAAiB,mBAAmB,IAAI,QAAqB,GAA6B,IAAIM,GAAY,IAAI,IAAI,GAAG,EAAe,mBAAqB,IAAI,G,OCD34D,SAAS6Y,GAAiB,EAAI,EAAI,EAAM,CAAmI,OAA/HC,KAAOC,EAAK,OAAO,eAAeA,EAAID,EAAI,CAAO,QAAM,WAAW,GAAK,aAAa,GAAK,SAAS,EAAI,CAAC,EAAQ,EAAIA,GAAKE,EAAcD,CAAI,CA8InD,SAAgBE,GAA6B,EAAW,CAAC,IAAMC,EAAK,IAAIC,EAAWC,EAAwB,EAAQC,EAASH,EAAK,UAAUA,EAAK,UAAU,SAK8G,MALrG,GAAK,YAAY,EAAE,EAAK,YAAY,KAAK,EAAK,SAAS,EAAM,IAAS,CAACG,EAAS,WAAW,MAAM,IAAI,KAAK,IAAI,EAAEC,CAAK,EAAE,KAAK,IAAI,EAAEC,CAAM,CAAC,CAAE,EAAE,EAAK,cAAc,GAAY,CAAC,EAAK,YAAY,KAAK,IAAI,GAAGC,GAAY,CAAC,EAAKN,EAAK,aAAYA,EAAK,sBAAsBA,EAAK,WAAW,CAAE,EAAE,EAAK,sBAAsB,GAAK,CAAC,EAAK,YAAYtG,EAAI,IAAM6G,EAAK,KAAK,IAAI,EAAE,OAAO7G,EAAI,YAAY,GAAG,EAAE,EAAQ8G,EAAQ,KAAK,IAAI,IAAI,OAAO9G,EAAI,eAAe,GAAG,CAAC,EAAQ+G,EAAY,KAAK,IAAI,GAAG,EAAED,EAAQ,GAAG,EAAQE,EAAMC,GAAqBjH,EAAI,gBAAgB,EAGn0BkH,EAAY,KAAK,IAAI,EAAE,KAAK,MAAML,EAAKE,EAAYT,EAAK,WAAW,CAAC,EAAQa,EAAa,KAAK,IAAI,EAAE,KAAK,MAAMN,EAAKP,EAAK,WAAW,CAAC,EAAE,EAAS,MAAM,MAAMU,EAAMP,EAAS,OAAO,MAAM,IAAIS,EAAYC,CAAY,EAE1N,EAAS,IAAI,MAAM,EAAE,EAAS,UAAU,MAAM,EAAE,EAAS,aAAa,MAAMC,IAAU,OAAOpH,EAAI,oBAAoB,GAAG,GAAG,GAAG,EAAE,EAAS,SAAS,MAAMoH,IAAU,OAAOpH,EAAI,gBAAgB,GAAG,GAAG,GAAG,EAAE,EAAS,QAAQ,MAAMoH,IAAU,OAAOpH,EAAI,eAAe,GAAG,GAAG,GAAG,EAAE,EAAS,aAAa,MAAM,IAAI,uBAAuB,QAAW,EAAS,SAAS,MAAMA,EAAI,mBAAmB,GAAM,EAAE,CAAE,EAASsG,CAAK,CAyHpZ,SAAgBe,GAAoB,EAAG,EAAI,CAAC,GAAK,CAAC,OAAOC,EAAM,MAAMC,EAAK,cAAcC,EAAa,UAAUC,EAAS,qBAAqBC,EAAoB,WAAWC,EAAU,WAAWC,EAAU,MAAMC,GAAMC,EAC1N,EAAG,UAAU,YAAY1I,GAAcY,EAAI,cAAc,EAA4B,EAAG,UAAU,oBAAoBA,EAAI,SACvHsH,IAAM,EAAM,QAAQtH,EAAI,cAAgBsH,GAAOtH,EAAI,eAAc,EAAM,SAASA,EAAI,cAAc,EAAM,UAAUA,EAAI,eAAe,EAAM,OAAOA,EAAI,aACtJuH,IAAM,EAAK,QAAQvH,EAAI,WAAcA,EAAI,aAAY,EAAK,aAAaA,EAAI,WAAW,EAAK,YAAYA,EAAI,gBAAgB,EAAK,YAAYA,EAAI,kBACnJ,IAAM+H,EAAID,EAAG,KAAQC,IAAK,EAAI,QAAQ/H,EAAI,WAAWA,EAAI,aAAa,eAAkBA,EAAI,YAAW,EAAI,SAASgI,MAAS,MAAMhI,EAAI,SAAS,EAAI,SAASiI,SAAY,MAAMjI,EAAI,YAAY,EAAI,SAASkI,QAAW,MAAMlI,EAAI,aACjO,IAAMmI,GAAcnI,EAAI,cAAcA,EAAI,YAAYA,EAAI,sBAAyB8H,EAAG,aAAW,EAAG,WAAW,QAAQK,GAAgBL,EAAG,gBAAc,EAAG,cAAc,QAAQK,GAC9KX,IAAa,EAAa,QAAQxH,EAAI,oBAAsBwH,GAAcxH,EAAI,qBAAoB,EAAa,SAAS,WAAW,MAAMA,EAAI,WAAW,EAAa,SAAS,SAAS,MAAMA,EAAI,SAAS,EAAa,SAAS,WAAW,MAAMA,EAAI,YACrPyH,IAAS,EAAS,QAAQzH,EAAI,gBAAkByH,GAAUzH,EAAI,iBAAgB,EAAS,SAAS,OAAO,MAAMA,EAAI,eAAe,EAAS,SAAS,SAAS,MAAMA,EAAI,kBACrK0H,IAAoB,EAAoB,QAAQ1H,EAAI,2BAA6B0H,GAAqB1H,EAAI,4BAA2B,EAAoB,SAAS,SAAS,MAAMA,EAAI,6BACrL2H,IAAU,EAAU,QAAQ3H,EAAI,iBAAmB2H,GAAW3H,EAAI,kBAAiB,EAAU,SAAS,UAAU,MAAMA,EAAI,oBAC1H4H,IAAU,EAAU,QAAQ5H,EAAI,gBAAkB4H,GAAW5H,EAAI,gBAAgB4H,EAAU,wBAAwB5H,CAAG,EACtH6H,IAAK,EAAK,QAAQ7H,EAAI,WAAW,C,mFAvRyY,GAA8BvJ,IAAS,OAAkCnJ,EAAtBD,EAIhd,GAAyB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,WAAW,CAAC,MAAM,IAAIE,GAAc,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,IAAIA,GAAc,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa;;;;;;MAM9T,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoIhB,EAAQ,GAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAQ,GAAS,GAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE6Y,CAAK,CAAC,EAMpH,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDsD,GAAe,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,wGAAwG,eAAe;;;;;;;;;;;UAW7R,EAAe,GAA0B,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE,WAAW,CAAC,MAAM,IAAI7Y,GAAc,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,wGAAwG,eAAe;;;;;;;;;;;;;;;UAe/Q,EAAe,GAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,wGAAwG,eAAe;;;;;;;;;;;UAW1O,EAIM,GAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,aAAa,wGAAwG,eAAe;;;;;;;;UAQnN,EAGM,GAAb,KAA0B,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,SAAS,QAAQsb,EAAE3I,CAAC,CAAE,CAAC,OAAO,EAAS,EAAY,EAAW,CAAC,GAAG,CAAC,KAAK,QAAQ,OAAO,KAAK,SAAS,SAAS,SAAS,MAAM4I,EAAW,QAAQ,IAAMC,EAAMC,EAAS,gBAAgB,EAAEA,EAAS,gBAAgB,KAAK,QAAQ,EAAEA,EAAS,MAAM,EAAEA,EAAS,OAAO,KAAK,OAAO,KAAK,IAAI,EAAEA,EAAS,gBAAgBD,CAAK,CAAE,CAAC,SAAS,CAAC,KAAK,SAAS,QAAQ,EAAE,KAAK,QAAQ,SAAS,QAAQ,EAAE,KAAK,SAAS,QAAQ,CAAE,CAAC,YAAY,EAAS,CAAC9C,GAAiB,KAAK,UAAU,EAAI,EAAEA,GAAiB,KAAK,YAAY,EAAK,EAAEA,GAAiB,KAAK,iBAAiB,EAAK,EAAEA,GAAiB,KAAK,QAAQ,EAAK,EAAEA,GAAiB,KAAK,WAAW,IAAK,EAAC,EAAEA,GAAiB,KAAK,WAAW,IAAK,EAAC,EAAEA,GAAiB,KAAK,UAAU,IAAK,EAAC,EAAEA,GAAiB,KAAK,SAAS,IAAK,EAAC,EAAEA,GAAiB,KAAK,OAAO,IAAK,EAAC,EAAE,KAAK,SAASgD,EAAS,KAAK,SAAS,IAAIzb,GAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,aAAa,wGAAwG,eAAe,iGAAiG,UAAU,GAAM,WAAW,EAAK,CAAC,EAAE,IAAM0b,EAAI,IAAIzb,EAAoB,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAIC,GAAWwb,EAAI,KAAK,QAAQ,EAAE,KAAK,QAAQ,cAAc,GAAM,KAAK,OAAO,IAAIvb,GAAY,KAAK,OAAO,IAAI,KAAK,OAAO,EAAE,KAAK,KAAK,IAAIC,GAAyB,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAE,CAAC,EAAc,GAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,wGAAwG,eAAe;;;;;;;;;;;;;UAa3oD,C,OC1QiG,SAAgBub,GAAa,EAAI,CAAC,GAAG,CAAC1E,EAAI,OAAO,KAAK,IAAM2E,EAAI3E,EAAI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAgG,OAA3F2E,IAAM,OAAOA,IAAM,OAAcA,EAAOA,IAAM,MAAY,MAASA,IAAM,MAAY,MAAa,IAC9U,CAAC,SAAgBC,GAAkB,EAAI,CAAC,GAAG,CAAC5E,EAAI,OAAO,KAAK,IAAM2E,EAAI3E,EAAI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAqF,OAAhF2E,IAAM,OAAOA,IAAM,OAAOA,IAAM,QAAQA,IAAM,QAAQA,IAAM,OAAeA,EAAY,IAAK,CAAC,SAAgBE,GAA0B,EAAM,CAAC,OAAO,OAAOlD,GAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAE,CAAC,SAASmD,GAA+B,EAAM,CAAC,OAAO,OAAOnD,GAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAE,CAAC,SAAgBoD,GAAqB,EAAK,CAAC,GAAG,CAACC,EAAK,MAAM,CAAC,EAAE,IAAMC,EAAO,CAACD,EAAK,GAAGA,EAAK,eAAe,YAAY,EAAEA,EAAK,eAAe,kBAAkB,EAAEA,EAAK,eAAe,4BAA4B,EAAEA,EAAK,eAAe,iBAAiB,EAAEA,EAAK,eAAe,WAAW,EAAEA,EAAK,eAAe,OAAO,CAAC,EAA+D,OAA1DA,EAAK,WAAUC,EAAO,KAAK,GAAG,MAAM,KAAKD,EAAK,SAAS,CAAC,EAASC,EAAO,OAAO,OAAO,CAAC,CAAC,IAAI,GAAOJ,GAA0BlD,CAAK,CAAC,CAAE,CAAuf,SAAgBuD,GAAsB,EAAM,EAAS,GAAG,CAAC,GAAG,OAAOvD,GAAQ,UAAU,OAAO,SAASA,CAAK,EAAG,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEA,CAAK,CAAC,EAAG,IAAMF,EAAI,OAAOE,GAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAA0I,OAArIF,IAAM,OAAOA,IAAM,QAAe,EAAKA,IAAM,UAAUA,IAAM,MAAa,EAAKA,IAAM,UAAUA,IAAM,OAAOA,IAAM,SAAgB,GAAU0D,CAAS,CAAC,SAAgBC,GAA8B,EAAS,EAAS,KAAK,EAAO,GAAG,CAAC,GAAUpT,IAAS,OAAY,MAAO,GAAE,IAAMqT,EAAM,OAAOC,GAAU,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAACD,EAAM,MAAO,GAAE,IAAM7R,EAAG+R,GAAuBF,EAAMG,CAAQ,EAAE,GAAG,CAAChS,EAAG,MAAO,GAAE,IAAMiS,EAAKjS,EAAG,wBAAwB,EAAQkS,EAAM1T,EAAO,aAAa,EAAE,GAAG,CAACyT,GAAM,CAACC,EAAM,MAAO,GAAE,IAAMC,EAAQF,EAAK,IAAIA,EAAK,OAAOP,GAAsBU,CAAM,EAAE,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,EAAED,EAAQD,CAAK,CAAC,CAAE,CAAC,SAAgBG,GAA6B,EAAK,EAAS,CAA8F,GAA1F,CAACb,GAAMA,EAAK,WAAW,GAAkBQ,GAAUA,EAAS,WAAWR,CAAI,GAAkBA,EAAK,eAAe,mBAAmB,EAAE,MAAO,GAAM,IAAMS,EAAKT,EAAK,wBAAwB,EAG73E,GAAG,CAACS,GAAMA,EAAK,OAAO,GAAGA,EAAK,QAAQ,EAAE,MAAO,GAAM,IAAIK,EAAQd,EAAK,KAAMc,GAASA,IAAU,SAAS,MAAK,CAAC,GAAGA,EAAQ,eAAe,aAAa,IAAI,QAAQA,EAAQ,eAAe,oBAAoB,IAAI,OAAQ,MAAO,GAAO,IAAMC,EAAa/T,IAAS,OAA6C,KAAjCA,EAAO,iBAAiB8T,CAAO,EAAO,GAAGC,IAAQA,EAAM,UAAU,QAAQA,EAAM,aAAa,UAAU,OAAOA,EAAM,OAAO,IAAI,GAAI,MAAO,GAAO,EAAQD,EAAQ,aAAc,CAAC,MAAO,EAAK,CAAC,SAAgBE,GAAsB,EAAS,EAAS,CAAC,IAAMC,EAAQ,OAAOX,GAAU,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAIT,EAAyB,CAAC,CAAC,QAAQ,GAAO,CAAClD,EAAMA,EAAM,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,GAAG,CAACsE,EAAQ,OAAO,MAAO,GAAK,IAAIjB,EAAKkB,EAAS,KAAMlB,GAAMA,IAAO,SAAS,MAAK,CAAC,IAAMC,EAAOF,GAAqBC,CAAI,EAAE,IAAI,IAAMmB,KAAUF,EAAS,GAAGhB,EAAO,KAAK,GAAOtD,IAAQwE,CAAM,EAAE,MAAO,GAAM,EAAKnB,EAAK,aAAc,CAAC,MAAO,EAAM,CAAC,SAAgBO,GAAuB,EAAS,EAAS,KAAK,CAAC,GAAG,OAAO,SAAW,IAAY,OAAO,KAAK,IAAMU,EAAQ,OAAOX,GAAU,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAIR,EAA8B,CAAC,CAAC,OAAO,OAAO,EAAE,GAAG,CAACmB,EAAQ,OAAO,OAAO,KAAK,IAAMG,EAAgB,SAAS,iBAAiB,wBAAwB,EAAQC,EAAiB,MAAM,KAAKD,CAAe,CAAC,CAAC,OAAO,GAAMP,GAA6Bb,EAAKQ,CAAQ,CAAC,EAItyC,IAAI,IAAMW,KAAUF,EAAQ,CAAC,IAAMK,EAAQD,EAAiB,KAAK,GAAMrB,EAAK,KAAKmB,CAAM,EAAE,GAAGG,EAAQ,OAAOA,EAAQ,IAAMC,EAAeF,EAAiB,KAAK,GAAMrB,EAAK,eAAe,iBAAiB,IAAImB,CAAM,EAAE,GAAGI,EAAe,OAAOA,EAE9O,IAAMC,EAAaL,EAAO,YAAY,EAAQM,EAAcJ,EAAiB,OAAO,GAAcxB,GAA0BG,EAAK,EAAE,IAAIwB,GAAc3B,GAA0BG,EAAK,eAAe,iBAAiB,CAAC,IAAIwB,CAAc,EAAE,GAAGC,EAAc,SAAS,EAAE,OAAOA,EAAc,EAAG,CAAC,OAAO,IAAK,CAAC,SAAgBC,EAAW,EAAE,CAAC,GAAG,CAAClU,EAAE,OAAO,IAAIpJ,GAAY,OAAO,EAAE,GAAG,CAElX,IAAIud,EAAE,OAAOnU,GAAI,SAASA,EAAE,KAAK,EAAEA,EACnC,GAAG,OAAOmU,GAAI,UAAUA,EAAE,SAAS,MAAM,EAAE,CAC3C,IAAMtB,EAAMsB,EAAE,MAAM,yBAAyB,EAAE,GAAGtB,GAAOA,EAAM,GAAI,EAAEA,EAAM,EAAE,CAAC,KAAK,OACnF,OAAO,IAAIjc,GAAY,OAAO,CAAG,CAAC,GAAG,OAAOud,GAAI,UAAUA,EAAE,WAAW,OAAO,EAAE,CAAC,IAAMC,EAAMD,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,OAAOC,EAAM,GAAG,GAAGA,EAAM,GAAG,GAAGA,EAAM,GAAG,EAAG,CAAC,OAAO,IAAIxd,GAAYud,CAAC,CAAE,MAAM,CAAC,OAAO,IAAIvd,GAAY,OAAO,CAAE,CAAC,C,0FCdzN,QAAuB,CAAC,IAAM4d,kBAAU,IAAI,IAAUC,EAAa,CAAC,EAAMC,EAAO,EAAMC,EAAU,GAAM,SAASC,GAAe,CAAC,GAAUvV,IAAY,OAAY,MAAO,GAAE,IAAMwV,EAAGxV,EAAU,WAAW,GAASyV,EAAM,iBAAiB,KAAKD,CAAE,GAAG,MAAM,KAAKA,CAAE,GAAGxV,EAAU,eAAe,EAAQ0V,EAAS,6CAA6C,KAAKF,CAAE,EAAQG,EAAI3V,EAAU,cAAc,EAA2D,OAAtDyV,EAAaE,GAAK,EAAE,EAAE,EAAKD,EAAgBC,GAAK,EAAE,EAAE,EAASA,GAAK,EAAE,EAAE,CAAE,CAAC,IAAMC,EAAcL,EAAc,EAElgB,SAASM,GAAkB,CAAC,GAAU1V,IAAS,OAAY,OAAOyV,EAAiE,IAAME,EAA5C3V,EAAO4V,6BAAsD,cAAc,OAAO,OAAOD,GAAW,UAAUA,EAAS,EAAEA,EAASF,CAAc,CAAC,SAASI,GAAgB,CAAC,GAAU7V,IAAS,OAAa,MAAM,CAAC,QAAQ,GAAM,MAAM8V,CAAe,EAAG,IAAMC,EAAO/V,EAAO4V,4BAA+B,MAAM,CAAC,QAAQ,CAAC,CAACG,GAAQ,iBAAiB,MAAM,KAAK,IAAI,IAAI,OAAOA,GAAQ,cAAc,GAAGD,CAAe,CAAC,CAAE,CAGvf,SAASE,GAAe,CAAC,OAAO,KAAK,KAAKN,EAAiB,EAAE,GAAG,EAAE,CAAC,CAAE,CAGrE,IAAMI,EAAgB,IACrB,SAASG,EAAU,EAAE,EAAE,CAAC,OAAOC,EAAE,OAAO,IAAIC,EAAE,OAAO,EAAG,CAAC,SAASC,GAAa,CAAC,EAAU,GAAM,EAAa,OAAO,EAAE,IAAI,IAAMC,KAAQrB,EAAU,OAAO,EAAEC,EAAa,KAAKoB,CAAI,EAAEpB,EAAa,KAAKgB,CAAS,EAAE,IAAM,EAAEhB,EAAa,OAAaqB,EAAOZ,EAAiB,EAAQa,EAAMP,EAAc,EAAQQ,EAAI,YAAY,IAAI,EAAQC,EAAcZ,EAAe,EAAE,IAAI,IAAIa,EAAE,EAAEA,EAAE,EAAE,IAAI,CAAC,IAAML,EAAKpB,EAAayB,GAASC,GAASN,EAAK,OAAO,GAAG,EAAQO,EAAYF,GAAGJ,GAAQ,CAACK,EAAQ,GAAGN,EAAK,GAAG,CAC3e,GAD4e,EAAK,GAAG,mBAAmBO,EACngBD,EAGqH,EAAK,GAAG,qBAAqB,EAAE,EAAK,GAAG,0BAA0B,OAH9K,CAAqE,GAAhEN,EAAK,GAAG,uBAAsB,EAAK,GAAG,qBAAqBG,GAAQH,EAAK,GAAG,kBAAkB,CAAC,EAAK,GAAG,0BAA0B,GAAM,QAAS,CAAC,GAAG,CAACI,EAAc,QAAS,EAAK,GAAG,0BAA0B,OAAW,CAGzO,IAAMI,EAAML,EAAIH,EAAK,GAAG,qBAAqB,EAAK,GAAG,0BAA0B,EAAEE,GAAOM,EAAMJ,EAAc,KAAM,CAAC,CAA8E,CAAC,CAAC,EAAa,OAAO,CAAE,CAAC,SAASK,GAAiB,CAAI3B,IAAiB,EAAU,GAAQ,OAAO,eAAiB,IAAY,eAAeiB,CAAW,EAAO,QAAQ,QAAQ,CAAC,CAAC,KAAKA,CAAW,EAAE,CAAC,MAAM,CAAC,SAAS,EAAG,CAAC,IAAMW,EAAG,IAA6D,OAApD/B,EAAU,IAAI+B,EAAG,CAAC,KAAG,MAAM,EAAE,IAAE,CAAC,EAAED,EAAgB,EAASC,CAAG,EAAE,WAAW,EAAG,CAAIA,GAAI,IAAS/B,EAAU,OAAO+B,CAAE,EAAED,EAAgB,EAAE,EAAE,OAAO,EAAG,EAAM,CAAC,IAAMT,EAAKrB,EAAU,IAAI+B,CAAE,EAAMV,GAAeA,EAAK,QAAQW,IAAa,EAAK,MAAMA,EAAMF,EAAgB,EAAE,EACjrB,aAAa,CAACA,EAAgB,CAAE,EAAE,MAAM,CAAC,OAAO9B,EAAU,IAAK,EAAE,WAAW,CAAC,OAAOU,EAAiB,CAAE,EAEvG,kBAAkB,CAAC,IAAMuB,EAAMjC,EAAU,KAA0E,OAAlEiC,GAAO,EAAS,EAAKA,IAAQ,EAAS,IAAOA,IAAQ,EAAS,IAAW,GAAI,EAG9H,sBAAsB,CAAC,OAAOjC,EAAU,KAAK,CAAE,CAAC,CAAE,EAAA,CAAG,C,OCpBsgB,SAAgBkC,GAAgB,EAAO,EAAS,CAAC,GAAGC,GAAQ,qBAAsB,MAAM,CAAC,OAAOA,EAAO,MAAMA,EAAO,MAAM,KAAK,IAAI,KAAKA,EAAO,IAAI,EAAE,QAAQA,EAAO,IAAIA,EAAO,QAAQ,KAAK,IAAI,KAAKA,EAAO,IAAI,CAAC,EAAG,IAAMC,GAAKD,GAAQ,KAAK,IAAI,KAAK,GAAG,IAAUjH,EAAO,EAAE,KAAK,IAAIkH,EAAI,CAAC,EAAE,KAAK,IAAI,KAAKC,CAAQ,EAAE,MAAM,CAAC,MAAMnH,EAAO,KAAK,IAAI,KAAKiH,GAAQ,QAAQ,CAAC,EAAE,QAAM,CAAE,CAIx6B,SAAgBG,GAAuB,EAAO,EAAS,CAAC,IAAMX,EAAQO,GAAgBC,EAAOE,CAAQ,EAAQE,EAAYZ,EAAQ,OAAO,KAAK,IAAIQ,EAAO,QAAA,KAA6B9O,EAAoB,EAAE,MAAM,CAAC,MAAM,KAAK,IAAIsO,EAAQ,MAAMY,CAAW,EAAE,OAAOZ,EAAQ,MAAM,CAAE,CAAC,SAAgBa,GAAiB,EAAO,EAAS,CAAgD,IAAMb,EAAQW,GAAuBH,EAArEA,GAAQ,UAAU,SAAS,GAAG,CAAsD,EAAE,OAAO,KAAK,IAAIR,EAAQ,MAAM,KAAK,IAAIrO,GAAsBmP,EAAS,CAAC,EAAEd,EAAQ,OAAO,KAAK,IAAIrO,GAAsBmP,EAAS,CAAC,CAAC,EAAE,GAAI,CAAyF,SAAgBC,IAAe,CAAC,GAAU1X,IAAS,OAAY,MAAO,GAAM,IAAMwW,EAAI,OAAO,YAAc,IAAY,YAAY,IAAI,EAAE,KAAK,IAAI,EAAQvG,EAAMjQ,EAAO,YAAY,EAA+O,OAA1O2X,IAAoBnB,EAAImB,GAAmB,KAAK1H,IAAQ2H,KAAgD,GAAmBpB,EAAI,GAAsBvG,EAAM,GAAiBjQ,EAAO,aAAa,mBAAmB,CAAC,EAAE,SAASiQ,GAAO,KAAW4H,EAAiB,CAAC,SAAgBC,GAAmB,EAAK,EAAI,EAAM,CAAK9E,GAAM,OAAgBA,EAAK,MAAMvD,KAAOE,IAAM,EAAK,MAAMF,GAAKE,EAAM,CAAC,SAAgBoI,GAAqB,EAAK,EAAI,CAAK/E,GAAM,OAAgBA,EAAK,MAAMvD,KAAK,EAAK,MAAMA,GAAK,GAAG,CAAC,SAAgBuI,GAAiB,EAAI,CAAC,GAAUhY,IAAS,OAAY,MAAO,GAAE,IAAMiY,EAAIjY,EAAO,kBAAkB,EAAMkY,EAAI3O,EAAI,gBAAgBA,EAAI,mBAAmB,IAAIA,EAAI,mBAAmB,EAEv8C,OAF48CmO,GAAc,GAAGnO,EAAI,yBAAyB,OAAM,EAAI,KAAK,IAAI2O,EAAI3O,EAAI,uBAAuB,GAEzlD,GAAQuL,GAAkB,iBAAiB,EAAS,KAAK,IAAI,GAAG,KAAK,IAAImD,EAAIC,CAAG,CAAC,CAAE,CAAC,SAAgBC,GAA2B,EAAS,EAAU,EAAI,CAAC,IAAMC,EAAU,KAAK,IAAI,EAAEC,GAAU,CAAC,EAAQC,EAAW,KAAK,IAAI,EAAEC,GAAW,CAAC,EAAMC,EAAIR,GAAiBzO,CAAG,EAAQkP,EAAclP,EAAI,0BAA0B,EAAwK,OAAnKkP,EAAc,GAAsBL,EAAUE,EAAWE,EAAIA,EAAoBC,IAAe,EAAI,KAAK,IAAI,GAAG,KAAK,KAAKA,GAAeL,EAAUE,EAAW,CAAC,GAAU,CAAC,MAAI,YAAY,KAAK,IAAI,EAAE,KAAK,MAAMF,EAAUI,CAAG,CAAC,EAAE,aAAa,KAAK,IAAI,EAAE,KAAK,MAAMF,EAAWE,CAAG,CAAC,CAAC,CAAE,CAAC,SAAgBE,GAAwB,EAAS,EAAI,KAAK,CAAC,IAAMC,EAASpG,GAAU,cAAc,mBAAmB,GAAG,EAAqC,OAAzBhJ,GAAK,gBAA2B,KAAK,IAAI,EAAE,KAAK,IAAIoP,EAAS,CAAG,CAAC,CAAE,CAAC,SAAgBC,GAAoB,EAAI,CAAiD,MAA7C,CAACrP,GAAKA,EAAI,aAAa,SAAgB,GAAY,CAAC,EAAEA,EAAI,cAAcA,EAAI,YAAYA,EAAI,WAAWA,EAAI,aAAa,gBAAgBA,EAAI,oBAAoBA,EAAI,gBAAgBA,EAAI,2BAA2BA,EAAI,iBAAiBA,EAAI,gBAAgBA,EAAI,WAAY,CAAC,SAAgBsP,GAAyB,EAAI,CAAC,GAAG,CAACD,GAAoBrP,CAAG,EAAE,MAAM,GAAG,IAAMuP,EAAQ,CAAC,EAAEvP,EAAI,WAAWA,EAAI,aAAa,gBAAsBwP,EAAU,CAAC,EAAExP,EAAI,wBAAwBA,EAAI,cAAcuP,IAAU,MAAM,CAACvP,EAAI,WAAW,OAAO,GAAGwP,EAAU,QAAQ,GAAGD,EAAQ,MAAM,GAAGvP,EAAI,aAAa,QAAQ,GAAGA,EAAI,mBAAmB,QAAQ,GAAGA,EAAI,eAAe,WAAW,GAAGA,EAAI,0BAA0B,YAAY,GAAGA,EAAI,gBAAgB,QAAQ,GAAGA,EAAI,eAAe,WAAW,GAAGA,EAAI,WAAW,OAAO,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,CAAE,CAKxnD,SAAgByP,GAAqB,EAAiB,CAAC,IAAMC,EAAalY,EAAa,QAAQ,EAAoN,OAA/MkY,IAAelY,EAAa,QAAQmY,EAAwB,SAAaD,IAAelY,EAAa,SAAgBf,IAAS,QAAaA,EAAO,SAAS,KAAK,SAAS,kBAAkB,EAAS,UAAiB,MAAO,C,gEAXsE,GAAiB,GAAU,GAAmB,EAAM,GAAsB,E,OCEhd,SAAgBoZ,GAAgB,EAAO,CAAC,IAAIC,EAAM,GAAmE,OAA7DC,EAAO,SAAS,GAAO,CAAIC,EAAM,gBAAc,EAAM,GAAK,CAAC,EAASF,CAAM,CAAC,SAAgBG,GAA6B,EAAO,CAAC,IAAMC,kBAAM,IAAI,IAAUC,EAAQriB,EAAwQ,OAAlPiiB,GAAQ,WAAW,GAAO,CAAC,GAAIC,IAAgBA,EAAM,MAAKE,EAAM,IAAI,OAAOF,EAAM,IAAI,CAAC,EAAKA,EAAM,MAAK,CAAC,IAAMtB,EAAI,OAAOsB,EAAM,IAAI,EAAEE,EAAM,IAAIxB,CAAG,EAAE,IAAM0B,EAAUD,GAAS,mBAAmBzB,CAAG,EAAK0B,GAAUF,EAAM,IAAI,OAAOE,CAAS,CAAC,CAAE,CAAC,CAAC,EAASF,CAAM,CAAC,SAAgBG,GAA0B,EAAU,CAAC,IAAMC,EAAK,OAAOC,GAAW,EAAE,EAAQJ,EAAQriB,EAAsB,GAAG,CAAC,IAAM0iB,EAAOL,GAAS,iBAAiBG,CAAI,EAAE,GAAGE,GAAQ,SAAS,OAAO,OAAOA,EAAO,QAAQ,CAAE,MAAM,CAAC,CAAC,IAAM1G,EAAMwG,EAAK,MAAM,yDAAyD,EAAE,GAAG,CAACxG,EAAM,MAAM,GAAG,IAAMc,EAAOd,EAAM,IAAI,GAA0E,OAAvDc,EAAO,MAAM,wCAAyD,CAAC,GAAG,IAAIA,CAAO,CAAC,SAAgB6F,GAAkC,EAAM,EAAY,CAAC,IAAMF,EAAU,OAAOG,GAAO,MAAM,EAAE,EAAE,GAAG,CAAC,qDAAqD,KAAKH,CAAS,EAAG,MAAO,GAAO,IAAM3F,EAAOyF,GAA0BE,CAAS,EAAwC,GAAnC,CAAC3F,GAAQA,IAAS,KAAoB+F,EAAY,IAAI/F,CAAM,EAAE,MAAO,GAAM,IAAMgG,OAAa,CAAC,GAAG,CAAC,OAAO,mBAAmBhG,CAAM,CAAE,MAAM,CAAC,OAAOA,CAAO,CAAC,EAAA,CAAG,EAAE,GAAGgG,GAASD,EAAY,IAAIC,CAAO,EAAE,MAAO,GAAM,IAAMC,EAAKD,EAAQ,MAAM,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAACC,GAAM,CAACF,EAAY,IAAIE,CAAI,CAAE,CAAC,SAAgBC,GAAiC,EAAO,EAAW,CAAC,EAAE,CAAC,GAAG,CAACf,GAAQ,CAAClP,GAAY,OAAO,OAAOA,GAAY,CAAC,EAAE,IAAM8P,EAAYV,GAA6BF,CAAM,EAAE,OAAOlP,EAAW,IAAI,GAAM,CAAC,IAAMkQ,EAAO7N,GAAM,QAAQ,CAAC,EAAE,GAAG,CAAC6N,EAAO,OAAO,OAAO7N,EAAK,IAAM8N,EAAKD,EAAO,OAAO,GAAO,CAACN,GAAkCC,EAAMC,CAAW,CAAC,EAAE,GAAGK,EAAK,SAASD,EAAO,OAAO,OAAO7N,EAAK,GAAG,CAAC8N,EAAK,OAAO,OAAO,KAAK,IAAMC,EAAK,IAAIljB,GAAoBmV,EAAK,KAAKA,EAAK,SAAS8N,EAAK,IAAI,GAAON,EAAM,QAAQ,GAAGA,CAAK,CAAC,EAAgC,MAA9B,GAAK,UAAUxN,EAAK,UAAiB+N,CAAK,CAAC,CAAC,CAAC,OAAO,OAAO,CAAE,CAGhjE,SAAgBC,GAA4B,EAAO,CAACnB,EAAO,kBAAkB,GAAK,EAAI,EAAE,IAAMoB,EAAI,IAAInjB,GAAeojB,EAAQ,GAAwZ,OAAlZrB,EAAO,SAAS,GAAO,CAAC,IAAIC,EAAM,QAAQA,EAAM,gBAAgBA,EAAM,SAAYA,EAAM,WAAcA,EAAM,SAAS,aAAYA,EAAM,SAAS,mBAAmB,EAAKA,EAAM,SAAS,aAAa,CAACA,EAAM,SAAS,YAAY,QAAQ,GAAE,CAAC,IAAMqB,EAAQrB,EAAM,SAAS,YAAY,MAAM,EAAEqB,EAAQ,aAAarB,EAAM,WAAW,EAAEmB,EAAI,MAAME,CAAO,EAAE,EAAQ,EAAK,CAAG,CAAC,EAAMD,GAASD,EAAI,cAAcpB,CAAM,EAAUoB,CAAI,C,2CCL8N,SAAgBI,IAAqB,CAAyP,OAApPC,KAAa,GAAa,IAAIvjB,EAAYwjB,GAAa,eAAe,yDAAyD,EAAE,GAAY,IAAIvjB,GAAWsjB,GAAY,eAAeC,EAAY,EAAED,GAAY,kBAAkBrjB,EAAc,GAAUqjB,EAAY,CAAC,eAAsBE,IAAoB,CAAC,GAAG,CAACC,GAAW,CAAC,IAAMC,EAAU,MAAMpU,GAAe,EAAE,AAAemU,KAAW,IAAIC,CAAU,CAAC,OAAOD,EAAW,CAAC,SAAgBE,IAAwB,CAA6E,MAA5E,CAA0BC,KAAqBzN,GAA0B,EAAUyN,EAAqB,CAU/1C,eAAsBC,GAAa,EAAO,EAAS,EAAW,EAAQ,CAAC,GAAG,CAAC,IAAIC,EAAYC,EAAaC,EACrGC,EAAOzM,GAAc,IAAI0M,CAAM,EAAE,GAAGD,EAAQ,EAAQA,EAAO,QAAQ,EAASA,EAAO,SAAS,EAAWA,EAAO,eAAgB,CACpI,IAAME,EAAS,MAAM,MAAMD,CAAM,EAAE,GAAG,CAACC,EAAS,GAAG,MAAU,MAAM,wBAAwBA,EAAS,OAAO,GAAGA,EAAS,YAAY,EAAE,IAAMC,EAAc,SAASD,EAAS,QAAQ,IAAI,gBAAgB,GAAG,IAAI,EAAE,EAAQE,EAAOF,EAAS,MAAM,UAAU,EAAE,GAAG,CAACE,EAAO,MAAU,MAAM,8BAA8B,EAAE,IAAMC,EAAO,CAAC,EAAMC,EAAe,EAAE,OAAW,CAAC,GAAK,CAAC,OAAK,SAAO,MAAMF,EAAO,KAAK,EAAE,GAAGG,EAAK,MAAMF,EAAO,KAAKpM,CAAK,EAAE,GAAgBA,EAAM,OAAUzB,GAAY2N,EAAc,GACve3N,EAAW,CAAC,OAAO8N,EAAe,GAAG,MAAMH,EAAc,iBAAiB,EAAI,CAAC,CAAG,CAClF,IAAMK,EAAU,IAAI,WAAWF,CAAc,EAAMG,EAAO,EAAE,IAAI,IAAMC,KAASL,EAAQG,EAAU,IAAIE,EAAMD,CAAM,EAAE,GAAQC,EAAM,OAClG,IAAMC,EAAI,MAAM,MAA7BhV,GAAW,EAAA,CAAwB,UAAU6U,EAAU,MAAM,EAC/E,EAAQ,CAAC,EAAE,IAAMI,EAAY,CAAC,EAAED,EAAI,SAAS,EAAa,IAAW,CAAKE,EAAS,KAAKD,EAAY,KAAK,CAAC,KAAKE,EAAa,KAAKD,CAAQ,CAAC,CAAG,CAAC,EAC9I,IAAME,EAAiB,CAAC,OAAO,QAAQ,MAAM,EAAMC,EAAU,KAAK,IAAI,IAAM/J,KAAO8J,EAAiB,CAAC,IAAMpD,EAAMiD,EAAY,KAAK,GAAGK,EAAE,KAAK,YAAY,CAAC,CAAC,SAAShK,CAAG,CAAC,EAAE,GAAG0G,EAAM,CAAC,EAAU,CAAC,KAAKA,EAAM,KAAK,IAAI1G,EAAI,MAAM,CAAC,CAAC,EAC7N,KAAM,CAAC,CAAC,GAAG,CAAC+J,EAAW,MAAU,MAAM,qEAAqE,EAAG,EAASA,EAAU,KAAK,EAAWA,EAAU,IAC7J,IAAI,IAAIhG,EAAE,EAAEA,EAAE4F,EAAY,OAAO,IAAI,CAAC,GAAK,CAAC,OAAK,QAAMA,EAAY5F,GAAS/D,EAAIiK,EAAK,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,GACjHC,EAAS,2BAA8BlK,IAAM,QAAQA,IAAM,OAAO,EAAS,mBAA2BA,IAAM,MAAM,EAAS,oBAA4BA,IAAM,MAAM,EAAS,2BAAmCA,IAAM,MAAM,EAAS,YAAoBA,IAAM,OAAOA,IAAM,OAAO,EAAS,aAAqBA,IAAM,OAAO,EAAS,cAAqBA,IAAM,OAAkDA,IAAM,SAAM,EAAS,4BAA2B,IAAMmK,EAAK,MAAMC,EAAK,MAAM,MAAM,EAAQC,EAAU,IAAI,KAAK,CAACF,CAAI,EAAE,CAAC,KAAKD,CAAQ,CAAC,EAAQI,EAAQ,IAAI,gBAAgBD,CAAS,EACvkB,EAAQJ,GAAMK,EACd,IAAMC,EAASN,EAAK,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,EAAQM,GAAUD,EACvD,EAAQL,EAAK,YAAY,GAAGK,EAAQ,EAAQC,EAAS,YAAY,GAAGD,EAAW/O,GAAY2N,EAAc,GAC5D3N,EAAW,CAAC,QAAxC,GAAGwI,EAAE4F,EAAY,OAAO,KAAkCT,EAAc,MAAMA,EAAc,iBAAiB,EAAI,CAAC,CAAG,CACtI5M,GAAc,IAAI0M,EAAO,CAAC,UAAQ,WAAS,YAAU,CAAC,CAAE,CACxD,IAAMwB,EAAY5B,EAAQC,IAAWD,EAAQC,EAAS,YAAY,GAAG,GAAG,CAAC2B,EAAa,MAAU,MAAM,gDAAgD3B,GAAU,EAChK,IAAM4B,EAAQ,IAAIzlB,GAOlB,GAPuCylB,EAAQ,eAAe,GAAK,CACnE,GAAGpP,EAAI,WAAW,OAAO,EAAE,OAAOA,EAAI,IAAMqP,EAAWrP,EAAI,QAAQ,MAAM,GAAG,EAC5E,GAAGuN,EAAQ8B,GAAY,OAAO9B,EAAQ8B,GACtC,IAAMH,EAASG,EAAW,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG9B,EAAQ2B,GAAU,OAAO3B,EAAQ2B,GACnF,GAAG3B,EAAQ8B,EAAW,YAAY,GAAG,OAAO9B,EAAQ8B,EAAW,YAAY,GAAG,GAAG9B,EAAQ2B,EAAS,YAAY,GAAG,OAAO3B,EAAQ2B,EAAS,YAAY,GACrJ,GAAG,CAAC,IAAM/C,EAAQ,mBAAmB+C,CAAQ,EAAE,GAAG3B,EAAQpB,GAAS,OAAOoB,EAAQpB,GAAS,GAAGoB,EAAQpB,EAAQ,YAAY,GAAG,OAAOoB,EAAQpB,EAAQ,YAAY,EAAG,MAAM,CAAC,CAAC,OAAOnM,CACjL,CAAC,EACCyN,IAAa,MAAqF,IAAnB,MAArC1U,GAAe,IAAgCqW,CAAiB,CAAC,CAAC,KAAKD,EAAY,GAAKG,EAAS5N,EAAIA,EAAI,YAAY,CAAC,CAAC,EAAE,IAAA,GAAU,GAAK,CAAIvB,GAAQA,EAAQoP,CAAG,CAAE,CAAC,MAAO,CAAC,IAAMC,EAAW,IAAI/lB,GAAW2lB,CAAO,EAAQK,EAAM,IAAIjmB,EAAYimB,EAAM,eAAe,yDAAyD,EAAED,EAAW,eAAeC,CAAK,EAAED,EAAW,KAAKL,EAAY,GAAMG,EAASI,EAAK,MAAMA,EAAK,UAAU,EAAE,IAAA,GAAU,GAAK,CAAIvP,GAAQA,EAAQoP,CAAG,CAAE,CAAC,CAAE,CAAC,OAAOA,EAAI,CAAC,QAAQ,MAAM,uCAAuCA,CAAG,EAAKpP,GAAQA,EAAQoP,CAAG,CAAE,CAAC,CAAC,SAAgBI,GAAgB,EAAG,EAAG,CAAIC,EAAG,QAAOvM,EAAG,MAAM,OAAOuM,EAAG,KAAK,EAAKA,EAAG,eAAgBC,GAAkBD,EAAG,KAAK,EAC9tBE,GAAsBF,EAAG,KAAK,GAAI,EAAG,qBAAqB,GAASA,EAAG,QAAOpT,GAAoCoT,EAAGA,EAAG,KAAK,EAAEA,EAAG,MAAM,cAAc,EAAG,CAAC,SAAgBG,GAAqB,EAAO,CAAC,GAAG,CAAC3E,GAAgBE,CAAM,EAAE,OAAO,IAAM0E,kBAAkB,IAAI,IAAI1E,EAAO,SAAS,GAAO,CAAIC,EAAM,eAAeA,EAAM,UAAUyE,EAAkB,IAAIzE,EAAM,QAAQ,CAAG,CAAC,EAAED,EAAO,SAAS,GAAO,CAAC,GAAG,CAACC,EAAM,QAAQA,EAAM,cAAc,OACjb,GAAGA,EAAM,UAAUyE,EAAkB,IAAIzE,EAAM,QAAQ,EAAE,CAAC,EAAM,QAAQ,GAAM,MAAO,CACrF,IAAIhZ,EAAEgZ,EAAM,OAAO,KAAMhZ,GAAE,CAAC,GAAGA,EAAE,OAAO,CAAC,EAAM,QAAQ,GAAM,MAAO,CAAC,EAAEA,EAAE,MAAO,CAChF,GAAGgZ,EAAM,SAAS,CAAKA,EAAM,SAAS,aAAYA,EAAM,SAAS,mBAAmB,EAAE,IAAM0E,EAAG1E,EAAM,SAAS,YAAY,GAAG0E,EAAG,CAAC,IAAMC,EAAGD,EAAG,QAAQ1P,EAAS,EAAE,GAAG,KAAK,IAAI2P,EAAG,EAAEA,EAAG,EAAEA,EAAG,CAAC,EAAE,KAAK,CAAC,EAAM,QAAQ,GAAM,MAAO,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,SAAgBC,GAAyB,EAAO,CAAC,IAAMC,EAAMhF,GAAgBiF,CAAM,EAAEzmB,EAAoBymB,CAAM,EAAEA,EAAO,MAAM,EAAI,EAA6L,OAA3LD,EAAM,SAAS,GAAO,CAAI7E,EAAM,QAAQA,EAAM,WAAU,AAAwFA,EAAM,SAA3F,MAAM,QAAQA,EAAM,QAAQ,EAAkBA,EAAM,SAAS,IAAI,GAAGrS,EAAE,MAAM,CAAC,EAAuBqS,EAAM,SAAS,MAAM,EAAI,CAAC,EAAS6E,CAAM,CAAC,SAAgBE,GAAkB,EAAO,CAAC,MAAM,CAAC,MAAMH,GAAyBzC,EAAO,KAAK,EAAE,WAAWA,EAAO,WAAW,IAAI,GAAMjP,EAAK,MAAM,CAAC,CAAC,CAAE,CAAiD,SAAgBqR,GAAsB,EAAM,CAACS,EAAM,SAAS,GAAG,CAAI/d,EAAE,SACxzBA,EAAE,eAAeA,EAAE,UAAUA,EAAE,SAAS,QAAQ,GAAI,MAAM,QAAQA,EAAE,QAAQ,EAAEA,EAAE,SAAS,CAACA,EAAE,QAAQ,EAAA,CAAG,QAAQ,GAAG0G,EAAE,UAAU,CAAC,EAAEoI,GAAqB,OAAO9O,EAAE,IAAI,EAAG,CAAC,CAAE,CAAC,SAAgBqd,GAAkB,EAAM,CAAKU,GAAaA,EAAM,SAAS,GAAG,CAAsC,GAAlC/d,EAAE,UAAUA,EAAE,SAAS,QAAQ,EAAMA,EAAE,SAAS,CAAC,IAAMge,EAAK,MAAM,QAAQhe,EAAE,QAAQ,EAAEA,EAAE,SAAS,CAACA,EAAE,QAAQ,EAAE,IAAI,IAAM0G,KAAKsX,EAAM,GAAItX,EACpY,KAAI,IAAMuI,KAAOvI,EAAE,CAAC,IAAMuX,EAAIvX,EAAEuI,GAAQgP,GAAKA,EAAI,WAAUA,EAAI,QAAQ,CAAE,CACzE,GAAGvX,EAAE,SAAU,IAAI,IAAMwX,KAAKxX,EAAE,SAAS,CAAC,IAAMyX,EAAGzX,EAAE,SAASwX,EAAE,CAAC,MAASC,GAAIA,EAAG,WAAUA,EAAG,QAAQ,CAAE,CAAEzX,EAAE,QAAQ,CAD3C,CAC8C,CAAI1G,EAAE,eAAeA,EAAE,UAAUA,EAAE,SAAS,QAAQ,EAAMA,EAAE,SAASA,EAAE,QAAQ,KAAKA,EAAE,OAAO,IAAI,QAAQ,EAAMA,EAAE,MAAK8O,GAAqB,OAAO9O,EAAE,IAAI,CAAE,CAAC,CAAE,CAAC,SAAgBoe,GAAiB,EAAI,EAAO,EAAS,EAAW,EAAQ,CAAIC,IAAS,MAAOvD,GAAatN,GAAK,EAAO,IAAa,CAAC+P,GAAqBzE,CAAM,EAAE,IAAMwF,EAAezE,GAAiCf,EAAOlP,GAAY,CAAC,CAAC,EAAM2E,GAAY,IAAIf,CAAG,GAAGe,GAAY,IAAIf,EAAI,CAAC,MAAMmQ,GAAyB7E,CAAM,EAAE,WAAWwF,EAAe,IAAI,GAAGte,EAAE,MAAM,CAAC,CAAC,CAAC,EAAG8c,EAAShE,EAAOwF,CAAc,CAAE,EAAE5Q,EAAWC,CAAO,EAAa0Q,IAAS,MAAO5D,GAAmB,CAAC,CAAC,KAAK,GAAQ,CAAC8D,EAAO,KAAK/Q,EAAI,GAAK,CAAC,IAAM5D,EAAWsF,EAAI,YAAY,CAAC,EAAEqO,GAAqBrO,CAAG,EAAE,IAAMoP,EAAezE,GAAiC3K,EAAItF,CAAU,EAAM2E,GAAY,IAAIf,CAAG,GAAGe,GAAY,IAAIf,EAAI,CAAC,MAAMmQ,GAAyBzO,CAAG,EAAE,WAAWoP,EAAe,IAAI,GAAGte,EAAE,MAAM,CAAC,CAAC,CAAC,EAAG8c,EAAS5N,EAAIoP,CAAc,CAAE,EAAE5Q,EAAWC,CAAO,CAAE,CAAC,CAAC,CAAC,MAAM,GAAK,CAAIA,GAAQA,EAAQoP,CAAG,CAAE,CAAC,EAAUzC,GAAoB,CAAC,CAAC,KAAK9M,EAAI,GAAG,CAAC+P,GAAqBiB,EAAE,KAAK,EAAE,IAAMF,EAAezE,GAAiC2E,EAAE,MAAMA,EAAE,YAAY,CAAC,CAAC,EAAMjQ,GAAY,IAAIf,CAAG,GAAGe,GAAY,IAAIf,EAAI,CAAC,MAAMmQ,GAAyBa,EAAE,KAAK,EAAE,WAAWF,EAAe,IAAI,GAAGte,EAAE,MAAM,CAAC,CAAC,CAAC,EAAG8c,EAAS0B,EAAE,MAAMF,CAAc,CAAE,EAAE5Q,EAAWC,CAAO,CAAE,C,oEAzClyB,GAAa,KAAS,GAAY,KAAS,GAAW,KAAS,GAAqB,I,OCAkQ,SAAgB+Q,IAAoB,CAAC,GAAGC,GAAiB,OAAOA,GAAiB,IAAoBC,EAAO,SAAS,cAAc,QAAQ,EAAE,EAAO,MAAM,GAAK,EAAO,OAAO,GAAK,IAAMC,EAAID,EAAO,WAAW,KAAK,CAAC,mBAAmB,EAAI,CAAC,EAAQE,EAASD,EAAI,qBAAqB,GAAO,GAAO,EAAE,GAAO,GAAO,EAAM,EAAwS,OAAtSC,EAAS,aAAa,EAAE,qBAAqB,EAAEA,EAAS,aAAa,GAAG,uBAAuB,EAAEA,EAAS,aAAa,GAAG,uBAAuB,EAAEA,EAAS,aAAa,EAAE,qBAAqB,EAAE,EAAI,UAAUA,EAASD,EAAI,SAAS,EAAE,EAAE,GAAK,EAAI,EAAE,GAAiB,IAAIxnB,GAAoBunB,CAAM,EAASD,EAAiB,CAAC,SAAgBI,GAAwB,EAAM,EAAI,CAAsD,IAAMC,EAAcC,GAAqBC,EAA3EnW,EAAI,0BAA0B,GAA+D,EAAQoW,EAAMH,EAAc,OAAO,EAAQI,EAAW,IAAI,aAAaJ,CAAa,EAAQK,EAAS,IAAI,aAAaF,EAAM,CAAC,EAAQG,EAAU,IAAI,aAAaH,CAAK,EAAQI,EAAK,IAAI,aAAaJ,CAAK,EAAQK,EAAM,IAAI,aAAaL,CAAK,EAAE,IAAI,IAAIjJ,EAAE,EAAEA,EAAEiJ,EAAM,IAAK,EAAUjJ,GAAG,KAAK,OAAO,EAAE,IAAI,IAAI,EAASA,EAAE,GAAG,KAAK,OAAO,EAAE,GAAG,GAAG,EAASA,EAAE,EAAE,GAAG,KAAK,OAAO,EAAE,GAAG,GAAG,EAASA,EAAE,EAAE,GAAG,KAAK,OAAO,EAAE,GAAG,EAAKA,GAAG,KAAK,EAAMA,GAAG,KAAK,OAAO,EAAE,KAAK,GAAG,EAAG,IAAMjE,EAAI,IAAI3a,EAAqB2a,EAAI,aAAa,WAAW,IAAI1a,GAAsB,IAAI,aAAaynB,CAAa,EAAE,CAAC,CAAC,EAAE/M,EAAI,aAAa,cAAc,IAAI1a,GAAsB6nB,EAAW,CAAC,CAAC,EAAEnN,EAAI,aAAa,QAAQ,IAAI1a,GAAsBgoB,EAAK,CAAC,CAAC,EAAEtN,EAAI,aAAa,SAAS,IAAI1a,GAAsBioB,EAAM,CAAC,CAAC,EAAE,IAAMC,EAAYf,GAAmB,EAAQgB,EAAI,IAAIloB,GAAqB,CAAC,YAAY,GAAK,SAAS,EAAuB,WAAW,GAAM,SAAS,CAAC,SAAS,CAAC,MAAMioB,CAAW,EAAE,cAAc,CAAC,MAAajgB,IAAS,OAAoC,EAAxBA,EAAO,gBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAMuJ,EAAI,mBAAmB,EAAE,EAAE,KAAK,CAAC,MAAMA,EAAI,mBAAmB,EAAE,EAAE,MAAM,CAAC,MAAMA,EAAI,oBAAoB,GAAG,EAAE,UAAU,CAAC,MAAMA,EAAI,0BAA0B,EAAE,EAAE,OAAO,CAAC,MAAMmL,EAAWnL,EAAI,uBAAuBA,EAAI,uBAAuB,SAAS,CAAC,CAAC,EAAE,aAAa;EAClkGqI,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCX,eAAe;;;;;;;;;;;;;;;;;;;;CAoBhB,CAAC,EAAQuO,EAAO,IAAIloB,GAAawa,EAAIyN,CAAG,EAA6B,MAA3B,GAAO,cAAc,GAAY,CAAC,SAAO,MAAI,MAAI,MAAM,CAAC,QAAM,cAAc,IAAI,aAAaV,CAAa,EAAE,aAAW,WAAS,YAAU,OAAK,QAAM,MAAMjW,EAAI,uBAAuB,IAAI,QAAQA,EAAI,yBAAyB,EAAE,UAAU,CAAC,EAAEA,EAAI,sBAAsB,IAAI,EAAEA,EAAI,sBAAsB,CAAC,CAAC,CAAC,CAAE,CAAC,SAAgB6W,GAAwB,EAAO,CAAC,GAAK,CAAC,QAAM,gBAAc,aAAW,WAAS,YAAU,OAAK,QAAM,QAAM,UAAQ,aAAWC,EAAO,IAAI,IAAI3J,EAAE,EAAEA,EAAEiJ,EAAM,IAAI,CAAC,IAAM1W,EAAEyN,EAAE,EAAE4J,EAAE5J,EAAE,EAAE,EAAEhU,EAAEgU,EAAE,EAAE,EAAM6J,EAAGV,EAAS5W,GAAGuX,EAAU,EAAMC,EAAGZ,EAASS,GAAGE,EAAU,EAAME,EAAGb,EAASnd,GAAG,GAAGie,EAAQ,EAAE,CAAC,IAAMC,EAAGhB,EAAW3W,GAAG4X,EAAGjB,EAAWU,GAAG,IAAK,KAAK,IAAIO,EAAG,CAAC,EAAE,GAAG,KAAK,IAAIA,EAAG,CAAC,EAAE,IAAIF,EAAQ,IAAK,KAAK,IAAIC,EAAG,CAAC,EAAE,GAAG,KAAK,IAAIA,EAAG,CAAC,EAAE,IAAID,CAAQ,CAAC,GAAI,KAAK,IAAInV,CAAK,EAAE,GAAI,KAAK,IAAIA,CAAK,EAAE,GAAI,KAAK,IAAIA,CAAK,EAAE,EAAWvC,IAAIsX,EAAG,EAAWD,IAAIG,EAAG,EAAW/d,IAAIge,EAAG,IAAMI,EAAGlB,EAAW3W,GAAGuW,EAAcvW,GAAS8X,EAAGnB,EAAWU,GAAGd,EAAcc,GAASU,EAAGpB,EAAWld,GAAG8c,EAAc9c,GAASue,EAAIH,EAAGA,EAAGC,EAAGA,EAAGC,EAAGA,EAAG,EAAKtK,GAAG,KAAK,KAAKuK,CAAG,EAAE,EAAMvK,IAAI,IAAOuK,EAAInB,EAAUpJ,GAAGoJ,EAAUpJ,KAAI,EAAWzN,GAAGuW,EAAcvW,GAAG,EAAWqX,GAAGd,EAAcc,GAAG,EAAW5d,GAAG8c,EAAc9c,GAAI,CAAC,CAAC,SAAgBwe,GAAuB,EAAK,EAAO,CAAC,IAAMC,EAAOC,EAAK,aAAa,aAAa,EAAKD,IAAQ,EAAO,MAAMd,EAAO,WAAW,EAAO,YAAY,IAAM,IAAMgB,EAAMD,EAAK,aAAa,OAAO,EAAKC,IAAO,EAAM,MAAMhB,EAAO,KAAK,EAAM,YAAY,IAAM,IAAMiB,EAAMF,EAAK,aAAa,QAAQ,EAAKE,IAAO,EAAM,MAAMjB,EAAO,MAAM,EAAM,YAAY,GAAM,CAAC,SAAgBkB,GAAyB,EAAE,CAAKhhB,IAASA,EAAE,KAAK,QAAQ,EAAEA,EAAE,KAAK,QAAQ,EAAKA,EAAE,QAAQ,QAAOA,EAAE,OAAO,OAAO,OAAOA,EAAE,MAAM,EAAE,CAAC,SAAgBihB,GAAoB,EAAE,EAAI,EAAK,CAAC,IAAMC,GAAOC,GAAK,KAAKC,GAAM,IAAI,MAAM,CAACF,EAAMG,EAAE,EAAEH,CAAM,CAAC,SAAgBI,GAAmB,EAAM,CAAC,GAAGC,IAAoBA,GAAmB,SAASC,EAAM,OAAOD,GAAmB,IAAM1R,EAAK,KAAK,IAAI2R,EAAM,CAAC,EAAQC,EAAK,IAAI,WAAW5R,CAAI,EAAE,IAAI,IAAIsG,EAAE,EAAEA,EAAEtG,EAAK,IAAK,EAAKsG,GAAG,KAAK,MAAMA,GAAGtG,EAAK,GAAG,GAAG,EAAG,IAAM9B,EAAI,IAAIpW,EAAkB8pB,EAAK5R,EAAK,EAAEjY,EAAe,EAAmI,MAAjI,GAAI,UAAUC,EAAoB,EAAI,UAAUA,EAAoB,EAAI,YAAY,GAAK,EAAI,OAAO2pB,EAAM,GAAmBzT,EAAWA,CAAI,CAAC,SAAgB2T,IAAuB,CAAC,GAAGC,GAAoB,OAAOA,GAAoB,IAAqB9C,EAAO,SAAS,cAAc,QAAQ,EAAE,EAAO,MAAM,IAAK,EAAO,OAAO,IAAK,IAAMC,EAAID,EAAO,WAAW,KAAK,CAAC,mBAAmB,EAAK,CAAC,EAAE,GAAG,CAACC,EAAI,OAAO,KAAK,EAAI,UAAU,UAAUA,EAAI,SAAS,EAAE,EAAE,IAAK,GAAI,EAAE,EAAI,YAAY,mBAAmB,EAAI,UAAU,EAAE,IAAI,IAAIpW,EAAE,KAAMA,EAAE,IAAO,GAAG,GAAIoW,EAAI,UAAU,EAAEA,EAAI,OAAOpW,EAAE,GAAI,EAAEoW,EAAI,OAAOpW,EAAE,IAAK,CAAC,EAAEoW,EAAI,OAAO,EAAG,IAAM/Q,EAAI,IAAIzW,GAAoBunB,CAAM,EAAqK,MAAnK,GAAI,MAAM/mB,GAAqB,EAAI,MAAMA,GAAqBiW,EAAI,OAAO,IAAI,EAAE,CAAC,EAAE,EAAI,WAAWhW,GAAqB,EAAI,YAAY,GAAK,GAAoBgW,EAAWA,CAAI,CAAC,SAAgB6T,GAAmB,EAAK,CAAC,IAAI5hB,EAAE6hB,GAAM,OAAO,KAAM7hB,GAAE,CAAC,GAAGA,EAAE,QAAQA,EAAE,OAAO,OAAO,MAAO,GAAK,EAAEA,EAAE,MAAO,CAAC,MAAO,EAAM,CAAC,SAAgB8hB,GAAsB,EAAI,CAAC,GAAGC,EAAI,uBAAuB,OAAOA,EAAI,MAAM,EAAE,IAAMC,EAAG,IAAIhqB,GAAsU,IAAI,IAAMiqB,IAAK,CAAxS,QAAQ,WAAW,YAAY,YAAY,UAAU,YAAY,OAAO,eAAe,YAAY,MAAM,cAAc,aAAa,mBAAmB,sBAAsB,kBAAkB,oBAAoB,YAAY,qBAAqB,oBAAoB,eAAyC,EAAMF,EAAIE,KAAK,IAAA,KAAU,EAAGA,GAAGF,EAAIE,EAAE,EAAE,MAAMF,EAAIE,EAAE,CAAC,MAAM,EAAEF,EAAIE,IAA2M,IAAI,IAAMA,IAAK,CAAvM,MAAM,YAAY,QAAQ,cAAc,WAAW,kBAAkB,eAAe,eAAe,eAAe,eAAe,wBAAwB,qBAAqB,QAA+B,EAAMF,EAAIE,KAAG,EAAGA,GAAGF,EAAIE,IAA8D,OAAvDF,EAAI,cAAY,EAAG,YAAYA,EAAI,YAAY,MAAM,GAASC,CAAG,CAAC,SAAgBE,GAAqB,EAAS,CAC94H,EAAS,UAAU,KAAK,IAAIC,EAAS,UAAU,GAAG,EAAE,EAAS,UAAU,KAAK,IAAIA,EAAS,UAAU,CAAC,EAAE,EAAS,gBAAgB,KAAK,IAAIA,EAAS,iBAAiB,EAAE,EAAE,EACnKA,EAAS,aAAa,IAAG,EAAS,YAAY,GAAM,EAAS,WAAW,GAAK,EAAS,QAAQ,GAAG,EAAS,YAAY,EAAK,CAAC,SAAgBC,GAAgB,EAAM,EAAO,CAAC,GAAG,CAACjD,EAAM,OAAO,IAAMkD,EAAQf,GAAmBgB,EAAO,OAAO,CAAC,EAAEnD,EAAM,SAAS,GAAO,CAAC,GAAG,CAACoD,GAAwBvJ,CAAK,EAAE,OAAO,IAAMiF,EAAK,MAAM,QAAQjF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAI7C,EAAE,EAAEA,EAAE8H,EAAK,OAAO,IAAI,CAAC,IAAM8D,EAAI9D,EAAK9H,GACxa,GAAGqM,GAAiBT,CAAG,EAAE,CAAC,IAAMI,EAASL,GAAsBC,CAAG,EAAEG,GAAqBC,CAAQ,EAAK,MAAM,QAAQnJ,EAAM,QAAQ,EAAE,EAAM,SAAS7C,GAAGgM,EAAc,EAAM,SAASA,EAAS,QAAS,CACrM,IAAMM,EAAQ,IAAIxqB,GAAuB,CAAC,MAAM8pB,EAAI,MAAMA,EAAI,MAAM,MAAM,EAAE,IAAI7pB,GAAY,QAAQ,EAAE,YAAYmqB,EAAQ,KAAKN,EAAI,MAAM,CAAe,CAAC,EACtJA,EAAI,MAAI,EAAQ,IAAIA,EAAI,KAAOA,EAAI,YAAW,EAAQ,UAAUA,EAAI,UAAU,EAAQ,YAAYA,EAAI,aAAa,MAAM,GAAG,IAAI5pB,GAAc,EAAE,CAAC,GAAM4pB,EAAI,QAAO,EAAQ,MAAMA,EAAI,MAAM,EAAQ,eAAeA,EAAI,gBAAgB,GAAMA,EAAI,WAAS,EAAQ,SAASA,EAAI,SAAS,MAAM,GAAKA,EAAI,cAAY,EAAQ,YAAYA,EAAI,aAAeA,EAAI,mBAAmB,OAAK,EAAQ,kBAAkBA,EAAI,mBAAqBA,EAAI,WAAS,EAAQ,SAASA,EAAI,UAAYA,EAAI,cAAY,EAAQ,YAAYA,EAAI,aAAeA,EAAI,SAAS,OAAK,EAAQ,QAAQA,EAAI,SAAWA,EAAI,YAAU,EAAQ,UAAUA,EAAI,WAAU,EAAQ,YAAY,GAAQ,MAAM,QAAQ/I,EAAM,QAAQ,EAAE,EAAM,SAAS7C,GAAGsM,EAAa,EAAM,SAASA,CAAQ,CAAC,CAAC,CAAE,CAAC,SAAgBC,GAAkB,EAAM,EAAO,CAAC,GAAG,CAACvD,EAAM,OAAO,IAAMkD,EAAQf,GAAmBgB,EAAO,OAAO,CAAC,EAAQK,EAASjB,GAAsB,EAAQkB,EAAUzO,EAAWmO,EAAO,OAAO,SAAS,EAAQO,EAAa1O,EAAWmO,EAAO,cAAc,SAAS,EAAQQ,EAAUR,EAAO,kBAAkB,KAAWS,EAAmB,CAAC,EAAEC,GAAoB7D,CAAK,EAAEA,EAAM,SAAS,GAAO,CAAC,GAAG,CAACoD,GAAwBvJ,CAAK,EAAE,OAAO,IAAMiF,EAAK,MAAM,QAAQjF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAI7C,EAAE,EAAEA,EAAE8H,EAAK,OAAO,IAAI,CAAC,IAAM8D,EAAI9D,EAAK9H,GAAG,GAAGqM,GAAiBT,CAAG,EAAE,CAAC,IAAMI,EAASL,GAAsBC,CAAG,EAAE,EAAS,MAAMa,EAAU,MAAM,EAAEV,GAAqBC,CAAQ,EAAK,MAAM,QAAQnJ,EAAM,QAAQ,EAAE,EAAM,SAAS7C,GAAGgM,EAAc,EAAM,SAASA,EAAS,QAAS,CAAC,IAAMc,EAAU,IAAIhrB,GAAuB,CAAC,MAAM2qB,EAAU,YAAYP,EAAQ,IAAIM,EAAS,KAAKZ,EAAI,MAAM,CAAe,CAAC,EAAKA,EAAI,YAAW,EAAU,UAAUA,EAAI,UAAU,EAAU,YAAYA,EAAI,aAAa,MAAM,GAAG,IAAI5pB,GAAc,EAAE,CAAC,GAAM4pB,EAAI,QAAO,EAAU,MAAMA,EAAI,MAAM,EAAU,eAAeA,EAAI,gBAAgB,GAAG,EAAU,YAAY,GAAQ,MAAM,QAAQ/I,EAAM,QAAQ,EAAE,EAAM,SAAS7C,GAAG8M,EAAe,EAAM,SAASA,CAAU,CAAC,IAAMC,EAAW,IAAI9qB,GAAwB,CAAC,MAAMyqB,EAAa,KAAK,CAAc,CAAC,EAAQM,EAAYC,GAAiCpK,EAAMkK,EAAWJ,CAAS,EAAKK,EAAaJ,EAAmB,KAAK,CAAC,OAAO/J,EAAM,OAAO,KAAKmK,CAAW,CAAC,EAAQD,EAAW,QAAQ,CAAG,CAAC,EAAE,IAAI,IAAMG,KAASN,EAAuBM,EAAM,QAAOA,EAAM,OAAO,IAAIA,EAAM,IAAI,CAAG,CAAC,SAAgBC,GAAmB,EAAM,EAAO,CAAC,GAAG,CAACnE,EAAM,OAAO,IAAMyD,EAAUzO,EAAWmO,EAAO,OAAO,SAAS,EAAQiB,EAAcpP,EAAWmO,EAAO,eAAe,SAAS,EAAQkB,EAAkBlB,EAAO,mBAAmB,EAAQO,EAAa1O,EAAWmO,EAAO,cAAc,SAAS,EAAQQ,EAAUR,EAAO,kBAAkB,IAC3nFU,GAAoB7D,CAAK,EACzB,IAAM4D,EAAmB,CAAC,EAAE5D,EAAM,SAAS,GAAO,CAAC,GAAG,CAACoD,GAAwBvJ,CAAK,EAAE,OAAO,IAAMiF,EAAK,MAAM,QAAQjF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAI7C,EAAE,EAAEA,EAAE8H,EAAK,OAAO,IAAI,CAAC,IAAM8D,EAAI9D,EAAK9H,GAAG,GAAGqM,GAAiBT,CAAG,EAAE,CAChP,IAAMI,EAASL,GAAsBC,CAAG,EAAEG,GAAqBC,CAAQ,EACvE,EAAS,UAAU,KAAK,IAAIA,EAAS,UAAU,EAAE,EAAK,MAAM,QAAQnJ,EAAM,QAAQ,EAAE,EAAM,SAAS7C,GAAGgM,EAAc,EAAM,SAASA,CAAS,KAAK,CACjJ,IAAMsB,EAAQ,IAAIxrB,GAAuB,CAAC,MAAM2qB,EAAU,SAASW,EAAc,oBAAkB,YAAYjC,GAAmB,CAAC,EAAE,KAAK,CAAe,CAAC,EAAKS,EAAI,MAAI,EAAQ,IAAIA,EAAI,KAAI,EAAQ,YAAY,GAAQ,MAAM,QAAQ/I,EAAM,QAAQ,EAAE,EAAM,SAAS7C,GAAGsN,EAAa,EAAM,SAASA,CAAQ,CAAC,CAC5S,GAAGzK,EAAM,SAAS,CAAC,IAAMkK,EAAW,IAAI9qB,GAAwB,CAAC,MAAMyqB,EAAa,KAAK,CAAc,CAAC,EAAQM,EAAYC,GAAiCpK,EAAMkK,EAAWJ,CAAS,EAAKK,EAAaJ,EAAmB,KAAK,CAAC,OAAO/J,EAAM,OAAO,KAAKmK,CAAW,CAAC,EAAQD,EAAW,QAAQ,CAAG,CAAC,CAAC,EACvS,IAAI,IAAMG,KAASN,EAAuBM,EAAM,QAAOA,EAAM,OAAO,IAAIA,EAAM,IAAI,CAAG,CAAC,SAAgBL,GAAoB,EAAM,CAAC,GAAG,CAAC7D,EAAM,OAAO,IAAMuE,EAAS,CAAC,EAAEvE,EAAM,SAAS,GAAO,CAAInG,EAAM,iBAAgB0K,EAAS,KAAK1K,CAAK,CAAE,CAAC,EAAE,IAAI,IAAMrS,KAAK+c,EAAa/c,EAAE,QAAOA,EAAE,OAAO,OAAOA,CAAC,EAAKA,EAAE,qBAAoBA,EAAE,UAAU,QAAQ,EAAE,EAAE,SAAS,KAC7VA,EAAE,UAAU,QAAQ,CAAG,CAAmG,SAAgBgd,GAA4B,EAAM,CAACC,GAA0B,MAAM,EAAE,IAAMC,EAAY,CAAC,EAGnO,OAHqO1E,EAAM,SAAS,GAAO,CAAC,GAAG,CAACnG,EAAM,OAAO,OAAO,IAAM8K,EAAS,MAAM,QAAQ9K,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAQ+K,EAAS,CAAC,EAC3WC,EAAQ,CAAC,MAAM,YAAY,eAAe,eAAe,QAAQ,cAAc,UAAU,kBAAkB,WAAW,WAAW,SAAS,eAAe,qBAAqB,wBAAwB,gBAAgB,oBAAoB,kBAAkB,eAAe,iBAAiB,0BAA0B,uBAAuB,kBAAkB,EAAE,IAAI,IAAMrE,KAAOmE,EAAU,IAAI,IAAM5U,KAAO8U,EAAYrE,EAAIzQ,IAAMyQ,EAAIzQ,EAAI,CAAC,WAAW6U,EAAS,KAAKpE,EAAIzQ,EAAI,EAAK0U,GAA0B,IAAI5K,EAAM,KAAK,CAAC,SAAS,MAAM,QAAQA,EAAM,QAAQ,EAAE,CAAC,GAAGA,EAAM,QAAQ,EAAEA,EAAM,SAAS,UAAQ,CAAC,EAAE6K,EAAY,KAAK,GAAGE,CAAQ,EACpkB,EAAM,SAAnCE,GAAsD,CAAE,CAAC,EACrE,CAAC,GAAG,IAAI,IAAIJ,CAAW,CAAC,CAAE,CAAC,eAAsBK,GAA4B,EAAS,EAAS,EAAW,CAAC,GAAG,CAACH,EAAS,OAAO,CAACpW,IAAa,CAAC,EAAE,MAAO,CAAC,IAAIwW,EAAO,EAAQzN,EAAMqN,EAAS,OAAO,IAAI,IAAMhW,KAAOgW,EAAS,CAAC,GAAG,CACrO/R,EAAS,YAAYjE,CAAG,EACrBA,EAAI,OAAOA,EAAI,iBAAiB,kBAAkB,CAACA,EAAI,MAAM,WAAU,MAAM,IAAI,QAAQ,GAAS,CAAC,EAAI,MAAM,OAAOqW,EAAQ,EAAI,MAAM,QAAQA,EACjJ,WAAWA,EAAQ,GAAG,CAAE,CAAC,EAAEpS,EAAS,YAAYjE,CAAG,EAAG,MAAS,CAC/D,CAAC,IAASJ,IAAawW,EAAOzN,CAAK,CAAE,CAAC,CAAC,SAAgB2N,GAAe,EAAM,CAAKlF,GAAaA,EAAM,SAAS,GAAO,CAAKnG,EAAM,SAAiBA,EAAM,kBAC3I,MAAM,QAAQA,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAA,CAAO,QAAQ,GAAK,CAAK2G,IAC7FA,EAAI,gBAAgBA,EAAI,MAAM,KAAKA,EAAI,cAAc,EAAMA,EAAI,mBAAmBA,EAAI,UAAUA,EAAI,SAAS,KAAKA,EAAI,iBAAiB,EAAMA,EAAI,2BAA2B,IAAA,KAAW,EAAI,gBAAgBA,EAAI,0BAClN,OAAOA,EAAI,eAAe,OAAOA,EAAI,kBAAkB,OAAOA,EAAI,yBAAyB,CAAC,EAAE,CAAC,CAAE,CAAC,SAAgB2E,GAAuB,EAAiB,EAAe,CAAC,GAAK,CAAC,WAAS,aAAW,YAAU,gBAAc,oBAAkB,aAAWC,EAAqB5E,EAAI6E,EAAiB,MAAM,EA8B/Q,MA7B1B,GAAI,SAAS,iBAAiBC,EAAS,EAAI,SAAS,WAAWC,EAC9D,EAAI,SAAS,UAAUC,GAAW,GAClC,EAAI,SAAS,UAAUC,EAAU,EAAI,SAAS,cAAczQ,EAAWoP,CAAa,EAAE,EAAI,SAAS,kBAAkBC,EAAkB,EAAI,gBAAgB,GAAQ,CAAC,EAAO,SAAS,UAAU,CAAC,MAAM7D,EAAI,SAAS,gBAAgB,EAAE,EAAO,SAAS,MAAM,CAAC,MAAMA,EAAI,SAAS,UAAU,EAAE,EAAO,SAAS,KAAK,CAAC,MAAMA,EAAI,SAAS,SAAS,EAAE,EAAO,SAAS,MAAM,CAAC,MAAMA,EAAI,SAAS,SAAS,EAAE,EAAO,SAAS,WAAW,CAAC,MAAMA,EAAI,SAAS,aAAa,EAAE,EAAO,SAAS,eAAe,CAAC,MAAMA,EAAI,SAAS,iBAAiB,EAAE,EAAI,SAAS,eAAekF,EAAO,SAC3iB,EAAO,aAAaA,EAAO,aAAa,QAAQ,oBAAoB;mBACjD,EAAE,EAAO,aAAaA,EAAO,aAAa,QAAQ,0BAA0B;iBAC9E,EACjB,EAAO,eAAeA,EAAO,eAAe,QAAQ,oBAAoB;;;;;;;;;;EAUtExT,GAAW;CACZ,EACD,EAAO,eAAewT,EAAO,eAAe,QAAQ,gCAAgC;;;;;;;;;;;CAWnF,CAAE,EAAE,EAAI,YAAY,GAAYlF,CAAI,CAAC,SAAgBT,GAAqB,EAAM,EAAS,CAACC,EAAM,kBAAkB,EAAI,EACtH,IAAM2F,EAAU,CAAC,EAAE3F,EAAM,SAAS,GAAO,CAAC,GAAG,CAACnG,EAAM,QAAQA,EAAM,gBAAgB,OAAO,IAAM+L,EAAQ/L,EAAM,UAAU,aAAa,UAAU,EAAE,GAAG,CAAC+L,EAAQ,OAAO,IAAMC,EAAShM,EAAM,YAAY,MAAM,EAA8DiM,EAAzC9F,EAAM,YAAY,MAAM,CAAC,CAAC,OAAmC,CAAC,CAAC,SAAS6F,CAAQ,EAAQlc,EAAE,IAAIzQ,EAAc,IAAI,IAAI8d,EAAE,EAAEA,EAAE4O,EAAQ,MAAM,IAAKjc,EAAE,IAAIic,EAAQ,KAAK5O,CAAC,EAAE4O,EAAQ,KAAK5O,CAAC,EAAE4O,EAAQ,KAAK5O,CAAC,CAAC,EAAErN,EAAE,aAAamc,CAAQ,EAAEH,EAAU,KAAKhc,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,CAAG,CAAC,EAAE,IAAMoc,EAAWJ,EAAU,OAAO,EAAE,GAAGI,GAAYC,EAAS,OAAO,IAAI,aAAaL,CAAS,EAAE,IAAMM,EAAO,KAAK,KAAKF,EAAWC,CAAQ,EAAQE,EAAQ,CAAC,EAAE,IAAI,IAAIlP,EAAE,EAAEA,EAAE+O,EAAW,GAAGE,EAAQC,EAAQ,KAAKP,EAAU3O,EAAE,GAAG2O,EAAU3O,EAAE,EAAE,GAAG2O,EAAU3O,EAAE,EAAE,EAAE,EAAG,OAAO,IAAI,aAAakP,CAAO,CAAE,CAAC,SAAgBC,GAAyB,EAAG,EAAI,CAA6mC,OAAxmCxU,GAAI,OAAmB,EAAG,MAAM,QAAQ,GAAK,EAAG,eAAe,GAAK,EAAG,kBAAkB,GAAG,EAAG,iBAAiB,EAAE,EAAG,mBAAmB,GAAMA,EAAG,MAAM,SAAS,GAAO,CAAC,GAAG,CAACkI,EAAM,OAAO,OAAOlI,EAAG,0BAA0B,IAAIkI,EAAM,KAAKA,EAAM,QAAQ,EAAE,IAAMuM,EAAYjB,GAAuBtL,EAAM,SAAS,CAAC,SAASiI,GAAoB,EAAEjY,EAAI,kBAAkBA,EAAI,iBAAiB,EAAE,WAAWA,EAAI,mBAAmB,UAAUA,EAAI,kBAAkB,UAAUA,EAAI,kBAAkB,cAAcA,EAAI,sBAAsB,kBAAkBA,EAAI,yBAAyB,CAAC,EAAE8H,EAAG,kBAAkB,IAAIkI,EAAM,KAAKuM,CAAW,EAAE,EAAM,SAASA,CAAY,CAAC,EAAKvc,EAAI,2BAA0BgY,GAAyBlQ,EAAG,iBAAiB,EAAE,EAAG,kBAAkBkO,GAAwBlO,EAAG,MAAM9H,CAAG,EAAE8H,EAAG,kBAAkB,OAAO,SAAS,KAAKA,EAAG,MAAM,QAAQ,EAAEA,EAAG,kBAAkB,OAAO,SAAS,KAAKA,EAAG,MAAM,QAAQ,EAAEA,EAAG,kBAAkB,OAAO,MAAM,KAAKA,EAAG,MAAM,KAAK,EAAEA,EAAG,MAAM,IAAIA,EAAG,kBAAkB,MAAM,EAAE,EAAG,kBAAkB,IAAI,SAAS,UAAU,MAAMmQ,GAAoB,EAAEjY,EAAI,kBAAkBA,EAAI,iBAAiB,GAAU,IAA9lC,EAAmmC,CAAC,SAAgBuZ,GAAwB,EAAM,CAAsJ,GAAlJ,CAACvJ,GAAO,QAAuBA,EAAM,iBAAgCA,EAAM,UAAU,IAAsB4I,GAAmB5I,CAAK,GAAkB,CAACA,EAAM,SAAS,MAAO,GAAM,IAAM+L,EAAQ/L,EAAM,SAAS,eAAe,UAAU,EAAE,MAAM,CAAC+L,GAASA,EAAQ,MAAM,CAAE,CAAC,SAAgB3B,GAAiC,EAAM,EAAW,EAAU,CAAC,IAAMoC,EAAWxM,EAAM,SAAS,MAAM,EAAMwM,EAAW,WAAW,QAAQA,EAAW,qBAAqB,EAAG,IAAMT,EAAQS,EAAW,WAAW,SAAeC,EAASD,EAAW,WAAW,OAAO,GAAGT,GAASU,EAAS,CAACD,EAAW,sBAAsB,EAA4E,IAAM5J,EAAOkH,GAA1E0C,EAAW,eAAeA,EAAW,eAAe,OAAO,GAAgC,IAAI,IAAIrP,EAAE,EAAEA,EAAE4O,EAAQ,MAAM,IAAI,CAAC,IAAIrc,EAAEqc,EAAQ,KAAK5O,CAAC,EAAM4J,EAAEgF,EAAQ,KAAK5O,CAAC,EAAMhU,EAAE4iB,EAAQ,KAAK5O,CAAC,EAAE,GAAGsP,EAAS,KAAKtP,CAAC,EAAEyF,EAAO,GAAG6J,EAAS,KAAKtP,CAAC,EAAEyF,EAAO,GAAG6J,EAAS,KAAKtP,CAAC,EAAEyF,EAAOmJ,EAAQ,OAAO5O,EAAEzN,EAAEqX,EAAE5d,CAAC,CAAE,CAAC,EAAQ,YAAY,EAAK,CAAC,IAAIghB,EAA4rB,OAA7qBnK,EAAM,eAAe,EAAY,IAAI1gB,EAAkBktB,EAAWtC,CAAU,EAAEC,EAAY,KAAKnK,EAAM,SAASA,EAAM,UAAU,GAAQ,EAAY,IAAIzgB,GAAWitB,EAAWtC,CAAU,EAAG,EAAY,gBAAgB,GAAK,EAAY,oBAAoB,GAAK,EAAY,WAAW,GAAM,EAAY,cAAc,GAAM,EAAY,cAAclK,EAAM,cAAcmK,EAAY,MAAM,KAAKnK,EAAM,KAAK,EAAEmK,EAAY,SAAS,KAAKnK,EAAM,QAAQ,EAAEmK,EAAY,SAAS,KAAKnK,EAAM,QAAQ,EAAEmK,EAAY,WAAW,KAAKnK,EAAM,UAAU,EAAKA,EAAM,wBAAuB,EAAY,sBAAsBA,EAAM,sBAAsB,EAAY,sBAAsBA,EAAM,uBAA8BmK,CAAY,CAAC,SAAgBX,GAAiB,EAAI,CAAC,OAAO7C,EAAI,cAAcA,EAAI,aAAa,GAAG,CAAC,CAACA,EAAI,eAAgB,CAAC,SAAgB+F,GAAoB,EAAI,EAAS,EAAS,EAAQ,CAAC7K,GAAuB,CAAC,CAAC,KAAKpN,EAAI,GAAS,CAAC,EAAQ,WAAW1V,GAAqB,EAAQ,YAAY,GAAK,EAAQ,WAAWogB,GAAwBnG,CAAQ,EAAE,IAAM2T,EAAM9X,EAAQ,OAAO,CAAC,EAAwF+X,EAA1E,KAAK,IAAI,EAAED,EAAM,OAAO,CAA6D,EAA7C,KAAK,IAAI,EAAEA,EAAM,QAAQ,CAA2B,EAAQE,EAAWD,GAAQ,EAAEA,EAAO,EAAQE,EAAYF,GAAQ,EAAE,EAAE,EAAEA,EAAaG,EAAS,IAAIvtB,EAAoBqtB,EAAWC,CAAW,EAAQE,EAAS,IAAIvtB,GAA2B,CAAC,IAAIoV,EAAQ,YAAY,GAAK,UAAU,KAAK,KAAK,EAAiB,UAAU,EAAE,UAAU,CAAC,CAAC,EAAQgU,EAAK,IAAItpB,GAAWwtB,EAASC,CAAQ,EAAE,EAAK,KAAK,aAAa,EAAK,WAAW,GAAM,EAAK,cAAc,GAAM,IAAMhI,EAAM,IAAItlB,EAAYslB,EAAM,IAAI6D,CAAI,EAAE9E,EAASiB,EAAM,CAAC,CAAC,CAAE,EAAE,IAAA,GAAUpQ,CAAO,CAAE,CAAC,SAAgBqY,GAAgB,EAAK,CAAC,GAAGlX,GAAqB,IAAI8S,EAAK,IAAI,EAAE,OAA6E,IAAMqE,GAAjE,MAAM,QAAQrE,EAAK,QAAQ,EAAEA,EAAK,SAAS,CAACA,EAAK,QAAQ,EAAA,CAAoB,IAAI,GAAGlb,EAAE,MAAM,CAAC,EAAEoI,GAAqB,IAAI8S,EAAK,KAAKqE,CAAM,EAIhvJ,EAAK,SAASA,EAAO,SAAS,EAAEA,EAAO,GAAGA,CAAO,CAAC,SAAgBC,GAAiB,EAAK,CAAC,IAAMD,EAAOnX,GAAqB,IAAI8S,EAAK,IAAI,EAAE,GAAG,CAACqE,EAAO,OACrJ,IAAME,EAASF,EAAO,IAAI,GAAGvf,EAAE,MAAM,CAAC,EAAE,EAAK,SAASyf,EAAS,SAAS,EAAEA,EAAS,GAAGA,CAAS,CAAC,SAAgBnC,IAA4B,CAAC,OAAO,IAAIxrB,GAA2B,CAAC,MAAMqW,GAA6B,UAAU,GAAG,UAAU,GAAG,gBAAgB,EAAE,CAAC,CAAE,CAAC,SAAgBuX,GAA6B,EAAM,CAAClH,EAAM,SAAS,GAAO,CAAC,GAAG,CAACnG,EAAM,OAAO,OAAO,IAAMsN,EAAO1C,GAA0B,IAAI5K,EAAM,IAAI,EAAE,GAAG,CAACsN,EAAO,OAC5a,IAAM/S,EAAQ,MAAM,QAAQyF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAMrS,KAAK4M,EAAY5M,IAAI2f,EAAO,UAAU,CAAC,MAAM,QAAQA,EAAO,QAAQ,GAAE3f,EAAE,UAAU,EACxK,EAAM,SAAS2f,EAAO,QAAS,CAAC,EAAE1C,GAA0B,MAAM,CAAE,CAAC,SAAgB2C,GAAa,EAAM,EAAO,CAAKpH,GAAaA,EAAM,SAAS,GAAO,CAAKnG,EAAM,SAE/JA,EAAM,kBAAkC,MAAM,QAAQA,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAA,CAAO,QAAQ,GAAK,CAAK2G,IAC7HA,EAAI,iBAAiB,IAAA,KAAW,EAAI,eAAeA,EAAI,MAAMA,EAAI,MAAM,MAAM,EAAE,IAAIznB,GAAY,EAAE,EAAE,CAAC,EAAE,EAAI,kBAAkBynB,EAAI,SAASA,EAAI,SAAS,MAAM,EAAE,KAAK,EAAI,yBAAyBA,EAAI,iBAAiB,GACxNA,EAAI,MAAM,KAAKA,EAAI,cAAc,CAAC,CAAC,eAAe6G,CAAM,EAAK7G,EAAI,mBAAmBA,EAAI,UAAUA,EAAI,SAAS,KAAKA,EAAI,iBAAiB,CAAC,CAAC,eAAe6G,CAAM,EAAG,EAAI,gBAAgB7G,EAAI,yBAAyB6G,EACjNA,GAAQ,IAAG7G,EAAI,MAAM,KAAKA,EAAI,cAAc,EAAKA,EAAI,mBAAmBA,EAAI,UAAUA,EAAI,SAAS,KAAKA,EAAI,iBAAiB,EAAG,EAAI,gBAAgBA,EAAI,yBAAyB,OAAOA,EAAI,eAAe,OAAOA,EAAI,kBAAkB,OAAOA,EAAI,0BAA0B,CAAC,EAAE,CAAC,CAAE,CAAC,SAAgB8G,GAAsB,EAAM,EAAI,CAAC,GAAG,CAACtH,EAAM,OAAO,IAAImD,EAAOtZ,EAAI,iBAAiB,OAA4C,KAArCb,GAAiBa,EAAI,gBAAwBsZ,GAAQtZ,EAAI,iBAAiB,YAAa,EAAO,CAAC,GAAGsZ,EAAO,iBAAiBtZ,EAAI,oBAAoB,IAAI,aAAaA,EAAI,gBAAgB,UAAU,cAAcA,EAAI,wBAAwB,UAAU,kBAAkBA,EAAI,4BAA4B,GAAG,EAAWsZ,GAAQtZ,EAAI,iBAAiB,gBAAe,EAAO,CAAC,GAAGsZ,EAAO,MAAMtZ,EAAI,iBAAiB,UAAU,iBAAiBA,EAAI,qBAAqB,KAAK,aAAaA,EAAI,iBAAiB,UAAU,MAAMA,EAAI,aAAa,CAAC,GAC34B,IAAM0d,EAAY1d,EAAI,kBAAkBsZ,EACxC,GADkDoE,GAAavH,EAAM,SAAS,GAAO,CAAInG,EAAM,QAAOiN,GAAgBjN,CAAK,CAAE,CAAC,EAC3HsJ,GAAQA,EAAO,MAAM,CAC+B,GAApDA,EAAO,QAAQ,WAAUU,GAAoB7D,CAAK,EAAKmD,EAAO,QAAQ,OAAO,CAACF,GAAgBjD,EAAMmD,CAAM,EAAE,MAAO,CAAC,GAAGA,EAAO,QAAQ,SAAS,CAACI,GAAkBvD,EAAMmD,CAAM,EAAE,MAAO,CAAC,GAAGA,EAAO,QAAQ,UAAU,CAACgB,GAAmBnE,EAAMmD,CAAM,EAAE,MAAO,CAAC,CACjQU,GAAoB7D,CAAK,EAAMuH,EACmDvH,EAAM,SAAS,GAAO,CAAC,GAAG,CAACnG,EAAM,OAAO,OAAO,IAAMiF,EAAK,MAAM,QAAQjF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,EAAEiF,EAAK,OAAO,IAAI,CAAC,IAAI0B,EAAI1B,EAAK,GACtP,GAAG,CAAC0B,EAAI,uBAAuB,CAAC,IAAMgH,EAAOhH,EAAI,EAAI,IAAI3nB,GAC8S,IAAI,IAAMiqB,IAAK,CAAvW,MAAM,YAAY,QAAQ,eAAe,eAAe,cAAc,UAAU,kBAAkB,WAAW,WAAW,SAAS,eAAe,wBAAwB,qBAAqB,kBAAkB,eAAe,gBAAgB,oBAAoB,iBAAiB,0BAA0B,uBAAuB,kBAAyC,EAAM0E,EAAO1E,KAAG,EAAIA,GAAG0E,EAAO1E,IAExL,IAAI,IAAMA,IAAK,gdAAS,EAAM0E,EAAO1E,KAAK,IAAA,KAAW,EAAIA,GAAG0E,EAAO1E,EAAE,EAAE,MAAM0E,EAAO1E,EAAE,CAAC,MAAM,EAAE0E,EAAO1E,IAAQ,MAAM,QAAQjJ,EAAM,QAAQ,EAAE,EAAM,SAAS,GAAG2G,EAAS,EAAM,SAASA,CAAI,CAI5Z,IAAM3f,EAAEsiB,GAAQ,CAAC,EAAQsE,EAAS5d,EAAI,iBAAiB,EAAI,UAAU4d,EAAS5d,EAAI,UAAUhJ,EAAE,WAAW2f,EAAI,UAAU,EAAI,UAAUiH,EAAS5d,EAAI,UAAUhJ,EAAE,WAAW2f,EAAI,UAAU,EAAI,UAAUiH,EAAS5d,EAAI,UAAUhJ,EAAE,WAAW2f,EAAI,WAAW,EAAE,EAAI,mBAAmBiH,EAAS5d,EAAI,mBAAmBhJ,EAAE,oBAAoB2f,EAAI,oBAAoB,EAAE,IAAMkH,EAAMD,EAAS5d,EAAI,aAAahJ,EAAE,cAAc,EAAiH,GAA/G,EAAI,aAAa6mB,EAAM,EAAI,UAAUD,EAAS5d,EAAI,UAAUhJ,EAAE,WAAW,EAAE,EAAI,IAAI4mB,EAAS5d,EAAI,IAAIhJ,EAAE,KAAK,IAAO6mB,EAAM,EAIjhB,EAAI,YAAY,GAAM,EAAI,WAAW,GAAK,EAAI,QAAQ,MAAO,CAC7D,IAAMC,EAAGF,EAAS5d,EAAI,QAAQhJ,EAAE,SAAS2f,EAAI,SAAS,EAAE,EAAI,QAAQmH,EAAMA,EAAG,IAAG,EAAI,YAAY,GAAK,EAAI,WAAW,GAAO,CAAC,EAAI,YAAYF,EAAS5d,EAAI,YAAYhJ,EAAE,aAAa,EAAE,EAAI,eAAe4mB,EAAS5d,EAAI,eAAehJ,EAAE,gBAAgB,IAAI,IAAM+mB,EAASH,EAAS5d,EAAI,MAAMhJ,EAAE,OAAO,EAAE,EAAI,MAAM+mB,EAAS,EAAI,eAAeH,EAAS5d,EAAI,eAAehJ,EAAE,gBAAgB,GAAM+mB,EAAS,IAAE,EAAI,WAAW5S,EAAWyS,EAAS5d,EAAI,WAAWhJ,EAAE,YAAY,SAAS,GAAE,EAAI,gBAAgB4mB,EAAS5d,EAAI,gBAAgBhJ,EAAE,iBAAiB,EACzhBsiB,GAAQtiB,EAAE,QAAM,EAAI,MAAMmU,EAAWnU,EAAE,KAAK,GAAE,IAAMgnB,EAAMJ,EAAS5d,EAAI,kBAAkBhJ,EAAE,mBAAmB,EAAE,EAAI,kBAAkBgnB,EAASA,EAAM,IAAE,EAAI,SAAS7S,EAAWyS,EAAS5d,EAAI,cAAchJ,EAAE,eAAe,SAAS,GAAE,EAAI,aAAa4mB,EAAS5d,EAAI,aAAahJ,EAAE,cAAc,GACpS,EAAI,UAAU4mB,EAAS5d,EAAI,WAAW,GAAMhJ,EAAE,WAAW,GAAM,EAAI,YAAY,EAAK,CAAC,CAAC,EAftFmf,EAAM,SAAS,GAAO,CAAKnG,EAAM,QAAcmN,GAAiBnN,CAAK,CAAE,CAAC,CAegB,C,uFA9IwyB,GAAiB,KAAS,GAAmB,KAAS,GAAoB,KAAkB,mBAA0B,IAAI,G,OCArxB,SAAgBkO,GAAqB,EAAG,EAAI,CAAC,IAAMC,EAAene,EAAI,eAAeA,EAAI,aAAa,KAAK,GAAI/H,GAAI,SAASA,GAAI,UAAU,EAAE,EAAG,UAAU,UAAU,QAAQ,CAAC,CAACkmB,EAAe,EAAG,aAAa,UAAUne,EAAI,sBAAsB,EAAG,SAAS,UAAUA,EAAI,0BAA0B,EAAG,eAAemL,EAAWnL,EAAI,qBAAqB,EAAE,EAAG,SAAS,MAAM8H,EAAG,eAAeA,EAAG,SAAS,SAAS,IAAI9H,EAAI,cAAc,EAAEA,EAAI,cAAc,GAAGA,EAAI,cAAc,CAAC,EAAE,EAAG,SAAS,WAAWA,EAAI,cACvtB,IAAMoe,EAAOpe,EAAI,eAAe,KAAQ8H,EAAG,SAAS,OAAO,QAAQ,IAAIsW,IAAQtW,EAAG,SAAS,OAAO,QAAQ,IAAIsW,EAAOA,CAAM,EAAKtW,EAAG,SAAS,OAAO,MAAKA,EAAG,SAAS,OAAO,IAAI,QAAQ,EAAE,EAAG,SAAS,OAAO,IAAI,OAC7M,EAAG,SAAS,OAAO,KAAK9H,EAAI,YAAY,MAAM,EAAG,SAAS,OAAO,WAAWA,EAAI,kBAAkB,IAAI,EAAG,OAAO,QAAQA,EAAI,cAC/Hqe,GAAiBvW,EAAG9H,CAAG,CAAE,CAAC,SAAgBqe,GAAiB,EAAG,EAAI,CAAC,IAAMC,EAAMxW,EAAG,MAAYyW,EAAOzW,EAAG,kBAAwB0W,EAAQxe,EAAI,aAAa,CAAC,EAC1J,KAAMue,EAAO,OAAOC,EAAQ,QAAO,CAAC,IAAMC,EAAMF,EAAO,IAAI,EAAED,EAAM,OAAOG,CAAK,EAAKA,EAAM,QAAQA,EAAM,aAAYH,EAAM,OAAOG,EAAM,MAAM,EAAKA,EAAM,QAAQ,KAAIA,EAAM,OAAO,IAAI,QAAQ,EAAEA,EAAM,QAAQ,CAAE,CAAC,IAAI,IAAItR,EAAE,EAAEA,EAAEqR,EAAQ,OAAO,IAAI,CAAC,IAAME,EAAGF,EAAQrR,GAAG,GAAG,CAACuR,EAAG,SAAS,IAAMC,EAAKD,EAAG,WAAW,QAAcE,EAAQF,EAAG,SAAS,GAAWG,EAAM1T,EAAWuT,EAAG,OAAO,SAAS,EAAQI,EAAUJ,EAAG,WAAW,EAAQK,EAAKL,EAAG,MAAM,EAAQM,EAAKN,EAAG,MAAM,EAAQO,EAAKP,EAAG,MAAM,EAAQ5Q,EAAS4Q,EAAG,UAAU,EAAQQ,EAAMR,EAAG,OAAO,EAAQS,EAAWT,EAAG,YAAY,GAAUD,EAAMF,EAAOpR,GAG/X,GAF9LsR,IAAQE,IAAO,SAAS,CAACF,EAAM,cAAcE,IAAO,QAAQ,CAACF,EAAM,eAA+BH,EAAM,OAAOG,CAAK,EAAKA,EAAM,QAAQA,EAAM,aAAYH,EAAM,OAAOG,EAAM,MAAM,EAAKA,EAAM,QAAQ,KAAIA,EAAM,OAAO,IAAI,QAAQ,EAAEA,EAAM,QAAQ,EAAE,EAAM,KAAK,EAAOtR,GAAG,MAAUsR,IACpSE,IAAO,QAAQ,EAAM,IAAIhvB,GAAgBkvB,EAAMC,CAAS,EAAE,EAAM,OAAOJ,EAAG,OAAO,KAAK,KAAK,GAAG,KAAK,EAAM,SAASA,EAAG,UAAU,GAAGJ,EAAM,IAAIG,EAAM,MAAM,GAAQ,EAAM,IAAI7uB,GAAiBivB,EAAMC,EAAUhR,EAASoR,CAAK,EAAGT,EAAM,OAAO,QAAQ,IAAI,KAAK,IAAI,EAAE,EAAM,OAAO,KAAK,MAAM,EAAM,OAAO,WAAW,IAAIH,EAAM,IAAIG,CAAK,EAAE,EAAOtR,GAAGsR,GAClV,EAAM,QAAQG,EAAQH,EAAM,MAAM,KAAKI,CAAK,EAAE,EAAM,UAAUC,EAAUL,EAAM,SAAS,IAAIM,EAAKC,EAAKC,CAAI,EAAE,EAAM,WAAWE,GAAYP,EAAWH,EAAM,eAAc,EAAM,SAAS3Q,EAAS,EAAM,MAAMoR,GAAUT,EAAM,YAAY,CAAC,EAAM,SAAS3Q,EAAS,EAAM,MAAMoR,EAAM,EAAM,OAAOR,EAAG,OAAO,KAAK,KAAK,GAAG,KAAK,EAAM,SAASA,EAAG,UAAU,GAAG,IAAMU,EAAGV,EAAG,SAAS,EAAQW,EAAGX,EAAG,SAAS,EAAQY,EAAGZ,EAAG,SAAS,EAAED,EAAM,OAAO,SAAS,IAAIW,EAAGC,EAAGC,CAAE,CAAE,CAAC,CAAC,C,gDCPkE,SAAgBE,GAAgB,EAAQ,EAAI,CAAuG,OAAlG3a,IAAuB,EAAQ,SAASA,EAAQ,UAAU,CAAC,EAAE,EAAQ,SAAS,gBAAgBJ,EAAWI,EAAQ,CAAoF,SAAgB4a,GAAS,EAAS,EAAI,EAAO,CAAC,GAAG9Z,GAAU,IAAIlB,CAAG,EAAE,CAAC,IAAM4V,EAAM1U,GAAU,IAAIlB,CAAG,EAAE,EAAM,SAAS,YAAY,IAAI,EAAEib,EAAOrF,EAAM,OAAO,CAAS,MAAIzU,GAAa,IAAInB,CAAG,EAAGmB,GAAa,IAAInB,CAAG,CAAC,CAAC,KAAKib,CAAM,GAAU9Z,GAAa,IAAInB,EAAI,CAACib,CAAM,CAAC,EAElgC9hB,GAAe,CAAC,CAAC,KAAK,GAAW,CAAC,IAAI+hB,EAAU,CAAC,CAAC,KAAKlb,EAAI,GAAS,CAAC,EAAQ,QAAQ,IAAuC,IAAMmb,EAAOJ,GAAgB3a,EAAQJ,CAAG,EAAEkB,GAAU,IAAIlB,EAAI,CAAC,QAAQmb,EAAO,KAAK,EAAE,SAAS,YAAY,IAAI,CAAC,CAAC,EAAE,IAAMC,EAAUja,GAAa,IAAInB,CAAG,GAAG,CAAC,EAAEmB,GAAa,OAAOnB,CAAG,EAAEob,EAAU,QAAQ,GAAIC,EAAGF,CAAM,CAAC,CAAE,EAAE,IAAA,GAAU,GAAK,CAAC,QAAQ,KAAK,oBAAoBnb,EAAIuP,CAAG,EAAE,IAAM6L,EAAUja,GAAa,IAAInB,CAAG,GAAG,CAAC,EAAEmB,GAAa,OAAOnB,CAAG,EAAEob,EAAU,QAAQ,GAAIC,EAAG,IAAI,CAAC,CAAE,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,GAAK,CAAC,QAAQ,KAAK,qCAAqC9L,CAAG,EAAE,IAAM6L,EAAUja,GAAa,IAAInB,CAAG,GAAG,CAAC,EAAEmB,GAAa,OAAOnB,CAAG,EAAEob,EAAU,QAAQ,GAAIC,EAAG,IAAI,CAAC,CAAE,CAAC,EAAE,CAAC,SAAgBC,GAAY,EAAI,EAAQ,CAAC,GAAG,CAACtb,GAAK,CAACI,EAAQ,OAAO,IAAMwV,EAAM1U,GAAU,IAAIlB,CAAG,GAAG,CAAC,UAAQ,KAAK,EAAE,SAAS,YAAY,IAAI,CAAC,EAAE,EAAM,QAAQI,EAAQ,EAAM,MAAMwV,EAAM,MAAM,GAAG,EAAE,EAAM,SAAS,YAAY,IAAI,EAAE1U,GAAU,IAAIlB,EAAI4V,CAAK,CAAE,CAAC,SAAgB2F,GAAa,EAAI,CAAC,IAAM3F,EAAM1U,GAAU,IAAIlB,CAAG,EAAE,GAAG,CAAC4V,EAAM,OAAO,EAAM,KAAK,KAAK,IAAI,GAAGA,EAAM,MAAM,GAAG,CAAC,EAAE,EAAM,SAAS,YAAY,IAAI,EAEtjC,IAAM4F,EAAK,CAAC,GAAGta,GAAU,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAErF,MAASA,EAAK,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAKsM,EAAE,EAAE,CAAC,UAAU,IAAID,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,KAAMsT,EAAK,OAAO,GAAE,CAAC,GAAK,CAACC,EAAOC,GAAUF,EAAK,MAAM,EAAEE,EAAS,SAAS,UAAU,EAAExa,GAAU,OAAOua,CAAM,CAAE,CAAC,CAAC,SAAgBE,GAA+B,EAAS,CAAC,GAAG,CAACpX,EAAS,OAAO,KAAK,IAAIqX,EAAMxa,GAAmB,IAAImD,CAAQ,EAAmE,OAA7DqX,IAAO,kBAAM,IAAI,IAAIxa,GAAmB,IAAImD,EAASqX,CAAK,GAAUA,CAAM,CAAC,SAAgBC,GAAyB,EAAS,EAAW,CAAC,IAAMpa,EAAIqa,GAAY,SAAeF,EAAMD,GAA+BpX,CAAQ,EAAE,GAAG,CAACqX,EAAM,OAAOG,GAAoBxX,EAAS9C,CAAG,EAAE,IAAImU,EAAMgG,EAAM,IAAIna,CAAG,EAAqL,OAA/KmU,IAAO,EAAM,CAAC,QAAQmG,GAAoBxX,EAAS9C,CAAG,EAAE,KAAK,EAAE,SAAS,YAAY,IAAI,CAAC,EAAEma,EAAM,IAAIna,EAAImU,CAAK,GAAG,EAAM,MAAMA,EAAM,MAAM,GAAG,EAAE,EAAM,SAAS,YAAY,IAAI,EAASA,EAAM,OAAQ,CAAC,SAAgBoG,GAA8B,EAAS,EAAW,CAAC,IAAMJ,EAAMrX,EAASnD,GAAmB,IAAImD,CAAQ,EAAE,KAAK,GAAG,CAACqX,EAAM,OAAO,IAAMna,EAAIqa,GAAY,SAAelG,EAAMgG,EAAM,IAAIna,CAAG,EAAE,GAAG,CAACmU,EAAM,OAAO,EAAM,KAAK,KAAK,IAAI,GAAGA,EAAM,MAAM,GAAG,CAAC,EAAE,EAAM,SAAS,YAAY,IAAI,EAAE,IAAM4F,EAAK,CAAC,GAAGI,EAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE/f,MAASA,EAAK,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAKsM,EAAE,EAAE,CAAC,UAAU,IAAID,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,KAAMsT,EAAK,OAAO,GAAE,CAAC,GAAK,CAACS,EAAOP,GAAUF,EAAK,MAAM,EAAEE,EAAS,SAAS,UAAU,EAAEE,EAAM,OAAOK,CAAM,CAAE,CAAC,CAAC,SAAgBC,GAAuB,EAAG,CAAC,GAAG,CAAC7Y,EAAG,OAAO,IAAM8X,EAAO9X,EAAG,OAAa8Y,EAAU9Y,EAAG,WAAW,GAAS+Y,EAAa/Y,EAAG,cAAc,GAAM+Y,IAAe,QAAQD,EAAWZ,GAAaY,CAAS,EAAWC,IAAe,cAAcjB,GAAQa,GAA8B3Y,EAAG,WAAWA,EAAG,SAAS8Y,EAAU,QAAQ,eAAe,EAAE,GAAG,QAAQ,EAAG,EAAG,OAAO,KAAK,EAAG,aAAa,GAAG,EAAG,UAAU,GAAG,EAAG,eAAe,EAAG,CAAC,SAAgBJ,GAAoB,EAAS,EAAW,CAAC,IAAMlH,EAAO/Z,GAAYghB,IAAahhB,GAAY,OAAauhB,EAAM,IAAIjxB,GAAqBmZ,CAAQ,EAAE8X,EAAM,6BAA6B,EAAE,IAAMC,EAAS,IAAIjxB,GAAiB,CAAC,MAAI,MAAI,OAAKwpB,EAAO,IAAU0H,EAAO,IAAIjxB,GAAqB,CAAC,KAAK,EAAe,SAAS,CAAC,KAAK,CAAC,MAAM,IAAIC,EAAc,GAAGixB,CAAG,CAAC,EAAE,KAAK,CAAC,MAAM,IAAIjxB,EAAc,GAAGkxB,CAAG,CAAC,EAAE,KAAK,CAAC,MAAM,IAAIlxB,EAAc,GAAGmxB,CAAG,CAAC,CAAC,EAAE,aAAa,0IAA0I,eAAe,gOAAgO,CAAC,EAAEJ,EAAS,IAAI,IAAI9wB,GAAW,IAAIC,GAAqB,GAAG,GAAG,EAAE,EAAE8wB,CAAM,CAAC,EAAE,IAAI,IAAMvC,KAASnF,EAAO,OAAO,CAAC,IAAM3C,EAAI,IAAIxmB,GAAwB,CAAC,MAAM,IAAIC,GAAY,GAAGquB,EAAM,KAAK,EAAE,KAAK,CAAgB,CAAC,EAAQ9gB,EAAE,IAAI1N,GAAW,IAAII,EAAoBouB,EAAM,KAAKA,EAAM,IAAI,EAAE9H,CAAG,EAAEhZ,EAAE,SAAS,IAAI,GAAG8gB,EAAM,GAAG,EAAE9gB,EAAE,OAAO,EAAE,EAAE,CAAC,EAAEojB,EAAS,IAAIpjB,CAAC,CAAE,CAAC,IAAMiiB,EAAOkB,EAAM,UAAUC,EAAS,GAAG,CAAC,CAAC,QAAuH,OAA/GD,EAAM,QAAQ,EAAEC,EAAS,SAAS,GAAG,CAAIK,EAAE,UAASA,EAAE,SAAS,QAAQ,EAAKA,EAAE,UAASA,EAAE,SAAS,QAAQ,CAAE,CAAC,EAASxB,CAAO,CAAC,SAAgByB,GAAwB,EAAG,EAAI,EAAS,EAAM,CAAC,GAAG,CAACrhB,EAAI,kBAAmB2gB,GAAuB7Y,CAAE,EAAE,EAAM,YAAY,KAAK,EAAM,WAAW9H,EAAI,sBAAsB,KAAKmL,EAAWnL,EAAI,eAAe,OAAQ,GAAGA,EAAI,kBAAkB,OAAO,CAAC,IAAMshB,EAAQthB,EAAI,eAAeV,GAAaU,EAAI,WAAW,EAAE,KAAKV,GAAa,gBAAgB,IAAI,GAAGwI,EAAG,YAAYwZ,GAASxZ,EAAG,OAAO,CAAC,EAAM,YAAYA,EAAG,OAAU9H,EAAI,2BAA2B,CAACA,EAAI,wBAAuB,EAAM,WAAW8H,EAAG,QAAQ,MAAO,CAAC6Y,GAAuB7Y,CAAE,EAAE,EAAM,YAAY,KAAK,EAAG,aAAa,OAAO,EAAG,UAAUwZ,EAAQ,EAAG,eAAeA,EAAQ7B,GAASzW,EAASsY,EAAQ,GAAQ,CAAIxZ,EAAG,WAAWA,EAAG,YAAYwZ,GAASxZ,EAAG,iBAAiBwZ,IAAoB1B,IAAQG,GAAYuB,EAAQ1B,CAAM,EAAE,EAAG,OAAOA,EAAO,EAAG,aAAa,OAAO,EAAM,YAAYA,EAAU5f,EAAI,2BAA2B,CAACA,EAAI,wBAAuB,EAAM,WAAW4f,IAAS,EAAG,eAAe,GAAG,CAAC,CAAE,KAAK,CAAC,IAAMW,EAAWvgB,EAAI,mBAAmB,SAAeuhB,EAAO,cAAchB,IAAa,GAAGzY,EAAG,YAAYyZ,GAAQzZ,EAAG,OAAO,CAAC,EAAM,YAAYA,EAAG,OAAO,MAAO,CAAC6Y,GAAuB7Y,CAAE,EAAE,EAAG,OAAOwY,GAAyBtX,EAASuX,CAAU,EAAE,EAAG,aAAa,aAAa,EAAG,UAAUgB,EAAO,EAAM,YAAYzZ,EAAG,MAAO,CAAC,C,0DCJniH,SAAgB2Z,GAA0B,EAAO,EAAS,GAAG,CAAKvgB,IAAc,EAAO,2BAA2B,GAAM,EAAO,6BAA6BP,EAAS,EAAO,gCAAgCA,EAAS,CAAC,SAAgB+gB,GAA4B,EAAO,EAAI,EAAS,CAAC,GAAG,CAAC1hB,EAAI,yBAAyBA,EAAI,gBAAgB,UAAUA,EAAI,sBAA8E,OAAvDyhB,GAA0BvgB,EAAO,OAAOP,GAAU,EAAE,CAAC,EAASA,EAAU,IAAMghB,EAAc,OAAOhhB,GAAU,EAAE,EACplC,OAA5OO,EAAO,6BAA4B,EAAO,2BAA2B,GAAK,EAAO,6BAA6BygB,GAAe,EAAO,gCAAgCA,EAAiBzgB,EAAO,yBAAiCygB,EAAsBzgB,EAAO,8BAA8BA,EAAO,0BAA0BygB,CAAc,CAAC,SAAgBC,GAA+B,EAAG,EAAI,CAA0P,GAAtP,CAAC5hB,EAAI,yBAAyB,CAACA,EAAI,iBAAiBA,EAAI,gBAAgB,UAAUA,EAAI,wBAAkC8H,EAAG,OAAOA,EAAG,YAAY,QAAQ+Z,GAAyB/Z,EAAGA,EAAG,MAAMA,EAAG,WAAW9H,EAAIA,EAAI,cAAcA,EAAI,aAAa,EAAM,CAAC8H,EAAG,WAAU,OAAO,IAAMga,EAAW9hB,EAAI,eAAe,CAAC,EAAQ+hB,EAAY,CAAC,GAAG/hB,EAAI,wBAAwB,IAAI,EAAE,IAAI,GAAK,CAACgD,EAAIqR,KAAMvM,EAAG,UAAeuM,EAAG,OAAQA,EAAG,YAAY,SAAmBA,EAAG,OAAOA,EAAG,MAAM,UAAU,IAA0ByN,EAAW9e,EAAY,EAAE,eAAsB,EAAG,yBAAyB8E,EAAG,yBAAyB+Z,GAAyBxN,EAAGA,EAAG,MAAMA,EAAG,WAAW0N,EAAY/hB,EAAI,cAAcA,EAAI,aAAa,GAAG,CAAC,SAAgBgiB,GAA0B,EAAG,EAAU,CAACvE,GAAsB3V,EAAG,MAAMma,CAAS,EAAE,IAAI,GAAK,EAAE5N,KAAMvM,EAAG,UAAcuM,EAAG,SAASA,EAAG,OAAOoJ,GAAsBpJ,EAAG,MAAM4N,CAAS,CAAI,CAAC,SAAgBC,GAAkB,EAAG,EAAO,EAAM,GAAM,CAAC,IAAMpO,EAAW0J,GAAQ,KAAK,EAAEA,EAAO,GAAG,GAAC2E,GAAOra,EAAG,sBAAsB,MAAM,KAAK,IAAIA,EAAG,qBAAqBgM,CAAU,EAAE,KAAKA,IAAa,GAAW,IAAahM,EAAG,MAAMgM,CAAU,EAAE,IAAI,GAAK,EAAEO,KAAMvM,EAAG,UAAcuM,EAAG,SAASA,EAAG,OAAOkJ,GAAalJ,EAAG,MAAMP,CAAU,EAAI,EAAG,qBAAqBA,EAAW,EAAG,gBAAgBA,EAAW,CAA/J,CAAiK,CAAC,SAAgBsO,GAAyB,EAAG,CAAC/G,GAAevT,EAAG,KAAK,EAAE,IAAI,GAAK,EAAEuM,KAAMvM,EAAG,UAAcuM,EAAG,SAASA,EAAG,OAAOgH,GAAehH,EAAG,KAAK,EAAI,EAAG,qBAAqB,KAAK,EAAG,gBAAgB,EAAM,CAAC,SAAgBgO,GAAuB,EAAG,EAAI,EAAU9hB,GAAgBP,CAAG,EAAE,CAAC,EAAG,cAAcsiB,EAAU,EAAG,iBAAiBtiB,EAAI,eAAeD,GAAaC,CAAG,EAAE,EAAG,iBAAiBA,EAAI,eAAeC,GAAaD,CAAG,EAAE,EAAG,YAAYA,EAAI,UAAUG,GAAQH,CAAG,EAAE,EAAG,gBAAgBA,EAAI,cAAcI,GAAYJ,CAAG,CAAE,CAAC,SAAgB6hB,GAAyB,EAAO,EAAM,EAAW,EAAI,EAAK,EAAS,EAAc,CAAC,IAAMU,EAAiBb,GAA4BxgB,EAAOlB,EAAIW,CAAQ,EAAQ0C,EAAQU,GAA0B7C,EAAOlB,EAAIsD,CAAa,EAAQkf,EAAa,OAAOD,GAAkB,EAAE,CAAC,CAAC,KAAK,EAAQxhB,EAASf,EAAI,mBAAmB,SAAeyiB,EAAkBziB,EAAI,gCAAgC,OAAOe,EAAe2hB,EAAuB1iB,EAAI,iCAAiC,OAAOyiB,CAAiB,CAAC,CAAC,YAAY,IAAI,SAASziB,EAAI,gBAAgB,UAAU,CAAC,CAACwiB,GAAc,EAAQ,SAASC,EAAqBC,IAAwB,EAAQ,gBAAgB,GAAK,EAAQ,eAAe,GAAO,CAAC1iB,EAAI,0BAA0B0B,CAAK,CAAE,GAAGyB,GAAgBhC,EAAMN,EAAWuC,EAAKmf,EAAiBlf,CAAO,CAAE,CAAC,SAAgBsf,GAAyB,EAAG,EAAI,EAAS,EAAM,EAAU,CAAC,IAAMC,EAAiB5iB,EAAI,eAAeD,GAAaC,CAAG,EAAQ6iB,EAAiB7iB,EAAI,eAAeC,GAAaD,CAAG,EAAQ8iB,EAAY9iB,EAAI,UAAUG,GAAQH,CAAG,EAAQ+iB,EAAgB/iB,EAAI,cAAcI,GAAYJ,CAAG,EAAK4iB,IAAmB9a,EAAG,mBAAkBka,GAA0Bla,EAAG9H,CAAG,EAAE,EAAG,iBAAiB4iB,GAAqBC,IAAmB/a,EAAG,mBAAkBoW,GAAqBpW,EAAG9H,CAAG,EAAE,EAAG,iBAAiB6iB,GAAqBC,IAAchb,EAAG,cAAauZ,GAAwBvZ,EAAG9H,EAAIgJ,EAASsV,CAAK,EAAE,EAAG,YAAYwE,GAAgBC,IAAkBjb,EAAG,kBAAiBT,GAAoBS,EAAG9H,CAAG,EAAE,EAAG,gBAAgB+iB,GAAiB,EAAG,cAAcT,GAAWtiB,EAAI,kBAAkBO,GAAgBP,CAAG,CAAE,CAAC,SAAgBgjB,GAAuB,EAAS,EAAa,CAAC,IAAMC,EAAO,CAAC,EAAwQ,OAAtQ,OAAO,QAAQC,GAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAChd,EAAIid,KAAW,CAAC,IAAMC,EAAeD,GAAS,OAAO,EAAOjd,GAAK,CAAC,GAAGid,EAAQ,OAAO,GAAWE,EAAa/lB,CAAK,EAAS,GAAQ,OAAO8lB,GAAiB,WAAkBA,EAAe9lB,CAAK,EAAQ,CAAC,CAAC8lB,CAAgB,CAAE,CAAC,EAASH,CAAO,CAAC,SAAgBK,GAAoB,EAAM,CAACnN,EAAM,SAAS,GAAO,CAAInG,EAAM,QAAQA,EAAM,UAAU,CAACA,EAAM,SAAS,YAAYA,EAAM,SAAS,kBAAkB,CAAG,CAAC,CAAE,C,oECF32D,SAASwT,GAAS,EAAK,EAAK,CAAC,IAAMC,EAAMC,EAAK,gBAAgBpT,CAAI,EAAE,GAAGmT,EAAM,OAAOA,EAAM,IAAI3Z,EAAM,KAAWgK,EAAW6P,GAAkBrT,CAAI,EAA0F,OAAxFoT,EAAK,SAAS,GAAM,CAAI,CAAC5Z,GAAO6Z,GAAkBla,EAAK,IAAI,IAAIqK,IAAW,EAAMrK,EAAK,CAAC,EAASK,CAAM,CAClpF,SAAgB8Z,GAAiB,EAAO,EAAM,EAAQ,EAAK,EAAM,CAAC,GAAG,CAACtmB,GAAO,YAAY,CAACumB,GAAQ,OAAcptB,IAAS,OAAY,OAAO,IAAMqtB,EAAMD,EAAO,YAAYA,EAAO,MAAYE,EAAKC,GAAS,UAAU,oBAAoB,EAAQtT,EAAM,MAAM,KAAKsT,GAAS,eAAe,mBAAmB,2BAA2B,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAMva,EAAK,sBAAsB,CAAC,CAAC,MAAM,GAAGA,EAAK,sBAAsB,CAAC,CAAC,OAAO,CAAC,GAAGsa,GAAM,UAAU,mDAAmD,EAAE,GAAG,CAACA,GAAM,CAAC7Z,GAAMA,EAAK,MAAM,GAAGA,EAAK,OAAO,EAAE,OAAO,IAAI+Z,EAAMJ,EAAO,YAAY,GAAG,CAACI,GAAOA,EAAM,QAAQH,EAAM,CAC9lBA,EAAM,SAAS,GAAM,CAAC,GAAG,CAACra,EAAK,QAAQA,EAAK,SAAS,uBAAuB,OAAkF,IAAMuT,GAAlE,MAAM,QAAQvT,EAAK,QAAQ,EAAEA,EAAK,SAAS,GAAGA,EAAK,SAAA,CAAiC,MAAM,EAAEuT,EAAS,MAAM,IAAI,SAAS,EAAE,EAAS,YAAY,GAAK,EAAS,QAAQ,IAAI,EAAS,WAAW,GAAM,EAAS,WAAW,GAAM,EAAS,YAAY,GAAK,EAAK,SAASA,EAAS,EAAK,SAAS,uBAAuB,EAAK,CAAC,EAAE6G,EAAO,MAAM,kBAAkB,GAAK,EAAI,EAAkD,IAAMhd,EAA5C,IAAIqd,EAAM,KAAK,CAAC,CAAC,cAAcJ,CAAoB,CAAC,CAAC,QAAQ,IAAII,EAAM,OAAO,EAAE,EAAM,EAAO,YAAY,CAAC,MAAMJ,EAAM,KAAK,KAAK,IAAIjd,EAAK,EAAEA,EAAK,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,KAAK,IAAIid,EAAM,cAAc,IAAII,EAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,IAAMC,KAAQ9Y,GAAM,CAAC,IAAM5B,EAAK+Z,GAASM,EAAMK,EAAK,IAAI,EAAE,GAAG,CAAC1a,EAAK,SAAS,EAAK,iBAAiB,GAAKA,EAAK,UAAU,qBAAqB,EAAE,IAAM2a,EAAO3a,EAAK,UAAU,aAAa,UAAU,IAAIya,EAAM,OAAO,GAAG,IAAIA,EAAM,QAAQD,EAAM,MAAM,KAAK,CAAC,OAAK,OAAK,KAAKxa,EAAK,SAAS,MAAM,EAAE,SAAO,UAAU,IAAIya,EAAM,OAAO,CAAC,CAAE,CACtgC,IAAI,GAAK,CAAC5T,EAAKsC,IAAS,CAAC,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,IAAMnJ,EAAK+Z,GAASM,EAAMxT,CAAI,EAAK7G,IAAM,EAAK,iBAAiB,GAAKwa,EAAM,MAAM,KAAK,CAAC,KAAK,CAAC,QAAM,EAAE,OAAK,KAAKxa,EAAK,SAAS,MAAM,CAAC,CAAC,EAAG,CAAC,CAAC,IAAM4a,EAAG5tB,EAAO,aAAayT,EAAK,OAAaoa,EAAO7tB,EAAO,WAAW,IAAUqX,EAAS,KAAK,IAAI,EAAE4C,EAAM,CAACA,EAAM,sBAAsB,CAAC,CAAC,IAAI,EAAEja,EAAO,SAASutB,GAAS,eAAe,kBAAkB,WAAW,CAAC,EAAQO,EAAOjnB,EAAM,cAAc,CAAC,EAAQknB,GAAQ,EAAM,IAAW,OAAOpe,GAAQ,UAAU,OAAO,SAASA,CAAK,EAAEA,EAAMwD,EAAe6a,EAAMH,EAAOE,EAAOD,EAAO,YAAY,GAAG,EAAEC,EAAOD,EAAO,MAAM,GAAG,EAAQG,EAAOL,EAAG,KAAK,IAAI,EAAEG,EAAOD,EAAO,SAAS,GAAG,CAAC,EAAE,IAAU9I,EAASkJ,IAAO7W,EAAS2W,GAAOC,CAAM,EAAQE,GAAO,EAAK,IAAK,CAAC,IAAMC,EAAMF,GAAMH,EAAOM,EAAK,CAAC,EAAE,GAAG,EAAQC,EAAKJ,GAAMH,EAAOQ,EAAG,GAAG,EAAE,GAAG,EAAE,OAAOD,GAAMF,EAAM,KAAUA,GAAUI,IAAMxJ,EAASoJ,IAAQE,EAAKF,EAAM,CAAE,EAAQK,EAAKN,EAAML,EAAO,YAAYA,EAAO,SAAS,EAAQY,EAAQP,EAAML,EAAO,UAAUA,EAAO,OAAO,EAAQa,EAASZ,EAAOD,EAAO,SAAS,GAAG,EAAE,KAAK,GAAG,IAAUc,EAAO,KAAK,IAAI,EAAEb,EAAOD,EAAO,OAAO,GAAG,CAAC,EAAE,IAAUe,EAAQ7uB,EAAO,aAAa,kCAAkC,CAAC,CAAC,QACnxC,EAAO,MAAM,SAAS,GAAG6uB,EAAQ,EAAEJ,EAAKE,EAASvB,EAAO,MAAM,MAAM,eAAe,EAAEsB,EAAQ,GAAG,EAAE,IAAI,IAAM7kB,KAAQ2jB,EAAM,MAAM,CAAC,IAAM7C,EAAE9gB,EAAK,KAAK,OAAOA,EAAK,KAAK,SAAS,IAAIA,EAAK,KAAK,EAAE8gB,EAAE,GAAG6C,EAAM,KAAKkB,EAAQE,EAAO/kB,EAAK,KAAK,EAAE8gB,EAAE,GAAG6C,EAAM,KAAKkB,EAAQE,EAAO/kB,EAAK,KAAK,EAAE8gB,EAAE,GAAG6C,EAAM,KAAKkB,EAAQE,CAAM,CAAE,CAEnT,GAFoTxB,EAAO,MAAM,kBAAkB,EAAI,EAAEA,EAAO,OAAO,kBAAkB,EAAI,EAE1XsB,EAAQ,MAAMtB,EAAO,OAAO,oBAAoB,CAAC,IAAM0B,EAAItB,EAAM,MAAM,EAAM,IAAI,CAAC,IAAI,IAAIC,EAAM,KAAK,OAAO,IAAIA,EAAM,QAAQ,YAAY,IAAIA,EAAM,QAAQ,MAAM,IAAIA,EAAM,QAAQ,MAAM,IAAIA,EAAM,QAAQ,GAAG,IAAIA,EAAM,QAAQ,OAAO,IAAIA,EAAM,QAAQ,OAAO,IAAIA,EAAM,QAAQ,QAAQ,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,IAAIA,EAAM,OAAO,CAAC,GAAGqB,EAAI,IAAI,cAAc1B,EAAO,KAAK,EAAE,IAAI2B,EAAK,IAASC,EAAK,KAAUC,EAAK,IAASC,EAAK,KAAU,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAM1uB,EAAEsuB,EAAI,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAEA,EAAI,IAAI,IAAI,EAAEA,EAAI,IAAI,IAAI,EAAE,EAAE,EAAEA,EAAI,IAAI,IAAI,EAAEA,EAAI,IAAI,IAAI,EAAE,EAAE,EAAEA,EAAI,IAAI,IAAI,EAAEA,EAAI,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ1B,EAAO,MAAM,EAAE,EAAK,KAAK,IAAI2B,EAAKvuB,EAAE,CAAC,EAAE,EAAK,KAAK,IAAIwuB,EAAKxuB,EAAE,CAAC,EAAE,EAAK,KAAK,IAAIyuB,EAAKzuB,EAAE,CAAC,EAAE,EAAK,KAAK,IAAI0uB,EAAK1uB,EAAE,CAAC,CAAE,CAAC,IAAMwW,EAAM,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,KAAKgY,EAAKD,CAAI,EAAE,IAAI,KAAK,IAAI,KAAKG,EAAKD,CAAI,CAAC,EAAE7B,EAAO,MAAM,MAAM,eAAe,GAAGpW,EAAM,GAAG0X,CAAO,EAAEtB,EAAO,MAAM,kBAAkB,EAAI,EAAE0B,EAAI,IAAI,cAAc1B,EAAO,KAAK,CAAC,CAAC,UAAU0B,EAAI,MAAM,EAAEA,EAAI,YAAY,KAAKA,EAAI,MAAM,CAAC,CAAC,aAAa1B,EAAO,OAAO,kBAAkB,EAAE,IAAM+B,EAAW,KAAK,IAAI,IAAI,CAACL,EAAI,YAAY,CAAC,EAAE,KAAK,IAAI1B,EAAO,OAAO,IAAI,KAAK,GAAG,GAAG,EAAE0B,EAAI,YAAY,KAAKA,EAAI,MAAM,CAAC,CAAC,QAAQ1B,EAAO,MAAM,EAAE0B,EAAI,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB1B,EAAO,OAAO,UAAU,EAAE0B,EAAI,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB1B,EAAO,OAAO,UAAU,EAAE0B,EAAI,MAAM,KAAKA,EAAI,KAAK,CAAC,CAAC,eAAe,CAACA,EAAI,YAAY,EAAEK,EAAW/B,EAAO,OAAO,MAAM,CAAC,CAAC,gBAAgB0B,EAAI,IAAI,KAAKA,EAAI,YAAY,GAAGK,CAAU,EAAE,IAAMC,EAAOhC,EAAO,MAAM,OAAUgC,GAAQA,EAAO,kBAAkB,GAAK,EAAK,EAAEN,EAAI,OAAO,KAAKA,EAAI,MAAM,EAAEA,EAAI,OAAO,KAAKA,EAAI,MAAM,CAAC,CAAC,IAAIA,EAAI,KAAK,EAAEM,EAAO,aAAaN,EAAI,MAAM,EAAEM,EAAO,aAAaN,EAAI,MAAM,EAAE1B,EAAO,MAAM,SAAS,gBAAgB0B,EAAI,OAAO,IAAIA,EAAI,MAAM,EAAEJ,CAAO,GAAQtB,EAAO,MAAM,SAAS,gBAAgB0B,EAAI,MAAMJ,CAAO,EAAEtB,EAAO,MAAM,kBAAkB,EAAI,CAAE,CAAC,IAAM5W,EAAI,YAAY,IAAI,EAAE,GAAGA,EAAIgX,EAAM,SAAS,GAAG,OAAO,EAAM,SAAShX,EAAI,IAAM2J,EAAO,CAAC,EAAE,IAAI,IAAMtW,KAAQ2jB,EAAM,MAAM,CAAC,GAAG,CAAC3jB,EAAK,KAAK,IAAI,SAAS,IAAMwlB,EAAMxlB,EAAK,UAAU,KAAKA,EAAK,MAAM,EAAEA,EAAK,KAAK,aAAawlB,CAAK,EAAEA,EAAM,QAAQjC,EAAO,MAAM,EAAEjN,EAAO,KAAK,CAAC,IAAItW,EAAK,KAAK,IAAI,EAAE4J,EAAK,MAAM4b,EAAM,EAAE,GAAG,EAAE5b,EAAK,MAAM,EAAEA,EAAK,KAAK,EAAE4b,EAAM,GAAG,EAAE5b,EAAK,OAAO,QAAQ4b,EAAM,EAAE,IAAIA,EAAM,EAAE,CAAC,CAAC,CAAE,CAEvqE,IAAMC,EAAW,CAAC,EAAQC,EAAO/B,EAAM,SAAS,EAAM,OAAO,IAAIC,EAAM,MAAY+B,EAAUhC,EAAM,YAAY,EAAM,UAAU,IAAIC,EAAM,SAAS,IAAI,IAAM5jB,KAAQ2jB,EAAM,MAAM,CAA4D,GAAxD,CAAC3jB,EAAK,KAAK,MAAa0lB,EAAO,cAAc1lB,EAAK,IAAI,EAAK0lB,EAAO,QAAQ,GAAE,SAAS,IAAIE,EAAK,IAASC,EAAM,KAAUlF,EAAI,IAASmF,EAAO,KAAU,IAAI,IAAIjZ,EAAE,EAAEA,EAAE,EAAE,IAAI,CAAC8Y,EAAU,IAAI9Y,EAAE,EAAE6Y,EAAO,IAAI,EAAEA,EAAO,IAAI,EAAE7Y,EAAE,EAAE6Y,EAAO,IAAI,EAAEA,EAAO,IAAI,EAAE7Y,EAAE,EAAE6Y,EAAO,IAAI,EAAEA,EAAO,IAAI,CAAC,CAAC,CAAC,QAAQnC,EAAO,MAAM,EAAE,IAAMnkB,EAAEwK,EAAK,MAAM+b,EAAU,EAAE,GAAG,EAAE/b,EAAK,MAAY6M,EAAE7M,EAAK,KAAK,EAAE+b,EAAU,GAAG,EAAE/b,EAAK,OAAO,EAAK,KAAK,IAAIgc,EAAKxmB,CAAC,EAAE,EAAM,KAAK,IAAIymB,EAAMzmB,CAAC,EAAE,EAAI,KAAK,IAAIuhB,EAAIlK,CAAC,EAAE,EAAO,KAAK,IAAIqP,EAAOrP,CAAC,CAAE,CAACgP,EAAW,KAAK,CAAC,IAAIzlB,EAAK,KAAK,IAAI,OAAK,QAAM,MAAI,QAAM,CAAC,CAAE,CAAC7J,EAAO,cAAc,IAAI,YAAY,6BAA6B,CAAC,OAAO,CAAC,GAAG6G,EAAM,aAAa,OAAK,OAAK,UAAQ,WAAS,SAAO,aAAW,aAAa,CAAC,CAACumB,EAAO,wBAAwB,CAAC,CAAC,CAAC,CAAE,C,oDARh5B,GAAM,GAAG,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE/jB,CAAC,CAAC,EAAQ,GAAK,GAAG,CAAC,IAAM,EAAE6kB,GAAM7kB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAG,EAAQ,GAAM,CAAC,CAAC,IAAI,QAAQ,KAAK,4BAA4B,GAAG,kBAAkB,GAAG,UAAa,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,+HAA+H,SAAS,8GAAgI,EAAE,CAAC,IAAI,QAAQ,KAAK,gBAAgB,GAAG,mBAAmB,GAAG,cAAc,KAAK,GAAG,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,SAAS,oKAAoK,SAAS,iIAAmJ,EAAE,CAAC,IAAI,UAAU,KAAK,oBAAoB,GAAG,mBAAmB,GAAG,WAAW,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,uGAAuG,SAAS,sEAAkF,EAAE,CAAC,IAAI,WAAW,KAAK,qBAAqB,GAAG,WAAW,GAAG,eAAe,KAAK,GAAG,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,EAAE,SAAS,+HAAkI,SAAS,wHAA0I,EAAE,CAAC,IAAI,QAAQ,KAAK,sBAAsB,GAAG,YAAY,GAAG,gBAAmB,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,oIAAoI,SAAS,6GAA4H,EAAE,CAAC,IAAI,OAAO,KAAK,wBAAwB,GAAG,iBAAiB,GAAG,UAAU,KAAK,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,4GAA4G,SAAS,6FAAkH,CAAC,EAAQ,GAAkB,GAAM,OAAOwQ,GAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,aAAa,EAAE,C,OCEz5E,SAAgBgW,IAAyB,CAA0tB,OAA/sB7vB,IAAS,OAAmB,CAAC,UAAU,EAAE,WAAW,cAAc,cAAc,KAAK,cAAc,KAAK,YAAY,WAAW,cAAc,KAAK,aAAa,KAAK,YAAY,GAAK,eAAe,GAAK,iBAAiB,GAAM,eAAe,IAAI,cAAc,GAAM,uBAAuB,GAAM,aAAa,EAAE,sBAAM,IAAI,IAAI,0BAAU,IAAI,GAAG,GAAOA,EAAA4V,8BAA+B,EAAO7M,IAAuB,CAAC,UAAU,EAAE,WAAW,cAAc,cAAc,KAAK,cAAc,KAAK,YAAY,WAAW,cAAc,KAAK,aAAa,KAAK,YAAY,GAAK,eAAe,GAAK,iBAAiB,GAAM,eAAe,IAAI,cAAc,GAAM,uBAAuB,GAAM,aAAa,EAAE,sBAAM,IAAI,IAAI,0BAAU,IAAI,GAAG,GAAU/I,EAAO+I,IAAuB,CAAC,SAAgB+mB,IAAqB,CAAC,IAAMtC,EAAMqC,GAAwB,EAAMrC,GAAO,WAAiBA,EAAM,UAAU,QAAQ,GAAU,CAAC,GAAG,CAACuC,EAAS,CAAE,OAAOC,EAAM,CAAC,QAAQ,KAAK,oCAAoCA,CAAK,CAAE,CAAC,CAAC,CAAE,CAAC,SAAgBC,GAAyB,EAAS,CAAC,IAAMzC,EAAMqC,GAAwB,EAAgC,OAA9BrC,EAAM,UAAU,IAAIuC,CAAQ,MAAY,CAACvC,EAAM,UAAU,OAAOuC,CAAQ,CAAE,CAAE,CAAC,SAAgBG,IAAyB,CAAC,IAAM1C,EAAMqC,GAAwB,EAAE,MAAM,CAAC,UAAUrC,EAAM,WAAW,EAAE,WAAWA,EAAM,YAAY,cAAc,cAAcA,EAAM,eAAe,KAAK,cAAcA,EAAM,eAAe,KAAK,YAAYA,EAAM,aAAa,WAAW,cAAcA,EAAM,eAAe,KAAK,aAAaA,EAAM,cAAc,KAAK,YAAYA,EAAM,aAAa,GAAK,eAAeA,EAAM,gBAAgB,GAAK,iBAAiBA,EAAM,kBAAkB,GAAM,eAAeA,EAAM,gBAAgB,IAAI,cAAcA,EAAM,eAAe,GAAM,aAAaA,EAAM,cAAc,EAAE,MAAM,MAAM,KAAKA,EAAM,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAE,C,+CCDrjD,SAAS4C,GAA6B,EAAO,CAAC,GAAG,CAAChR,EAAO,OAAO,KAAK,IAAM3L,EAAK2L,EAAO,wBAAwB,EAAE,MAAM,CAAC,UAAU,CAAC,CAACA,EAAO,YAAY,KAAKA,EAAO,eAAe,4BAA4B,GAAG,KAAK,KAAKA,EAAO,eAAe,mBAAmB,GAAG,KAAK,MAAMA,EAAO,eAAe,+BAA+B,GAAG,KAAK,MAAMA,EAAO,OAAO,EAAE,OAAOA,EAAO,QAAQ,EAAE,SAASA,EAAO,OAAO,OAAO,GAAG,UAAUA,EAAO,OAAO,QAAQ,GAAG,QAAQA,EAAO,OAAO,SAAS,GAAG,OAAOA,EAAO,eAAe,SAAS,KAAK,KAAK3L,EAAK,CAAC,EAAE,KAAK,MAAMA,EAAK,CAAC,EAAE,EAAE,KAAK,MAAMA,EAAK,CAAC,EAAE,MAAM,KAAK,MAAMA,EAAK,KAAK,EAAE,OAAO,KAAK,MAAMA,EAAK,MAAM,CAAC,EAAE,IAAI,CAAE,CAAC,SAAS4c,IAAgC,CAAC,GAAUrwB,IAAS,OAAa,OAAO,KAAUA,EAAAswB,+BAAuC,EAAOloB,IAA+B,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,IAAMmoB,EAAMvwB,EAAOoI,IAAiqB,OAA/nB,OAAOmoB,EAAM,MAAO,aAAY,EAAM,SAAS,CAAC,IAAMC,EAAS,MAAM,KAAK,SAAS,iBAAiB,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAO,KAAS,CAAC,QAAM,KAAKpR,EAAO,eAAe,4BAA4B,GAAG,KAAK,KAAKA,EAAO,eAAe,mBAAmB,GAAG,KAAK,MAAMA,EAAO,eAAe,+BAA+B,GAAG,KAAK,UAAU,CAAC,CAACA,EAAO,YAAY,MAAMA,EAAO,OAAO,EAAE,OAAOA,EAAO,QAAQ,EAAE,SAASA,EAAO,OAAO,OAAO,GAAG,UAAUA,EAAO,OAAO,QAAQ,GAAG,QAAQA,EAAO,OAAO,SAAS,EAAE,EAAE,EAAQqR,EAAK,OAAO,OAAOF,EAAM,MAAM,CAAC,CAAC,EAA8C,OAA5C,QAAQ,MAAMC,CAAQ,EAAE,QAAQ,MAAMC,CAAI,EAAQ,CAAC,WAAS,OAAK,OAAOF,EAAM,QAAQ,CAAC,CAAC,CAAE,GAAUA,CAAM,CAClxD,SAAgBG,GAA4B,EAAM,EAAQ,CAAC,EAAE,CAAC,IAAMH,EAAMF,GAA+B,EAAE,GAAG,CAACE,EAAM,OAAO,IAAMI,EAAQC,EAAQ,SAASA,EAAQ,QAAQ,eAAe,+BAA+B,GAAG,GAAGA,EAAQ,MAAM,WAAW,GAAGL,EAAM,IAAI,IAAU3M,EAAM,CAAC,IAAI,EAAE2M,EAAM,IAAI,QAAM,UAAQ,KAAKK,EAAQ,MAAM,GAAG,OAAOA,EAAQ,QAAQ,GAAG,WAAWA,EAAQ,YAAY,GAAG,aAAaA,EAAQ,cAAc,GAAG,mBAAmBA,EAAQ,mBAAmB,eAAeA,EAAQ,eAAe,UAAUA,EAAQ,UAAU,UAAUA,EAAQ,UAAU,OAAOR,GAA6BQ,EAAQ,MAAM,EAAE,GAAG,KAAK,MAAM,YAAY,IAAI,CAAC,CAAC,EAAK3lB,IAAQ,SAAU,EAAM,KAAK0lB,GAAS/M,EAAe3Y,IAAQ,WAAW,OAAOslB,EAAM,KAAKI,GAAUJ,EAAM,OAAO,KAAK3M,CAAK,EAAK2M,EAAM,OAAO,OAAO,IAAGA,EAAM,OAAO,MAAM,GAAkBK,EAAQ,UAAiB5wB,IAAS,QAAeA,EAAO,uCAAmD,QAAQ,IAAI,8BAA8BiL,IAAQ2Y,EAAM,QAAQ,OAAO,KAAK2M,EAAM,IAAI,CAAC,CAAG,CAAC,SAAgBM,IAAiC,CAAC,GAAU7wB,IAAS,OAAY,MAAO,GAAM,IAAMwtB,EAAMqC,GAAwB,EAAE,OAAOrC,EAAM,aAAa,cAAcA,EAAM,WAAW,GAAG,GAAG,CAAC,CAACA,EAAM,uBAAwB,C,oDCDtoC,SAAgBuD,GAAoB,EAAM,CAAmD,OAA/CC,IAAQ,KAAY,EAAKA,IAAQ,KAAY,EAAS,CAAE,CAAC,SAAgBC,GAAoB,EAAG,CAAC,GAAG,CAAC5f,EAAG,OAAO,IAAM6f,EAAI7f,EAAG,UAAa6f,GAAK,YAAWA,EAAI,WAAW,YAAYA,CAAG,EAAE,EAAG,OAAO,KAAK,EAAG,UAAU,KAAK,EAAG,YAAY,KAAK,EAAG,cAAc,EAAM,CAGna,SAAgBC,GAAkB,EAAG,EAAI,EAAK,CAAC,GAAG,CAAC9f,EAAG,OAAO,KAAK,GAAG,CAAC9H,EAAI,kBAAkB,CAAC+jB,EAA8B,OAAxB2D,GAAoB5f,CAAE,EAAS,KAAM,IAAM2f,EAAMD,GAAoBxnB,EAAI,iBAAiB,EAAE,GAAI8H,EAAG,OAA4kBA,EAAG,cAAc2f,IAAO3f,EAAG,OAAO,UAAU2f,CAAK,EAAE,EAAG,YAAYA,QAAvF,OAA3iB3f,EAAG,gBAAe,EAAG,cAAc,GAAK9J,EAAW,CAAC,CAAC,KAAK,GAAO,CAAC,GAAG,CAAC8J,EAAG,eAAeA,EAAG,OAAO,OAAO,IAAM+f,EAAM,IAAIC,EAAYH,EAAIE,EAAM,KAAKA,EAAM,WAAeF,IAAoCE,EAAM,UAAUL,GAAoBxnB,EAAI,iBAAiB,CAAC,EAAE,EAAI,MAAM,SAAS,WAAW,EAAI,MAAM,KAAK,MAAM,EAAI,MAAM,IAAI,MAAM,EAAI,MAAM,OAAO,OAAO,EAAI,MAAM,cAAc,OAAO,EAAI,MAAM,QAAQ,MAAM+jB,EAAK,YAAY4D,CAAG,EAAE,EAAG,OAAOE,EAAM,EAAG,UAAUF,EAAI,EAAG,YAAYH,GAAoBxnB,EAAI,iBAAiB,GAAE,EAAG,cAAc,EAAM,CAAC,GAAU,KAAuF,OAAO8H,EAAG,MAAO,C,2CCHrG,SAAgBkgB,GAAuB,EAAG,CAAKlgB,IAAU,EAAG,sBAAsBA,EAAG,sBAAsB,GAAG,EAAE,CAAC,SAAgBmgB,GAAyB,EAAG,EAAS,EAAI,CAIl5B,GAAG,CAAnB9Z,GAA2B,EAAM,IAAArG,EAAG,6BAA6BA,EAAG,sBAAsB,IAAIA,EAAG,wBAAwBmC,GAAUnC,EAAG,sBAAuB,OAAOA,EAAG,qBAAA,MAGtE,GAA7GA,EAAG,wBAAwB,MAAOA,EAAG,uBAAuB,MAAM,EAAQ,EAAG,uCAAuB,IAAI,IAAQA,EAAG,6BAA6BA,EAAG,sBAAsB,IAAIA,EAAG,wBAAwBmC,GAAUnC,EAAG,sBAAuB,OAAOA,EAAG,sBAAgQ,GAAxO,EAAG,uBAAuBmF,EAAI,EAAG,0BAA0BnF,EAAG,sBAAsB,EAAE,EAAG,sBAAsBmC,EAAYnC,EAAG,wBAAwB,MAAOA,EAAG,uBAAuB,MAAM,EAAQ,EAAG,uCAAuB,IAAI,IAAQA,EAAG,qBAAqB,UAAUmC,GAAU,sBAAsB,CAAC,IAAMie,EAASje,EAAS,sBAAsB,EAAQke,EAASle,EAAS,aAAaie,EAAS,MAAYE,EAASne,EAAS,cAAcie,EAAS,OAAO,GAAGA,EAAS,MAAM,GAAGA,EAAS,OAAO,GAAGC,EAAS,GAAGC,EAAS,EAAmK,MAAhK,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAMD,EAAS,OAAOC,EAAS,MAAM,GAAK,WAAS,OAAOF,EAAS,MAAMC,GAAU,EAAE,OAAOD,EAAS,OAAOE,GAAU,CAAC,EAAStgB,EAAG,qBAAuB,CAA4J,MAA3J,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAMrR,EAAO,YAAYwT,GAAU,aAAa,EAAE,OAAOxT,EAAO,aAAawT,GAAU,cAAc,EAAE,MAAM,EAAK,EAASnC,EAAG,qBAAsB,CAAC,SAAgBugB,GAAqB,EAAG,EAAK,EAAS,CAAC,GAAG,CAAC5e,EAAK,OAAO,KAAK,IAAM6e,EAAUxgB,EAAG,uBAAuB,GAAGwgB,GAAW,IAAI7e,CAAI,EAAE,OAAO6e,EAAU,IAAI7e,CAAI,EAAE,IAAM8e,EAAQ9e,EAAK,sBAAsB,EAAE,GAAG,CAAC+e,GAAU,OAAO,CAACA,EAAS,SAAuC,OAA7BF,GAAW,IAAI7e,EAAK8e,CAAO,EAASA,EAEx7C,IAAME,EAAOD,EAAS,QAAQ,EAAQE,EAAOF,EAAS,QAAQ,EAAQtC,GAAMqC,EAAQ,KAAKC,EAAS,SAAS,MAAMC,EAAaxH,GAAKsH,EAAQ,IAAIC,EAAS,SAAS,KAAKE,EAAahiB,EAAM6hB,EAAQ,MAAME,EAAa9hB,EAAO4hB,EAAQ,OAAOG,EAAaxe,EAAK,CAAC,OAAK,MAAI,QAAM,SAAO,MAAMgc,EAAKxf,EAAM,OAAOua,EAAIta,CAAM,EAA4B,OAA1B2hB,GAAW,IAAI7e,EAAKS,CAAI,EAASA,CAAK,CAAC,SAAgBye,GAAuB,EAAG,EAAI,EAAS,EAAI,CAAC,IAAMC,EAAU9gB,EAAG,mBAAmB,GAAG,CAAC9H,EAAI,qBAAqB,CAACA,EAAI,mBAA0BvJ,IAAS,OAAwU,MAA3T,GAAG,qBAAqB,EAAE,EAAG,qBAAqB,EAAE,EAAG,0BAA0B,IAAA,GAAU,EAAG,0BAA0B,IAAA,GAAU,EAAG,0BAA0B,GAAG,EAAG,6BAA6B,EAAE,EAAG,iCAAiC,GAAG,EAAG,0BAA0B,EAAE,EAAG,gBAAgB,KAAK,EAAG,mBAAmB,GAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,EAAI,EAAG,IAAMoyB,EAAmB,OAAO7oB,EAAI,gCAAgC,EAAE,CAAC,CAAC,KAAK,EAAQ8oB,EAAoB,CAAC,EAAE9oB,EAAI,+BAA+BA,EAAI,0BAAgC+oB,EAAaH,IAAY5oB,EAAI,kBAAkB,GAAG+oB,GAAc,CAACjhB,EAAG,iBAAiB,CAACA,EAAG,gBAAgB,aAAamF,IAAMnF,EAAG,uBAAuB,GAAG,CAAC,IAAMkhB,EAAelhB,EAAG,gBAAgB,EAAG,mBAAmB9H,EAAI,kBAAkB,EAAG,gBAAgBgK,GAAuBhK,EAAI,kBAAkBiK,CAAQ,EAAE,EAAG,sBAAsBgD,EAAI,IAAO+b,GAAgBA,IAAiBlhB,EAAG,kBAAiB,EAAG,0BAA0B,GAAG,EAAG,6BAA6B,EAAE,EAAG,iCAAiC,GAAG,EAAG,0BAA0B,EAAG,CAAC,IAAI7P,EAAG6P,EAAG,gBAAmB7P,GAAI,CAACqS,GAA6BrS,EAAGgS,CAAQ,IAAG,EAAG,gBAAgBD,GAAuBhK,EAAI,kBAAkBiK,CAAQ,EAAE,EAAG,sBAAsBgD,EAAI,IAAI,EAAGnF,EAAG,gBAAgB,EAAG,0BAA0B,GAAG,EAAG,6BAA6B,EAAE,EAAG,iCAAiC,GAAG,EAAG,0BAA0B,GAAG,IAAMmhB,EAAOL,GAAWA,IAAY5oB,EAAI,kBAAkBgK,GAAuB4e,EAAU3e,CAAQ,EAAE,KAAWif,EAAwB,CAACL,GAAoB,CAAC,CAACI,GAAQxe,GAAsBwe,EAAOJ,CAAkB,GAAGvf,GAA0Buf,CAAkB,IAAIvf,GAA0Bsf,CAAS,GAAGtf,GAA0Buf,CAAkB,IAAIvf,GAA0BxB,EAAG,oCAAoC,EAAQqhB,EAAkBL,GAAqBI,EAAwB,GAAG,CAACjxB,EAE7nE,MAA1Q,GAAG,qBAAqB,EAAE,EAAG,qBAAqB,EAAE,EAAG,0BAA0B,IAAA,GAAU,EAAG,0BAA0B,IAAA,GAAU,EAAG,0BAA0B,GAAG,EAAG,6BAA6B,EAAE,EAAG,iCAAiC,GAAG,EAAG,0BAA0B,EAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,EAAK,EAAG,IAAMuwB,EAASP,GAAyBngB,EAAGmC,EAASgD,CAAG,EAAQmc,EAAqB,GAAM,CAAC,GAAG,CAAC3f,GAAahT,IAAS,OAAY,OAAO,KAAK,IAAMyT,EAAKme,GAAqBvgB,EAAG2B,EAAK+e,CAAQ,EAAE,GAAG,CAACte,EAAK,OAAO,KAAK,IAAMmf,EAAMb,EAAS,MAAYre,EAAMqe,EAAS,OAAO,GAAG,CAACa,GAAO,CAAClf,EAAM,OAAO,KAAK,IAAMmf,EAAQtpB,EAAI,eAAe,GAASoK,EAAQpK,EAAI,eAAe,GAASupB,EAAIrf,EAAK,KAAKA,EAAK,MAAMof,GAASd,EAAS,KAAKa,EAAM,GAASG,EAAItf,EAAK,IAAIA,EAAK,OAAOE,GAASoe,EAAS,IAAIre,EAAM,GAASsf,EAAcvf,EAAK,IAAIA,EAAK,OAAOE,EAAQoe,EAAS,IAAU/M,EAAS,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,EAAEgO,EAActf,CAAK,CAAC,EAIx5Buf,EAAeC,EAAiBC,EAAI9hB,EAAG,OAAO,GAAG8hB,GAAK,qBAC1D,GAAYA,EAAI,MAAMA,EAAI,OAAOA,EAAI,MAAM,GAAGP,EAAM,GAAYO,EAAI,IAAIA,EAAI,SAASA,EAAI,MAAM,GAAGzf,MAAW,CAA4C,IAAMiD,EAAQO,GAAgBic,EAA3DA,GAAK,UAAU,SAAS,GAAG,CAA2C,EAAE,EAAWxc,EAAQ,MAAMic,EAAM,EAAWjc,EAAQ,OAAOjD,CAAM,CAAC,MAAM,CAAC,EAAEof,EAAIG,GAAY1pB,EAAI,uBAAuB,GAAG,EAAE,CAACwpB,EAAIG,GAAY3pB,EAAI,uBAAuB,GAAG,OAAOkK,EAAK,MAAMse,EAAS,MAAMte,EAAK,KAAKse,EAAS,KAAKa,GAAOnf,EAAK,OAAOse,EAAS,KAAKte,EAAK,IAAIse,EAAS,IAAIre,EAAM,UAAQ,CAAE,EAAQ0f,EAAeT,EAAqBnxB,CAAE,EAAE,GAAG,CAAC4xB,EAAgB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,EAAI,EAAG,IAAMC,EAAYV,EAAqBH,CAAM,EAAQc,EAAaF,EAAe,OAAaG,EAAQH,EAAe,EAAQI,EAAQJ,EAAe,EAAuc,GAApa7pB,EAAI,oBAAma+oB,GAAcH,GAAW,CAACkB,EAGh8B,MAAlR,GAAG,0BAA0B,GAAG,EAAG,6BAA6B,EAAE,EAAG,iCAAiC,GAAG,EAAG,0BAA0B,EAAE,EAAG,qBAAqBE,EAAQ,EAAG,qBAAqBC,EAAQ,EAAG,0BAA0BD,EAAQ,EAAG,0BAA0BC,EAAc,CAAC,EAAED,EAAUC,EAAQ,OAAO,GAAK,OAAOF,EAAa,SAASF,EAAe,QAAQ,EAAG,IAAMK,EAAkB,CAAC,CAACpiB,EAAG,4BAA4BqhB,EAA2vB,GAAtuBA,IAAoBJ,GAAcmB,KAAqBpiB,EAAG,uBAAuB,IAAA,IAAWA,EAAG,uBAAuB,IAAA,IAAWgiB,IAAc,EAAG,qCAAqClB,GAAW,GAAG,EAAG,0BAA0BO,EAAkB,EAAG,6BAA6BrhB,EAAG,sBAAsBgiB,GAAa,GAAGE,EAAQ,EAAG,6BAA6BliB,EAAG,sBAAsBgiB,GAAa,GAAGG,EAAQ,EAAG,2BAA2BD,EAAQ,EAAG,2BAA2BC,EAAQ,EAAG,6BAA6Bhd,EAAI,EAAG,gCAAgC,KAAK,IAAI,IAAI,KAAKjN,EAAI,uBAAuB,GAAG,GAAG,GAAYmpB,EAA2F,EAAG,0BAA0B,IAArG,EAAG,0BAA0B,GAAG,EAAG,6BAA6B,GAA8C,CAACA,GAAmBJ,GAAcH,EAGz/B,MAAhN,GAAG,iCAAiC,GAAG,EAAG,0BAA0B,EAAE,EAAG,qBAAqBoB,EAAQ,EAAG,qBAAqBC,EAAQ,EAAG,0BAA0BD,EAAQ,EAAG,0BAA0BC,EAAc,CAAC,EAAED,EAAUC,EAAQ,OAAO,GAAK,OAAOF,EAAa,SAASF,EAAe,QAAQ,EAAG,GAAG,CAACV,IAAoBrhB,EAAG,2BAA2B,GAAGmF,EAA+I,MAA1I,GAAG,qBAAqB+c,EAAQ,EAAG,qBAAqBC,EAAQ,EAAG,0BAA0BD,EAAQ,EAAG,0BAA0BC,EAAc,CAAC,EAAED,EAAUC,EAAQ,OAAO,GAAK,OAAOF,EAAa,SAASF,EAAe,QAAQ,EAAG,GAAGV,GAAmBrhB,EAAG,6BAA6B,EAAE,CAAC,EAAG,2BAA2BkiB,EAAQ,EAAG,2BAA2BC,EAAQ,IAAME,EAAS,KAAK,IAAI,EAAEriB,EAAG,iCAAiC,GAAG,EAAQuQ,EAAE,KAAK,IAAI,GAAGpL,EAAInF,EAAG,8BAA8BqiB,CAAQ,EAAQC,EAAM,GAAW,EAAE/R,IAAE,EAAukB,MAApkB,GAAG,sBAAsBvQ,EAAG,8BAA8BkiB,KAAWliB,EAAG,4BAA4BkiB,IAAUliB,EAAG,8BAA8BkiB,IAAUI,EAAM,EAAG,sBAAsBtiB,EAAG,8BAA8BmiB,KAAWniB,EAAG,4BAA4BmiB,IAAUniB,EAAG,8BAA8BmiB,IAAUG,EAAM,EAAG,0BAA0BtiB,EAAG,qBAAqB,EAAG,0BAA0BA,EAAG,qBAAwBuQ,GAAG,IAAG,EAAG,6BAA6B,EAAE,EAAG,6BAA6BvQ,EAAG,qBAAqB,EAAG,6BAA6BA,EAAG,sBAA4B,CAAC,EAAEA,EAAG,qBAAqB,EAAEA,EAAG,qBAAqB,OAAO,GAAK,OAAOiiB,EAAa,SAASF,EAAe,QAAQ,CAAE,CAAC,IAAMQ,EAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAErqB,EAAI,uBAAuB,CAAC,CAAC,EAGznDsqB,EAAMxiB,EAAG,sBAAsBkiB,EAAcO,EAAMziB,EAAG,sBAAsBmiB,EAAcO,EAAG,KAAK,IAAIR,EAAQM,CAAK,EAAQG,EAAG,KAAK,IAAIR,EAAQM,CAAK,EAAQX,EAAI9hB,EAAG,OAAW4iB,EAAS,EAG8F,MAH5F,CAEtGA,EAFyGd,GAAK,sBAC5LA,EAAI,MAAMA,EAAI,OAAOA,EAAI,MAAM,GAAG,KACejc,GAAgBic,EAAvDA,GAAK,UAAU,SAAS,GAAG,CAAoD,CAAC,CAAC,MAAM,KAA2Bzb,GAA4E,IAAzCqc,EAAGE,GAAUD,EAAGC,IAC1L,EAAG,qBAAqBV,EAAQ,EAAG,qBAAqBC,IAAc,EAAG,qBAAqBK,GAAON,EAAQM,GAAOD,EAAO,EAAG,qBAAqBE,GAAON,EAAQM,GAAOF,GAAQ,EAAG,0BAA0BviB,EAAG,qBAAqB,EAAG,0BAA0BA,EAAG,qBAA2B,CAAC,EAAEA,EAAG,qBAAqB,EAAEA,EAAG,qBAAqB,OAAO,GAAK,OAAOiiB,EAAa,SAASF,EAAe,QAAQ,CAAE,CAAC,SAAgBc,GAAkC,EAAG,EAAI,EAAS,EAAI,CAAC,GAAG,CAAC3qB,EAAI,gCAAgC,CAACA,EAAI,4BAAmCvJ,IAAS,OAAgF,MAAnE,GAAG,yBAAyB,KAAK,EAAG,4BAA4B,GAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,GAAK,SAAS,CAAC,EAAG,IAAMqT,EAAM9J,EAAI,4BAA8B8H,EAAG,8BAA8BgC,GAAO,CAAChC,EAAG,0BAA0B,CAACA,EAAG,yBAAyB,aAAa,CAACwC,GAA6BxC,EAAG,yBAAyBmC,CAAQ,GAAGgD,IAAMnF,EAAG,gCAAgC,MAAI,EAAG,4BAA4BgC,EAAM,EAAG,yBAAyBE,GAAuBF,EAAMG,CAAQ,EAAE,EAAG,+BAA+BgD,EAAI,KAAK,IAAMhV,EAAG6P,EAAG,yBAAyB,GAAG,CAAC7P,EAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,GAAM,SAAS,CAAC,EAAG,IAAMuwB,EAASP,GAAyBngB,EAAGmC,EAASgD,CAAG,EAAQ/C,EAAKme,GAAqBvgB,EAAG7P,EAAGuwB,CAAQ,EAAE,GAAG,CAACte,EAAM,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,GAAK,SAAS,CAAC,EAAG,IAAMmf,EAAMb,EAAS,MAAYre,EAAMqe,EAAS,OAAO,GAAG,CAACa,GAAO,CAAClf,EAAO,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,GAAK,SAAS,CAAC,EAAG,IAAMC,EAAQpK,EAAI,eAAe,GAASypB,EAAcvf,EAAK,IAAIA,EAAK,OAAOE,EAAQoe,EAAS,IAAU/M,EAAS,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,EAAEgO,EAActf,CAAK,CAAC,EAA8H,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAK,OAA1ID,EAAK,MAAMse,EAAS,MAAMte,EAAK,KAAKse,EAAS,KAAKa,GAAOnf,EAAK,OAAOse,EAAS,KAAKte,EAAK,IAAIse,EAAS,IAAIre,EAAwC,UAAQ,CAAE,CAAC,SAAgBygB,GAAwB,EAAG,EAAI,EAAS,EAAW,CAA0F,GAAtF,CAACC,GAAwF,EAAlD/iB,EAAG,mBAAmB,GAAGA,EAAG,iBAAiB,IAAqBA,EAAG,qBAAqB,OAAO,IAAIgjB,EAAW,EAAE,GAAGhjB,EAAG,mBAAmB,EAAE,CAAC,IAAMijB,GAAe,YAAY,IAAI,EAAEjjB,EAAG,oBAAoB,IAAUkjB,EAAe,KAAK,IAAI,KAAKhrB,EAAI,kBAAkB,GAAG,EAAE,GAAG+qB,GAAeC,EAAgB,EAAG,mBAAmB,MAAO,CAAsC,IAAMZ,EAAM,GAAW,EAApDW,EAAcC,IAA0C,EAAG,EAAW,KAAK,IAAIF,EAAWV,CAAK,CAAE,CAAC,CAAqH,GAApH,EAAG,kBAAkBU,EAAWvc,GAAmBsc,EAAW,UAAUC,GAAY,KAAK,IAAIA,EAAW,QAAQ,CAAC,CAAC,EAAKhjB,EAAG,iBAAiB,EAAG,EAAG,qBAAqB,GAAMyG,GAAmBsc,EAAW,aAAa,iBAAiB,OAAU,GAAG7qB,EAAI,WAAW,CAA2C,IAAMirB,GAAlCjrB,EAAI,qBAAqB,KAAyB,EAAE8qB,GAAeG,EAAO,KAAK,EAAG,qBAAqB,GAAM1c,GAAmBsc,EAAW,SAAS,QAAQI,EAAO,QAAQ,CAAC,EAAE,IAAI,EAAE1c,GAAmBsc,EAAW,aAAa,iBAAiB,IAAQrc,GAAqBqc,EAAW,QAAQ,EAAKC,GAAY,MAAMtc,GAAqBqc,EAAW,YAAY,EAAE,EAAG,qBAAqB,KAAWtc,GAAmBsc,EAAW,aAAa,SAAS,EAAE,EAAG,qBAAqB,IAAe,MAACrc,GAAqBqc,EAAW,QAAQ,EAAKC,GAAY,MAAMtc,GAAqBqc,EAAW,YAAY,EAAE,EAAG,qBAAqB,KAAWtc,GAAmBsc,EAAW,aAAa,SAAS,EAAE,EAAG,qBAAqB,GAAO,CAAC,SAAgBK,GAA0B,EAAI,CAAsB,OAAjBlrB,EAAwB,KAAK,IAAIA,EAAI,eAAe,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAI,eAAe,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAI,eAAe,CAAC,EAAE,MAAM,KAAK,KAAKA,EAAI,aAAa,GAAG,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAI,eAAe,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAI,eAAe,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAI,eAAe,CAAC,EAAE,KAA5Q,EAAiR,CAAC,SAAgBmrB,GAAoB,EAAI,CAAC,OAAOnrB,GAAK,eAAe,EAAM,CAAC,SAAgBorB,GAAuB,EAAG,EAAI,EAAW,EAAM,GAAM,CAAC,GAAItjB,IAAKqa,GAAQniB,GAAK,iBAAkBkrB,GAA0BlrB,CAAG,KAAS,EAAG,mBAAmB,YAAY,IAAI,EAAK6qB,IAAY,EAAW,MAAM,QAAQ,KAAQ7qB,EAAI,YAAY6qB,GAAW,CAAC,IAAM/L,EAAU9e,EAAI,qBAAqB,GAAG,EAAW,MAAM,OAAO,QAAQ8e,EAAU,KAAK,EAAW,MAAM,WAAW,kBAAkB,EAAG,iBAAiB,YAAY,IAAI,CAAE,CAAC,CAAC,SAAgBuM,GAA4B,EAAO,EAAW,EAAI,CAAC,GAAG,CAACtb,EAAO,OAA4C,IAAMsI,EAAE,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAA5CyS,GAAY,CAAkD,CAAC,EAAQd,GAAShqB,EAAI,eAAe,GAAGqY,EAAQ4R,GAASjqB,EAAI,eAAe,GAAGqY,EAAQiT,GAAStrB,EAAI,eAAe,GAAGqY,EAAQkT,EAAY,IAAIvrB,EAAI,aAAa,GAAG,GAAGqY,EAAQmT,GAAYxrB,EAAI,eAAe,GAAG,KAAK,GAAGqY,EAAE,IAAUoT,GAAYzrB,EAAI,eAAe,GAAG,KAAK,GAAGqY,EAAE,IAAUqT,GAAY1rB,EAAI,eAAe,GAAG,KAAK,GAAGqY,EAAE,IAAI,EAAO,SAAS,GAAG2R,GAASja,EAAO,iBAAiB,GAAG,EAAO,SAAS,GAAGka,GAASla,EAAO,iBAAiB,GAAG,EAAO,SAAS,GAAGub,GAASvb,EAAO,iBAAiB,GAAG,EAAO,SAAS,GAAGyb,GAAYzb,EAAO,oBAAoB,GAAG,EAAO,SAAS,GAAG0b,GAAY1b,EAAO,oBAAoB,GAAG,EAAO,SAAS,GAAG2b,GAAY3b,EAAO,oBAAoB,GAAG,IAAM4b,EAAU5b,EAAO,qBAAqB,EAAK4b,IAAY,GAAG5b,EAAO,MAAM,eAAewb,EAAYI,CAAS,EAAG,EAAO,gBAAgB3B,EAAQ,EAAO,gBAAgBC,EAAQ,EAAO,gBAAgBqB,EAAQ,EAAO,mBAAmBE,EAAW,EAAO,mBAAmBC,EAAW,EAAO,mBAAmBC,EAAW,EAAO,oBAAoBH,CAAY,CAAC,SAAgBK,GAA4B,EAAO,CAAK7b,IAAc,EAAO,gBAAgB,EAAE,EAAO,gBAAgB,EAAE,EAAO,gBAAgB,EAAE,EAAO,mBAAmB,EAAE,EAAO,mBAAmB,EAAE,EAAO,mBAAmB,EAAE,EAAO,oBAAoB,EAAE,CAAC,SAAgB8b,GAAyB,EAAO,EAAO,CAAK9b,IAAc,EAAO,SAAS,IAAI6C,GAAQ,GAAG,IAAI7C,EAAO,uBAAuB,GAAG,EAAO,SAAS,IAAI6C,GAAQ,GAAG,IAAI7C,EAAO,uBAAuB,GAAG,EAAO,sBAAsB6C,GAAQ,GAAG,EAAE,EAAO,sBAAsBA,GAAQ,GAAG,EAAE,CAAC,SAAgBkZ,GAA2B,EAAO,EAAO,EAAI,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,CAAC,GAAG,CAAC/b,GAAQ,CAAC6C,GAAQ,OAAO,OAAO,IAAM6I,EAAS,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE7I,EAAO,UAAU,CAAC,CAAC,EAAQ4Y,EAAWxrB,EAAI,uBAAuB,EAAQyrB,EAAWzrB,EAAI,uBAAuB,EAAQ0rB,EAAW1rB,EAAI,uBAAuB,EAAE,EAAO,SAAS,GAAGwrB,EAAW/P,EAASzc,EAAS,EAAO,SAAS,GAAGysB,EAAWhQ,EAASzc,EAAS,EAAO,SAAS,GAAG0sB,EAAWjQ,EAASzc,CAAS,CAAC,SAAgB+sB,GAA8B,EAAO,EAAO,EAAI,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAU,EAAE,CAAC,GAAG,CAAChc,GAAQ,CAAC6C,GAAQ,QAAQ,CAAC5S,EAAI,+BAA+B,OAAO,IAAMyb,EAAS,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE7I,EAAO,UAAU,CAAC,CAAC,EAAQoZ,EAAQhsB,EAAI,yBAAyB,EAAQisB,EAAQjsB,EAAI,yBAAyB,EAAQksB,EAAQlsB,EAAI,yBAAyB,EAAQmsB,EAAgBnsB,EAAI,qBAAqB,EAAE,EAAO,SAAS,GAAGgsB,EAAQvQ,EAAS,EAAO,SAAS,GAAGwQ,EAAQxQ,EAAS,EAAO,SAAS,GAAGyQ,EAAQzQ,EAAS,IAAM2Q,EAAgB,GAAGD,EAAgB,GAAG1Q,EAAS1L,EAAO,MAAM,eAAeqc,CAAe,CAAE,CAAC,SAAgBC,GAA0B,EAAO,CAAKtc,IAAc,EAAO,sBAAsB,EAAE,EAAO,sBAAsB,EAAE,CAAC,SAAgBuc,GAA4B,EAAO,EAAI,EAAG,EAAO,GAAM,CAAC,GAAG,CAACvc,EAAO,OAAO,GAAGwc,GAAQ,EAAEvsB,GAAK,kBAAkB,KAAQ9H,GAAI,EAAE,CAAC,EAAO,SAAS,kBAAkB,EAAE,MAAO,CAAC,IAAMs0B,EAAYxsB,EAAI,iBAAiB,GAAG,EAAO,SAAS,mBAAmB+P,EAAO,SAAS,mBAAmB,GAAG7X,EAAGs0B,EAAY,EAAO,SAAS,GAAGzc,EAAO,SAAS,iBAAkB,CAAC,SAAgB0c,GAAqB,EAAE,EAAI,CAAC,OAAOzsB,GAAK,oBAAoB,GAAG,cAAc,SAAS,GAAG,cAAc,OAAO,GAAG,MAAM,aAAa,OAAO,CAAE,CAAC,SAAgB0sB,GAA6B,EAAK,CAAC,GAAUj2B,IAAS,OAAY,OAAO,KAAK,IAAI8T,EAAQd,GAAM,eAAe,KAAK,KAAMc,GAASA,IAAU,SAAS,MAAK,CAAC,IAAMC,EAAM/T,EAAO,iBAAiB8T,CAAO,EAAQoiB,EAAUniB,EAAM,WAAWA,EAAM,SAAwI,IAA9GmiB,IAAY,QAAQA,IAAY,UAAUA,IAAY,YAAYpiB,EAAQ,aAAaA,EAAQ,aAAa,EAAe,OAAOA,EAAQ,EAAQA,EAAQ,aAAc,CAAC,OAAO,SAAS,kBAAkB,SAAS,iBAAiB,SAAS,MAAM,IAAK,CAAC,SAAgBqiB,GAAoB,EAAG,EAAI,CAAC,GAAG,CAAC9kB,EAAG,MAAM,OAAO,IAAM+kB,EAAQ/kB,EAAG,MACnrQ+kB,EAAQ,SAAS,IAAI,EAAE,EAAE,CAAC,EAAEA,EAAQ,SAAS,IAAI,EAAE,EAAE,CAAC,EACtD1nB,GAAS,KAAK+L,GAA4B2b,CAAO,CAAC,EAAE,IAAMC,EAAU3nB,GAAS,UAAUH,EAAS,EAChG6nB,EAAQ,SAAS,IAAI,CAACC,EAAU,GAAG9sB,EAAI,cAAc,GAAG,CAAC8sB,EAAU,GAAG9sB,EAAI,cAAc,GAAG,CAAC8sB,EAAU,GAAG9sB,EAAI,cAAc,EAAE,EAAE,EAAG,WAAW6sB,EAAQ,SAAS,EAAE,EAAG,WAAWA,EAAQ,SAAS,EAAE,EAAG,WAAWA,EAAQ,SAAS,EAChOA,EAAQ,SAAS,KAAK7sB,EAAI,gBAAgB,GAAGhB,GAAUgB,EAAI,gBAAgB,GAAGhB,GAAUgB,EAAI,gBAAgB,GAAGhB,CAAQ,EACvH8I,EAAG,SAAS,OAAO,IAAI,EAAE,EAAE,CAAC,EAAEA,EAAG,SAAS,OAAO,EACjD3C,GAAS,KAAK+L,GAA4B2b,CAAO,CAAC,EAAE,EAAG,OAAO,SAAS,EAAE1nB,GAAS,IAAI,EAAE,KAAK,EAAG,YAAY2C,EAAG,OAAO,SAAS,EAAE,EAAG,YAAYA,EAAG,OAAO,SAAS,EAAE,IAAMuM,EAAGlP,GAAS,QAAQF,EAAS,EAAQ8nB,EAAK,KAAK,IAAI1Y,EAAG,EAAEA,EAAG,EAAEA,EAAG,CAAC,EAAE,IAAI,EAAG,SAAS,OAAO,OAAO,KAAK,CAAC0Y,EAAK,EAAG,SAAS,OAAO,OAAO,MAAMA,EAAK,EAAG,SAAS,OAAO,OAAO,IAAIA,EAAK,EAAG,SAAS,OAAO,OAAO,OAAO,CAACA,EAAKjlB,EAAG,SAAS,OAAO,OAAO,uBAAuB,EAAE,EAAG,WAAW+kB,EAAQ,SAAS,EAAE,EAAG,cAAcA,EAAQ,SAAS,EAAE,EAAG,cAAcA,EAAQ,SAAS,EAAE,EAAG,cAAcA,EAAQ,SAAS,CAAE,CAAC,SAAgBG,GAAmB,EAAG,EAAI,KAAK,EAAO,KAAK,CAAKllB,GAAI,OAAQA,EAAG,SAAc,EAAG,OAAO,SAAS,EAAEA,EAAG,MAAM,uBAAuB,EAA6B8K,GAAQ,QAAQ5S,IAAMA,EAAI,uBAAuBA,EAAI,uBAAuBA,EAAI,wBAEt0BmF,GAAS,KAAK+L,GAA4BpJ,EAAG,KAAK,CAAC,EAAE,EAAG,OAAO,SAAS,EAAE3C,GAAS,IAAI,EAAE,MAAW,EAAG,OAAO,SAAS,GAAG2C,EAAG,aAAaA,EAAG,OAAO,SAAS,IAAIA,EAAG,MAAM,uBAAuB,GAAI,EAAG,OAAO,SAAS,EAAEA,EAAG,aAAa,EAAE,C,mECpCqU,SAAgBolB,GAAyB,EAAK,EAAS,EAAE,CAAC,IAAM7U,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,OAAOoD,CAAQ,GAAG,CAAC,CAAC,EAAQ0R,EAAY,OAAO,SAAS,OAAOC,GAAM,KAAK,CAAC,EAAE,OAAOA,EAAK,KAAK,EAAE,EAAQrwB,EAASswB,GAAmBD,GAAM,SAAS,CAAC,EAAEA,GAAM,MAAM,EAAE,EAAEA,GAAM,MAAM,EAAE,EAAEA,GAAM,MAAM,CAAC,CAAC,EAAQhI,EAASiI,GAAmBD,GAAM,SAAS,CAAC,EAAEA,GAAM,MAAM,EAAE,EAAEA,GAAM,MAAM,EAAE,EAAEA,GAAM,MAAM,CAAC,CAAC,EAAQE,EAAMD,GAAmBD,GAAM,MAAM,CAAC,EAAEA,GAAM,QAAQD,EAAY,EAAEC,GAAM,QAAQD,EAAY,EAAEC,GAAM,QAAQD,CAAW,CAAC,EAAE,MAAM,CAAC,KAAKpwB,EAAS,EAAEsb,EAAE,KAAKtb,EAAS,EAAEsb,EAAE,KAAKtb,EAAS,EAAEsb,EAAE,KAAK+M,EAAS,EAAE/M,EAAE,KAAK+M,EAAS,EAAE/M,EAAE,KAAK+M,EAAS,EAAE/M,EAAE,OAAO,GAAGiV,EAAM,EAAE,GAAGjV,EAAE,OAAO,GAAGiV,EAAM,EAAE,GAAGjV,EAAE,OAAO,GAAGiV,EAAM,EAAE,GAAGjV,EAAE,QAAQ,IAAI+U,GAAM,SAAS,GAAG,GAAG/U,CAAC,CAAE,CAAC,SAAgBkV,GAAyB,EAAO,EAAO,CAAC,IAAMxwB,EAASswB,GAAmBG,IAAS,GAAGC,EAAO,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAQrI,EAASiI,GAAmBG,IAAS,GAAGC,EAAO,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAQC,EAAWF,IAAS,GAAGC,EAAO,QAAcN,EAAY,OAAOO,CAAU,EAAqJ,MAAM,CAAC,WAAS,WAAS,MAAhKA,IAAa,IAAI,OAAO,SAASP,CAAW,EAAE,CAAC,EAAEA,EAAY,EAAEA,EAAY,EAAEA,CAAW,EAAEE,GAAmBK,EAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAgC,CAAE,CAAC,SAAgBC,GAAkC,EAAI,CAAC,GAAG,CAACxnB,EAAI,OAAO,KAAK,EAAI,SAASA,EAAI,UAAU,CAAC,EAAMA,EAAI,SAAS,+BAA8B,EAAI,SAAS,6BAA6B,CAAC,SAASA,EAAI,SAAS,MAAM,EAAE,SAASA,EAAI,SAAS,MAAM,EAAE,MAAMA,EAAI,MAAM,MAAM,CAAC,GAAG,IAAMynB,EAAKznB,EAAI,SAAS,6BAA6B,MAAM,CAAC,SAASynB,EAAK,SAAS,MAAM,EAAE,SAASA,EAAK,SAAS,MAAM,EAAE,MAAMA,EAAK,MAAM,MAAM,CAAC,CAAE,CAAC,SAAgBC,GAAoC,EAAI,CAAK1nB,GAAK,UAAgB,OAAOA,EAAI,SAAS,4BAA6B,CAAC,SAAgB2nB,GAAiC,EAAI,EAAO,EAAO,CAAC,IAAMC,EAAUR,GAAyBC,EAAOC,CAAM,EAAQO,EAAUP,IAAS,iBAAiBE,GAAkCxnB,CAAG,EAAE,KAAW8nB,EAAaD,GAAW,UAAU7nB,EAAI,SAAS,MAAM,EAAQ+nB,EAAaF,GAAW,UAAU7nB,EAAI,SAAS,MAAM,EAAQgoB,EAAUH,GAAW,OAAO7nB,EAAI,MAAM,MAAM,EAAE,MAAM,CAAC,eAAa,eAAa,YAAU,eAAe8nB,EAAa,MAAM,CAAC,CAAC,IAAI,IAAI39B,EAAcy9B,EAAU,SAAS,EAAEA,EAAU,SAAS,EAAEA,EAAU,SAAS,CAAC,CAAC,EAAE,eAAe,IAAIx9B,GAAY29B,EAAa,EAAEH,EAAU,SAAS,EAAE/uB,EAASkvB,EAAa,EAAEH,EAAU,SAAS,EAAE/uB,EAASkvB,EAAa,EAAEH,EAAU,SAAS,EAAE/uB,EAASkvB,EAAa,KAAK,EAAE,YAAY,IAAI59B,EAAc69B,EAAU,EAAE,KAAK,IAAI,KAAKJ,EAAU,MAAM,CAAC,EAAEI,EAAU,EAAE,KAAK,IAAI,KAAKJ,EAAU,MAAM,CAAC,EAAEI,EAAU,EAAE,KAAK,IAAI,KAAKJ,EAAU,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,SAAgBK,GAA4B,EAAU,EAAU,CAAC,OAAOC,GAA+BN,EAAU,CAAC,WAAS,CAAC,CAAE,CAAC,SAAgBO,GAA2B,EAAS,EAAU,CAAC,OAAOC,GAA8BxxB,EAAS,CAAC,WAAS,CAAC,CAAE,CAAC,SAAgByxB,GAAY,EAAI,EAAI,CAAC,MAAM,CAAC,CAACroB,GAAK,OAAO,UAAU,eAAe,KAAKA,EAAID,CAAG,CAAE,CAAC,SAAgBuoB,GAAgC,EAAM,EAAU,CAAC,EAAE,CAAC,IAAMC,EAAO,CAAC,GAAGX,GAAW,CAAC,CAAC,EAAuN,OAAlNS,GAAYlxB,EAAM,YAAY,IAAE,EAAO,MAAMA,EAAM,YAAckxB,GAAYlxB,EAAM,eAAe,IAAE,EAAO,SAASA,EAAM,eAAiBkxB,GAAYlxB,EAAM,eAAe,IAAE,EAAO,SAASA,EAAM,eAAqBoxB,CAAO,CAAC,SAAgBC,GAA6B,EAAM,CAAC,IAAMC,EAAS,CAAC,GAAGtxB,GAAO,oBAAoB,CAAC,CAAC,EAAQywB,EAAU,CAAC,GAAGa,EAAS,WAAW,CAAC,CAAC,EAAoW,OAA/VJ,GAAYlxB,EAAM,cAAc,IAAE,EAAS,OAAOA,EAAM,cAAgBkxB,GAAYlxB,EAAM,sBAAsB,IAAE,EAAU,MAAMA,EAAM,sBAAwBkxB,GAAYlxB,EAAM,yBAAyB,IAAE,EAAU,SAASA,EAAM,yBAA2BkxB,GAAYlxB,EAAM,yBAAyB,IAAE,EAAU,SAASA,EAAM,yBAA8B,CAAC,GAAGsxB,EAAS,WAAS,CAAE,CAAC,SAAgBC,GAAsC,EAAM,CAAC,IAAM9xB,EAASO,GAAO,UAAU,CAAC,EAAQwxB,EAAa,CAAC,GAAG/xB,EAAS,cAAc,CAAC,CAAC,EAAQgyB,EAAmB,CAAC,GAAGhyB,EAAS,oBAAoB,CAAC,CAAC,EAA0gB,MAAxgB,GAAS,gBAAgB,GAAQyxB,GAAYlxB,EAAM,sBAAsB,IAAE,EAAS,qBAAqBA,EAAM,sBAAwBkxB,GAAYlxB,EAAM,uBAAuB,IAAE,EAAS,cAAcA,EAAM,uBAAyBkxB,GAAYlxB,EAAM,sBAAsB,IAAE,EAAa,MAAMA,EAAM,sBAAwBkxB,GAAYlxB,EAAM,yBAAyB,IAAE,EAAa,SAASA,EAAM,yBAA2BkxB,GAAYlxB,EAAM,yBAAyB,IAAE,EAAa,SAASA,EAAM,yBAA8B,CAAC,GAAGP,EAAS,eAAa,oBAAkB,CAAE,CAAC,SAAgBiyB,GAA8B,EAAM,EAAU,CAAC,EAAE,CAAC,IAAMC,EAAY3xB,GAAO,OAAO,QAAQ,MAAM,CAAC,GAAGA,EAAM,QAAQ2xB,GAAa,CAAC,CAAC3xB,GAAO,QAAQ,UAAUmxB,GAAgCnxB,EAAMywB,CAAS,EAAE,mBAAmBY,GAA6BrxB,CAAK,EAAE,SAASuxB,GAAsCvxB,CAAK,CAAC,CAAE,CAAC,SAAgB+vB,GAAmB,EAAM,EAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,QAAQjnB,CAAK,EAAG,MAAM,CAAC,EAAE,OAAO,SAAS,OAAOA,EAAM,EAAE,CAAC,EAAE,OAAOA,EAAM,EAAE,EAAEwD,EAAS,EAAE,EAAE,OAAO,SAAS,OAAOxD,EAAM,EAAE,CAAC,EAAE,OAAOA,EAAM,EAAE,EAAEwD,EAAS,EAAE,EAAE,OAAO,SAAS,OAAOxD,EAAM,EAAE,CAAC,EAAE,OAAOA,EAAM,EAAE,EAAEwD,EAAS,CAAC,EAAG,GAAGxD,GAAO,OAAOA,GAAQ,SAAU,MAAM,CAAC,EAAE,OAAO,SAAS,OAAOA,EAAM,CAAC,CAAC,EAAE,OAAOA,EAAM,CAAC,EAAEwD,EAAS,EAAE,EAAE,OAAO,SAAS,OAAOxD,EAAM,CAAC,CAAC,EAAE,OAAOA,EAAM,CAAC,EAAEwD,EAAS,EAAE,EAAE,OAAO,SAAS,OAAOxD,EAAM,CAAC,CAAC,EAAE,OAAOA,EAAM,CAAC,EAAEwD,EAAS,CAAC,EAAG,GAAG,OAAOxD,GAAQ,SAAS,OAAOwD,EAAS,IAAMyB,EAAMjF,EAAM,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,IAAI,GAAM,OAAO+d,CAAI,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,SAAS9Y,EAAM,EAAE,EAAEA,EAAM,GAAGzB,EAAS,EAAE,EAAE,OAAO,SAASyB,EAAM,EAAE,EAAEA,EAAM,GAAGzB,EAAS,EAAE,EAAE,OAAO,SAASyB,EAAM,EAAE,EAAEA,EAAM,GAAGzB,EAAS,CAAC,CAAE,CAAC,SAAgBykB,GAA+B,EAAU,EAAQ,CAAC,EAAE,CAAC,IAAM3nB,EAAM,OAAOrD,GAAU,SAASA,EAAQ,OAAOA,GAAS,OAAO,CAAC,EAAQ6rB,EAAa,OAAO7rB,GAAU,UAAUA,EAAQA,GAAS,UAAgB8rB,EAAQpB,GAAW,SAASA,GAAW,CAAC,EAAQqB,EAAWrB,GAAW,YAAY,IAAUsB,EAAUH,IAAe,IAAA,GAAyB,CAAC,CAACxoB,GAAOA,GAAO0oB,EAA/B,CAAC,CAACF,EAA8CI,EAAgBjC,GAAmB8B,EAAQ,SAAS,CAAC,EAAEA,EAAQ,MAAM,EAAE,EAAEA,EAAQ,MAAM,EAAE,EAAEA,EAAQ,MAAM,CAAC,CAAC,EAAQI,EAAgBlC,GAAmB8B,EAAQ,SAAS,CAAC,EAAEA,EAAQ,MAAM,EAAE,EAAEA,EAAQ,MAAM,EAAE,EAAEA,EAAQ,MAAM,CAAC,CAAC,EAAQK,EAAgB,CAAC,GAAGL,EAAQ,KAAKG,EAAgB,EAAE,KAAKA,EAAgB,EAAE,KAAKA,EAAgB,EAAE,KAAKC,EAAgB,EAAE,KAAKA,EAAgB,EAAE,KAAKA,EAAgB,CAAC,EAAE,GAAG,CAACF,EAAU,OAAOG,EAAgB,IAAMC,EAAa1B,GAAW,QAAQ,CAAC,EAAQ2B,EAAerC,GAAmBU,GAAW,gBAAgB0B,EAAa,SAAS,CAAC,EAAE1B,GAAW,YAAY0B,EAAa,KAAK,EAAE1B,GAAW,YAAY0B,EAAa,KAAK,EAAE1B,GAAW,YAAY0B,EAAa,IAAI,CAAC,EAAQE,EAAetC,GAAmBU,GAAW,gBAAgB0B,EAAa,SAAS,CAAC,EAAE1B,GAAW,YAAY0B,EAAa,KAAK,EAAE1B,GAAW,YAAY0B,EAAa,KAAK,EAAE1B,GAAW,YAAY0B,EAAa,IAAI,CAAC,EAAQnL,EAAO,CAAC,QAAQyJ,GAAW,eAAe0B,EAAa,QAAQ,MAAM1B,GAAW,aAAa0B,EAAa,MAAM,KAAKC,EAAe,EAAE,KAAKA,EAAe,EAAE,KAAKA,EAAe,EAAE,KAAKC,EAAe,EAAE,KAAKA,EAAe,EAAE,KAAKA,EAAe,CAAC,EAA4C,OAAtCrL,EAAO,QAAqC,CAAC,GAAGkL,EAAgB,GAAGlL,EAAO,MAAMA,EAAO,OAAOkL,EAAgB,MAAM,KAAKlL,EAAO,MAAMkL,EAAgB,KAAK,KAAKlL,EAAO,MAAMkL,EAAgB,KAAK,KAAKlL,EAAO,MAAMkL,EAAgB,KAAK,KAAKlL,EAAO,MAAMkL,EAAgB,KAAK,KAAKlL,EAAO,MAAMkL,EAAgB,KAAK,KAAKlL,EAAO,MAAMkL,EAAgB,IAAI,EAAvUA,CAAyU,CAAC,SAAgBI,GAAkC,EAAK,CAAC,GAAG,CAACtvB,EAAK,OAAOA,EAAK,IAAMvD,EAASswB,GAAmB/sB,EAAK,SAAS,CAAC,EAAEA,EAAK,MAAM,EAAE,EAAEA,EAAK,MAAM,EAAE,EAAEA,EAAK,MAAM,CAAC,CAAC,EAAQ8kB,EAASiI,GAAmB/sB,EAAK,SAAS,CAAC,EAAEA,EAAK,MAAM,EAAE,EAAEA,EAAK,MAAM,EAAE,EAAEA,EAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAGA,EAAK,KAAKvD,EAAS,EAAE,KAAKA,EAAS,EAAE,KAAKA,EAAS,EAAE,KAAKqoB,EAAS,EAAE,KAAKA,EAAS,EAAE,KAAKA,EAAS,CAAC,CAAE,CAAC,SAAgByK,GAAuC,EAAK,CAAC,GAAG,CAACvvB,EAAK,OAAOA,EAAK,IAAMwvB,EAAQ5C,GAAyB5sB,CAAI,EAAE,MAAM,CAAC,GAAGA,EAAK,SAAS,CAAC,EAAEwvB,EAAQ,KAAK,EAAEA,EAAQ,KAAK,EAAEA,EAAQ,IAAI,EAAE,SAAS,CAAC,EAAEA,EAAQ,KAAK,EAAEA,EAAQ,KAAK,EAAEA,EAAQ,IAAI,EAAE,MAAM,CAAC,EAAEA,EAAQ,OAAO,EAAEA,EAAQ,OAAO,EAAEA,EAAQ,MAAM,EAAE,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,OAAOA,EAAQ,OAAO,OAAOA,EAAQ,OAAO,OAAOA,EAAQ,MAAM,CAAE,CAAC,SAAgBC,GAAqC,EAAK,CAAC,GAAG,CAACzvB,EAAK,OAAOA,EAAK,IAAM0vB,EAAM1vB,EAAK,OAAO,CAAC,EAAQ2vB,EAAM3vB,EAAK,OAAO,CAAC,EAAQ4vB,EAAM5vB,EAAK,OAAO,CAAC,EAAQ6vB,EAAY7vB,EAAK,aAAa,CAAC,EAAQ8vB,EAAK9vB,EAAK,MAAM,CAAC,EAAQ+vB,EAAO/vB,EAAK,QAAQ,CAAC,EAAQgwB,EAAaN,EAAM,UAAU,GAAWO,EAAaN,EAAM,UAAU,GAAWO,EAAaN,EAAM,UAAU,GAAWO,EAAmBN,EAAY,UAAU,GAAWO,EAAYN,EAAK,UAAU,GAAWO,EAAcN,EAAO,UAAU,GAASO,EAAoB,OAAO,GAAGL,IAAc,EAAoBN,EAAM,OAAU,CAACW,GAAqBA,IAAsB,QAAO,CAAC,IAAMC,EAAkBZ,EAAM,eAAqBa,EAAqBb,EAAM,kBAAwBc,EAAqBd,EAAM,kBAAwBe,EAAcf,EAAM,MAAYgB,EAAaJ,IAAoB,IAAA,IAAW,OAAOA,CAAiB,IAAI,GAAGC,IAAuB,IAAA,IAAWA,IAAuB,SAASC,IAAuB,IAAA,IAAWA,IAAuB,QAAcG,EAASF,IAAgB,IAAA,IAAW,OAAOA,CAAa,IAAI,GAAG,OAAOA,CAAa,IAAI,EAAE,AAAsGJ,EAAnGK,EAAkC,YAAqBC,EAA8B,QAAkC,WAAa,CAAE,MAAM,CAAC,GAAG5wB,EAAK,sBAAsBgwB,GAAcC,GAAcC,GAAcC,GAAoBC,GAAaC,EAAc,YAAYL,EAAaN,EAAM,QAAQ,OAAO,OAAO,SAASA,EAAM,IAAI,eAAeA,EAAM,OAAO,gBAAgBA,EAAM,aAAa,WAAWA,EAAM,MAAM,cAAcA,EAAM,SAAS,cAAcA,EAAM,SAAS,iBAAiBA,EAAM,YAAY,YAAYA,EAAM,QAAQ,oBAAoBA,EAAM,oBAAoB,YAAYY,EAAoB,WAAWX,EAAM,MAAM,WAAWA,EAAM,MAAM,uBAAuBA,EAAM,kBAAkB,uBAAuBA,EAAM,kBAAkB,oBAAoBA,EAAM,eAAe,WAAWA,EAAM,MAAM,YAAYA,EAAM,OAAO,aAAaA,EAAM,QAAQ,eAAa,uBAAuBC,EAAM,kBAAkB,uBAAuBA,EAAM,kBAAkB,oBAAoBA,EAAM,eAAe,WAAWO,EAAmBN,EAAY,WAAW,GAAM,oBAAoBA,EAAY,YAAY,mBAAmBA,EAAY,WAAW,YAAYM,EAAmBN,EAAY,YAAY,GAAM,yBAAyBA,EAAY,qBAAqB,YAAYF,EAAM,QAAQ,YAAYA,EAAM,QAAQ,UAAUS,EAAY,UAAUN,EAAK,MAAM,aAAaA,EAAK,SAAS,eAAeA,EAAK,WAAW,YAAYA,EAAK,QAAQ,UAAUA,EAAK,MAAM,eAAa,CAAE,CAAC,SAAgBe,GAA6B,EAAM,CAAC,EAAE,CAAC,OAAOC,GAAO,CAAC,EAAA,CAAG,OAAO,GAAM9wB,GAAM,QAAQ,CAAC,CAAC,OAAO,GAAMA,GAAM,QAAQ,OAAO,CAAC,CAAC,IAAI,IAAO,CAAC,GAAGA,EAAK,QAAQ,CAAC,EAAE,SAASA,EAAK,SAAS,SAASA,EAAK,SAAS,QAAQA,EAAK,QAAQ,QAAQ,YAAYA,EAAK,QAAQ,MAAM,cAAcqJ,GAAsBrJ,EAAK,QAAQ,OAAO,EAAE,EAAE,MAAMA,EAAK,QAAQ,MAAM,SAASA,EAAK,QAAQ,SAAS,SAASA,EAAK,QAAQ,SAAS,QAAQA,EAAK,QAAQ,OAAO,EAAE,CAAE,CAAC,SAAgBiuB,GAA8B,EAAS,EAAQ,CAAC,EAAE,CAAC,IAAM7nB,EAAM,OAAOrD,GAAU,SAASA,EAAQ,OAAOA,GAAS,OAAO,CAAC,EAAQ6rB,EAAa,OAAO7rB,GAAU,UAAUA,EAAQA,GAAS,UAAgB8rB,EAAQpyB,GAAU,SAASA,GAAU,CAAC,EAAQqyB,EAAWryB,GAAU,YAAY,IAAuF,GAAG,EAAtEmyB,IAAe,IAAA,GAA2BxoB,GAAOA,GAAO0oB,EAA7BF,GAAsD,OAAOC,EAAQ,IAAMM,EAAa1yB,GAAU,QAAQ,CAAC,EAAQs0B,EAAct0B,GAAU,eAAe0yB,EAAa,QAAQ,GAAG,CAAC4B,EAAc,OAAOlC,EAAQ,IAAMmC,EAAoBnC,EAAQ,cAAc,CAAC,EAAQoC,EAAoBpC,EAAQ,cAAc,CAAC,EAAQqC,EAAmB/B,EAAa,cAAc,CAAC,EAAQV,EAAmBU,EAAa,cAAc,CAAC,EAAE,MAAM,CAAC,GAAGN,EAAQ,GAAGM,EAAa,YAAYA,EAAa,YAAY,YAAYA,EAAa,YAAY,kBAAkBA,EAAa,kBAAkB,mBAAmBA,EAAa,mBAAmB,gBAAgB,GAAK,qBAAqBA,EAAa,qBAAqB,aAAa,CAAC,GAAG6B,EAAoB,GAAGE,CAAkB,EAAE,aAAa,CAAC,GAAGD,EAAoB,GAAGxC,CAAkB,EAAE,eAAa,CAAE,CAAC,SAAgB0C,GAAoC,EAAM,EAAQ,CAAC,EAAE,CAAC,IAAM/qB,EAAM,OAAOrD,GAAU,SAASA,EAAQ,OAAOA,GAAS,OAAO,CAAC,EAAQ6rB,EAAa,OAAO7rB,GAAU,UAAUA,EAAQA,GAAS,UAAgBtG,EAASO,GAAO,UAAU,CAAC,EAAQmyB,EAAa1yB,GAAU,QAAQ,CAAC,EAAQ20B,EAAiB30B,GAAU,YAAY,IAAU40B,EAAmBzC,IAAe,IAAA,GAA4E,CAAC,CAACxoB,GAAOA,GAAOgrB,GAAkB,CAAC,EAAE30B,GAAU,eAAe0yB,EAAa,SAA7I,CAAC,CAACP,GAAc,CAAC,EAAEnyB,GAAU,eAAe0yB,EAAa,SAAmGmC,EAAUvuB,GAAS,gBAAgBkrB,GAA8BxxB,EAAS,CAAC,QAAM,UAAUmyB,CAAY,CAAC,EAAQ2C,EAAGv0B,GAAO,IAAI,CAAC,EAAQw0B,EAAY,OAAOF,EAAU,aAAa,EAAE,CAAC,CAAC,KAAK,EAAQG,EAAe,OAAOH,EAAU,sBAAsB,EAAE,CAAC,CAAC,KAAK,EAAQI,EAAgBJ,EAAU,cAAc,CAAC,EAAQK,EAAqB5E,GAAmB2E,EAAgB,SAAS,CAAC,EAAEA,EAAgB,MAAM,EAAE,EAAEA,EAAgB,MAAM,EAAE,EAAEA,EAAgB,MAAM,CAAC,CAAC,EAAQE,EAAqB7E,GAAmB2E,EAAgB,SAAS,CAAC,EAAEA,EAAgB,MAAM,EAAE,EAAEA,EAAgB,MAAM,EAAE,EAAEA,EAAgB,MAAM,CAAC,CAAC,EAAQG,EAAqBH,EAAgB,MAAYlD,EAAa,CAAC,KAAKmD,EAAqB,EAAE,KAAKA,EAAqB,EAAE,KAAKA,EAAqB,EAAE,KAAKC,EAAqB,EAAE,KAAKA,EAAqB,EAAE,KAAKA,EAAqB,EAAE,MAAMC,IAAuB,IAAA,IAAWA,IAAuB,EAAEA,EAAqB,IAAI,EAAwH7I,EAAQ,GAASlf,EAAQT,GAAsBioB,EAAU,cAAc,EAAE,EAAuD,MAAM,CAAC,eAAeA,EAAU,mBAAmBA,EAAU,MAAMC,EAAG,cAAc,WAAW,iBAAiBD,EAAU,YAAYC,EAAG,oBAAoB,GAAG,UAAUD,EAAU,KAAKC,EAAG,aAAa,EAAE,WAAWD,EAAU,MAAMC,EAAG,cAAc,EAAE,YAAYD,EAAU,OAAOC,EAAG,eAAe,KAAK,aAAaD,EAAU,QAAQC,EAAG,gBAAgB,KAAK,aAAaD,EAAU,QAAQC,EAAG,gBAAgB,GAAG,iBAAc,mBAAmB,GAAc,oBAAoB,GAAc,cAAY,kBAAkBC,EAAY,oBAAiB,+BAA+B,GAAiB,iBAAe,2BAA2BC,EAAe,qBAAkB,8BAA8B,GAAkB,sBAAmB,+BAA+B,GAAmB,UAAQ,UAAQ,eAAa,sBAAsB,EAAQ,sBAAsB,EAAQ,sBAAsB,EAAa,UAAQ,UAAQ,cAAczI,EAAQ,cAAclf,EAAQ,eAAa,sBAAuC0kB,EAAa,KAAO,sBAAuCA,EAAa,KAAO,sBAAuCA,EAAa,KAAO,wBAAwBA,EAAa,KAAK,wBAAwBA,EAAa,KAAK,wBAAwBA,EAAa,KAAK,oBAAoBA,EAAa,MAAM,oBAAkB,CAAE,CAAC,SAAgBsD,GAAuC,EAAM,EAAQ,CAAC,EAAE,CAAC,IAAMC,EAAI/0B,GAAO,aAAa,CAAC,EAAQg1B,EAAGh1B,GAAO,SAAS,CAAC,EAAQi1B,EAAqB,CAAC,CAAClvB,GAAS,qBAA2BmvB,GAAsB,EAAI,IAAoBhE,GAAYlxB,EAAM4I,CAAG,EAAuC5I,EAAM4I,GAApCmsB,EAAInsB,IAAMusB,EAAuCC,EAAcF,EAAqB,WAAW,EAAE,EAAQG,EAAc,OAAOD,GAAe,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,MAAM,MAAM,CAAC,oBAAoBL,EAAI,OAAO,GAAK,WAAWA,EAAI,MAAM,GAAM,iBAAiBA,EAAI,YAAY,GAAK,gBAAgBA,EAAI,aAAa,GAAG,gBAAgB,GAAK,gBAAc,gBAAc,eAAeG,EAAqB,YAAY,CAAC,EAAE,uBAAuB,IAAI,kBAAkBA,EAAqB,eAAe,QAAQ,EAAE,yBAAyB,GAAM,mBAAmB,GAAK,cAAc,GAAM,wBAAwBH,EAAI,gBAAgB,GAAM,mBAAmB,GAAK,oBAAoBE,EAAqB,GAAMF,EAAI,aAAa,GAAM,uBAAuBA,EAAI,sBAAsB,GAAG,gBAAgBA,EAAI,WAAW,GAAM,cAAcA,EAAI,eAAe,IAAI,aAAaA,EAAI,cAAc,IAAI,cAAcA,EAAI,eAAe,UAAU,cAAcA,EAAI,eAAe,EAAE,eAAeA,EAAI,gBAAgB,GAAG,YAAYA,EAAI,OAAOC,EAAG,OAAO,GAAK,eAAeD,EAAI,UAAUC,EAAG,UAAU,GAAG,WAAWD,EAAI,YAAYC,EAAG,YAAY,GAAG,gCAAgC,CAAC,CAACh1B,GAAO,wBAAwB,wBAAwBA,GAAO,yBAAyB,IAAI,CAAE,CAAC,SAAgBs1B,GAA4B,EAAM,EAAU,EAAE,CAAC,IAAMC,EAAGxE,GAA+B/wB,GAAO,WAAW,CAAC,EAAE,CAAC,MAAMw1B,CAAS,CAAC,EAAQlJ,EAAItsB,GAAO,QAAQ,CAAC,EAAQy1B,EAAIz1B,GAAO,aAAa,CAAC,EAAQ+0B,EAAID,GAAuC90B,CAAK,EAAQqZ,EAAIrZ,GAAO,UAAU,CAAC,EAAQg1B,EAAGh1B,GAAO,SAAS,CAAC,EAAQ01B,EAAY11B,GAAO,aAAa,CAAC,EAA0C21B,GAAxB31B,GAAO,QAAQ,CAAC,EAAA,CAAgC,IAAI,GAAM,CAAC,GAAG,CAACgD,EAAK,OAAOA,EAAK,IAAM4yB,EAAStD,GAAkCtvB,CAAI,EAA0C6yB,GAA9B7yB,EAAK,aAAa,SAA2B,OAAOA,EAAK,WAAW,GAAGA,EAAK,UAAU,GAAG,MAAM,CAAC,GAAG4yB,EAAS,UAAQ,CAAE,CAAC,EAAQlzB,EAAI,CAAC,gBAAgB1C,GAAO,iBAAiB,GAAM,WAAWu1B,EAAG,OAAO,EAAE,aAAaA,EAAG,MAAM,EAAE,aAAaA,EAAG,MAAM,EAAE,aAAaA,EAAG,MAAM,EAAE,eAAeA,EAAG,MAAM,EAAE,eAAeA,EAAG,MAAM,EAAE,eAAeA,EAAG,MAAM,EAAE,WAAWjJ,EAAI,YAAY,cAAc,gBAAgBA,EAAI,GAAG,GAAG,gBAAgBA,EAAI,GAAG,EAAE,gBAAgBA,EAAI,GAAG,GAAG,UAAUA,EAAI,WAAW,EAAE,aAAaA,EAAI,cAAc,KAAK,IAAIA,EAAI,KAAK,GAAG,gBAAgBmJ,EAAI,SAAS,UAAU,sBAAsBA,EAAI,aAAa,GAAK,kBAAkBA,EAAI,SAAS,GAAK,gBAAgBA,EAAI,MAAM,aAAa,kBAAkBA,EAAI,QAAQ,SAAS,WAAWA,EAAI,YAAY,kBAAkB,cAAcA,EAAI,WAAW,GAAG,qBAAqBA,EAAI,WAAW,EAAE,0BAA0BA,EAAI,QAAQ,GAAM,sBAAsBA,EAAI,SAAS,GAAG,0BAA0BA,EAAI,cAAc,EAAE,sBAAsBA,EAAI,UAAU,UAAU,aAAaA,EAAI,SAAS,EAAE,aAAaA,EAAI,SAAS,GAAG,aAAaA,EAAI,SAAS,EAAE,cAAcA,EAAI,SAAS,GAAM,cAAc,SAASA,EAAI,YAAY,OAAO,EAAE,GAAG,KAAK,WAAWA,EAAI,YAAY,MAAM,iBAAiBA,EAAI,kBAAkB,IAAI,cAAY,GAAGV,EAAI,eAAe1b,EAAI,QAAQ,OAAO,gBAAgBA,EAAI,iBAAiB,UAAU,gBAAgBA,EAAI,iBAAiB,UAAU,oBAAoBA,EAAI,qBAAqB,KAAK,YAAYA,EAAI,aAAa,EAAE,mBAAmBA,EAAI,oBAAoB,IAAI,eAAeA,EAAI,gBAAgB,UAAU,uBAAuBA,EAAI,wBAAwB,UAAU,2BAA2BA,EAAI,4BAA4B,IAAI,iBAAiBA,EAAI,UAAU,GAAM,UAAUA,EAAI,WAAW,EAAE,UAAUA,EAAI,WAAW,GAAG,UAAUA,EAAI,WAAW,EAAE,mBAAmBA,EAAI,oBAAoB,EAAE,aAAaA,EAAI,cAAc,EAAE,UAAUA,EAAI,WAAW,EAAE,IAAIA,EAAI,KAAK,IAAI,YAAYA,EAAI,aAAa,EAAE,eAAeA,EAAI,gBAAgB,IAAI,MAAMA,EAAI,OAAO,EAAE,eAAeA,EAAI,gBAAgB,GAAG,WAAWA,EAAI,YAAY,UAAU,gBAAgBA,EAAI,iBAAiB,EAAE,aAAaA,EAAI,cAAc,GAAG,kBAAkBA,EAAI,mBAAmB,EAAE,cAAcA,EAAI,eAAe,UAAU,QAAQA,EAAI,SAAS,EAAE,UAAUA,EAAI,WAAW,GAAM,2BAA2BA,EAAI,oBAAoB,GAAG,aAAa2b,EAAG,OAAO,GAAM,cAAcA,EAAG,UAAU,GAAG,eAAeA,EAAG,aAAa,GAAG,YAAYA,EAAG,UAAU,GAAG,YAAYA,EAAG,aAAa,OAAO,SAASA,EAAG,UAAU,IAAI,WAAWA,EAAG,MAAM,GAAK,mBAAmBA,EAAG,cAAc,GAAM,WAAWA,EAAG,YAAY,EAAE,SAASA,EAAG,UAAU,EAAE,WAAWA,EAAG,YAAY,EAAE,eAAeA,EAAG,UAAU,GAAM,eAAeA,EAAG,WAAW,EAAE,iBAAiBA,EAAG,SAAS,IAAI,0BAA0BA,EAAG,YAAY,GAAM,4BAA4BA,EAAG,UAAU,KAAK,gBAAgBA,EAAG,WAAW,GAAM,mBAAmBA,EAAG,UAAU,IAAI,eAAeA,EAAG,UAAU,GAAM,cAAcA,EAAG,YAAY,YAAY,aAAaA,EAAG,WAAW,GAAG,gBAAgBA,EAAG,cAAc,EAIxpqB,YAAY,EAAE,kBAAkB,EAAE,qBAAqBA,EAAG,mBAAmB,GAAG,qBAAqBA,EAAG,mBAAmB,UAAU,iBAAiBA,EAAG,eAAe,EAAE,gBAAgBA,EAAG,cAAc,EAAE,iBAAiBA,EAAG,eAAe,GAChP,2BAA2BA,EAAG,iBAAiB,GAAG,0BAA0BA,EAAG,gBAAgB,GAAG,WAAWA,EAAG,MAAM,GAAM,WAAWA,EAAG,YAAY,EAAE,gBAAgBA,EAAG,aAAa,KAAK,gBAAgBA,EAAG,aAAa,GAAG,UAAU1I,EAAI,KAAK,GAAM,SAASA,EAAI,UAAU,GAAG,YAAYA,EAAI,aAAa,KAAK,WAAWA,EAAI,YAAY,IAAI,eAAa,EAAu+D,MAAr+D,GAAI,cAAc,CAAC5pB,EAAI,eAAeA,EAAI,iBAAiBA,EAAI,UAAUA,EAAI,UAAUA,EAAI,UAAUA,EAAI,mBAAmBA,EAAI,aAAaA,EAAI,UAAUA,EAAI,IAAIA,EAAI,YAAYA,EAAI,eAAeA,EAAI,MAAMA,EAAI,eAAeA,EAAI,WAAWA,EAAI,gBAAgBA,EAAI,kBAAkBA,EAAI,cAAcA,EAAI,aAAaA,EAAI,QAAQA,EAAI,SAAS,CAAC,CAAC,KAAK,GAAG,EAAE,EAAI,cAAc,CAACA,EAAI,sBAAsBA,EAAI,0BAA0BA,EAAI,sBAAsBA,EAAI,aAAaA,EAAI,aAAaA,EAAI,aAAaA,EAAI,cAAcA,EAAI,cAAcA,EAAI,WAAWA,EAAI,iBAAiB,KAAK,WAAWA,EAAI,aAAa,CAAC,EAAA,CAAG,IAAI,IAAQ,CAAC,QAAQye,GAAO,QAAQ,KAAKA,GAAO,UAAU,MAAMA,GAAO,MAAM,UAAUA,GAAO,UAAU,KAAKA,GAAO,KAAK,KAAKA,GAAO,KAAK,KAAKA,GAAO,KAAK,SAASA,GAAO,SAAS,MAAMA,GAAO,MAAM,MAAMA,GAAO,MAAM,SAASA,GAAO,SAAS,QAAQA,GAAO,QAAQ,QAAQA,GAAO,QAAQ,QAAQA,GAAO,QAAQ,WAAWA,GAAO,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAI,SAAS,CAACze,EAAI,kBAAkBA,EAAI,gBAAgBA,EAAI,kBAAkBA,EAAI,WAAWA,EAAI,cAAcA,EAAI,qBAAqBA,EAAI,0BAA0BA,EAAI,sBAAsBA,EAAI,eAAe,CAAC,CAAC,KAAK,GAAG,EAAE,EAAI,aAAa,CAACA,EAAI,aAAaA,EAAI,cAAcA,EAAI,eAAeA,EAAI,YAAYA,EAAI,YAAYA,EAAI,SAASA,EAAI,WAAWA,EAAI,mBAAmBA,EAAI,WAAWA,EAAI,SAASA,EAAI,WAAWA,EAAI,eAAeA,EAAI,eAAeA,EAAI,iBAAiBA,EAAI,0BAA0BA,EAAI,4BAA4BA,EAAI,gBAAgBA,EAAI,mBAAmBA,EAAI,eAAeA,EAAI,cAAcA,EAAI,aAAaA,EAAI,gBAAgBA,EAAI,YAAYA,EAAI,kBAAkBA,EAAI,qBAAqBA,EAAI,qBAAqBA,EAAI,iBAAiBA,EAAI,gBAAgBA,EAAI,iBAAiBA,EAAI,WAAWA,EAAI,WAAWA,EAAI,gBAAgBA,EAAI,gBAAgBA,EAAI,UAAUA,EAAI,SAASA,EAAI,YAAYA,EAAI,UAAU,CAAC,CAAC,KAAK,GAAG,EAAE,EAAI,iBAAiB,CAACA,EAAI,cAAcA,EAAI,cAAcA,EAAI,SAASA,EAAI,YAAY,CAAC,CAAC,KAAK,IAAI,EAASA,CAAI,CAAC,SAAgBozB,GAAkC,EAAM,CAAC,GAAK,CAAC,mBAAmBxE,EAAS,CAAC,GAAGtxB,EAAYywB,EAAUa,EAAS,WAAW,CAAC,EAAQyE,EAAMzE,EAAS,OAAO,CAAC,EAAQxW,EAAKwW,EAAS,MAAM,CAAC,EAAQ0E,EAAU1E,EAAS,WAAW,CAAC,EAAQzE,EAASyE,EAAS,UAAU,IAAU2E,EAAelG,GAAmBU,EAAU,SAAS,CAAC,EAAEA,EAAU,MAAM,EAAE,EAAEA,EAAU,MAAM,EAAE,EAAEA,EAAU,MAAM,CAAC,CAAC,EAAQyF,EAAenG,GAAmBU,EAAU,SAAS,CAAC,EAAEA,EAAU,MAAM,EAAE,EAAEA,EAAU,MAAM,EAAE,EAAEA,EAAU,MAAM,CAAC,CAAC,EAAQ0F,EAAKF,EAAe,EAAQG,EAAKH,EAAe,EAAQI,EAAKJ,EAAe,EAAQjG,EAAMS,EAAU,OAAO,EAAQ6F,EAAKJ,EAAe,EAAQK,EAAKL,EAAe,EAAQM,EAAKN,EAAe,EAAQO,EAAWnF,EAAS,YAAY,GAAYoF,EAAoBpF,EAAS,eAAe,GAASqF,EAAmBrF,EAAS,cAAc,GAASlT,EAAW2X,EAAM,YAAY,IAAU1X,EAAU0X,EAAM,WAAW,GAASzX,EAAUxD,EAAK,WAAW,GAASmC,EAAcnC,EAAK,eAAe,UAAgBoC,EAAkBpC,EAAK,mBAAmB,EAAE,MAAM,CAAC,gBAAgBwW,EAAS,SAAS,GAAK,aAAatxB,GAAO,cAAcsxB,EAAS,QAAQ,GAAK,WAAS,iBAAiBzE,EAAS,OAAK,OAAK,OAAK,QAAM,OAAK,OAAK,OAAK,cAAcsJ,EAAK,cAAcC,EAAK,cAAcC,EAAK,YAAYrG,EAAM,cAAcsG,EAAK,cAAcC,EAAK,cAAcC,EAAK,aAAW,sBAAoB,qBAAmB,aAAW,YAAU,mBAAmBpY,EAAW,kBAAkBC,EAAU,YAAU,gBAAc,oBAAkB,kBAAkBC,EAAU,sBAAsBrB,EAAc,0BAA0BC,EAAkB,yBAAyB8Y,EAAU,SAAS,GAAK,yBAAyBA,EAAU,UAAU,GAAG,sBAAsBA,EAAU,OAAO,UAAU,sBAAsBA,EAAU,OAAO,IAAI,wBAAwBA,EAAU,SAAS,EAAE,qBAAqBA,EAAU,MAAM,IAAI,qBAAqBA,EAAU,MAAM,EAAE,yBAAyBA,EAAU,UAAU,IAAI,mBAAmB1E,EAAS,aAAa,GAAM,wBAAwBA,EAAS,iBAAiB,EAAE,CAAE,CAAC,SAAgBsF,GAA4B,EAAM,EAAQ,CAAC,EAAE,CAAC,IAAMpB,EAAUzvB,GAAS,WAAWA,GAAS,OAAOA,GAAS,aAAa,EAAQ8wB,EAAWvB,GAA4Bt1B,EAAMw1B,CAAS,EAAQsB,EAAY3C,GAAoCn0B,EAAM,CAAC,MAAMw1B,EAAU,UAAUzvB,GAAS,SAAS,CAAC,EAAQgxB,EAAUjB,GAAkC91B,CAAK,EAAQg3B,EAAKh3B,GAAO,aAAa,CAAC,EAAQu0B,EAAGv0B,GAAO,IAAI,CAAC,EAAQi3B,GAAqBj3B,GAAO,kBAAkB,CAAC,EAAA,CAAG,IAAIyyB,EAAoC,EAAQyE,EAAkB,CAAC,GAAGl3B,GAAO,gBAAgB,CAAC,EAAE,GAAG6zB,GAA6B7zB,GAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIuyB,EAAsC,EAAQ4E,GAAoBD,GAAmB,CAAC,EAAA,CAAG,OAAO,GAAMpH,GAAM,SAASA,GAAM,QAAQ,EAAQsH,EAAwB,KAAK,UAAUD,EAAmB,IAAI,GAAMrH,GAAM,SAAS,QAAQA,EAAK,WAAW,QAAQ,OAAOA,EAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,EAAQuH,GAAsBJ,GAAqB,CAAC,EAAA,CAAG,OAAO,GAAIK,GAAI,WAAWA,EAAG,uBAAuB,GAAK,EAAQC,EAA2BF,EAAqB,IAAI,GAAI,OAAOC,EAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAQE,EAAyB,KAAK,UAAUH,EAAqB,IAAI,GAAIC,GAAI,SAAS,QAAQA,EAAG,WAAW,QAAQ,OAAOA,EAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,EAAQG,EAAyBR,EAAoB,OAAO,GAAIK,GAAI,UAAUA,GAAI,WAAW,OAAO,KAAKA,EAAG,SAAS,CAAC,CAAC,OAAO,CAAC,EAAQI,EAAuB,KAAK,UAAUD,EAAyB,IAAI,IAAK,CAAC,SAASH,EAAG,SAAS,UAAUA,EAAG,SAAS,EAAE,CAAC,EAAQK,EAA0B,KAAK,UAAUN,EAAqB,IAAI,IAAK,CAAC,SAASC,GAAI,SAAS,SAASA,GAAI,SAAS,UAAUA,GAAI,UAAU,YAAYA,GAAI,YAAY,SAASA,GAAI,SAAS,gBAAgBA,GAAI,gBAAgB,WAAWA,GAAI,WAAW,cAAcA,GAAI,cAAc,cAAcA,GAAI,cAAc,iBAAiBA,GAAI,iBAAiB,WAAWA,GAAI,WAAW,oBAAoBA,GAAI,oBAAoB,mBAAmBA,GAAI,mBAAmB,YAAYA,GAAI,YAAY,yBAAyBA,GAAI,yBAAyB,YAAYA,GAAI,YAAY,WAAWA,GAAI,WAAW,WAAWA,GAAI,WAAW,uBAAuBA,GAAI,uBAAuB,uBAAuBA,GAAI,uBAAuB,oBAAoBA,GAAI,oBAAoB,WAAWA,GAAI,WAAW,aAAaA,GAAI,aAAa,uBAAuBA,GAAI,uBAAuB,uBAAuBA,GAAI,uBAAuB,oBAAoBA,GAAI,oBAAoB,UAAUA,GAAI,UAAU,UAAUA,GAAI,UAAU,aAAaA,GAAI,aAAa,eAAeA,GAAI,cAAc,EAAE,CAAC,EAAQM,EAAY7xB,GAAS,aAAa,WAAiB8xB,EAAS,CAAC,CAACf,EAAY,mBAAyBgB,EAAgBd,EAAK,MAAMzC,EAAG,iBAAiB,GAAWwD,EAAyBf,EAAK,eAAezC,EAAG,0BAA0B,IAAUyD,EAAqBF,GAAiBD,EAAeI,EAAcL,IAAc,cAAoBM,EAAWN,IAAc,WAAiBO,EAAsBF,EAAcJ,EAAS,KAAK,KAAKK,EAAWL,EAAS,KAAK,KAAKA,EAAS,KAAKE,EAA+BK,EAAkCD,EAAsB,EAAEJ,EAAyB,EAAE,KAAK,IAAIA,EAAyBI,CAAqB,EAAEA,EAAsBJ,EAA+BM,EAAuBJ,EAAc,KAAK,IAAIpB,EAAW,cAAc,GAAG,EAAEqB,GAAYF,EAAqB,KAAK,IAAInB,EAAW,cAAc,GAAG,EAAEA,EAAW,cAAoByB,EAAsB,IAAoBzB,EAAW,aAAmB0B,EAAoBN,GAAeC,GAAYF,EAAqB,GAAMnB,EAAW,WAAiB2B,GAAmBP,GAAeC,GAAYF,EAAqB,GAAMnB,EAAW,UAAgB4B,GAAmCR,GAAeD,EAAqB,GAAMnB,EAAW,0BAAgC6B,EAAyBT,GAAeD,EAAqB,GAAMnB,EAAW,gBAAsB8B,EAAuBV,EAAc,KAAK,IAAIpB,EAAW,cAAc,GAAG,EAAEmB,GAAsBE,EAAW,KAAK,IAAIrB,EAAW,cAAc,GAAG,EAAEA,EAAW,cAAoB+B,EAAkCX,EAAc,KAAK,IAAIlB,EAAU,yBAAyB,IAAI,EAAEiB,GAAsBE,EAAW,KAAK,IAAInB,EAAU,yBAAyB,GAAG,EAAEA,EAAU,yBAA+Br0B,EAAI,CAAC,GAAGm0B,EAAW,GAAGC,EAAY,GAAGC,EAAU,YAAYF,EAAW,aAAa72B,GAAO,aAAa,CAAC,EAAE,cAAcq4B,EAAuB,aAAaC,EAAsB,WAAWC,EAAoB,UAAUC,GAAmB,0BAA0BC,GAAmC,gBAAgBC,EAAyB,cAAcC,EAAuB,yBAAyBC,EAAkC,kBAAgB,YAAY5B,EAAK,aAAazC,EAAG,aAAa,GAAK,kBAAkBxuB,GAAS,eAAeixB,EAAK,QAAQzC,EAAG,oBAAoBuD,EAAgB,IAAI,GAAG,wBAAwB/xB,GAAS,cAAcixB,EAAK,cAAczC,EAAG,yBAAyB,IAAI,yBAAyB6D,EAAkC,qBAAqBpB,EAAK,WAAWzC,EAAG,sBAAsB,GAAK,uBAAuBxuB,GAAS,aAAaixB,EAAK,aAAazC,EAAG,wBAAwB,GAAK,0BAA0BxuB,GAAS,gBAAgBixB,EAAK,gBAAgBzC,EAAG,2BAA2B,GAAK,iBAAiByC,EAAK,OAAOzC,EAAG,kBAAkB,GAAM,qBAAqB0D,EAAc,GAAMjB,EAAK,WAAWzC,EAAG,sBAAsB,CAACuD,EAAgB,aAAavD,EAAG,WAAW,GAAK,eAAeA,EAAG,YAAY,GAAM,iBAAiBA,EAAG,cAAc,GAAM,kBAAkBA,EAAG,YAAY,MAAM,SAASA,EAAG,UAAU,GAAM,aAAaA,EAAG,UAAU,GAAG,kBAAkBA,EAAG,eAAe,GAAG,eAAeA,EAAG,YAAY,yBAAyB,eAAeA,EAAG,YAAY,wBAAwB,SAASA,EAAG,UAAU,GAAM,aAAaA,EAAG,UAAU,EAAE,cAAcA,EAAG,eAAe,GAAM,kBAAkBA,EAAG,eAAe,EAAE,mBAAmBA,EAAG,cAAc,GAAM,sBAAsB,GAAK,gBAAgB5yB,GAAwB,mBAAmBk2B,EAAS,eAAeX,EAAkB,qBAAmB,yBAAyBC,EAAmB,OAAO,EAAE,uBAAuBC,EAAwB,iBAAiBH,EAAoB,uBAAqB,6BAA2B,2BAAyB,yBAAuB,2BAA2BI,EAAqB,OAAO,EAAE,6BAA6BA,EAAqB,KAAK,GAAI,CAAC,CAACC,GAAI,SAAS,EAAE,2BAAyB,2BAAyB,EAA+N,MAA7N,GAAI,cAAc70B,GAAaC,CAAG,EAAE,EAAI,cAAcC,GAAaD,CAAG,EAAE,EAAI,SAASG,GAAQH,CAAG,EAAE,EAAI,aAAaI,GAAYJ,CAAG,EAAE,EAAI,iBAAiBO,GAAgBP,CAAG,EAAE,EAAI,qBAAqBK,GAAiBL,CAAG,EAASA,CAAI,C,0DCD1nW,SAASo2B,GAAwB,EAAO,UAAU,CAAC,GAAiB,GAAM,GAAwB,YAAY,IAAI,EAAKC,IAAwB,qBAAqBA,EAAuB,EAAE,IAAMC,MAAS,CAAC,GAAGC,GAAiB,OAC9T,IAAMC,EAAW//B,IAAS,OAAuC,KAA3BA,EAAO,oBAAyB,GAAG,CAAC+/B,GAAK,CAACA,EAAI,WAAWA,EAAI,WAAW,OAE9G,IAAMC,GAAS,YAAY,IAAI,EAAEC,IAAyB,IAAUC,GAAW,EAAE,KAAK,IAAI,CAACF,EAAQ,CAAC,GAAG,IAAID,EAAI,YAAYI,EAAOD,CAAS,EAAE,GAAwB,sBAAsBL,CAAI,CAAE,EACjM,eAAe,CAAKC,KAAkB,GAAwB,sBAAsBD,CAAI,EAAG,EAAE,GAAG,CAAE,CAAC,SAASO,IAAwB,CAAC,AAA0ER,MAA9C,qBAAqBA,EAAuB,EAA0B,KAAM,CAA8L,SAAgBS,GAAmB,EAAI,CAAkC,GAA9B,CAACryB,GAAgCe,GAAY,IAAIf,CAAG,EAAE,OAAO,QAAQ,QAAQ,EAAE,GAAGgB,GAAiB,IAAIhB,CAAG,EAAE,OAAOgB,GAAiB,IAAIhB,CAAG,EAAE,IAAM6Q,EAAOnM,GAAa1E,CAAG,EAChoB,GAAUhO,IAAS,QAAaA,EAAO,oBAAoB,CAAC,IAAM+/B,EAAI//B,EAAO,oBAAuB,CAAC+/B,EAAI,WAAW,CAACA,EAAI,YAAYA,EAAI,WAAW/xB,CAAG,CAAG,CAC1J,KACGsyB,KAAqB,GAAEX,GAAwB3xB,CAAG,EAAE,IAAMuyB,EAAQ,IAAI,QAAQ,GAAS,CAAC,IAAMC,MAAwB,CAGzH,GAAGxxB,GAAiB,OAAO,GAAUhP,IAAS,QAAaA,EAAO,oBAAoB,CAAC,IAAM+/B,EAAI//B,EAAO,oBAAuB+/B,EAAI,WAAW,CAACA,EAAI,aAAYK,GAAuB,EAAEL,EAAI,YAAY/xB,EAAI,GAAG,GAC/M,GAAmB,EAAE,GAAkB,CAAE,CAAC,EAAQib,GAAQ,EAAO,IAAa,CAAC,GAAG,CAACla,GAAY,IAAIf,CAAG,EAAE,CACxG+P,GAAqBzE,CAAM,EAAE,IAAMwF,EAAezE,GAAiCf,EAAOlP,GAAY,CAAC,CAAC,EAAE2E,GAAY,IAAIf,EAAI,CAAC,MAAMsL,EAAO,WAAWwF,EAAe,IAAI,GAAGte,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,CAACwO,GAAiB,OAAOhB,CAAG,EAAE,KAAoBwyB,EAAoB,EAAE7b,EAAQ,CAAE,EAAQzW,EAAW,GAAO,CAAC,GAAG,CAACjD,EAAM,iBAAiB,OAC9T60B,KAAkB,GAAiB,GAAKM,GAAuB,GAAG,IAAMK,EAAIx1B,EAAM,OAAOA,EAAM,MAAM,GAAUjL,IAAS,QAAaA,EAAO,oBAAoB,CACpH,IAAM0gC,EAAY,EAAjD,KAAK,IAAIJ,GAAmB,CAAgC,GAAoBK,GAAkBF,GAAKC,EAAY1gC,EAAO,oBAAoB,YAAYgO,EAAI,KAAK,IAAIyyB,EAAI,IAAI,GAAG,CAAC,CAAE,CAAC,EAAQG,EAAM,GAAK,CAAC,QAAQ,KAAK,uBAAuB5yB,EAAIuP,CAAG,EAAEvO,GAAiB,OAAOhB,CAAG,EAAE,KAAoBwyB,EAAoB,EAAE7b,EAAQ,CACtV,EAAE,GAAG,CAAI9F,IAAS,MAAMvD,GAAatN,EAAIib,EAAO/a,EAAW0yB,CAAK,EAAU/hB,IAAS,MAAM5D,GAAmB,CAAC,CAAC,KAAK,GAAQ8D,EAAO,KAAK/Q,EAAI,GAAKib,EAAOvZ,EAAIA,EAAI,YAAY,CAAC,CAAC,EAAExB,EAAW0yB,CAAK,CAAC,CAAC,CAAC,MAAMA,CAAK,EAAO9lB,GAAoB,CAAC,CAAC,KAAK9M,EAAI,GAAGib,EAAOjK,EAAE,MAAMA,EAAE,UAAU,EAAE9Q,EAAW0yB,CAAK,CAAE,OAAOrjB,EAAI,CAACqjB,EAAMrjB,CAAG,CAAE,CAAC,CAAC,EAAoC,OAAlCvO,GAAiB,IAAIhB,EAAIuyB,CAAO,EAASA,CAAQ,CAAC,SAASM,GAAoB,EAAG,EAAQ,EAAM,EAAgB,KAAK,EAAgB,KAAK,CAAC,GAAG,CAAC9pB,EAAG,OAAO,IAAMyW,EAAMqC,GAAwB,EAAQiR,EAAStT,EAAM,MAAM,IAAIzW,CAAE,EAAQgqB,EAAa,CAACD,GAAUA,EAAS,UAAUvT,GAASuT,EAAS,kBAAkBE,EAAmBD,IAAc,EAAM,cAAcvT,EAAM,cAAc,GAAG,GAAG,IAAMyT,EAAYC,EAAgB,CAAC,GAAGr6B,EAAM,0BAA0Bq6B,CAAe,EAAEr6B,EAAM2mB,EAAM,MAAM,IAAIzW,EAAG,CAAC,KAAG,UAAQ,kBAAgB,MAAMkqB,EAAY,kBAAgB,SAASF,EAAavT,EAAM,aAAasT,GAAU,UAAUtT,EAAM,aAAa,UAAU,KAAK,IAAI,CAAC,CAAC,EAAKuT,GAAcjR,GAAoB,CAAG,CAAC,SAASqR,GAAkB,EAAG,CAAC,MAAM,iBAAiB,OAAOpqB,GAAI,MAAM,CAAC,CAAC,QAAQ,kBAAkB,GAAG,GAAI,CAAC,SAASqqB,GAAwB,EAAG,EAAM,EAAQ,EAAS,CAAC,GAAUphC,IAAS,QAAa,CAAC+W,GAAI,CAACwW,EAAQ,OAAO,IAAM8T,EAAIrhC,EAAashC,EAAS,AAA0BD,EAAI,sBAAoB,CAAC,sBAAM,IAAI,IAAI,SAAS,CAAC,EAAG,AAAe9T,EAAQ,KAAGgU,EAAM,IAAMT,EAASQ,EAAS,MAAM,IAAIvqB,CAAE,EAAEuqB,EAAS,MAAM,IAAIvqB,EAAG,CAAC,KAAG,QAAM,UAAQ,SAAS2lB,GAAU,GAAG,UAAUoE,GAAU,WAAW,KAAK,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,EAAE,EAAS,UAAU,CAAE,CAAC,SAASU,GAAwB,EAAG,CAAC,GAAUxhC,IAAS,QAAa,CAAC+W,EAAG,OAAO,IAAMuqB,EAASthC,EAAO,oBAAuBshC,GAAU,OAAO,SAASvqB,CAAE,IAAG,EAAS,UAAUuqB,EAAS,UAAU,GAAG,EAAG,CAAC,SAASG,GAAoB,EAAG,CAAK1qB,GAAsB8Y,GAAiC,CAAC,CAAC,MAAM,OAAO9Y,CAAE,GAAG+Y,GAAoB,CAAG,CAQ13D,SAAS4R,GAAoB,EAAM,CAAC,GAAK,CAAC,cAAY,MAAM,SAASC,EAAa,GAAG,YAAU,GAAG,UAAUC,EAAI,CAAC,EAAE,SAASC,EAAK,CAAC,EAAE,YAAYC,EAAM,CAAC,EAAE,GAAGC,EAAI,CAAC,EAAE,QAAM,CAAC,GAAGl7B,EAAYm7B,EAAQjoC,EAAO,IAAI,EAAO,CAACkoC,EAAeC,GAAmBloC,MAAak2B,GAAwB,CAAC,EAAO,CAACiS,EAAkBC,GAAsBpoC,EAAS,CAAC,EAAQqoC,EAAoBT,EAAI,YAAY,IAAUU,EAAmBT,EAAK,YAAYQ,EAA0BE,EAAchK,GAA8B1xB,EAAM+6B,CAAG,EAAO,CAACY,EAAsBC,IAA0BzoC,EAAS,CAAC,EAAQ0oC,GAAeF,EAAsB,GAAGA,GAAuBH,EAA0BM,EAAuBH,EAAsB,GAAGA,GAAuBF,EAAmB3hC,MAAc,CAAC,GAAUX,IAAS,OAAY,OAAO,IAAM4iC,MAAW,CAAC,IAAM3yB,EAAM+xB,EAAQ,SAAS,aAAahiC,EAAO,YAAY,EAAEyiC,GAAyB,GAAMI,IAAO5yB,EAAM4yB,EAAK5yB,CAAK,CAAE,EAAE2yB,EAAO,EAAE,IAAIE,EAAG,KAAkK,OAA1J,OAAO,eAAiB,KAAad,EAAQ,UAAS,EAAG,IAAI,eAAeY,CAAM,EAAEE,EAAG,QAAQd,EAAQ,OAAO,GAAGhiC,EAAO,iBAAiB,SAAS4iC,CAAM,MAAY,CAACE,GAAI,WAAW,EAAE9iC,EAAO,oBAAoB,SAAS4iC,CAAM,CAAE,CAAE,EAAE,CAACP,EAAoBC,CAAkB,CAAC,EACluC,IAAMvE,EAAkBl3B,EAAM,gBAAgB,CAAC,EACzCi3B,EAAoBj3B,EAAM,kBAAkB,CAAC,EAC7Ck8B,GAAUpL,GAA4B4K,EAAc,UAAUG,EAAc,EAAQM,GAAWnL,GAA2B0K,EAAc,SAASI,CAAsB,EAAQM,EAAe9G,GAA4BoG,EAAcC,CAAqB,EAAQU,GAAWH,GAAU,OAAO,EAAQI,GAAaJ,GAAU,MAAM,EAAQK,GAAaL,GAAU,MAAM,EAAQM,GAAaN,GAAU,MAAM,EAAQO,GAAeP,GAAU,MAAM,EAAQQ,GAAeR,GAAU,MAAM,EAAQS,GAAeT,GAAU,MAAM,EAAQU,GAAWR,EAAe,WAAiBS,GAAgBT,EAAe,gBAAsBU,GAAgBV,EAAe,gBAAsBW,GAAgBX,EAAe,gBAAsBY,GAAUZ,EAAe,UAAgBa,EAAab,EAAe,aAAmBc,GAAgBd,EAAe,gBAAsBe,GAAsBf,EAAe,sBAA4BgB,GAAkBhB,EAAe,kBAAwBiB,GAAgBjB,EAAe,gBAAsBkB,EAAkBlB,EAAe,kBAAwBmB,GAAWnB,EAAe,WAAiBoB,GAAcpB,EAAe,cAAoBqB,GAAqBrB,EAAe,qBAA2BsB,GAA0BtB,EAAe,0BAAgCuB,GAAsBvB,EAAe,sBAA4BwB,GAA0BxB,EAAe,0BAAgCyB,GAAsBzB,EAAe,sBAA4B0B,GAAa1B,EAAe,aAAmB2B,GAAa3B,EAAe,aAAmB4B,GAAa5B,EAAe,aAAmB6B,GAAc7B,EAAe,cAAoB8B,EAAc9B,EAAe,cAAoB+B,EAAW/B,EAAe,WAAiBgC,GAAiBhC,EAAe,iBACrzDiC,GAAer+B,EAAM,aAAa,CAAC,EAAQs+B,EAAmBxJ,GAAuC90B,EAAM,CAAC,qBAAqB67B,EAAc,CAAC,EAAQ0C,GAAoBD,EAAmB,oBAA0BE,GAAWF,EAAmB,WAAiBG,GAAiBH,EAAmB,iBAAuBI,GAAgBJ,EAAmB,gBAAoBK,EAAgBL,EAAmB,gBAAoBjJ,EAAciJ,EAAmB,cAAkBlJ,GAAckJ,EAAmB,cAAkBM,GAAeN,EAAmB,eAAqBO,GAAuBP,EAAmB,uBAA6BQ,GAAcR,EAAmB,cAAoBS,GAAmBT,EAAmB,mBAAyBU,GAAyBV,EAAmB,yBAA6BW,GAAkBX,EAAmB,kBAAwBY,GAAwBZ,EAAmB,wBAA8Ba,GAAmBb,EAAmB,mBAAyBc,EAAgC,CAAC,CAACp/B,EAAM,wBAA8Bq/B,GAAoBf,EAAmB,oBAA0BgB,GAAuBhB,EAAmB,uBAA6BiB,GAAgBjB,EAAmB,gBAAsBkB,GAAclB,EAAmB,cAAoBmB,GAAanB,EAAmB,aAAmBoB,GAAcpB,EAAmB,cAAoBqB,GAAcrB,EAAmB,cAAoBsB,GAAetB,EAAmB,eAAqBuB,GAAyB,CAAC,KAAoBxK,EAAcD,GAAcwJ,GAAeC,GAAuB,MAAkB,MAAuB,MAA6BI,GAAkB,MAA4B,IAAmC,CAAC,CAAC,KAAK,GAAG,EAAQa,EAAQhK,GAAkC4F,CAAa,EAAQqE,GAAgBD,EAAQ,gBAAsBE,GAAiBF,EAAQ,iBAAuBG,GAAcH,EAAQ,cAAoBI,GAAcJ,EAAQ,cAAoBK,GAAcL,EAAQ,cAAoBM,GAAYN,EAAQ,YAAkBO,GAAcP,EAAQ,cAAoBQ,GAAcR,EAAQ,cAAoBS,GAAcT,EAAQ,cAAoBU,GAAmBV,EAAQ,mBAAyBW,GAAkBX,EAAQ,kBAAwBY,GAAkBZ,EAAQ,kBAAwBa,GAAsBb,EAAQ,sBAA4Bc,GAA0Bd,EAAQ,0BAAgCe,GAAyBf,EAAQ,yBAA+BgB,GAAyBhB,EAAQ,yBAA+BiB,GAAsBjB,EAAQ,sBAA4BkB,GAAsBlB,EAAQ,sBAA4BmB,GAAwBnB,EAAQ,wBAA8BoB,GAAqBpB,EAAQ,qBAA2BqB,GAAqBrB,EAAQ,qBAA2BsB,GAAyBtB,EAAQ,yBAA+BuB,GAAejF,EAAe,eAAqBkF,GAAgBlF,EAAe,gBAAsBmF,GAAgBnF,EAAe,gBAAsBoF,GAAoBpF,EAAe,oBAA0BqF,GAAYrF,EAAe,YAAkBsF,GAAiBtF,EAAe,iBAAuBuF,GAAUvF,EAAe,UAAgBwF,GAAUxF,EAAe,UAAgByF,GAAUzF,EAAe,UAAgB0F,GAAmB1F,EAAe,mBAAyB2F,GAAa3F,EAAe,aAAmB5f,GAAU4f,EAAe,UAAgB4F,GAAI5F,EAAe,IAAU6F,GAAY7F,EAAe,YAAkB8F,GAAe9F,EAAe,eAAqB+F,GAAM/F,EAAe,MAAYgG,GAAehG,EAAe,eAAqBiG,GAAWjG,EAAe,WAAiBkG,GAAgBlG,EAAe,gBAAsBmG,GAAanG,EAAe,aAAmBlf,GAAkBkf,EAAe,kBAAwBnf,GAAcmf,EAAe,cAAoBoG,GAAQpG,EAAe,QAAcqG,GAAUrG,EAAe,UAAgBsG,GAA2BtG,EAAe,2BAAiCuG,GAAYvG,EAAe,YAAkBwG,GAAexG,EAAe,eAAqByG,GAAWzG,EAAe,WAAiB0G,GAAa1G,EAAe,aAAmB2G,GAAc3G,EAAe,cAAoB4G,GAAe5G,EAAe,eAAqB6G,GAAY7G,EAAe,YAAkB8G,GAAY9G,EAAe,YAAkB+G,GAAS/G,EAAe,SAAegH,GAAWhH,EAAe,WAAiBiH,GAAmBjH,EAAe,mBAAyBkH,GAAWlH,EAAe,WAAiBmH,GAASnH,EAAe,SAAeoH,GAAWpH,EAAe,WAAiBqH,GAAerH,EAAe,eAAqBsH,GAAetH,EAAe,eAAqBuH,GAAiBvH,EAAe,iBAAuBwH,GAA0BxH,EAAe,0BAAgCyH,GAA4BzH,EAAe,4BAAkC0H,GAAgB1H,EAAe,gBAAsB2H,GAAmB3H,EAAe,mBAAyB4H,GAAW5H,EAAe,WAAiB6H,GAAW7H,EAAe,WAAiB8H,GAAgB9H,EAAe,gBAAsB+H,GAAgB/H,EAAe,gBAAsBgI,GAAUhI,EAAe,UAAgBiI,GAASjI,EAAe,SAAekI,GAAYlI,EAAe,YAAkBmI,GAAWnI,EAAe,WAAiBoI,GAAatJ,EAAI,WAAW,GAAWuJ,GAAevJ,EAAI,YAAY,GAAYwJ,GAAiBxJ,EAAI,cAAc,GAAYyJ,GAAkBzJ,EAAI,YAAY,MAAY0J,GAAS1J,EAAI,UAAU,GAAY2J,GAAa3J,EAAI,UAAU,GAAS4J,GAAkB5J,EAAI,eAAe,GAAS6J,GAAe7J,EAAI,YAAY,yBAA+B8J,GAAe9J,EAAI,YAAY,wBAA8B+J,GAAS/J,EAAI,UAAU,GAAYgK,GAAahK,EAAI,UAAU,EAAQiK,GAAcjK,EAAI,eAAe,GAAYkK,GAAkBlK,EAAI,eAAe,EAAQmK,GAAmBnK,EAAI,cAAc,GAAYoK,GAAmBxF,EAAQ,mBAAyByF,GAAwBzF,EAAQ,wBAA8BrJ,GAAWqJ,EAAQ,WAAiBpJ,GAAoBoJ,EAAQ,oBAA0BnJ,GAAmBmJ,EAAQ,mBAAyB0F,GAAgBrR,GAAoCuH,EAAc,CAAC,eAAeS,GAAW,UAAUL,CAAsB,CAAC,EAAQ2J,GAAmBD,GAAgB,mBAAyBE,GAAiBF,GAAgB,iBAAuBG,GAAUH,GAAgB,UAAgBI,GAAWJ,GAAgB,WAAiBK,GAAYL,GAAgB,YAAkBM,GAAaN,GAAgB,aAAmBO,GAAaP,GAAgB,aAAmBQ,GAAoBR,GAAgB,oBAA0BS,GAAkBT,GAAgB,kBAAwBU,GAA2BV,GAAgB,2BAAiCW,GAA+BX,GAAgB,+BAAqCY,GAA8BZ,GAAgB,8BAAoCa,GAA+Bb,GAAgB,+BAAqCc,GAAcd,GAAgB,cAAoBe,GAAcf,GAAgB,cAAoBgB,GAAsBhB,GAAgB,sBAA4BiB,GAAsBjB,GAAgB,sBAA4BkB,GAAsBlB,GAAgB,sBAA4BmB,GAAsBnB,GAAgB,sBAA4BoB,GAAsBpB,GAAgB,sBAA4BqB,GAAsBrB,GAAgB,sBAA4BsB,GAAwBtB,GAAgB,wBAA8BuB,GAAwBvB,GAAgB,wBAA8BwB,GAAwBxB,GAAgB,wBAA8ByB,GAAoBzB,GAAgB,oBAA0B1N,GAAgBmD,EAAM,MAAMC,EAAI,iBAAiB,GAAWgM,GAAYjM,EAAM,aAAaC,EAAI,aAAa,GAAWiM,GAAoB/L,EAAe,aAAa,WAAiBgM,GAAsBnM,EAAM,QAAQC,EAAI,oBAAoBpD,GAAgB,IAAI,GAASuP,GAA4BpM,EAAM,cAAcC,EAAI,yBAAyB,IAAUoM,GAAkBlM,EAAe,eAAe,KAAkEgM,GAA7D,KAAK,IAAIA,GAAsBhM,EAAe,aAAa,EAA8BmM,GAAwBnM,EAAe,cAAc,KAAuEiM,GAAlE,KAAK,IAAIA,GAA4BjM,EAAe,YAAY,EAAoCrD,GAAyBkD,EAAM,eAAeC,EAAI,0BAA0B,IAAUsM,GAAqBvM,EAAM,WAAWC,EAAI,sBAAsB,GAAWuM,GAAuBrM,EAAe,aAAaH,EAAM,aAAaC,EAAI,wBAAwB,GAAWwM,GAA0BtM,EAAe,gBAAgBH,EAAM,gBAAgBC,EAAI,2BAA2B,GAAWyM,GAAiB1M,EAAM,OAAOC,EAAI,kBAAkB,GAAY0M,GAAqBT,KAAsB,cAAc,GAAMlM,EAAM,WAAWC,EAAI,sBAAsB,CAACpD,GAAsBE,GAAqBF,IAAiB+D,GAAqBgM,GAAsBV,KAAsB,cAAoBW,GAAmBX,KAAsB,WAAiBhP,GAAsB0P,GAAsBhM,GAAe,KAAK,KAAKiM,GAAmBjM,GAAe,KAAK,KAAKA,GAAe,KAAK9D,GAA+BK,GAAkCD,GAAsB,EAAEJ,GAAyB,EAAE,KAAK,IAAIA,GAAyBI,EAAqB,EAAEA,GAAsBJ,GAA+BM,GAAuBwP,GAAsB,KAAK,IAAI3J,EAAc,GAAG,EAAE4J,IAAoB9P,GAAqB,KAAK,IAAIkG,EAAc,GAAG,EAAEA,EAAoB5F,GAAsB,KAA4BwK,GAAmBvK,GAAoBsP,IAAuBC,IAAoB9P,GAAqB,GAAMgM,GAAiBxL,GAAmBqP,IAAuBC,IAAoB9P,GAAqB,GAAMoM,GAAgB3L,GAAmCoP,IAAuB7P,GAAqB,GAAM4L,GAAgClL,GAAyBmP,IAAuB7P,GAAqB,GAAM8L,GAAsBnL,GAAuBkP,GAAsB,KAAK,IAAIrI,GAAc,GAAG,EAAExH,IAAsB8P,GAAmB,KAAK,IAAItI,GAAc,GAAG,EAAEA,GAAoB5G,GAAkCiP,GAAsB,KAAK,IAAIzG,GAAyB,IAAI,EAAEpJ,IAAsB8P,GAAmB,KAAK,IAAI1G,GAAyB,GAAG,EAAEA,GAAgE2G,GAAgBpmC,GACx2Vk0B,EAASmS,IAAc,OAAOC,GAAW,GAAGnN,GAAc,GAClBnF,IAAvB31B,EAAM,QAAQ,CAAC,EAAA,CAAuC,IAAI,GAAM,CAAC,GAAG,CAACgD,EAAK,OAAOA,EAAK,IAAM4yB,EAAStD,GAAkCtvB,CAAI,EAA0CklC,GAA9BllC,EAAK,aAAa,SAA+B,OAAOA,EAAK,WAAW,GAAGA,EAAK,UAAU,GAAG,MAAM,CAAC,GAAG4yB,EAAS,SAASsS,CAAY,CAAE,CAAC,EAAQC,GAAUj1C,EAAO,IAAI,EAAQk1C,GAAOl1C,EAAO,CAAC,EAAO,CAACm1C,GAAOC,IAAWn1C,EAAS,EAAE,EAAO,CAACo1C,GAAgBC,IAAoBr1C,EAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAO,CAACs1C,GAAmBC,IAAuBv1C,EAAS,CAAC,CAAC,EAAQw1C,EAASz1C,EAAO,IAAI,EAC1iB,CAAC01C,GAAYC,IAAgB11C,EAAS,IAAI,EAAQ21C,GAAe51C,EAAO01C,EAAW,EAAE,GAAe,QAAQA,GAAY,IAAMG,GAAkB,GAAM,CAAC,IAAM/M,EAAK8M,GAAe,QAAQ,GAAG,CAAC9M,GAAM,CAACroB,EAAK,OAAO,GAAG,CAACqoB,GAAM,CAACroB,EAAK,CAACk1B,GAAel1B,CAAI,EAAE,MAAO,CAAC,IAAMq1B,EAAM,KAAK,IAAIhN,EAAK,EAAEroB,EAAK,CAAC,GAAG,GAAG,KAAK,IAAIqoB,EAAK,EAAEroB,EAAK,CAAC,GAAG,EAAQs1B,EAAQjN,EAAK,OAAOroB,EAAK,MAAMqoB,EAAK,OAAOroB,EAAK,MAAMqoB,EAAK,QAAQroB,EAAK,OAAOqoB,EAAK,MAAMroB,EAAK,KAAKqoB,EAAK,OAAOroB,EAAK,MAAQq1B,GAAOC,IAASJ,GAAel1B,CAAI,CAAG,EAC1e,CAACu1B,GAAgBC,IAAoBh2C,EAAS,IAAI,EAAQi2C,GAAmBl2C,EAAOg2C,EAAe,EAAE,GAAmB,QAAQA,GAAgB,IAAMG,GAAsB,GAAM,CAAC,IAAMrN,EAAKoN,GAAmB,QAAQ,GAAG,CAACpN,GAAM,CAACroB,EAAK,OAAO,GAAG,CAACqoB,GAAM,CAACroB,EAAK,CAACw1B,GAAmBx1B,CAAI,EAAE,MAAO,CAAC,IAAMq1B,EAAM,KAAK,IAAIhN,EAAK,EAAEroB,EAAK,CAAC,GAAG,GAAG,KAAK,IAAIqoB,EAAK,EAAEroB,EAAK,CAAC,GAAG,EAAQs1B,EAAQjN,EAAK,OAAOroB,EAAK,MAAQq1B,GAAOC,IAASE,GAAmBx1B,CAAI,CAAG,EAAO,CAAC21B,GAAoBC,IAAwBp2C,EAAS,EAAK,EAAQq2C,GAAmBt2C,EAAO8M,EAAM,iBAAiB,EAAQypC,GAAiBv2C,EAAO8M,EAAM,eAAe,EAAQ0pC,GAAcx2C,EAAO8M,EAAM,YAAY,EAAQ2pC,GAAyBz2C,EAAO,IAAI,EAAE,GAAmB,QAAQ8M,EAAM,kBAAkB,GAAiB,QAAQA,EAAM,gBAAgB,GAAc,QAAQA,EAAM,aAAa,GAAyB,YAAY,CAACA,EAAM,0BAA0B,CAAE,EAC35B,IAAM4pC,GAASx2C,EAAM,EAAQy2C,GAAOz2C,EAAM,CAAC,CAAC,QAAQ,KAAK,GAAG,EAAQ02C,GAAiBxP,GAAkBuP,EAAM,EAAO,CAACE,GAAeC,IAAmB72C,EAAS,EAAK,EAAO,CAAC82C,GAAmBC,IAAuB/2C,EAAS,EAAK,EAAO,CAACg3C,GAAmBC,IAAuBj3C,EAAS,CAACuyC,EAAgB,EAAQ2E,GAAmBjP,EAAe,aAAa,YAAYpR,GAAgC,EAE9YsgB,GAAepwC,EAAa,QAAQ,IAAIA,EAAa,OAAaqwC,GAAuB,CAACF,IAAoBC,GAAqBE,GAAqBtD,IAAaqD,GAAuBzwC,MAAc,CAAC,GAAGuwC,GAAsP,OAAlOxjC,IAAwB,EAAK,EAAQ,IAAU,CAAI4jC,GAAMtP,EAAQ,SAAoBA,EAAQ,QAAQ,sBAAsB,EAAEkO,GAAsB,CAAC,EAAEqB,EAAQ,EAAEC,EAAQ,OAAK,QAAQ,EAAI,CAAC,GAAQtB,GAAsB,IAAI,CAAG,CAAC,MAAY,CAAIzhC,IAAoBf,GAAuB,IAAI,CAAE,CAAG,EAAE,CAACwjC,EAAkB,CAAC,EACliBvwC,MAAc,CAACb,MAAoB,CACnC+wC,GAAkB73B,GAAqB,IAAI,QAAQ,CAAE,CAAC,CAAE,EAAE,CAAC,CAAC,EAAErY,MAAc,CAAC,IAAM8wC,MAAS,CAACvP,EAAkBhS,GAAwB,CAAC,CAAE,EAAS,OAAPuhB,EAAK,EAASxhB,GAAyBwhB,CAAI,CAAE,EAAE,CAAC,CAAC,EAAE9wC,MAAc,CAACmU,GAAkB,YAAY,CAAE,EAAE,CAACmtB,EAAe,WAAWA,EAAe,cAAcA,EAAe,YAAYA,EAAe,eAAeA,EAAe,iBAAiBA,EAAe,cAAc,CAAC,EAAEthC,MAAc,CAAC,GAAGiwC,GAAe,CAACxO,EAAqB,CAAC,EAAE,MAAO,CAAC,IAAMpvB,EAAKgvB,EAAQ,QAAQ,GAAG,CAAChvB,GAAM,OAAO,qBAAuB,IAAY,CAACovB,EAAqB,CAAC,EAAE,MAAO,CAAC,IAAMsP,EAAS,IAAI,sBAAsB,CAAC9tB,KAAS,CAACwe,EAAqBxe,GAAO,mBAAmB,CAAC,CAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAyB,OAAvB8tB,EAAS,QAAQ1+B,CAAI,MAAY0+B,EAAS,WAAW,CAAE,EAAE,CAACd,EAAc,CAAC,EAAEjwC,MAAc,CAAKqhC,EAAQ,UAAenB,GAAoB6P,GAAO1O,EAAQ,QAAQO,EAActM,GAA6B+L,EAAQ,OAAO,EAAE2P,EAAY,OAAO,EAAEvQ,GAAwBsP,GAAOC,GAAiB3O,EAAQ,QAAQtF,CAAQ,EAAE,EAAE,CAACgU,GAAOC,GAAiBjU,EAAS6F,EAAcqO,GAAelK,GAAyB7/B,EAAM,kBAAkBA,EAAM,gBAAgBA,EAAM,YAAY,CAAC,EAAElG,UAAyB,CAAC8gC,GAAoBiP,EAAM,EAAElP,GAAwBkP,EAAM,CAAE,EAAI,CAACA,EAAM,CAAC,EAAE/vC,MAAc,CAAC,IAAMixC,EAAS54B,GAAqB,IAAI,SAAS,GAAG,CAACq4B,IAAsBxgB,GAAgC,EAAE,CAACkgB,GAAsB,EAAK,EAAE,MAAO,CAG77C,IAAMc,EAAU/8B,GAAkB,qBAAqB,EAAgL,GAA3E,EAA9B6pB,IAAiBkT,IAA0B,EAA5FxD,IAAsBwD,IAAsFD,GAAiDzP,EAAkB,EAAE,CAAC4O,GAAsB,EAAI,EAAE,MAAO,CAAC,IAAM/9B,EAAKgvB,EAAQ,QAAQ,GAAG,CAAChvB,GAAM,OAAO,qBAAuB,IAAY,CAAC+9B,GAAsB,EAAI,EAAE,MAAO,CAAC,IAAMW,EAAS,IAAI,sBAAsB,CAAC9tB,KAAS,CAAIA,GAAO,iBAAgBmtB,GAAsB,EAAI,EAAEW,EAAS,WAAW,EAAG,EAAE,CAAC,WAAW,MAAM,UAAU,CAAC,CAAC,EAAyB,OAAvBA,EAAS,QAAQ1+B,CAAI,MAAY0+B,EAAS,WAAW,CAAE,EAAE,CAACL,GAAqB1S,GAAgB0P,GAAqB+C,GAAuBjP,CAAiB,CAAC,EAAExhC,MAAc,CAAC,GAAG2rC,KAAqB,YAAY,CAACC,GAAiB,CAAC0E,GAAsB,EAAI,EAAE,MAAO,CAAC,IAAIa,EAAI,EAAQC,MAAe,CAAC,IAAM/+B,EAAKgvB,EAAQ,QAAQiP,GAAsB,CAAC,CAACj+B,GAAMgB,GAAsBhB,EAAKu5B,EAAgB,CAAC,CAAE,EAAqD,OAAnDwF,EAAW,EAAE,EAAI,sBAAsBA,CAAU,MAAY,qBAAqBD,CAAG,CAAE,EAAE,CAACxF,GAAmBC,EAAgB,CAAC,EAAE,IAAMyF,IAAyBlU,GAAqB,CAAC,EAAA,CAAG,IAAIxE,EAAoC,EAAQ2Y,GAA4BD,GAAwB,OAAO,GAAI7T,GAAI,WAAWA,EAAG,uBAAuB,GAAK,EAAQ+T,GAAkCD,GAA4B,OAAO,EAAQE,GAAoCF,GAA4B,KAAK,GAAI,CAAC,CAAC9T,GAAI,SAAS,EAAQiU,GAAkCH,GAA4B,IAAI,GAAI,OAAO9T,EAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAQkU,GAAgCL,GAAwB,OAAO,GAAI7T,GAAI,UAAUA,GAAI,WAAW,OAAO,KAAKA,EAAG,SAAS,CAAC,CAAC,OAAO,CAAC,EAAQmU,GAA8B,KAAK,UAAUD,GAAgC,IAAI,IAAK,CAAC,SAASlU,EAAG,SAAS,UAAUA,EAAG,SAAS,EAAE,CAAC,EAAQoU,GAAgC,KAAK,UAAUN,GAA4B,IAAI,GAAI9T,GAAI,SAAS,QAAQA,EAAG,WAAW,QAAQ,OAAOA,EAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,EAAQqU,GAAsB,CAAC,GAAGzU,GAAmB,CAAC,EAAE,GAAGrD,GAA6BoD,GAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI1E,EAAsC,EAAQqZ,GAA0BD,GAAsB,OAAO,GAAM7b,GAAM,SAASA,GAAM,QAAQ,EAAQ+b,GAAgCD,GAA0B,OAAO,EAAQE,GAA8B,KAAK,UAAUF,GAA0B,IAAI,GAAM9b,GAAM,SAAS,QAAQA,EAAK,WAAW,QAAQ,OAAOA,EAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,EAAQic,GAAoBtpC,GAAa,CAAC,kBAAe,mBAAgB,mBAAgB,uBAAoB,eAAY,oBAAiB,aAAU,aAAU,aAAU,sBAAmB,gBAAa,aAAU,OAAI,eAAY,kBAAe,SAAM,kBAAe,cAAW,mBAAgB,qBAAkB,iBAAc,gBAAa,UAAO,CAAC,EAAQupC,GAAoBrpC,GAAa,CAAC,yBAAsB,6BAA0B,yBAAsB,gBAAa,gBAAa,gBAAa,iBAAc,cAAc01B,GAAuB,aAAW,oBAAiB,YAAYgG,EAAc,CAAC,EAAQ4N,GAAeppC,GAAQ,CAAC,qBAAkB,oBAAkB,mBAAgB,cAAW,iBAAc,wBAAqB,6BAA0B,wBAAqB,CAAC,EAAQqpC,GAAmBppC,GAAY,CAAC,aAAaw1B,GAAsB,iBAAc,kBAAe,eAAY,eAAY,YAAS,cAAW,kBAAe,kBAAe,oBAAiB,0BAA0BG,GAAmC,+BAA4B,gBAAgBC,GAAyB,sBAAmB,WAAWH,GAAoB,cAAW,mBAAgB,mBAAgB,UAAUC,GAAmB,YAAS,eAAY,cAAW,sBAAmB,cAAW,YAAS,aAAU,CAAC,EAAQ2T,GAAuBJ,GAAoB,IAAIC,GAAoB,IAAIC,GAAe,IAAIC,GAAyBE,GAAuBxV,GAA4B8E,EAAc,CAAC,UAAUC,EAAsB,YAAYwL,GAAoB,cAAc/L,EAAe,cAAc,aAAaA,EAAe,aAAa,YAAYA,EAAe,YAAY,eAAeA,EAAe,cAAc,CAAC,EAAQ0P,EAAY53C,EAAO,CAAC,CAAC,EAAE,EAAY,QAAQ,CAAC,GAAGk5C,GAAuB,cAAW,gBAAa,gBAAa,gBAAa,kBAAe,kBAAe,kBAAe,mBAAgB,yBAAsB,cAAW,mBAAgB,mBAAgB,mBAAgB,aAAU,eAAa,qBAAkB,oBAAkB,mBAAgB,cAAW,iBAAc,wBAAqB,6BAA0B,yBAAsB,6BAA0B,yBAAsB,gBAAa,gBAAa,gBAAa,iBAAc,cAAc/T,GAAuB,aAAW,oBAAiB,YAAYgG,GAAe,uBAAoB,cAAW,oBAAiB,mBAAgB,kBAAgB,gBAAc,iBAAc,kBAAe,0BAAuB,iBAAc,sBAAmB,4BAAyB,qBAAkB,2BAAwB,sBAAmB,kCAAgC,wBAAwBsL,GAAyB,QAAQ,kBAAkBH,GAAmB,QAAQ,gBAAgBC,GAAiB,QAAQ,aAAaC,GAAc,QAAQ,uBAAoB,0BAAuB,mBAAgB,cAAc/Q,GAAuB,gBAAa,iBAAc,iBAAc,kBAAe,mBAAgB,oBAAiB,iBAAc,iBAAc,iBAAc,eAAY,iBAAc,iBAAc,iBAAc,sBAAmB,qBAAkB,qBAAkB,yBAAsB,6BAA0B,4BAAyB,4BAAyB,yBAAsB,yBAAsB,2BAAwB,wBAAqB,wBAAqB,yBAAyBC,GAAkC,kBAAe,oBAAiB,aAAU,aAAU,aAAU,sBAAmB,gBAAa,aAAU,OAAI,eAAY,kBAAe,SAAM,kBAAe,cAAW,mBAAgB,qBAAkB,iBAAc,gBAAa,WAAQ,aAAU,8BAA2B,eAAY,kBAAe,cAAW,aAAaN,GAAsB,iBAAc,kBAAe,eAAY,eAAY,YAAS,cAAW,kBAAe,kBAAe,oBAAiB,0BAA0BG,GAAmC,+BAA4B,gBAAgBC,GAAyB,sBAAmB,WAAWH,GAAoB,cAAW,mBAAgB,mBAAgB,UAAUC,GAAmB,YAAS,eAAY,cAAW,sBAAmB,cAAW,YAAS,cAAW,gBAAa,kBAAe,oBAAiB,qBAAkB,YAAS,gBAAa,qBAAkB,kBAAe,kBAAe,YAAS,gBAAa,iBAAc,qBAAkB,sBAAmB,sBAAmB,2BAAwB,cAAW,uBAAoB,sBAAmB,sBAAmB,oBAAiB,aAAU,cAAW,eAAY,gBAAa,gBAAa,uBAAoB,qBAAkB,8BAA2B,kCAA+B,iCAA8B,kCAA+B,iBAAc,iBAAc,yBAAsB,yBAAsB,yBAAsB,yBAAsB,yBAAsB,yBAAsB,2BAAwB,2BAAwB,2BAAwB,uBAAoB,mBAAgB,YAAYgS,GAAqB,qBAAkB,2BAAwB,yBAAyBpS,GAAkC,wBAAqB,0BAAuB,6BAA0B,oBAAiB,wBAAqB,yBAAsB,mBAAgB,mBAAmByD,GAAe,iBAAc,eAAe8P,GAAsB,mBAAmBC,GAA0B,yBAAyBC,GAAgC,uBAAuBC,GAA8B,iBAAiBX,GAAwB,qBAAqBC,GAA4B,2BAA2BG,GAAkC,yBAAyBC,GAAgC,uBAAuBC,GAA8B,2BAA2BJ,GAAkC,6BAA6BC,GAAoC,yBAAyBI,GAAgC,cAAcK,GAAoB,cAAcC,GAAoB,SAASC,GAAe,aAAaC,GAAmB,iBAAiBC,EAAsB,EAAE,EAAY,QAAQ,qBAAqBppC,GAAiB+nC,EAAY,OAAO,EAAE,IAAMuB,GAA2BjN,EAAgC0L,EAAY,QAAQ,qBAAqB,GAASwB,GAAoB,KAAK,WAAW3W,IAAe,CAAC,EAAA,CAAG,IAAI,GAAM3yB,GAAM,UAAU,EAAE,CAAC,EAAQupC,GAAqB,KAAK,WAAW5W,IAAe,CAAC,EAAA,CAAG,IAAI,GAAM3yB,EAAK,CAAC,aAAa,CAAC,CAACA,EAAK,aAAa,SAAS,OAAOA,EAAK,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,MAAM,SAASA,EAAK,UAAU,GAAG,UAAUA,EAAK,WAAW,IAAI,EAAE,IAAI,CAAC,EAIjjSlJ,MAAc,CAAC,GAAImwC,IAA8BpU,IAAgB2D,GAAmB3D,CAAQ,EACzFF,IAAe,QAAY,IAAA,IAAM3yB,KAAQ2yB,GAAkB3yB,GAAM,UAAU,CAAC+I,GAAkB/I,EAAK,QAAQ,GAAGw2B,GAAmBx2B,EAAK,QAAQ,CAAK,EAAE,CAAC6yB,EAAS,KAAK,UAAUF,IAAe,IAAI,GAAG7nB,GAAG,QAAQ,CAAC,EAAEm8B,EAAkB,CAAC,EACxOnwC,MAAc,CAAC,IAAMye,EAAO4vB,GAAU,QAAQ,GAAG,CAAC5vB,EAAO,OAAO,IAAM7V,EAAIooC,EAAY,QAAcC,EAAS54B,GAAqB,IAAI,SAAS,GAAG,CAACzP,EAAI,aAAa,CAACunC,IAAoBjgB,GAAgC,EAAE,CAAC,EAAS,QAAQ,KAAQigB,IAAoBC,GAAsB,EAAK,EAAG,MAAO,CAC9S,GAAY,QAAQ,GAAK,IAAMsC,EAAgB,QAAQ3C,GAAO,GAAGD,KAAWrxB,EAAO,aAAa,gCAAgCi0B,CAAe,EAAE,IAAM9gC,EAAS,IAAIrY,GAAoB,CAAC,SAAO,UAAUqP,EAAI,qBAAqB,MAAM,GAAK,gBAAgB,mBAAmB,mBAAmB,GAAK,QAAQ,EAAK,CAAC,EAAE,EAAS,UAAU,QAAQ,CAAC,EAAEA,EAAI,eAAeA,EAAI,aAAa,KAAK,GAAI/H,GAAI,SAASA,GAAI,UAAU,GAAG,EAAS,UAAU,KAAK,EAAmB,EAAS,YAAYmH,GAAcY,EAAI,cAAc,EAA4B,EAAS,oBAAoBA,EAAI,SAAS,EAAS,iBAAiBpP,GAAqB,EAAS,wBAAwBk5C,EAAgB3iB,GAA4B,SAAS,CAAC,KAAK,OAAO,QAAQ2iB,EAAgB,SAAO,WAAWxjB,GAAwB,CAAC,CAAC,WAAW,aAAa9uB,EAAa,QAAQ,EAAE,sBAAmB,eAAewI,EAAI,YAAY,UAAUsmB,GAAwB,CAAC,CAAC,WAAW,EAAE,UAAUA,GAAwB,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,CAACA,GAAwB,CAAC,CAAC,aAAa,CAAC,EAAE,IAAMhI,EAAM,IAAIztB,GAAY,AAA8BytB,EAAM,WAAhCte,EAAI,sBAA6F,KAAtDmL,EAAWnL,EAAI,eAAe,EAA6B,IACxpC+pC,EAAMtR,EAAQ,SAAS,aAAa,EAAQuR,EAAMvR,EAAQ,SAAS,cAAc,EAAQwR,EAAWF,EAAMC,EAAUp8B,EAAU5N,EAAI,aAAa,gBAAgB,EAAO,IAAIlP,GAAyB,IAAgBm5C,EAAW,EAAA,GAAiBA,EAAW,EAAA,EAAmB,GAAkB,IAAI,GAAG,EAAE,EAAO,KAAKjqC,EAAI,WAAW,EAAE4N,EAAO,uBAAuB,GACzW,EAAO,IAAI7c,GAAwB,GAAGk5C,EAAW,IAAI,GAAG,EAAGr8B,EAAO,SAAS,IAAI5N,EAAI,gBAAgBA,EAAI,gBAAgBA,EAAI,eAAe,EAC1I,IAAIkqC,EAAa,KAAQlqC,EAAI,aAAa,WAAU,EAAa,IAAIhP,GAAmB,EAAa,OAAOgP,EAAI,cAAc,MAAM,IAAMkjB,EAAS,IAAIjyB,GAAc2c,EAAOiI,CAAM,EAAE,EAAS,cAAc,GAAK,EAAS,cAAc,IAAI,EAAS,UAAU,GAAK,EAAS,SAAS,GAAG,EAAS,YAAY,GAAG,EAAS,aAAa7V,EAAI,oBAAoB,EAAS,QAAQA,EAAI,oBAAoB,EAAS,WAAWA,EAAI,WAAW,EAAS,WAAW,GAAM,EAAS,gBAAgBA,EAAI,gBAAgB,IAAMmqC,EAAa,IAAIj5C,GAAmB,SAAS8O,EAAI,qBAAqB,EAAEse,EAAM,IAAI6rB,CAAY,EAAE,IAAMC,EAAS,IAAIj5C,EAAuBga,EAAWnL,EAAI,qBAAqB,EAAEA,EAAI,yBAAyB,EAAEoqC,EAAS,SAAS,IAAIpqC,EAAI,cAAc,EAAEA,EAAI,cAAc,GAAGA,EAAI,cAAc,CAAC,EAAE,EAAS,WAAWA,EAAI,cAAc,IAAMoe,EAAOpe,EAAI,eAAe,KAAKoqC,EAAS,OAAO,QAAQ,IAAIhsB,EAAOA,CAAM,EAAE,EAAS,OAAO,KAAKpe,EAAI,YAAY,MAAM,EAAS,OAAO,WAAWA,EAAI,kBAAkB,IAAIse,EAAM,IAAI8rB,CAAQ,EAAE,IAAMC,EAAU,IAAIl5C,EAAuB,SAAS,EAAE,EAAEk5C,EAAU,SAAS,IAAI,GAAG,EAAE,EAAE,EAAE/rB,EAAM,IAAI+rB,CAAS,EAAE/rB,EAAM,IAAI,IAAIltB,GAAsB,SAAS,QAAQ,GAAG,CAAC,EAC1qC,IAAMk5C,EAAkB,CAAC,EACrBC,EAAe,KAAK,SAASC,EAAqB,EAAM,EAAK,EAAM,EAAO,CAAID,IAAgBjsB,EAAM,OAAOisB,CAAc,EAAEA,EAAe,SAAS,QAAQ,EAAEA,EAAe,SAAS,QAAQ,GAAG,IAAMxtB,EAAS,IAAI1rB,EAA2ByqB,EAAU,IAAI,aAAa1F,EAAM,CAAC,EAAQq0B,EAAW,IAAI,aAAar0B,EAAM,CAAC,EAAE,IAAI,IAAIjJ,EAAE,EAAEA,EAAEiJ,EAAM,IAAI,CAAC,IAAMs0B,EAAGv9B,EAAE,EAC/Vw9B,EAAEtlB,EAAO,KAAK,OAAO,EAAQulB,EAAM,KAAK,OAAO,EAAE,KAAK,GAAG,EAAQC,EAAI,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,EAAUH,GAAIC,EAAE,KAAK,IAAIE,CAAG,EAAE,KAAK,IAAID,CAAK,EAAE,EAAUF,EAAG,GAAGC,EAAE,KAAK,IAAIE,CAAG,EAAE,KAAK,IAAID,CAAK,EAAE,EAAUF,EAAG,GAAGC,EAAE,KAAK,IAAIE,CAAG,EACpO,EAAWH,IAAK,KAAK,OAAO,EAAE,IAAI,IAAI,EAAWA,EAAG,IAAI,KAAK,OAAO,EAAE,IAAI,IAAI,EAAWA,EAAG,IAAI,KAAK,OAAO,EAAE,IAAI,GAAI,CAAC3tB,EAAS,aAAa,WAAW,IAAIzrB,GAAsBwqB,EAAU,CAAC,CAAC,EAAEiB,EAAS,aAAa,WAAW,IAAIzrB,GAAsBm5C,EAAW,CAAC,CAAC,EAAE,IAAMztB,EAAS,IAAIzrB,GAAqB,CAAM,OAAK,MAAM4Z,EAAW0T,CAAK,EAAE,YAAY,GAAK,QAAQ,GAAG,SAAS,EAAuB,WAAW,EAAK,CAAC,EAAE,EAAe,IAAIrtB,GAAaurB,EAASC,CAAQ,EAAEsB,EAAM,IAAIisB,CAAc,CAAE,CAAC,SAASO,EAAgB,EAAM,EAAO,CAAC,GAAG,CAACP,EAAe,OAAO,IAAMzuB,EAAUyuB,EAAe,SAAS,WAAW,SAAS,MAAYE,EAAWF,EAAe,SAAS,WAAW,SAAS,MAAYn0B,EAAM0F,EAAU,OAAO,EAAE,IAAI,IAAI3O,EAAE,EAAEA,EAAEiJ,EAAM,IAAI,CAAC,IAAMs0B,EAAGv9B,EAAE,EAClpB,GADopB,EAAUu9B,IAAKD,EAAWC,GAAIzoC,EAAM,EAAUyoC,EAAG,IAAID,EAAWC,EAAG,GAAGzoC,EAAM,EAAUyoC,EAAG,IAAID,EAAWC,EAAG,GAAGzoC,EAC91B6Z,EAAU4uB,GAAI5uB,EAAU4uB,GAAI5uB,EAAU4uB,EAAG,GAAG5uB,EAAU4uB,EAAG,GAAG5uB,EAAU4uB,EAAG,GAAG5uB,EAAU4uB,EAAG,GAAarlB,EAAOA,EAAO,CAAC,IAAMslB,EAAEtlB,EAAO,KAAK,OAAO,EAAE,GAASulB,EAAM,KAAK,OAAO,EAAE,KAAK,GAAG,EAAQC,EAAI,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,EAAUH,GAAIC,EAAE,KAAK,IAAIE,CAAG,EAAE,KAAK,IAAID,CAAK,EAAE,EAAUF,EAAG,GAAGC,EAAE,KAAK,IAAIE,CAAG,EAAE,KAAK,IAAID,CAAK,EAAE,EAAUF,EAAG,GAAGC,EAAE,KAAK,IAAIE,CAAG,CAAE,CAAC,CAAC,EAAe,SAAS,WAAW,SAAS,YAAY,EAAK,CAAC,IAAME,EAAO,IAAIt5C,GAAW,IAAIC,EAAoB,GAAG,EAAE,EAAE,IAAIC,GAAqB,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAO,SAAS,EAAE,CAAC,KAAK,GAAG,EAAE,EAAO,cAAc,GAAK,EAAO,QAAQqO,EAAI,cAAcse,EAAM,IAAIysB,CAAM,EACvnB,IAAMC,EAAYp8B,GAA2Bm7B,EAAMC,EAAMhqC,CAAG,EAAQirC,EAAQD,EAAY,IAAIhiC,EAAS,cAAciiC,CAAO,EAAE,IAAIC,EAAS,KAASC,GAAM,KAASC,GAAW,KAASC,EAAS,KAASC,EAAU,KAASC,EAAQ,KAASC,GAAU,KAASC,GAAa,KAASnkC,GAAM,KAASE,EAAa,KAASC,GAAS,KAASC,GAAoB,KAASC,GAAU,KAASC,GAAU,KAAS8jC,GAAW,KAAS7jC,GAAK,KAAS8jC,GAAgB,GAAOC,GAAQ,EAAMC,GAAQ,EAAMC,GAAU,EAKzeC,GAAW,KAASC,GAAkB,GAAYC,MAA8B,CAAIF,IAAYC,KAAyB,GAAkB,GAAK9tC,GAAmB,CAAC,CAAC,KAAK,GAAM,CAAC,GAAWguC,EAAK,GAAkB,EAAM,CAAC,CAAC,CAAC,MAAM,GAAK,CAAC,GAAkB,GAAM,QAAQ,KAAK,2DAA2Dl4B,CAAG,CAAE,CAAC,EAAE,EAAQm4B,OAAmB,CAAC,IAAMvhC,EAAOq7B,EAAS,QAAYr7B,IAAc,EAAO,SAASsgC,EAAS,EAAO,MAAM5jC,GAAM,EAAO,SAAS+jC,EAAS,EAAO,UAAUC,EAAU,EAAO,QAAQC,EAAQ,EAAO,UAAUC,GAAU,EAAO,aAAaC,GAAa,EAAO,SAAShkC,GAAS,EAAO,oBAAoBC,GAAoB,EAAO,UAAUC,GAAU,EAAO,UAAUC,GAAU,EAAO,WAAW8jC,GAAW,EAAO,KAAK7jC,GAAK,EAAO,aAAaL,EAAa,EAAO,OAAOF,GAAM,EAAO,MAAM+jC,EAAS,EAAO,KAAKC,EAAU,EAAO,WAAWE,GAAU,EAAO,cAAcC,GAAa,EAAO,cAAcjkC,EAAa,EAAO,UAAUC,GAAS,EAAO,qBAAqBC,GAAoB,EAAO,WAAWC,GAAU,EAAO,WAAWC,GAAU,EAAO,YAAY8jC,GAAW,EAAO,MAAM7jC,GAAK,EAAQukC,OAA0B,CAAClB,GAAU,UAAU,EAAEC,IAAO,UAAU,EAAKK,GAAUA,GAAU,UAAU,EAAOD,GAAS,UAAU,EAAEF,GAAU,UAAU,EAAEC,GAAW,UAAU,EAAEA,GAAW,mBAAmB,UAAU,EAAEA,GAAW,eAAe,UAAU,EAAEA,GAAW,eAAe,UAAU,EAAEhkC,IAAO,UAAU,EAAEE,GAAc,UAAU,UAAU,EAAEC,IAAU,UAAU,UAAU,EAAEC,IAAqB,UAAU,UAAU,EAAEC,IAAW,UAAU,UAAU,EAAEC,IAAW,UAAU,EAAE8jC,IAAY,UAAU,EAAE7jC,IAAM,UAAU,UAAU,EAAE4jC,IAAc,UAAU,UAAU,EAAE,EAAS,KAAK,GAAM,KAAK,GAAW,KAAK,EAAS,KAAK,EAAU,KAAK,EAAQ,KAAK,GAAU,KAAK,GAAa,KAAK,GAAM,KAAK,EAAa,KAAK,GAAS,KAAK,GAAoB,KAAK,GAAU,KAAK,GAAU,KAAK,GAAW,KAAK,GAAK,KAAK,GAAgB,GAAG,GAAQ,EAAE,GAAQ,EAAE,GAAU,EAAEU,GAAe,CAAE,EAAQE,IAAsB,EAAU,EAAE,IAAI,CAAC,GAAG,CAACh9B,GAAoBi9B,CAAS,EAA2B,OAAxBF,GAAsB,EAAS,GAAO,GAAG,CAACL,GAAwC,OAA5BE,EAA0B,EAAS,GAAO,GAAK,CAAC,iBAAe,aAAW,kBAAgB,aAAW,WAAS,YAAU,aAAW,cAAYF,GAAiBQ,EAAQ39B,GAA2B/F,EAAE3I,EAAEosC,CAAS,EAAQr9B,EAAIs9B,EAAQ,IAAUC,EAAQl9B,GAAyBg9B,CAAS,EAAE,GAAG,CAACpB,GAAUS,KAAkBa,EAAQ,CAACJ,GAAsB,EAAE,GAAM,IAAIx6C,GAAwB26C,EAAQ,YAAYA,EAAQ,aAAa,CAAC,KAAK16C,GAAoB,OAAOC,GAAiB,UAAUC,EAAmB,UAAUA,EAAmB,WAAWnB,EAAoB,CAAC,EAAE,EAAS,IAAI67C,EAAezjC,EAASmiC,EAAK,EAAED,EAAS,cAAcj8B,CAAG,EAKvuF,EAAS,eAAe,GAAK,GAAW,IAAIy9B,EAAWpuB,EAAM1Q,CAAM,EAAE,GAAW,MAAM,GAAK,GAAW,WAAW,GAAKs9B,EAAS,QAAQE,EAAU,EAAKkB,EAAU,aAAY,EAAS,IAAIK,EAASruB,EAAM1Q,EAAO2+B,EAAQ,YAAYA,EAAQ,YAAY,EAAE,EAAS,OAAOI,EAAS,OAAO,QAAQzB,EAAS,QAAQG,CAAQ,GAAG,IAAM97B,EAAQ+8B,EAAU,WAAWA,EAAU,aAAa,eAAqBnkC,GAAcmkC,EAAU,cAAc/8B,IAAU+8B,EAAU,sBAAyBnkC,IAAc,EAAQ,IAAIvW,GAAwB26C,EAAQ,YAAYA,EAAQ,aAAa,CAAC,KAAK16C,GAAoB,OAAOC,GAAiB,UAAUC,EAAmB,UAAUA,CAAkB,CAAC,EAAE,GAAU,IAAI2W,GAAc6iC,CAAO,EAAEL,EAAS,QAAQM,EAAS,GAAMj8B,IAAS,EAAU,IAAIq9B,EAAUtuB,EAAM1Q,EAAO,CAAC,MAAM0+B,EAAU,SAAS,SAASA,EAAU,YAAY,QAAQA,EAAU,UAAU,CAAC,EAAEpB,EAAS,QAAQI,CAAS,GAAMgB,EAAU,eAAc,GAAM,IAAIO,EAAgB,IAAI76C,GAAcu6C,EAAQ,YAAYA,EAAQ,YAAY,EAAED,EAAU,cAAcA,EAAU,YAAYA,EAAU,cAAc,EAAEpB,EAAS,QAAQ5jC,EAAK,GAAMglC,EAAU,qBAAoB,EAAa,IAAI/lC,EAAWoC,EAAkB,EAAEuiC,EAAS,QAAQ1jC,CAAY,GAAM8kC,EAAU,iBAAgB,GAAS,IAAI/lC,EAAW+B,EAAc,EAAE4iC,EAAS,QAAQzjC,EAAQ,GAAM6kC,EAAU,4BAA2B,GAAoB,IAAI/lC,EAAWgC,EAAyB,EAAE2iC,EAAS,QAAQxjC,EAAmB,GAAM4kC,EAAU,kBAAiB,GAAU,IAAI/lC,EAAWiC,EAAe,EAAE0iC,EAAS,QAAQvjC,EAAS,GAAMQ,IAAc,GAAa,IAAI5B,EAAWkC,EAAkB,EAAE,GAAa,SAAS,OAAO,MAAM8iC,EAAQ,QAAQL,EAAS,QAAQO,EAAY,GAAMa,EAAU,iBAEvsD,GAAW,IAAIQ,EAAW5B,EAAS,QAAQQ,EAAU,GAAMY,EAAU,aAAY,GAAK,IAAI/lC,EAAWwmC,CAAU,EAAE7B,EAAS,QAAQrjC,EAAI,GAAMykC,EAAU,iBAAgB,GAAUjmC,GAA6BE,CAAU,EAAEqB,GAAU,gBAAgBqH,CAAG,EAAErH,GAAU,UAAU2kC,EAAQ,YAAYA,EAAQ,YAAY,EAAE3kC,GAAU,wBAAwB0kC,CAAS,EAAEpB,EAAS,QAAQtjC,EAAS,GAAG,GAAgB4kC,EAAQL,GAAe,CAAE,CAAyiC,OAAhhCP,KAAU/iC,GAAGgjC,KAAU3rC,GAAG,KAAK,IAAI4rC,GAAU78B,CAAG,EAAE,OAA0Bi8B,EAAS,cAAcj8B,CAAG,EAAEi8B,EAAS,QAAQriC,EAAE3I,CAAC,EAAEirC,IAAO,UAAUoB,EAAQ,YAAYA,EAAQ,YAAY,EAAEhB,GAAS,UAAUgB,EAAQ,YAAYA,EAAQ,YAAY,EAAEf,IAAW,UAAUe,EAAQ,YAAYA,EAAQ,YAAY,EAAElB,GAAU,UAAUkB,EAAQ,YAAYA,EAAQ,YAAY,EAAEjB,GAAW,UAAUiB,EAAQ,YAAYA,EAAQ,YAAY,EAAE3kC,IAAW,gBAAgBqH,CAAG,EAAErH,IAAW,UAAU2kC,EAAQ,YAAYA,EAAQ,YAAY,EAAEjlC,IAAO,YAAY,MAAMilC,EAAQ,YAAYA,EAAQ,YAAY,EAAE1kC,IAAM,UAAU,YAAY,OAAO,MAAM,EAAE0kC,EAAQ,YAAY,EAAEA,EAAQ,YAAY,EAAE7kC,IAAqB,UAAU,YAAY,OAAO,MAAM6kC,EAAQ,YAAYA,EAAQ,YAAY,EAAE,GAAQ1jC,EAAE,GAAQ3I,EAAE,GAAU+O,GAAQq8B,GAAW,UAAW0B,SAAW,EAAU,SAASA,OAAU,MAAMnkC,EAAE3I,GAAMurC,IAAcF,IAAS,GAAa,SAAS,OAAO,MAAMA,EAAQ,SAAYtF,EAAS,SAAS5+B,GAAoB4+B,EAAS,QAAQqG,CAAS,EAAU,EAAK,EAAQW,GAAM,CAAC,YAAY,EAAE,UAAU,YAAY,IAAI,EAAE,UAAU,CAAC,IAAMhgC,EAAI,YAAY,IAAI,EAAQigC,EAAM,KAAK,IAAI,GAAGjgC,EAAI,KAAK,WAAW,GAAG,EAA6C,MAA3C,MAAK,UAAUA,EAAI,KAAK,aAAaigC,EAAaA,CAAM,EAAE,OAAO,CAAC,KAAK,UAAU,YAAY,IAAI,CAAE,CAAC,EAAQplC,EAAG,CAAC,mBAAmB,EAAE,WAAS,QAAM,SAAO,eAAa,WAAS,WAAS,SAAM,WAAS,YAAU,UAAQ,aAAU,gBAAa,YAAS,uBAAoB,aAAU,aAAU,QAAK,eAAa,YAAO,SAAO,WAAS,YAAU,eAAa,oBAAkB,MAAM,KAAK,WAAW,KAAK,MAAM,KAAK,WAAW,CAAC,EAAE,uBAAuB,KAAK,oBAAoB,GAAG,yBAAyB,GAAG,sCAAsB,IAAI,IAAI,+BAA+B,KAAK,6BAA6B,KAAK,qBAAqB,GAAM,yBAAyB,GAAM,2BAA2B,GAAM,6BAA6B,GAAG,gCAAgC,GAAG,oBAAoB,GAAM,SAAM,eAAe,KAAK,WAAW,KAAK,WAAW,KAAK,gBAAgB,KAAK,uBAAqB,kBACv+E,eAAe,GAAM,mBAAmB,GAAM,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,KAAK,0CAA0B,IAAI,IAAI,kCAAkB,IAAI,IAAI,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe9H,EAAI,WAAW,YAAYA,EAAI,aAAa,YAAYA,EAAI,aAAa,YAAYA,EAAI,aAAa,SAASA,EAAI,eAAe,SAASA,EAAI,eAAe,SAASA,EAAI,eAAe,YAAY,GAAM,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,kCAAkB,IAAI,IAChf,YAAYA,EAAI,gBAAgB,cAAcmL,EAAWnL,EAAI,eAAe,EAAE,eAAemL,EAAWnL,EAAI,qBAAqB,EAAE,yBAAyBA,EAAI,sBAAsB,wBAAwBmL,EAAWnL,EAAI,qBAAqB,EAAE,6BAA6B,GAAG,4BAA4B,IAAI/N,GAAY,qBAAqB+N,EAAI,cAAc,oBAAoBmL,EAAWnL,EAAI,aAAa,EACvZ,cAAcA,EAAI,YAAY,EAAE,aAAaA,EAAI,cAAc,EAAE,aAAaA,EAAI,cAAc,EAAE,aAAaA,EAAI,cAAc,EAAE,aAAaA,EAAI,gBAAgB,EAAE,aAAaA,EAAI,gBAAgB,EAAE,aAAaA,EAAI,gBAAgB,EAAE,aAAaA,EAAI,iBAAiB,GAAG,aAAaA,EAAI,iBAAiB,EAAE,aAAaA,EAAI,iBAAiB,GACvV,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAE9C,0BAAU,IAAI,IAAI,mBAAmBA,EAAI,eAAe,QAAQ,GAAG,EAAE,eAAe,EACpF,UAAUgJ,EAAS,OAAO1B,GAAM,MAAM+jC,EAAS,KAAKC,EAAU,WAAWE,GAAU,cAAcC,GAAa,cAAcjkC,EAAa,UAAUC,GAAS,qBAAqBC,GAAoB,WAAWC,GAAU,MAAME,GAChO,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,YAAY,GAAG,gBAAgB,GACxF,kBAAkB,EAAE,oBAAoB,KAAK,mBAAmB,KAAK,aAAa,GAAM,qBAAqB,KAAK,gBAAgB,GAClI,kBAAkB,KAAK,mBAAmB,EAAE,sBAAsB,GAClE,iBAAiB,EACjB,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,mBAAmB4H,GAAqB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,aAAa,OAAO,SAAW,KAAiB,CAAC,SAAS,OAAO,kBAAkB,GAAK,eAAew7B,EAAQ,sBAAsBD,EAAY,YAAY,uBAAuBA,EAAY,aAAa,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,KAAK,UAAU,KAAK,YAAY,KAAK,UAAU,GAAM,mBAAmB,GAAM,SAAS,CAAC,EAAE,EAAS,QAAQljC,EAAGob,EAAS,iBAAiB,aAAa,CAAI+iB,EAAS,UAAQ,EAAS,QAAQ,mBAAmB,EAAE,CAAC,EAAE,EAAG,qBAAqBoG,GAAqB,EAAG,SAAS9gC,GAAkB,SAASzD,CAAE,EAAEuZ,GAAwBvZ,EAAG9H,EAAIgJ,EAASsV,CAAK,EAE35B,IAAM6uB,GAAY,GAAG,CAAC,GAAG,CAAC1U,EAAQ,QAAQ,OAAO,IAAMvuB,EAAKuuB,EAAQ,QAAQ,sBAAsB,EAC/F,EAAE,SAASvuB,EAAK,MAAM,EAAE,SAASA,EAAK,OAAO,EAAE,SAASA,EAAK,KAAK,EAAE,SAASA,EAAK,QACrF,EAAG,cAAc,EAAE,QAAQA,EAAK,MAAMA,EAAK,MAAM,EAAE,EAAE,EAAG,cAAc,EAAE,QAAQA,EAAK,KAAKA,EAAK,OAAO,EAAE,IACxG,EAAG,aAAa,EAAE,EAAG,aAAa,EAAG,EAAE,SAAS,iBAAiB,YAAYijC,EAAW,EACxF,IAAMC,GAAqB,IAAIl7C,EAAgB,GAAqB,aAAa,GAAK,IAAMm7C,GAAiB,IAAIr7C,GAAkBs7C,GAAmB,KAASC,GAAwB,KAEjLC,GAAqB,GAAQ,CAEnC,IAAMx2C,EAAEy2C,EAAO,OAAwF,OAA9Ez2C,GAAGA,IAAI8Q,EAAG,OAAO9Q,IAAI8Q,EAAG,YAAY9Q,IAAI8Q,EAAG,cAAc,CAAC9Q,EAAE,OAAeA,EAAUy2C,CAAO,EAAQC,GAAiB,GAAG,CAA+B,GAAG,CAAvBtF,EAAY,QAAgB,gBAAgB,CAACtgC,EAAG,YAAY,CAAC2wB,EAAQ,QAAQ,CAAI6U,IAAoBK,GAAuB,EAAMvH,GAAe,SAAQC,GAAkB,IAAI,EAAE,MAAO,CAAC,IAAMn8B,EAAKuuB,EAAQ,QAAQ,sBAAsB,EAAE,GAAG,EAAE,QAAQvuB,EAAK,MAAM,EAAE,QAAQA,EAAK,OAAO,EAAE,QAAQA,EAAK,KAAK,EAAE,QAAQA,EAAK,OAAO,CAAIojC,IAAmBK,GAAuB,EAAKvH,GAAe,SAAQC,GAAkB,IAAI,EAAE,MAAO,CAAC,GAAiB,GAAG,EAAE,QAAQn8B,EAAK,MAAMA,EAAK,MAAM,EAAE,EAAE,GAAiB,EAAE,GAAG,EAAE,QAAQA,EAAK,KAAKA,EAAK,QAAQ,EAAE,EAAEkjC,GAAqB,cAAcC,GAAiBvlC,EAAG,MAAM,EAAE,IAAM8lC,EAAOC,GAAsB,EAAE,GAAG,CAACD,EAAO,OAAO,CAAIN,IAAmBK,GAAuB,EAAKvH,GAAe,SAAQC,GAAkB,IAAI,EAAE,MAAO,CAAC,IAAMyH,EAAKV,GAAqB,iBAAiBQ,EAAO,EAAK,EAAE,GAAGE,EAAK,OAAO,EAAE,CAAC,IAAML,EAAOK,EAAK,EAAE,CAAC,OAC7/B94B,EAAMw4B,GAAqBC,CAAM,EACvC,GAAGM,KAAmBN,GAAQM,KAAmB/4B,EAC9Cs4B,IAAoBA,KAAqBt4B,GAAM24B,GAAuB,EAAE,GAAmB,KAAK,GAAwB,UAAW,GAAGL,KAAqBt4B,EAAM,CAAC24B,GAAuB,EAAE,GAAmB34B,EACjN,mBAAwB,IAAI,IAAI,IAAMg5B,EAAY,CAAC,EAAKh5B,EAAM,OAAOg5B,EAAY,KAAKh5B,CAAK,EAAOA,EAAM,SAAS,GAAG,CAAI/d,EAAE,QAAO+2C,EAAY,KAAK/2C,CAAC,CAAE,CAAC,EAAE+2C,EAAY,QAAQ,GAAG,CAAC,GAAG,CAACrwC,EAAE,SAAS,OAAO,IAAMsX,EAAK,MAAM,QAAQtX,EAAE,QAAQ,EAAEA,EAAE,SAAS,CAACA,EAAE,QAAQ,EAAE4vC,GAAwB,IAAI5vC,EAAEsX,EAAK,IAAI,GAAIg5B,EAAG,SAASA,EAAG,SAAS,MAAM,EAAE,IAAI,CAAC,EAAEh5B,EAAK,QAAQ,GAAI,CAAIg5B,EAAG,UAASA,EAAG,SAAS,OAAO,OAAO,CAAE,CAAC,CAAE,CAAC,CAAE,CACxZ,IAAM39B,EAAK0E,EAAM,MAAMy4B,EAAO,MAAM,YAAkB9uB,EAAK8uB,EAAO,cAAc,cAAc,OAC1FS,EAAM,EAAQC,EAAY,CAAC,EAAKn5B,EAAM,OAAOm5B,EAAY,KAAKn5B,CAAK,EAAOA,EAAM,SAAS,GAAG,CAAI/d,EAAE,QAAOk3C,EAAY,KAAKl3C,CAAC,CAAE,CAAC,EAAEk3C,EAAY,QAAQ,GAAG,CAAC,GAAGxwC,EAAE,SAAS,CAAC,IAAMywC,EAAGzwC,EAAE,SAAS,aAAa,UAAU,EAAKywC,IAAG,GAAOA,EAAG,MAAM,CAAC,CAAC,EAAE,IAAIz3B,EAAI,GAAM82B,EAAO,WAAU,AAA6F92B,EAA1F,MAAM,QAAQ82B,EAAO,QAAQ,EAAMA,EAAO,SAAS,IAAI,GAAG9vC,EAAE,MAAMA,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAAW8vC,EAAO,SAAS,MAAMA,EAAO,SAAS,MAAM,IAC9Z,IAAIp6B,EAAK/C,EAAStZ,EAAEge,EAAM,OAAO,KAAMhe,GAAGA,IAAI8Q,EAAG,OAAU9Q,EAAE,OAAK,EAAKA,EAAE,KAAK,MAAMqc,GAAK,EAAErc,EAAE,OAAQqvC,GAAkB,CAAC,EAAE,EAAE,QAAQn8B,EAAK,KAAK,EAAE,EAAE,QAAQA,EAAK,IAAI,OAAK,OAAK,QAAM,MAAI,MAAI,CAAC,CAAE,MAASojC,IAAmBK,GAAuB,EAAKvH,GAAe,SAAQC,GAAkB,IAAI,CAAG,EAAQsH,OAA2B,CAAIL,IAAoBC,IAAyBA,GAAwB,SAAS,EAAM,IAAO,EAAY,MAAM,QAAQ10B,EAAK,QAAQ,EAAEA,EAAK,SAAS,CAACA,EAAK,QAAQ,EAAA,CAAO,SAAS,EAAE,IAAI,CAAIlb,EAAE,UAAU0wC,EAAMlhC,GAAGxP,EAAE,SAAS,KAAK0wC,EAAMlhC,EAAE,EAAUxP,EAAE,UAASA,EAAE,SAAS,OAAO,CAAC,CAAE,CAAC,CAAE,CAAC,EAAG,GAAmB,KAAK,GAAwB,IAAK,EAAE,SAAS,iBAAiB,YAAY+vC,EAAgB,EACltB,IAAMY,GAAmB,IAAIp8C,EAAgB,GAAmB,aAAa,GAAK,IAAMq8C,GAAe,IAAIv8C,GAAkB+7C,GAAiB,KACzIS,GAAuB,KAGvBC,GAAuB,KAEtBC,EAAW,CAAC,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE,OAAO,EAAE,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,UAAU,KAAK,YAAY,KAAK,eAAe,KAAK,eAAe,KAAK,YAAY,IAAI,EACpMC,EAAc,CAAC,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,UAAU,KAAK,YAAY,KAAK,eAAe,KAAK,eAAe,KAAK,YAAY,IAAI,EAAQC,EAAW,CAAC,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE,OAAO,EAAE,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,UAAU,KAAK,YAAY,KAAK,eAAe,KAAK,eAAe,KAAK,YAAY,IAAI,EAC3YC,GAAkB,KAClBC,GAAoB,KACpBC,EAAmB,KACnBC,GAAoB,IAAI78C,EACxB88C,GAAqB,GAGrBC,GAAc,KAEbC,mBAAiB,IAAI,IACpBC,kBAAkB,IAAI,IAIzBC,EAAoB,KACnBC,GAAuB,GACrBC,mBAA0B,IAAI,IAAQC,GAA8B,GAAOC,GAA6B,GAASC,IAAoB,EAAK,IAAS,CAAC,IAAMC,EAAS,CAAC,EAAMplC,EAAQwF,EAAO,KAAMxF,GAASA,IAAUmZ,GAAK,CAAC,IAAMksB,EAAWrlC,EAAQ,QAAQ,SAAS,QAAQA,CAAO,GAAG,EAAEolC,EAAS,KAAK,GAAGplC,EAAQ,MAAMA,EAAQ,KAAK,GAAGqlC,EAAW,EAAE,EAAE,EAAQrlC,EAAQ,MAAO,CAAC,OAAOolC,EAAS,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAE,EAAQE,IAAwB,EAAK,IAAO,CAAC,GAAG,CAACnsB,GAAM,CAACrQ,EAAK,OAAO,KAAK,IAAI9I,EAAQmZ,EAAK,IAAI,IAAMosB,KAAW,OAAOz8B,CAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,IAAMvJ,EAAMgmC,EAAQ,MAAM,iBAAiB,EAAE,GAAG,CAAChmC,EAAM,OAAO,KAAK,IAAMkG,EAAMzF,EAAQ,WAAW,OAAOT,EAAM,EAAE,GAAG,GAAG,CAACkG,GAAOlG,EAAM,KAAKkG,EAAM,MAAMA,EAAM,QAAQlG,EAAM,GAAG,OAAO,KAAK,EAAQkG,CAAM,CAAC,OAAOzF,CAAQ,EAAQwlC,GAA0B,GAAQviB,GAAQ,SAAS,QAAQA,EAAO,WAAW,QAAQ,OAAOA,GAAQ,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,IAAUwiB,GAAuB,GAAO,CAAC,IAAM3kC,EAAM,MAAM,QAAQjF,CAAK,EAAEA,EAAMA,GAAO,OAAOA,GAAQ,SAAS,CAACA,EAAM,EAAEA,EAAM,EAAEA,EAAM,CAAC,EAAE,OAAOA,GAAO,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAO,CAAC,IAAMoK,EAAO,OAAOnF,EAAM4kC,IAAQ,CAAC,EAAE,OAAO,OAAO,SAASz/B,CAAM,EAAEA,EAAO,CAAE,CAAC,CAAE,EAAQ0/B,GAA2B,GAAK,CAAC,IAAM/5B,EAAMrO,EAAG,WAAW,GAAG,CAACqO,EAAM,OAAO,IAAMg6B,EAAUh6B,EAAM,MAAM,GAAMg6B,IAAYX,KAA+BD,GAA0B,MAAM,EAAE,GAA8BY,EAAU,GAA6B,IAAI,IAAMC,EAAS,GAAGD,EAAU,GAAGnwC,EAAI,wBAAwB,KAAK,GAAGowC,IAAWX,GAAoC,KAAI,GAAK,CAAC1/B,EAAO6d,KAAQ2hB,GAA2Bx/B,EAAO,SAAS,KAAK6d,EAAK,QAAQ,EAAE7d,EAAO,SAAS,KAAK6d,EAAK,QAAQ,EAAE7d,EAAO,MAAM,KAAK6d,EAAK,KAAK,EAAG,IAAI,IAAMttB,KAAQN,EAAI,0BAA0B,CAAC,EAAE,CAAC,IAAM+P,EAAO8/B,GAAuB15B,EAAM7V,EAAK,QAAQ,EAAE,GAAG,CAACyP,EAAO,SAAaw/B,GAA0B,IAAIx/B,CAAM,GAAGw/B,GAA0B,IAAIx/B,EAAO,CAAC,SAASA,EAAO,SAAS,MAAM,EAAE,SAASA,EAAO,SAAS,MAAM,EAAE,MAAMA,EAAO,MAAM,MAAM,CAAC,CAAC,EAAG,IAAMge,EAAUztB,EAAK,WAAW,CAAC,EAAE,GAAGytB,EAAU,QAAQ,IAAA,GAAU,CAAC,IAAMT,EAAM,OAAOS,EAAU,KAAK,EAAK,OAAO,SAAST,CAAK,GAAGA,EAAM,GAAEvd,EAAO,MAAM,UAAUud,CAAK,CAAE,CAAC,GAAGS,EAAU,WAAW,IAAA,GAAU,CAAC,GAAK,CAACruB,EAAEqX,EAAE5d,GAAG62C,GAAuBjiB,EAAU,QAAQ,EAAEhe,EAAO,SAAS,IAAIrQ,EAAEqX,EAAE5d,CAAC,CAAE,CAAC,GAAG40B,EAAU,WAAW,IAAA,GAAU,CAAC,GAAK,CAACruB,EAAEqX,EAAE5d,GAAG62C,GAAuBjiB,EAAU,QAAQ,EAAEhe,EAAO,SAAS,IAAApX,GAAoB,SAAS+G,CAAC,EAAA/G,GAAkB,SAASoe,CAAC,EAAApe,GAAkB,SAASQ,CAAC,CAAC,CAAE,CAAC,CAAC,GAA6Bi3C,CAAtzB,CAA+zB,EACr/EC,mBAAgB,IAAI,IAAUC,kBAAiB,IAAI,IACnDC,mBAAqB,IAAI,IAAQC,GAA8B,KAAWC,mBAA6B,IAAI,IAE7GC,GAAoB,KAASC,GAAuB,GAAOC,GAAwB,CAAC,EAAMC,GAA2B,GAASC,GAA0B,CAAC,EAAMC,GAA6B,CAAC,EAAMC,GAAgC,GAASC,GAA+B,CAAC,EAAMC,GAA4B,EAAMC,GAAyB,EAC3UC,GAAoB,GAAM,CAA+B,IAAMC,EAA1BjJ,EAAY,QAA+B,qBAAuJ,GAA/HoI,KAAgCa,IAAc,GAA8BA,EAAaZ,GAA6B,MAAM,GAAM,CAACY,GAAc,QAAQ,CAACx4B,EAAK,OAAO,KAAK,GAAG43B,GAA6B,IAAI53B,EAAK,IAAI,EAAG,OAAO43B,GAA6B,IAAI53B,EAAK,IAAI,EAAG,IAAMy4B,EAAc,OAAOz4B,EAAK,MAAM,EAAE,CAAC,CAAC,YAAY,EAAM04B,EAAc,KAASC,EAAkB,GAASC,EAAS3pC,EAAG,WAAW4nC,GAAmB5nC,EAAG,WAAW+Q,CAAI,EAAE,GAAG,IAAI,IAAM+b,KAAMyc,EAAa,CAAC,IAAMK,EAAU9c,GAAI,SAASA,GAAI,uBAAuB,GAAK,GAAG,CAACA,GAAI,CAAC8c,GAAW,CAAC9c,EAAG,SAAS,SAAS,GAAGA,EAAG,SAAS,CAAC,GAAG6c,IAAW7c,EAAG,SAAS,CAAC,EAAcA,EAAG,KAAM,CAAI6c,EAAS,WAAW,GAAG7c,EAAG,SAAS,EAAE,GAAGA,EAAG,SAAS,OAAO4c,IAAmB,EAAc5c,EAAG,EAAkBA,EAAG,SAAS,QAAQ,QAAS,CAAC,IAAM+c,EAAW/c,EAAG,SAAS,KAAK,CAAC,CAAC,YAAY,EAAK,CAAC2c,GAAeI,GAAYL,EAAc,SAASK,CAAU,IAAG,EAAc/c,EAAI,CAA2D,OAA1D6b,GAA6B,IAAI53B,EAAK,KAAK04B,CAAa,EAASA,CAAc,EAAQK,MAAsC,CAAC,GAA8B,KAAKnB,GAA6B,MAAM,CAAE,EAAQoB,IAA2B,EAAO,EAAU,EAAM,IAAM,CAAC,IAAMztC,EAAQopB,IAASskB,GAAW,GAAI1tC,EAAe,IAAG1C,GAAO,OAAOA,GAAQ,SAAU,GAAG,CAAC,EAAM,SAASyE,GAAK,MAAMqnB,GAAQ,UAAU,GAAG,EAAM,WAAWrnB,EAAI,EAAM,gBAAgBqnB,CAAO,MAAM,CAAC,CAAK9rB,EAAM0C,EAAQ1C,CAAK,EAAO0C,EAAQ,CAAvC,CAAyC,EAC5/CypC,OAA0B,CAAC,IAAMkE,EAAS,CAACjqC,EAAG,YAAY,MAAM,aAAaA,EAAG,OAAO,UAAU,GAAwB,iBAAlB,iBAAkC,EAAE,GAAGA,EAAG,UAAW,IAAI,GAAK,CAAC9E,EAAIqR,KAAMvM,EAAG,UAAWiqC,EAAS,KAAK,GAAG/uC,EAAI,GAAGqR,EAAG,QAAQ,GAAGA,EAAG,OAAO,MAAM,OAAO,GAAGA,EAAG,OAAO,UAAU,IAAO,EAAI,IAAMnO,EAAI6rC,EAAS,KAAK,GAAG,EAAE,GAAG7rC,IAAM2qC,GAA2B,CAAC,IAAMjD,EAAO,CAAC,EAAyG,GAApG9lC,EAAG,YAAYA,EAAG,OAAO,UAAU,IAAOA,EAAG,WAAW,SAAS,GAAG,CAAI7Q,EAAE,QAAO22C,EAAO,KAAK32C,CAAC,CAAE,CAAC,EAAM6Q,EAAG,UAAe,IAAA,GAAK,EAAEuM,KAAMvM,EAAG,UAAcuM,EAAG,SAASA,EAAG,OAAOA,EAAG,MAAM,SAASA,EAAG,MAAM,SAAS,GAAG,CAAIpd,EAAE,QAAO22C,EAAO,KAAK32C,CAAC,CAAE,CAAC,EAAK,GAAwB22C,EAAO,GAA2B1nC,CAAI,CAAC,GAA0B,OAAO,EAAE,IAAI,IAAM2S,KAAQ+3B,GAA4B/3B,EAAK,SAAQi4B,GAA0B,KAAKj4B,CAAI,EAAG,OAAOi4B,EAA0B,EAAQkB,GAAyB,GAAK,CAAC,EAAElL,GAAmB,SAASC,GAAiB,SAAS/mC,EAAI,yBAAyBA,EAAI,qBAA2BiyC,GAA2B,GAAK,CAAC,IAAMC,EAAUrE,GAAsB,EAAQl9B,EAAY3Q,EAAI,4BAA4B,CAAC,EAAQmyC,GAAanyC,EAAI,sBAAsB,CAAC,EAAA,CAAG,IAAI,GAAMM,GAAM,QAAQ,CAAC,CAAC,OAAO,OAAO,EAAE,GAAG,CAACqQ,EAAY,QAAQ,CAACwhC,EAAY,OAAQ,OAAOH,GAAyBhyC,CAAG,EAAEkyC,EAAU,CAAC,EAAG,IAAM9B,EAASS,GAA2B,YAAYlgC,EAAY,KAAK,GAAG,EAAE,UAAUwhC,EAAY,KAAK,GAAG,EAAE,GAAG/B,IAAWY,GAAgC,CAAC,IAAMoB,EAAS,CAAC,EAAE,IAAI,IAAMv5B,KAAQq5B,EAAU,CAAC,IAAMT,EAAS/B,GAAmB5nC,EAAG,WAAW+Q,CAAI,EAAE,GAAGs5B,EAAY,KAAK,GAAMV,IAAWp+B,GAAMo+B,EAAS,WAAW,GAAGp+B,EAAK,EAAE,CAAC,EAAE,CAAC++B,EAAS,KAAKv5B,CAAI,EAAE,QAAS,CAAC,IAAI1S,EAAI0S,EAAK,KAAM1S,GAAKA,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,YAAW,CAAC,IAAMwI,EAAKnK,EAAI,MAAM,cAAc,GAAG,GAAG,GAAGmK,GAAMK,EAAY,KAAK,GAAQL,EAAK,SAAS1F,CAAM,CAAC,EAAE,CAACwnC,EAAS,KAAKv5B,CAAI,EAAE,KAAM,CAAC,EAAI1S,EAAI,MAAO,CAAC,CAAC,GAA6BisC,EAAS,GAAgChC,CAAS,CAAC,GAA+B,OAAO,EAAE,IAAI,IAAMv3B,KAAQk4B,GAAiCl4B,EAAK,SAAQo4B,GAA+B,KAAKp4B,CAAI,EAAG,OAAOo4B,EAA+B,EAChnEoB,GAAa,GAAG,CAAC,GAAG,CAAC5Z,EAAQ,QAAQ,MAAO,GAAM,IAAMvuB,EAAKuuB,EAAQ,QAAQ,sBAAsB,EAAQ/4B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,QAAcqX,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,QAAyN,OAA9MrX,IAAI,IAAA,IAAWqX,IAAI,IAAA,IAA0BrX,EAAEwK,EAAK,MAAMxK,EAAEwK,EAAK,OAAO6M,EAAE7M,EAAK,KAAK6M,EAAE7M,EAAK,OAAc,IAAM,GAAe,GAAGxK,EAAEwK,EAAK,MAAMA,EAAK,MAAM,EAAE,EAAE,GAAe,EAAE,GAAG6M,EAAE7M,EAAK,KAAKA,EAAK,QAAQ,EAAE,EAAS,GAAK,EAAQooC,OAA0B,CAAC,IAAMtyC,EAAIooC,EAAY,QAA2BpoC,EAAI,qBAAqBA,EAAI,4BAAuF8H,EAAG,wBAAwB,GAAG,YAAY,IAAI,EAAG++B,GAAuB,EAAK,EAAUA,GAAuB,CAAC,CAAC/+B,EAAG,qBAAqB,CAAC,CAACA,EAAG,wBAAwB,EAA/M++B,GAAuB,EAAK,CAAqL,EAAQ0L,IAAiC,EAAG,IAAI,EAAM,OAAO,CAAC,EAAG,uBAAuB,KAAK,IAAIzqC,EAAG,wBAAwB,EAAE,YAAY,IAAI,EAAE0qC,CAAE,EAAE,EAAG,oBAAoB,GAAMC,GAAgB,GAAM/wC,EAAM,EAAI,EAAEgxC,GAAqB,EAAK,EAAKhM,GAAmB,SAAQC,GAAsB,IAAI,EAAKlO,EAAQ,UAAS,EAAQ,QAAQ,MAAM,OAAO2P,EAAY,QAAQ,oBAAoB,OAAO,WAAWkK,GAAsB,CAAE,EACrrCK,GAAkB,GAAUC,GAAoB,KAASC,GAA2B,KAAWJ,IAAiB,EAAO,EAAM,EAAU,KAAQ,CAAqQ,GAAjQK,GAAQF,KAAqB,aAAaA,EAAmB,EAAE,GAAoB,KAAK,GAA2B,MAAS,CAACE,GAAQC,GAAWH,KAAqB,aAAaA,EAAmB,EAAE,GAAoB,KAAK,GAA2B,MAASE,IAASH,GAAkB,OAAO,GAAG,CAACG,GAAQ,CAACC,EAAU,CAAkC,GAAjC,GAA2BrxC,EAASkxC,GAAoB,OAAO,GAAoB,eAAe,CAAC,GAAoB,KAAK,IAAMI,EAAaH,GAA2B,GAA2B,KAAKJ,GAAgB,GAAMO,EAAa,EAAI,CAAE,EAAE,EAAE,EAAE,MAAO,CAAC,GAAkBF,EAAO,EAAG,yBAAyBA,EAAOlxB,GAA+B9Z,EAAGsgC,EAAY,OAAO,EAAEkK,GAAsB,EAAE,IAAMluC,EAAQ0uC,EAAOhM,GAAmB,QAAQC,GAAiB,QAAWrlC,EAAM0C,IAAU1C,CAAK,EAAO0C,IAAU,CAAE,EAAQ6uC,GAAsB,GAAG,CAAC,IAAMjzC,EAAIooC,EAAY,QAE51B,IAFw2BtgC,EAAG,wBAAwB,GAAG,YAAY,IAAI,GAEpkC9H,EAAI,4BAA6K,EAA9G8mC,GAAmB,SAASC,GAAiB,SAAS/mC,EAAI,yBAAyBA,EAAI,qBAA+C,OAAO,GAAG,CAACqyC,GAAa,CAAC,EAAE,CAACI,GAAgB,GAAM,EAAE,EAAI,EAAE,MAAO,CAACnE,GAAmB,cAAcC,GAAezmC,EAAG,MAAM,EAAE,IAAM8lC,EAAOC,GAAsB,EAAE,GAAG,CAACD,EAAO,OAAO,CAAC6E,GAAgB,GAAM,EAAE,EAAI,EAAE,MAAO,CAAC,IAAM3E,EAAKQ,GAAmB,iBAAiBV,EAAO,EAAK,EAAE6E,GAAgB3E,EAAK,OAAO,EAAE,CAAC,CAAE,EAC/foF,GAAoB,GAAK,CAAC,IAAMC,EAAI,CAAC,EAA+E,OAA1EhtC,EAAI,OAAOgtC,EAAI,KAAKhtC,CAAG,EAAOA,EAAI,SAAS,GAAG,CAAIlP,EAAE,QAAOk8C,EAAI,KAAKl8C,CAAC,CAAE,CAAC,EAASk8C,CAAI,EAC/HC,GAAkB,GAAa,CAAC,IAAMC,kBAAI,IAAI,IAA2V,OAAvVrF,EAAY,QAAQ,GAAG,CAAC,GAAG,CAACrwC,EAAE,SAAS,OAAO,IAAMsX,EAAK,MAAM,QAAQtX,EAAE,QAAQ,EAAEA,EAAE,SAAS,CAACA,EAAE,QAAQ,EAAE01C,EAAI,IAAI11C,EAAEsX,EAAK,IAAI,GAAU0B,GAAK,UAAqB,EAAI,SAASA,EAAI,UAAU,CAAC,EAAMA,EAAI,SAAS,uBAAsB,EAAI,SAAS,qBAAqBA,EAAI,SAAS,MAAM,GAAUA,EAAI,SAAS,qBAAqB,MAAM,GAAjL,IAAoL,CAAC,CAAE,CAAC,EAAS08B,CAAI,EACpZC,GAAe,IAAIrhD,GAAkBshD,GAAgB,GAAI,CAAC,IAAM,EAAEC,EAAG,SAC3E,GAAGA,EAAG,cAAcA,EAAG,YAAY,CAAC,IAAMC,EAAUH,GAAeE,EAAG,aAAa,SAAS,EAAM,IAAO,CAAK36B,EAAK,WAA2B,MAAM,QAAQA,EAAK,QAAQ,EAAEA,EAAK,SAAS,CAACA,EAAK,QAAQ,EAAA,CAAO,SAAS,EAAI,IAAI,CAAC,GAAG,CAAClC,EAAI,SAAS,OAAO,IAAM+8B,EAAKrF,IAAQlhC,GAAMumC,EAAMD,EAAU,KAAKC,CAAI,CAAC,CAAC,KAAKF,EAAG,YAAY,CAAC,EAAQC,EAAU,OAAO,CAAC,CAAC,CAAC,KAAKD,EAAG,YAAY,CAAC,EAAG78B,EAAI,SAAS,KAAK88B,CAAS,CAAE,CAAC,CAAE,CAAC,CAAE,CACrZD,EAAG,WAAWA,EAAG,aAAaA,EAAG,OAAM,EAAG,KAAK,MAAM,IAAIA,EAAG,YAAY,EAAEA,EAAG,UAAU,GAAG,EAAE,EAAG,KAAK,MAAM,IAAIA,EAAG,YAAY,EAAEA,EAAG,UAAU,GAAG,EAAE,EAAG,KAAK,MAAM,IAAIA,EAAG,YAAY,EAAEA,EAAG,UAAU,GAAG,GAAMA,EAAG,cAAcA,EAAG,gBAAgBA,EAAG,OAAM,EAAG,KAAK,SAAS,IAAIA,EAAG,eAAe,EAAEA,EAAG,aAAa,GAAG,EAAE,EAAG,KAAK,SAAS,IAAIA,EAAG,eAAe,EAAEA,EAAG,aAAa,GAAG,EAAE,EAAG,KAAK,SAAS,IAAIA,EAAG,eAAe,EAAEA,EAAG,aAAa,GAAG,GAAMA,EAAG,cAAcA,EAAG,gBAAgBA,EAAG,OAAM,EAAG,KAAK,SAAS,IAAIA,EAAG,eAAe,EAAEA,EAAG,aAAa,GAAG,EAAE,EAAG,KAAK,SAAS,IAAIA,EAAG,eAAe,EAAEA,EAAG,aAAa,GAAG,EAAE,EAAG,KAAK,SAAS,IAAIA,EAAG,eAAe,EAAEA,EAAG,aAAa,GAAG,EAAG,EAC1pBG,GAAkB,GAAI,CAAKH,EAAG,OAAY,EAAG,SAAS,EAAED,GAAgBC,CAAE,EAC3EA,EAAG,KAAK,mBAAqBA,EAAG,cAAaA,EAAG,KAAK,SAAS,KAAKA,EAAG,YAAY,EAAKA,EAAG,cAAaA,EAAG,KAAK,SAAS,KAAKA,EAAG,YAAY,EAAKA,EAAG,WAAUA,EAAG,KAAK,MAAM,KAAKA,EAAG,SAAS,GAAG3lB,GAAoC2lB,EAAG,IAAI,EAAE,EAAG,KAAK,KAAK,EAAG,OAAO,KAAK,EAAG,aAAa,KAAK,EAAG,aAAa,KAAK,EAAG,aAAa,KAAK,EAAG,UAAU,KAAK,EAAG,YAAY,KAAK,EAAG,eAAe,KAAK,EAAG,eAAe,KAAK,EAAG,YAAY,KAAK,EAAQI,OAAwB,CAAKhF,EAAW,OAAY,EAAW,SAAS,EAAE2E,GAAgB3E,CAAU,EAAE,EAAW,KAAK,KAAK,EAAW,OAAO,KAAK,EAAW,aAAa,KAAK,EAAW,aAAa,KAAK,EAAW,UAAU,KAAK,EAAW,eAAe,KAAK,EAAW,eAAe,KAAK,EAAW,YAAY,KAAK,EAAQiF,IAAqB,EAAK,IAAS,CAAC,GAAG,CAACh7B,GAAM,CAAC2U,GAAQ,cAAcA,GAAQ,UAAU,OAAUohB,EAAW,MAAMA,EAAW,OAAO/1B,GAAM+6B,GAAoB,EAAG,IAAMlpC,EAAQojB,GAAiCjV,EAAK2U,EAAO,gBAAgB,EAAE,EAAW,KAAK3U,EAAK,EAAW,OAAO2U,EAAO,EAAW,SAAS,EAAE,EAAW,OAAO,EAAE,EAAW,aAAa9iB,EAAQ,aAAa,EAAW,aAAaA,EAAQ,aAAa,EAAW,UAAUA,EAAQ,UAAU,EAAW,eAAeA,EAAQ,eAAe,EAAW,eAAeA,EAAQ,eAAe,EAAW,YAAYA,EAAQ,YAAY6oC,GAAgB3E,CAAU,CAAE,EAAQ8D,IAAsB,EAAU,KAAO,CAAC,AAAgEjE,MAArC,aAAaA,EAAsB,EAAyB,MAASV,KAAqB+F,GAAWjC,GAA0BrD,GAAuB,cAAc,KAAKT,EAAgB,EACtnDY,EAAc,MAAMA,EAAc,OAAOZ,IAAkB4F,GAAkBhF,CAAa,EAC3F,EAAc,KAAKD,EAAW,KAAK,EAAc,OAAOA,EAAW,OAAO,EAAc,SAASA,EAAW,SAAS,EAAc,aAAaA,EAAW,aAAa,EAAc,aAAaA,EAAW,aAAa,EAAc,aAAaA,EAAW,aAAa,EAAc,UAAUA,EAAW,UAAU,EAAc,YAAYA,EAAW,YAAY,EAAc,eAAeA,EAAW,eAAe,EAAc,eAAeA,EAAW,eAAe,EAAc,YAAYA,EAAW,YACjgB,EAAW,KAAK,KAAK,EAAW,OAAO,KAAK,EAAW,SAAS,EAAE,EAAW,OAAO,EAAE,EAAW,aAAa,KAAK,EAAW,aAAa,KAAK,EAAW,aAAa,KAAK,EAAW,UAAU,KAAK,EAAW,YAAY,KAAK,EAAW,eAAe,KAAK,EAAW,eAAe,KAAK,EAAW,YAAY,MAAM,GAAiB,KAAK,GAAuB,IAAwD,EAAQqF,OAAiC,CAAKhG,IAAkB,MAA8B,GAAuB,eAAe,CAAC,GAAuB,KAAK2E,GAAqB,CAAE,EAAE,EAAE,EAAE,EAAQsB,IAAoB,EAAK,IAAS,CAA8F,GAA7F,AAAgEvF,MAArC,aAAaA,EAAsB,EAAyB,MAASV,KAAmBl1B,EAAK,OACpwB,GAAG81B,EAAc,OAAO91B,EAAK,CAAC,EAAW,KAAK81B,EAAc,KAAK,EAAW,OAAOA,EAAc,OAAO,EAAW,SAASA,EAAc,SACzI,EAAW,OAAO,EAAE,EAAW,aAAaA,EAAc,aAAa,EAAW,aAAaA,EAAc,aAAa,EAAW,aAAaA,EAAc,aAAa,EAAW,UAAUA,EAAc,UAAU,EAAW,YAAYA,EAAc,YAAY,EAAW,eAAeA,EAAc,eAAe,EAAW,eAAeA,EAAc,eAAe,EAAW,YAAYA,EAAc,YAAY,EAAc,KAAK,KAAK,EAAc,OAAO,KAAK,EAAc,SAAS,EAAE,EAAc,aAAa,KAAK,EAAc,aAAa,KAAK,EAAc,aAAa,KAAK,EAAc,UAAU,KAAK,EAAc,YAAY,KAAK,EAAc,eAAe,KAAK,EAAc,eAAe,KAAK,EAAc,YAAY,KAAK,GAAiB91B,EAAK,GAAuB2U,EAAOqkB,GAA0BrkB,EAAO,cAAc,KAAK3U,CAAI,EAAE,MAAO,CAAC65B,GAAqB,EAAE,GAAiB75B,EAAK,GAAuB2U,EAAOqkB,GAA0BrkB,EAAO,cAAc,KAAK3U,CAAI,EAAE,IAAMo7B,EAAYzmB,EAAO,aAAa,YAAY,GAAGymB,IAAc,OAAO,OAAO,IAAMjG,EAAYkF,GAAoBr6B,CAAI,EAI3mC,GAHA,EAAW,KAAKA,EAAK,EAAW,OAAO2U,EAAO,EAAW,SAAS,EAAE,EAAW,OAAO,EACnFwgB,EAAY,OAAO,IAAG,EAAW,aAAaoF,GAAkBpF,CAAW,EAAE,EAAW,YAAY7iC,EAAWqiB,EAAO,YAAY,SAAS,EAAEkhB,EAAiC,cAE9KuF,IAAc,QAAQ,CAAC,EAAW,UAAUp7B,EAAK,MAAM,MAAM,EAAE,IAAM2E,EAAOgQ,EAAO,YAAY,IAAI,EAAW,YAAY3U,EAAK,MAAM,MAAM,CAAC,CAAC,eAAe2E,CAAM,EAAEkxB,EAA8B,SACpM,MAAM,GAAGuF,IAAc,YAAY,CAAC,IAAMvpC,EAAQojB,GAAiCjV,EAAK2U,EAAO,gBAAgB,EAAE,EAAW,aAAa9iB,EAAQ,aAAa,EAAW,aAAaA,EAAQ,aAAa,EAAW,UAAUA,EAAQ,UAAU,EAAW,eAAeA,EAAQ,eAAe,EAAW,eAAeA,EAAQ,eAAe,EAAW,YAAYA,EAAQ,YAAYgkC,EAA8B,SAC7Z,CAAC,EACIwF,GAAe,GAAG,CAAC,IAAMl0C,EAAIooC,EAAY,QAAQ,IAAItgC,EAAG,wBAAwB,GAAG,YAAY,IAAI,EAAE,OAAO,IAAMqsC,EAAsBn0C,EAAI,mBAAmB,GAAG,CAACA,EAAI,4BAA4B,CAAC8H,EAAG,YAAY+mC,GAAkB,OAAO,GAAG,CAACwD,GAAa,CAAC,EAAE,CAACI,GAAgB,GAAM,EAAE,EAAI,EAAEC,GAAqB,EAAKhM,GAAmB,SAAQC,GAAsB,IAAI,EAAKlO,EAAQ,UAAQ,EAAQ,QAAQ,MAAM,OAAOz4B,EAAI,oBAAoB,OAAO,WAAU,MAAO,CAACsuC,GAAmB,cAAcC,GAAezmC,EAAG,MAAM,EAAE,IAAM8lC,EAAOqE,GAA2BjyC,CAAG,EAAE,GAAG,CAAC4tC,EAAO,OAAO,CAAC6E,GAAgB,GAAM,EAAE,EAAI,EAAE,MAAO,CAAC,IAAM3E,EAAKQ,GAAmB,iBAAiBV,EAAO,EAAK,EAAsE,GAAjEoE,GAAyBhyC,CAAG,GAAGyyC,GAAgB3E,EAAK,OAAO,EAAE,CAAC,EAAMqG,EAAsB,CAACzB,GAAqB,EAAKhM,GAAmB,SAAQC,GAAsB,IAAI,EAAKlO,EAAQ,UAAQ,EAAQ,QAAQ,MAAM,OAAOz4B,EAAI,oBAAoB,OAAO,WAAU,MAAO,CAAC,IAAIo0C,EAAiB,GAAM,IAAI,IAAMC,KAAOvG,EAAK,CACt/B,IAAI3nC,EAAIkuC,EAAI,OAAW7mB,EAAO,KAAK,KAAMrnB,GAAKA,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,YAAW,CAAgE,GAA/D,EAAOyoC,GAAqB,IAAIpqC,CAAG,GAAGirC,GAAoBjrC,CAAG,EAAKqnB,EAAO,CAAC,IAAM8mB,EAAWjF,GAAqB,IAAIU,GAA0BviB,CAAM,CAAC,EAAK8mB,IAAY,EAAIA,GAAY,KAAM,CAAC,EAAInuC,EAAI,MAAO,CAAC,GAAGqnB,GAAQrnB,EAAI,CAAC,EAAiB,GAAK6tC,GAAmB7tC,EAAIqnB,CAAM,EAChXiL,EAAQ,UAAYjL,EAAO,UAAU,EAAQ,QAAQ,MAAM,OAAO,QAAeA,EAAO,aAAaA,EAAO,YAAqB,EAAQ,QAAQ,MAAM,OAAOA,EAAO,aAAa,YACrL,IAAM+mB,GAAa/mB,EAAO,cAAc,GAAA,CAAI,KAAK,EAAE,GAAG+mB,GAAa9b,EAAQ,QAAQ,CAAC,IAAMvuB,EAAKuuB,EAAQ,QAAQ,sBAAsB,EAAEkO,GAAsB,CAAC,EAAE,EAAE,QAAQz8B,EAAK,KAAK,EAAE,EAAE,QAAQA,EAAK,IAAI,KAAKqqC,CAAW,CAAC,CAAE,MAAS7N,GAAmB,SAASC,GAAsB,IAAI,EAAG,KAAM,CAAC,CAAKyN,IAAkBL,GAA6B,EAAKrN,GAAmB,SAAQC,GAAsB,IAAI,EAAKlO,EAAQ,UAAQ,EAAQ,QAAQ,MAAM,OAAOz4B,EAAI,oBAAoB,OAAO,WAAW,EACzew0C,GAAgB,GAAG,CAAC,IAAMx0C,EAAIooC,EAAY,QAAQ,GAAGyG,GAAkB,OAE7E,GAAGI,GAAqB,CAAC,GAAqB,GAAM,MAAO,CAAC,GAAG,CAACoD,GAAa,CAAC,EAAE,OAAO/D,GAAmB,cAAcC,GAAezmC,EAAG,MAAM,EAAE,IAAM8lC,EAAOC,GAAsB,EAAE,GAAG,CAACD,EAAO,OAAO,OAAO,IAAME,EAAKQ,GAAmB,iBAAiBV,EAAO,EAAK,EAAE,GAAIE,EAAK,SAAc9G,GAAc,UAAU,CAAC,EAAMhnC,EAAI,4BAA6B8H,EAAG,YAAkB,IAAI,IAAMusC,KAAOvG,EAAK,CAAC,IAAI3nC,EAAIkuC,EAAI,OAAW7mB,EAAO,KAAK,KAAMrnB,GAAKA,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,YAAW,CAAgE,GAA/D,EAAOyoC,GAAqB,IAAIpqC,CAAG,GAAGirC,GAAoBjrC,CAAG,EAAKqnB,EAAO,CAAC,IAAM8mB,EAAWjF,GAAqB,IAAIU,GAA0BviB,CAAM,CAAC,EAAK8mB,IAAY,EAAIA,GAAY,KAAM,CAAC,EAAInuC,EAAI,MAAO,CAAC,GAAG,CAACqnB,GAAQ,CAACrnB,EAAI,SAAS0rC,GAA0BrkB,EAAO,cAAc,EAAErnB,CAAG,EAC9wB,IAAMnF,EAAOwsB,EAAO,aAAa,OAAO,GAAGxsB,IAAS,UAAU,CAAC,IAAMyD,EAAI+oB,EAAO,UAAU,GAAM/oB,IAAQ+oB,EAAO,eAAe/2B,EAAO,KAAKgO,EAAI,SAAS,UAAU,EAAO,EAAO,SAAS,KAAKA,EAAK,MAAM,GAAGzD,IAAS,mBAAmB,CACvO,IAAM2wC,GAAYnkB,EAAO,iBAAiB,GAAA,CAAI,KAAK,EAAE,GAAGmkB,EAAW,CAAC,IAAM8C,EAAO9C,EAAW,YAAY,EAAQ+C,EAAU,CAAC5sC,EAAG,UAAU,EAAE,GAAGA,EAAG,UAAe,IAAA,GAAK,EAAEuM,KAAMvM,EAAG,UAAcuM,EAAG,SAASA,EAAG,OAAMqgC,EAAU,KAAKrgC,EAAG,KAAK,EAAI,IAAI,IAAMqP,KAAQgxB,EAAWhxB,EAAK,SAAS,GAAG,CAAIzsB,EAAE,MAAMA,EAAE,KAAK,YAAY,CAAC,CAAC,SAASw9C,CAAM,IAAG,EAAE,QAAQ,CAACx9C,EAAE,QAAS,CAAC,CAAG,KAAM,GAAI,QAAQ,CAACkP,EAAI,QAAQusC,GAAqB,CAAG,MAAM,GAAG1xC,IAAS,cAAc,CAE/b,IAAM2zC,EAAY,CAAC,EAA2G,GAAtGxuC,EAAI,OAAOwuC,EAAY,KAAKxuC,CAAG,EAAOA,EAAI,SAAS,GAAG,CAAIlP,EAAE,QAAQA,EAAE,UAAS09C,EAAY,KAAK19C,CAAC,CAAE,CAAC,EAAK09C,EAAY,OAAO,EAAE,CAA2C,GAA1BxuC,EAAI,sBAAoCwuC,EAAY,QAAQ,GAAG,CAACx3B,GAAiBxf,CAAC,CAAE,CAAC,EAAE,EAAI,sBAAsB,OAAW,CAAC,IAAMi3C,EAASzpC,EAAWqiB,EAAO,YAAY,SAAS,EAAEmnB,EAAY,QAAQ,GAAG,CAAC13B,GAAgBtf,CAAC,GAAa,MAAM,QAAQA,EAAE,QAAQ,EAAEA,EAAE,SAAS,CAACA,EAAE,QAAQ,EAAA,CAAO,QAAQ,GAAK,CAAIgZ,EAAI,OAAMA,EAAI,MAAM,KAAKi+B,CAAQ,CAAE,CAAC,CAAE,CAAC,EAAE,EAAI,sBAAsB,EAAK,CAAC,CAAC,MAAM,GAAG5zC,IAAS,gBAAgB,CAAC,IAAML,GAAU6sB,EAAO,eAAe,GAAA,CAAI,KAAK,EAAE,GAAG7sB,GAAUmH,EAAG,OAAOA,EAAG,YAAY,OAAO,CAAC,IAAM5E,EAAKzC,GAAmBqH,EAAG,WAAWnH,CAAQ,EAAE,GAAGuC,EAAK,CAAC,IAAM2xC,EAAe/sC,EAAG,MAAM,eAAe5E,CAAI,EAAE,GAAG2xC,GAAgB,UAAU,EAAG,AAAuHA,EAAe,yBAA7F/sC,EAAG,MAAM,oBAAoB,WAAW+sC,EAAe,qBAAqB,EAAuC,MAAMA,EAAe,KAAK,MAAO,CAAC,IAAMjoC,EAAE9E,EAAG,MAAM,WAAW5E,CAAI,EAAE,AAA6F0J,EAAE,yBAAnE9E,EAAG,MAAM,oBAAoB,WAAW8E,EAAE,qBAAqB,EAA0B,MAC7oC,IAAM7L,EAASysB,EAAO,eAAe,OAC2B,GADjBzsB,IAAW,UAAU6L,EAAE,QAAQxa,GAAiB,GAAQ,EAAE,EAAE,kBAAkB,IAAe2O,IAAW,YAAY6L,EAAE,QAAQva,GAAmB,GAAQ,EAAE,EAAE,kBAAkB,KAAYua,EAAE,QAAQta,GAAe,CAAC,EAAE,EAAE,kBAAkB,IAC1R,AAAiDsa,EAAE,UAAhD4gB,EAAO,iBAA8B,GAAqB,EAAMzsB,IAAW,QAAQysB,EAAO,oBAAoB,CAAC,IAAMzrB,EAAW,GAAK,CAAID,GAAK,SAAS8K,IAAS9E,EAAG,MAAM,oBAAoB,WAAW/F,CAAU,EAAE,EAAE,sBAAsB,KAAK8vC,GAA0BrkB,EAAO,sBAAsB,EAAErnB,CAAG,EAAE,EAAE2B,EAAG,MAAM,iBAAiB,WAAW/F,CAAU,EAAE,EAAE,sBAAsBA,CAAW,CAAC6K,EAAE,MAAM,EAAK4gB,EAAO,mBAAkB,EAAE,KAAKtqB,EAAK,UAAU0J,EAAE,KAAK,CAAE,CAAC,CAAC,CAAC,CAAC,KACld,CAAC,EACKkoC,GAAa,IAAI3iD,EAAoB4iD,GAAc,IAAI5iD,EAAoB6iD,GAAsB,GAAG,CAAC,IAAMh1C,EAAIooC,EAAY,QAAc6M,EAAcxoB,GAAqB,EAAEzsB,CAAG,EAAQk1C,EAA4BD,GAAej1C,EAAI,qBAAqB,CAACA,EAAI,6BAA6B,GAAG,CAAC8H,EAAG,WAAW,OAAO,GAAGotC,EAA4B,CAACzC,GAAgB,GAAM,EAAE,EAAI,EAAE,MAAO,CAAC,GAAG,CAACJ,GAAa,CAAC,EAAE,CAAI4C,GAAcxC,GAAgB,GAAM,EAAE,EAAI,EAAE,MAAO,CAACnE,GAAmB,cAAcC,GAAezmC,EAAG,MAAM,EAAE,IAAM8lC,EAAOC,GAAsB,EAAQC,EAAKQ,GAAmB,iBAAiBV,EAAO,EAAK,EAAoD,GAA/CqH,GAAcxC,GAAgB3E,EAAK,OAAO,EAAE,CAAC,EAAM9tC,EAAI,2BAAkC,KAAI,IAAMq0C,KAAOvG,EAAK,CAAC,IAAI3nC,EAAIkuC,EAAI,OAAW7mB,EAAO,KAAK,KAAMrnB,GAAKA,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,YAAW,CAAgE,GAA/D,EAAOyoC,GAAqB,IAAIpqC,CAAG,GAAGirC,GAAoBjrC,CAAG,EAAKqnB,EAAO,CAAC,IAAM8mB,EAAWjF,GAAqB,IAAIU,GAA0BviB,CAAM,CAAC,EAAK8mB,IAAY,EAAIA,GAAY,KAAM,CAAC,EAAInuC,EAAI,MAAO,CAAC,GAAGqnB,GAAQrnB,EAAI,CAAC0tC,GAAoB1tC,EAAIqnB,CAAM,EAAE,KAAM,CAAC,CAAC,GAAGynB,EAAe,IAAI,IAAMZ,KAAOvG,EAAK,CAAC,IAAI3nC,EAAIkuC,EAAI,OAAW7mB,EAAO,KAAK,KAAMrnB,GAAKA,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,YAAW,CAAgE,GAA/D,EAAOyoC,GAAqB,IAAIpqC,CAAG,GAAGirC,GAAoBjrC,CAAG,EAAKqnB,EAAO,CAAC,IAAM8mB,EAAWjF,GAAqB,IAAIU,GAA0BviB,CAAM,CAAC,EAAK8mB,IAAY,EAAIA,GAAY,KAAM,CAAC,EAAInuC,EAAI,MAAO,CAAC,GAAGqnB,GAAQrnB,EAAI,CAAC6tC,GAAmB7tC,EAAIqnB,CAAM,EAAE,KAAM,CAAC,CAAE,IAAI,IAAM6mB,KAAOvG,EAAK,CAAC,IAAI3nC,EAAIkuC,EAAI,OAAW7mB,EAAO,KAAK,KAAMrnB,GAAKA,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,OAAO3B,IAAM2B,EAAG,YAAW,CAAgE,GAA/D,EAAOyoC,GAAqB,IAAIpqC,CAAG,GAAGirC,GAAoBjrC,CAAG,EAAKqnB,EAAO,CAAC,IAAM8mB,EAAWjF,GAAqB,IAAIU,GAA0BviB,CAAM,CAAC,EAAK8mB,IAAY,EAAIA,GAAY,KAAM,CAAC,EAAInuC,EAAI,MAAO,CAAC,GAAG,CAACqnB,GAAQ,CAACA,EAAO,WAAW,CAACrnB,EAAI,SAAS,EAAE,iBAAiB,EAAE,EAAE,kBAAkB,EAAE,GAAkBA,EAAI,GAAoBqnB,EAAOqkB,GAA0BrkB,EAAO,cAAc,EAAErnB,CAAG,EAC19D+oC,IAAeA,GAAc,OAAO/oC,IAAK,GAAc,MACtDA,EAAI,mBAAiB,EAAI,iBAAiBA,EAAI,SAAS,MAAM,GACjE,IAAMgvC,EAAU3nB,EAAO,WAAW,KAAQ2nB,IAAY,KAAKnwC,GAAU,IAAI,EAAE,EAAE,CAAC,EAAUmwC,IAAY,KAAKnwC,GAAU,IAAI,EAAE,EAAE,CAAC,EAAUmwC,IAAY,UAClJrtC,EAAG,OAAO,kBAAkB9C,EAAS,EAAEA,GAAU,OAAO,GAAQA,GAAU,IAAI,EAAE,EAAE,CAAC,EAClF,EAAmB,IAAIzS,GAAYw8C,EAAmB,8BAA8B/pC,GAAUmB,EAAI,QAAQ,EAC3GmoC,GAAmB,IAAI,eAAeS,EAAmB+F,EAAY,EAAE9F,GAAoB,KAAK8F,EAAY,CAAC,CAAC,IAAI3uC,EAAI,QAAQ,EAC9H,EAAS,QAAQ,GAASsyB,EAAQ,UAAQ,EAAQ,QAAQ,MAAM,OAAO,YAAW,KAAM,CAP++B,CAO9+B,EAAQ2c,GAAsB,GAAG,CAAC,GAAIvG,IAAoBE,GAA8BsD,GAAa,CAAC,IAAS/D,GAAmB,cAAcC,GAAezmC,EAAG,MAAM,EAAKwmC,GAAmB,IAAI,eAAeS,EAAmBgG,EAAa,GAAE,CAACA,GAAc,IAAI/F,EAAmB,EACpX,IAAMqG,EAAWvG,IAAqB,gBAAgB,EAAKuG,EAAW,GAAGxG,GAAkB,kBAA6BkG,GAAc,WAAWlG,GAAkB,gBAAwB,EAAEwG,GAAYN,GAAc,IAAIlG,GAAkB,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC,eAAewG,CAAU,CAAC,CAAC,IAAIxG,GAAkB,gBAAgB,EAAIA,GAAkB,SAAS,KAAKkG,EAAa,CAAE,CAAC,EAAQO,GAAoB,GAAG,CAAC,IAAMt1C,EAAIooC,EAAY,QAAoH,GAA5GwL,GAAoB,EAAKnnB,GAAqB,EAAEzsB,CAAG,IAAGyyC,GAAgB,GAAM,EAAE,EAAI,EAAEC,GAAqB,GAAM,CAAC7D,GAAkB,OAAO,IAAM0G,EAAY1G,GAAwB2G,EAAc1G,GAC/nB,GAAqB,GAClBA,IAAqB,cAAcD,GAAkB,mBAAkB,GAAc,CAAC,KAAKA,GAAkB,UAAUA,GAAkB,iBAAiB,MAAM,CAAC,GACpK,EAAS,QAAQ7uC,EAAI,oBAAuBy4B,EAAQ,UAAQ,EAAQ,QAAQ,MAAM,OAAOz4B,EAAI,oBAAoB,OAAO,WAAU6xC,GAA0B2D,EAAc,YAAY,EAAED,CAAW,EAAE,GAAkB,KAAK,GAAoB,KAAK,EAAmB,IAAK,EAAQE,GAA2B,GAAG,CAAC,IAAMz1C,EAAIooC,EAAY,QAAuI,IAA3HtgC,EAAG,wBAAwB,GAAG,YAAY,IAAI,GAAY,CAAC9H,EAAI,qBAAqB,CAACA,EAAI,4BAAqC,CAACqyC,GAAa,CAAC,EAAE,OAAO/D,GAAmB,cAAcC,GAAezmC,EAAG,MAAM,EAAE,IAAM8lC,EAAOC,GAAsB,EAAMD,EAAO,QAAyBU,GAAmB,iBAAiBV,EAAO,EAAc,CAAC,CAAC,SAAc,EAAG,oBAAoB,GAAK0E,GAAsB,EAAE,EAAQoD,OAA6B,CAAC,EAAG,oBAAoB,GAAMpD,GAAsB,CAAE,EAAMqD,GAAmB,EAAMC,GAAqB,KAAWC,GAAyB,GAAG,CACn6B,IAAI/tC,EAAG,wBAAwB,GAAG,YAAY,IAAI,EAAE,OAAO,IAAMmF,EAAI,YAAY,IAAI,EAAKA,EAAIkkC,GAAyB,KAAU,GAAyBlkC,EAAI,GAAqB,EAAK,MAA0B,GAAmB,0BAA0B,CAAC,GAAmB,EAAE,IAAMnL,EAAI8zC,GAAqB,GAAqB,KAAQ9zC,GAAImxC,GAAsBnxC,CAAG,CAAE,CAAC,GAAE,EAAMg0C,GAAiB,EAAMC,GAAmB,KAAWC,GAAkB,GAAG,CACnc,IAAIluC,EAAG,wBAAwB,GAAG,YAAY,IAAI,EAAE,OAAO,IAAMmF,EAAI,YAAY,IAAI,EAAQgpC,EAASlI,GAAiB,GAAG,GAAM9gC,EAAIikC,GAA4B+E,IAAgB,GAA4BhpC,EAAI,GAAmB,EAAK,MAAwB,GAAiB,0BAA0B,CAAC,GAAiB,EAAE,IAAMnL,EAAIi0C,GAAmB,GAAmB,KAAQj0C,GAAIoyC,GAAepyC,CAAG,CAAE,CAAC,GAAE,EAAMo0C,GAAwB,EAAMC,GAA0B,KAAWC,GAAyB,GAAG,EAAI,IAAqB,EAAEhO,EAAY,OAAO,GAAIyG,MAA2B,GAA0B,EAAK,MAA+B,GAAwB,0BAA0B,CAAC,GAAwB,EAAE,IAAM/sC,EAAIq0C,GAA0B,GAA0B,KAAQr0C,GAAIszC,GAAsBtzC,CAAG,CAAE,CAAC,GAAE,EAAQu0C,GAAc,GAAG,CAAC,IAAMr2C,EAAIooC,EAAY,QAAQmK,GAAgC,IAAI,CAAC,GAAKvyC,EAAI,uBAAuB,CAACA,EAAI,aAEz7B,EAAE,2BAA2B,CAAG,EAAQs2C,OAAmC,CAAC/D,GAAgC,IAAI,IAAI,CAAE,EACtH,SAAS,iBAAiB,YAAYsD,EAAwB,EAAE,SAAS,iBAAiB,YAAYG,EAAiB,EAAEv/C,EAAO,iBAAiB,SAAS6/C,GAA+B,CAAC,QAAQ,EAAI,CAAC,EAAEzgC,EAAO,iBAAiB,QAAQwgC,GAAc,CAAC,QAAQ,GAAK,QAAQ,EAAI,CAAC,EAAExgC,EAAO,iBAAiB,cAAc4/B,EAA0B,EAAE,SAAS,iBAAiB,QAAQjB,EAAe,EAAE3+B,EAAO,iBAAiB,cAAcm/B,EAAqB,EAAE,SAAS,iBAAiB,cAAcoB,EAAwB,EAAE,SAAS,iBAAiB,YAAYd,EAAmB,EAAE,SAAS,iBAAiB,YAAYI,EAAwB,EAAE,SAAS,iBAAiB,gBAAgBJ,EAAmB,EAAE,SAAS,iBAAiB,gBAAgBI,EAAwB,EACpwB7/B,EAAO,iBAAiB,aAAam/B,GAAsB,CAAC,QAAQ,EAAK,CAAC,EAAE,SAAS,iBAAiB,YAAYoB,GAAyB,CAAC,QAAQ,EAAI,CAAC,EAAE,SAAS,iBAAiB,WAAWd,EAAmB,EAAE,SAAS,iBAAiB,WAAWI,EAAwB,EAAE,IAAIa,GAAU,EAAMC,GAAc,KAAWC,IAAQ,EAAM,KAAQ,CAAC,GAAG,CAAChe,EAAQ,QAAQ,OAE5W,IAAM5vB,EAAE4vB,EAAQ,QAAQ,YAAkBv4B,EAAEu4B,EAAQ,QAAQ,aAAa,GAAG,CAAC5vB,GAAG,CAAC3I,EAAE,OAAO,IAAMw2C,EAAatO,EAAY,QAActgC,EAAGm+B,EAAS,QAAQ,GAAG,CAACn+B,EAAG,OAAO,IAAMykC,EAAQ39B,GAA2B/F,EAAE3I,EAAEw2C,CAAY,EAAQznC,EAAIs9B,EAAQ,IAAUoK,EAAW,KAAK,IAAI9tC,GAAGf,EAAG,iBAAiB,EAAE,GAAG,GAAG,KAAK,IAAI5H,GAAG4H,EAAG,iBAAiB,EAAE,GAAG,EAAQ8uC,EAAU,KAAK,IAAI3nC,GAAKnH,EAAG,gBAAgB,EAAE,GAAG,IAAI,GAAG,GAACqa,GAAOw0B,GAAYC,GAC3a,CAAgP,GAAhP5tC,EAAS,QAAQH,EAAE3I,EAAE,EAAK,EAAE8I,EAAS,cAAciG,CAAG,EAAKI,GAAoBqnC,CAAY,EAAGrK,GAAqBqK,EAAa7tC,EAAE3I,CAAC,EAAQksC,GAAsB,EAAMd,GAAW,UAAW0B,SAAW,EAAU,SAASA,OAAU,MAAMnkC,EAAE3I,GAAM0N,EAAO,qBAAqB,CAAC,IAAMgP,EAAO/T,EAAE3I,EAAE,EAAO,KAAK,IAAgB0c,EAAO,EAAE,EAAO,MAAA,GAAqBA,EAAO,EAAE,EAAO,IAAA,EAAqB,EAAO,OAAO,EAAkB,KAAM,GAAO,OAAO/T,EAAE3I,EAC9P,GADiQ0N,EAAO,uBAAuB,EAAE/F,IAAM,UAAU,YAAY,OAAO,MAAM,EAAE0kC,EAAQ,YAAY,EAAEA,EAAQ,YAAY,EACrjB,EAAG,eAAet9B,EAAI,EAAG,sBAAsBs9B,EAAQ,YAAY,EAAG,uBAAuBA,EAAQ,aAAa,EAAG,gBAAgB1jC,EAAE,EAAG,gBAAgB3I,EAAE,EAAG,cAAc,YAAY,IAAI,EAAK4H,EAAG,MAAM,CAAC,IAAM9H,EAAIooC,EAAY,QAAQtgC,EAAG,MAAM,MAAM,UAAUA,EAAG,cAAc,EAAEA,EAAG,MAAM,SAAS,IAAI,EAAE,EAAE,CAAC,EAAE3C,GAAS,KAAK+L,GAA4BpJ,EAAG,KAAK,CAAC,EAAEob,EAAS,OAAO,IAAI,EAAE,EAAE,CAAC,EAAEA,EAAS,OAAO,EAAE,IAAMhV,EAAS/I,GAAS,QAAQH,EAAS,EAAE,EAAG,SAASiJ,GAAiBL,EAAOM,CAAQ,EAAE,IAAMskC,EAAG,KAAK,IAAI,IAAIxyC,EAAI,YAAY,CAAC,EAAE8H,EAAG,MAAM,MAAM,UAAUA,EAAG,eAAeA,EAAG,SAAS0qC,CAAE,EAAE5lB,GAAoB9kB,EAAG9H,CAAG,CAAE,CADplB,CACqlB,EAAQ62C,IAAgB,EAAM,KAAQ,CAAC7uB,GAAuBlgB,CAAE,EAAE,AAA8CyuC,MAAhC,qBAAqBA,EAAS,EAAY,GAAG,AAA8CC,MAA5B,aAAaA,EAAa,EAAgB,MAAM,IAAMM,MAAQ,CAAC,GAAU,EAAEL,GAAOt0B,CAAK,CAAE,EAAQ40B,EAAM9Q,EAAS,QAA0C+Q,EAAxB,YAAY,IAAwB,GAAGD,GAAO,eAAe,GAE17B50B,GAAO60B,EAAU,IAAK,GAAU,sBAAsBF,CAAG,EAAU,GAAc,eAAe,CAAC,GAAc,KAAK,GAAU,sBAAsBA,CAAG,CAAE,EAAE,GAAG,CAAE,EAAE,EAAG,gBAAgBD,GAAe,IAAMtd,GAAG,IAAI,mBAAmB,CAACvR,GAAuBlgB,CAAE,EAAE+uC,GAAe,EAAK,CAAE,CAAC,EAAKpe,EAAQ,SAAQc,GAAG,QAAQd,EAAQ,OAAO,EAAEge,GAAO,EAAI,EACtV,IAAMQ,GAAoB,CAAC,eAAeJ,GAAe,EAAI,EAAE,GAAG,EAAE,eAAeA,GAAe,EAAI,EAAE,GAAG,CAAC,EAAQK,OAAuB,CAAC,EAAG,aAAa,CAAC,SAAS,OACtKjK,GAAM,MAAM,CAAE,EAAE,SAAS,iBAAiB,mBAAmBiK,EAAkB,EAAE,IAAMC,OAAyB,CAACnvB,GAAuBlgB,CAAE,CAAE,EAAErR,EAAO,iBAAiB,SAAS0gD,GAAqB,CAAC,QAAQ,EAAI,CAAC,EAAE1gD,EAAO,iBAAiB,SAAS0gD,GAAqB,CAAC,QAAQ,EAAI,CAAC,EAGxR,SAAS,iBAAiB,SAASA,GAAqB,CAAC,QAAQ,GAAK,QAAQ,EAAI,CAAC,EAAE,IAAMC,GAAU3gD,IAAS,OAAkC,KAAtBA,EAAO,eAAoB2gD,IAAI,iBAAiB,SAASD,GAAqB,CAAC,QAAQ,EAAI,CAAC,EAAEC,IAAI,iBAAiB,SAASD,GAAqB,CAAC,QAAQ,EAAI,CAAC,EAGzR,IAAME,OAA2B,CAAIvvC,EAAG,wBAAwB,MAAOA,EAAG,uBAAuB,MAAM,EAAQ,EAAG,uCAAuB,IAAI,GAAK,EAAErR,EAAO,iBAAiB,YAAY4gD,GAAuB,CAAC,QAAQ,GAAK,QAAQ,EAAK,CAAC,EAAE,IAAIC,GAAG,KAAQ,OAAO,qBAAuB,KAAa7e,EAAQ,UAAS,GAAG,IAAI,sBAAsB,CAACpe,KAAS,CAAC,IAAM5M,EAAM4M,GAAO,mBAAmB,EAAE,EAAG,kBAAkB,CAAC,CAACA,GAAO,gBAAgB5M,EAAM,EAAElC,GAAkB,OAAOzD,EAAG,SAAS2F,CAAK,CAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE6pC,GAAG,QAAQ7e,EAAQ,OAAO,GACpiB,IAAM8e,OAAS,CAAC,GAAO,QAAQ,sBAAsBA,EAAI,EAAE,IAAMv3C,EAAIooC,EAAY,QAAuDoP,EAA7B/nC,GAAoD,IAAI,UAAUzP,EAAI,mBAAuBy3C,EAAa,KAAQz3C,EAAI,iBAAkB,EAAa4nB,GAAkB9f,EAAG9H,EAAIy4B,EAAQ,OAAO,GAAW3wB,EAAG,QAAQA,EAAG,YAAW4f,GAAoB5f,CAAE,EAIlW,IAAM4vC,EAAY,CAAC,CAAC5vC,EAAG,mBAKvB,GAAGA,EAAG,2BAA2B,CAACA,EAAG,kBAAkB,CAAC,EAAG,kBAAkB,GAAK,qBAAqB49B,GAAO,OAAO,EAAE,GAAO,QAAQ,EACtI,eAAe,CAAC8B,GAAsB,EAAK,EAAE,EAAG,kBAAkB,EAAM,EAAE,CAAC,EAAE,MAAO,CAA0J,GAAvIkQ,GAAa13C,EAAI,kBAAkBA,EAAI,wBAAwB,CAAC8H,EAAG,cAAc9H,EAAI,2BAA2B,CAAC8H,EAAG,mBAAkC,CAC7PmlC,GAAM,MAAM,EAAE,EAAG,eAAe,EAAE,MAAO,CAAC,IAAM0K,EAAS,YAAY,IAAI,EAAQC,EAAa53C,EAAU63C,EAAU73C,EAAI,EAAG,mBAAmBA,EAAI,eAAe,QAAQ,GAAG,EAAE,IAAM9H,EAAGs/C,EAAa,EAAE,KAAK,IAAI,IAAIvK,GAAM,SAAS,CAAC,EAAEwK,GAAc,QAAQ,EACtP3vC,EAAG,cAAc9H,IAAK,EAAG,YAAYA,EAAI,EAAG,mBAAmB,IAAM8H,EAAG,OAAOA,EAAG,wBAAwB,UAAU,GAAGA,EAAG,iBAAiB,GAAG+mC,IAAmB7uC,EAAI,uBAAuBA,EAAI,iBAAiBA,EAAI,aAAaA,EAAI,iBAAiBA,EAAI,mBAAmB,OAAO,GAAGA,EAAI,kBAAkB,KAAG,EAAG,mBAAmB,GAAG,EAAG,qBAAqB,IAAM83C,EAAehwC,EAAG,oBAAoB,GAAS2uB,EAAQwW,GAAM,YAAkB8K,EAAmBpvB,GAAuB7gB,EAAG+vC,EAAUpf,EAAQ,QAAQkf,CAAQ,EAAQK,EAA0BrtB,GAAkC7iB,EAAG+vC,EAAUpf,EAAQ,QAAQkf,CAAQ,EAAQM,EAA8B,CAAC,CAACj4C,EAAI,+BAAqCk4C,EAA8BpwC,EAAG,8BAA8BA,EAAG,iCAAiCmwC,GAA+BnwC,EAAG,mCAAmC9H,EAAI,yBAAyB8H,EAAG,mCAAmC9H,EAAI,yBAAyB8H,EAAG,mCAAmC9H,EAAI,yBAAyB8H,EAAG,+BAA+B9H,EAAI,qBAAqB8H,EAAG,mCAAmC9H,EAAI,uBAAuB8H,EAAG,mCAAmC9H,EAAI,uBAAuB8H,EAAG,mCAAmC9H,EAAI,uBAA0BqoC,GAAU6P,IAA+B,EAAG,6BAA6BD,EAA8BN,EAAS,IAAI,GAAG,EAAG,4BAA4B,GAAK,EAAG,+BAA+BM,EAA8B,EAAG,iCAAiCj4C,EAAI,wBAAwB,EAAG,iCAAiCA,EAAI,wBAAwB,EAAG,iCAAiCA,EAAI,wBAAwB,EAAG,6BAA6BA,EAAI,oBAAoB,EAAG,iCAAiCA,EAAI,sBAAsB,EAAG,iCAAiCA,EAAI,sBAAsB,EAAG,iCAAiCA,EAAI,sBAAsB,IAAIm4C,EAAsBH,EAA0B,GAAG3P,GAAU4P,IAAgCnwC,EAAG,8BAA8B,GAAG6vC,EAAS,CAAC,IAAMS,EAAc,AAAmCtwC,EAAG,gCAA8B,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAK,OAAO,GAAK,SAAS,CAAC,EAAG,EAAc,EAAEkwC,EAA0B,EAAE,EAAc,EAAEA,EAA0B,EAAE,EAAc,OAAO,GAAK,EAAc,OAAOA,EAA0B,OAAO,EAAc,SAAS,EAAE,EAAsBI,CAAc,CAAuL,GAAtL,AAA8ItwC,EAAG,oCAAtGqjB,GAAoBysB,CAAY,GAAGxsB,GAAuBtjB,EAAG8vC,EAAanS,GAAU,QAAQ,EAAI,EAAuC,IAAO39B,EAAG,MAAM,CAAC,IAAMuwC,EAAqBh4C,GAAiBu3C,CAAY,EAAQU,EAAsB,CAAC,CAACxwC,EAAG,sBAAyBuwC,IAAuBvwC,EAAG,wBAAuB,EAAG,sBAAsBuwC,EAAwBC,GAAuBptB,GAA0B0sB,CAAY,GAAGzsB,GAAoBysB,CAAY,GAAGxsB,GAAuBtjB,EAAG8vC,EAAanS,GAAU,QAAQ,EAAI,EAAI,CAA4E,GAA3E7a,GAAwB9iB,EAAG8vC,EAAanf,EAAQ,QAAQgN,GAAU,OAAO,EAAKzlC,EAAI,kBAAkB23C,GAAU7vC,EAAG,cAAc,GAAG,IAAI,CAAC,IAAMywC,EAAIrgD,EAAG,EAAE,KAAK,MAAM,EAAEA,CAAE,EAAE,EAAE,QAAQ,IAAI,mBAAmB,CAAC,MAAI,IAAI,OAAO8Q,EAAS,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQlB,EAAG,uBAAuB,IAAIA,EAAG,wBAAwB,GAAG,KAAK,GAAGA,EAAG,uBAAuB,EAAE,GAAGA,EAAG,wBAAwB,IAAI,MAAMkB,EAAS,KAAK,OAAO,MAAM,UAAUA,EAAS,KAAK,OAAO,UAAU,WAAWA,EAAS,KAAK,OAAO,WAAW,SAASA,EAAS,KAAK,OAAO,QAAQ,CAAC,EAAE,EAAG,aAAa2uC,CAAS,CAChhHC,EAAa,uBAAuB,EAAG,MAAM,WAAW,KAAK5uC,EAAS,cAAc,EAAE,CAAC,IAAW4uC,EAAa,kBAAkB9vC,EAAG,cAAa,EAAG,cAAcqD,EAAWysC,EAAa,eAAe,EAAE,EAAG,YAAYA,EAAa,iBAAiB,EAAG,MAAM,WAAW9vC,EAAG,cAIlRkB,EAAS,cAAclB,EAAG,cAAc,CAAC,GACtCA,EAAG,MAAM,cAAa,EAAG,MAAM,qBAAqB8vC,EAAa,kBAAkBA,EAAa,qBAAqB,EAAKA,EAAa,2BAA2B,CAACA,EAAa,uBAAuBA,EAAa,kBAAkB,SAAQ,EAAG,MAAM,WAAW9vC,EAAG,SACxQ,IAAM0wC,GAAwB1wC,EAAG,wBAAwB,GAAG6vC,GAAU,CAAC9I,GAAwB4J,EAAwBb,EAAa,qBAAqB,CAACY,EAC1J,GADoLt1B,EAAS,UAAUu1B,IAAwB,EAAS,QAAQA,GAA2Bv1B,EAAS,eAAe00B,EAAa,sBAAoB,EAAS,aAAaA,EAAa,qBAAuB10B,EAAS,aAAa00B,EAAa,aAAW,EAAS,WAAWA,EAAa,YAAW,AAAuB10B,EAAS,aAAW,GAASA,EAAS,kBAAkB00B,EAAa,kBAAgB,EAAS,gBAAgBA,EAAa,iBAAgB10B,EAAS,OAAO,EACvoBpb,EAAG,MAAM,CAAC,IAAM4wC,EAAad,EAAa,aAAa9vC,EAAG,eAAqB6wC,EAAcf,EAAa,eAAe9vC,EAAG,aAAa8vC,EAAa,eAAe9vC,EAAG,aAAa8vC,EAAa,eAAe9vC,EAAG,YAAkB8wC,EAAWhB,EAAa,iBAAiB9vC,EAAG,UAAU8vC,EAAa,iBAAiB9vC,EAAG,UAAU8vC,EAAa,iBAAiB9vC,EAAG,SAAS,GAAG4wC,GAAcC,GAAeC,EAAW,CAE/Z,GAAG,CAAChB,EAAa,sBAAsB,CAAC,IAAMpF,EAAG,KAAK,IAAI,IAAIoF,EAAa,YAAY,CAAC,EAAE9vC,EAAG,MAAM,MAAM,UAAUA,EAAG,eAAeA,EAAG,SAAS0qC,CAAE,EAAE5lB,GAAoB9kB,EAAG8vC,CAAY,CAAE,CAAC,EAAG,eAAeA,EAAa,WAAW,EAAG,YAAYA,EAAa,aAAa,EAAG,YAAYA,EAAa,aAAa,EAAG,YAAYA,EAAa,aAAa,EAAG,SAASA,EAAa,eAAe,EAAG,SAASA,EAAa,eAAe,EAAG,SAASA,EAAa,cAAe,CAAC,CAGzd,GAAG9vC,EAAG,MAAM,CAAC,IAAM+wC,EAAGjB,EAAa,iBAKnC,GALuEiB,IAAK/wC,EAAG,iBAAyD8vC,EAAa,gBAAgB9vC,EAAG,kBAAkB8vC,EAAa,WAAW9vC,EAAG,YAA+C8vC,EAAa,4BAA4B,GAAG,IAAe,KAC5T9vC,EAAG,iBAAiBsa,GAAyBta,CAAE,EAAG6a,GAAyB7a,EAAG8vC,EAAa5uC,EAASsV,EAAMu6B,CAAE,EAAE,EAAG,kBAAkB,EAAE,EAAG,oBAAoB,KAAK,EAAG,mBAAmB,KAAK,EAAG,aAAa,IAAe/wC,EAAG,oBAAoB,GACrP,EAAG,kBAAkB,IAAI,EAAG,oBAAoB+wC,EAAG,EAAG,mBAAmB,CAAC,GAAGjB,CAAY,EAAE,EAAG,aAAa,IAAeiB,IAAK/wC,EAAG,sBAC/HA,EAAG,kBAAkB,IACrB,CAACA,EAAG,cAAcA,EAAG,oBAAoBsa,GAAyBta,CAAE,EAAE6a,GAAyB7a,EAAGA,EAAG,mBAAmBkB,EAASsV,EAAMxW,EAAG,mBAAmB,GAAQoa,GAAkBpa,EAAG,EAAE,EAAI,EAAG,EAAG,kBAAkB,IAAI,EAAG,oBAAoB+wC,EAAG,EAAG,mBAAmB,CAAC,GAAGjB,CAAY,EAAE,EAAG,aAAa,KAAY,EAAG,oBAAoBiB,EAAG,EAAG,mBAAmB,CAAC,GAAGjB,CAAY,EAAE,EAAG,aAAa,MAC5Y9vC,EAAG,kBAAkB,EAAE,CAA0E,IAAMgxC,EAAU,EAA1E,KAAK,IAAI,IAAIlB,EAAa,4BAA4B,EAA6B,EAAE,EAAG,mBAAmB1/C,EAAG4gD,EAExJ,IAAMC,EAAQ,IAAUC,EAAM,IAAI,GAAGlxC,EAAG,kBAAkBixC,EAAQ,CAClE,IAAM1gC,EAAEvQ,EAAG,kBAAkBixC,EAAcv7B,EAAOw7B,EAAO,KAAU,EAAE95C,GAAcmZ,CAAC,GAAG6J,GAAkBpa,EAAG0V,CAAM,CAAE,KAAK,CACzH,GAAG,CAAC1V,EAAG,aAAa,CAAC,IAAMmxC,EAAGnxC,EAAG,mBAEjCsa,GAAyBta,CAAE,EAC3B6a,GAAyB7a,EAAGmxC,EAAGjwC,EAASsV,EAAMxW,EAAG,mBAAmB,EAAE,EAAG,aAAa,GACtFoa,GAAkBpa,EAAGkxC,EAAM,EAAI,CAAE,CAAC,GAAGlxC,EAAG,mBAAmB,EAC3Doa,GAAkBpa,EAAG,EAAE,EAAI,EAAE,EAAG,kBAAkB,EAAE,EAAG,oBAAoB,KAAK,EAAG,mBAAmB,KAAK,EAAG,aAAa,OAAW,CACtI,IAAMuQ,GAAGvQ,EAAG,kBAAkBixC,GAAU,IACjCv7B,EAAOw7B,EAAO,KAD0C,GAAG,EAAE3gC,IAAI,EAAEA,IACtC6J,GAAkBpa,EAAG0V,CAAM,CAAE,CAAC,CAAC,CAAC,CAIpE,GAFG1V,EAAG,OAAOA,EAAG,oBAAoB,GAAGA,EAAG,iBAAiBoa,GAAkBpa,EAAG,EAAE,EAAI,EAEnF8vC,EAAa,wBAAwB9vC,EAAG,OAAOA,EAAG,kBAAkB,CACvE,IAAMoxC,EAAOrB,EAAU,YAAY,EAAQsB,EAAMtB,EAAU,cAAc,EAAQuB,EAAMvB,EAAU,cAAc,EAAQwB,EAAMxB,EAAU,cAAc,EAAQyB,EAAMzB,EAAU,gBAAgB,EAAQ0B,EAAM1B,EAAU,gBAAgB,EAAQ2B,EAAM3B,EAAU,gBAAgB,EAAQ4B,EAAM5B,EAAU,iBAAiB,GAAS6B,EAAM7B,EAAU,iBAAiB,EAAQ8B,EAAM9B,EAAU,iBAAiB,GACtY/vC,EAAG,gBAAgB,IAAA,KAAW,EAAG,cAAcoxC,EAAO,EAAG,aAAaC,EAAM,EAAG,aAAaC,EAAM,EAAG,aAAaC,EAAM,EAAG,aAAaC,EAAM,EAAG,aAAaC,EAAM,EAAG,aAAaC,EAAM,EAAG,aAAaC,EAAM,EAAG,aAAaC,EAAM,EAAG,aAAaC,GACzP,IAAMC,EAAWhC,EAAa,iBAAiB,IAAI,EAAG,gBAAgBsB,EAAOpxC,EAAG,eAAe8xC,EAAW,EAAG,eAAeT,EAAMrxC,EAAG,cAAc8xC,EAAW,EAAG,eAAeR,EAAMtxC,EAAG,cAAc8xC,EAAW,EAAG,eAAeP,EAAMvxC,EAAG,cAAc8xC,EAAW,EAAG,eAAeN,EAAMxxC,EAAG,cAAc8xC,EAAW,EAAG,eAAeL,EAAMzxC,EAAG,cAAc8xC,EAAW,EAAG,eAAeJ,EAAM1xC,EAAG,cAAc8xC,EAAW,EAAG,eAAeH,EAAM3xC,EAAG,cAAc8xC,EAAW,EAAG,eAAeF,EAAM5xC,EAAG,cAAc8xC,EAAW,EAAG,eAAeD,EAAM7xC,EAAG,cAAc8xC,EAEnjB,IAAMC,EAAe,CAAC,EAAK/xC,EAAG,OAAM+xC,EAAe,KAAK/xC,EAAG,KAAK,EAAKA,EAAG,kBAAiB+xC,EAAe,KAAK/xC,EAAG,gBAAgB,EAAE,IAAI,IAAMgyC,KAAeD,EAAe,CACrC,IAAME,GAAtHD,EAAY,sBAAsBhyC,EAAG,iBAAmCgyC,EAAY,gBAAgBhyC,EAAG,UAA2D,KAAK,IAAI,IAAIA,EAAG,aAAa,EAAEgyC,EAAY,MAAM,UAAUC,CAAc,EAChQ,AAA8BD,EAAY,eAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAG,IAAMz5B,EAAMy5B,EAAY,aAC7H,GAAGz5B,EAAM,YAAY05B,EAAe,CAACD,EAAY,SAAS,IAAI,EAAE,EAAE,CAAC,EAAEA,EAAY,SAAS,IAAI,EAAE,EAAE,CAAC,EAAE30C,GAAS,KAAK+L,GAA4B4oC,CAAW,CAAC,EAAE,IAAM7iD,EAAEkO,GAAS,UAAUH,EAAS,EACjM,GADmM,EAAM,QAAQ/N,EAAE,EAAE,EAAM,QAAQA,EAAE,EAAE,EAAM,QAAQA,EAAE,EAAE,EAAM,UAAU8iD,EACtQD,IAAchyC,EAAG,OAAOA,EAAG,QAAQA,EAAG,SAAS,CAAC,IAAMuM,EAAGlP,GAAS,QAAQF,EAAS,EAAE,EAAG,OAAO,SAAS,EAAEE,GAAS,IAAI,EAAE,KAAK,EAAG,YAAY2C,EAAG,OAAO,SAAS,EAAE,EAAG,YAAYA,EAAG,OAAO,SAAS,EAAE,IAAMilB,EAAK,KAAK,IAAI1Y,EAAG,EAAEA,EAAG,EAAEA,EAAG,CAAC,EAAE,IAAI,EAAG,SAAS,OAAO,OAAO,KAAK,CAAC0Y,EAAK,EAAG,SAAS,OAAO,OAAO,MAAMA,EAAK,EAAG,SAAS,OAAO,OAAO,IAAIA,EAAK,EAAG,SAAS,OAAO,OAAO,OAAO,CAACA,EAAKjlB,EAAG,SAAS,OAAO,OAAO,uBAAuB,CAAE,CAAC,CAACgyC,EAAY,SAAS,IAAI,CAACz5B,EAAM,QAAQvY,EAAG,aAAa,CAACuY,EAAM,QAAQvY,EAAG,aAAa,CAACuY,EAAM,QAAQvY,EAAG,YAAY,EAAKgyC,IAAchyC,EAAG,QAAO,EAAG,WAAWgyC,EAAY,SAAS,GAAGA,EAAY,SAAS,IAAIhyC,EAAG,aAAa9I,EAAS8I,EAAG,aAAa9I,EAAS8I,EAAG,aAAa9I,CAAQ,EACltB86C,IAAchyC,EAAG,QAAO,EAAG,cAAcgyC,EAAY,SAAS,EAAE,EAAG,cAAcA,EAAY,SAAS,EAAE,EAAG,cAAcA,EAAY,SAAS,GAC9IA,IAAchyC,EAAG,OAAO8vC,EAAa,aAAa,CAACJ,IAAc,EAAY,SAAS,EAAE1vC,EAAG,WAAW,KAAK,IAAI2uB,EAAQmhB,EAAa,WAAW,KAAK,GAAG,CAAC,EAAEA,EAAa,eAAe,GAAG,EAAY,SAAS,GAAG,KAAK,IAAInhB,EAAQmhB,EAAa,WAAW,KAAK,EAAE,EAAE,IAAI,EAAY,SAAS,GAAG,KAAK,IAAInhB,EAAQmhB,EAAa,WAAW,KAAK,GAAG,EAAE,EAAE,KAAKvrB,GAA0BytB,CAAW,EAAEjuB,GAAyBiuB,EAAY/B,CAAkB,EAAEhsB,GAA8B+tB,EAAY3B,EAAsBP,EAAa9vC,EAAG,aAAaA,EAAG,aAAaA,EAAG,aAAaA,EAAG,aAAa,EAAEgkB,GAA2BguB,EAAY3B,EAAsBP,EAAa9vC,EAAG,aAAaA,EAAG,aAAaA,EAAG,YAAY,EAAE8jB,GAA4BkuB,CAAW,EAAEzuB,GAA4ByuB,EAAYhyC,EAAG,kBAAkB8vC,CAAY,CAAE,CAC1zB9vC,EAAG,SAAS,OAAO,IAAI,EAAE,EAAE,CAAC,EAAEA,EAAG,OAAO,SAAS,IAAIA,EAAG,aAAaA,EAAG,aAAaA,EAAG,YAAY,CAAE,MAASA,EAAG,OAAO8vC,EAAa,aAAa,CAACJ,GAAc,EAAG,MAAM,SAAS,EAAE1vC,EAAG,WAAW,KAAK,IAAI2uB,EAAQmhB,EAAa,WAAW,KAAK,GAAG,CAAC,EAAEA,EAAa,eAAe,GAAG,EAAG,MAAM,SAAS,GAAG9vC,EAAG,eAAe,GAAG,KAAK,IAAI2uB,EAAQmhB,EAAa,WAAW,KAAK,GAAG,EAAE,EAAE,IACtX,EAAG,MAAM,SAAS,EAAE9vC,EAAG,eAAe,EAAE,EAAG,MAAM,SAAS,GAAGA,EAAG,eAAe,GAAG,KAAK,IAAI2uB,EAAQmhB,EAAa,WAAW,KAAK,EAAE,EAAE,KAAa9vC,EAAG,OAAO,CAAC8vC,EAAa,aAAa,CAACA,EAAa,wBAAuB,EAAG,MAAM,SAAS,EAAE9vC,EAAG,WAAW,EAAG,MAAM,SAAS,EAAEA,EAAG,eAAe,EACnS,EAAG,MAAM,SAAS,EAAEA,EAAG,eAAe,EAAE,EAAG,MAAM,SAAS,EAAEA,EAAG,eAAe,GAAG,GAAGA,EAAG,OAAO,CAAC8vC,EAAa,sBAAsB,CAAC,IAAMpF,EAAG,KAAK,IAAI,IAAIoF,EAAa,YAAY,CAAC,EAAE9vC,EAAG,MAAM,MAAM,UAAUA,EAAG,eAAeA,EAAG,SAAS0qC,CAAE,EAAE,EAAG,MAAM,SAAS,EAAE1qC,EAAG,YAAYA,EAAG,MAAM,SAAS,GAAGA,EAAG,MAAM,uBAAuB,GAAG,EAAG,MAAM,SAAS,EAAEA,EAAG,YAAYA,EAAG,MAAM,SAAS,EAAEukB,GAA0BvkB,EAAG,KAAK,EAAE+jB,GAAyB/jB,EAAG,MAAMiwC,CAAkB,EAAEhsB,GAA8BjkB,EAAG,MAAMqwC,EAAsBP,EAAaA,EAAa,cAAc,EAAEA,EAAa,cAAc,EAAEA,EAAa,cAAc,EAAEA,EAAa,YAAY,CAAC,EAAE9rB,GAA2BhkB,EAAG,MAAMqwC,EAAsBP,EAAaA,EAAa,gBAAgB,EAAEA,EAAa,gBAAgB,EAAEA,EAAa,gBAAgB,CAAC,EAAEhsB,GAA4B9jB,EAAG,KAAK,EAAEujB,GAA4BvjB,EAAG,MAAMA,EAAG,kBAAkB8vC,CAAY,CAAE,CAE56B,GAF66BtrB,GAA4BxkB,EAAG,MAAM8vC,EAAa1/C,EAAGs/C,CAAY,EAAK1vC,EAAG,OAAO8vC,EAAa,eAAe5qB,GAAmBllB,EAAG8vC,EAAaG,CAAkB,EAC3kCjwC,EAAG,OAAO,CAAC0vC,IAAc,EAAG,SAAS1vC,EAAG,aAAaA,EAAG,QAAQ,IAAI,EAAG,SAASA,EAAG,aAAaA,EAAG,QAAQ,KAC3GA,EAAG,OAAO8vC,EAAa,qBAAqB,CAACJ,EAAa,CAAC,IAAM14B,EAAU84B,EAAa,uBAAuB,EAAG,MAAM,SAAS,GAAG9vC,EAAG,OAAOgX,EAAU,EAAG,MAAM,SAAS,GAAGhX,EAAG,OAAOgX,EAAU,EAAG,CACvM,GAAGhX,EAAG,UAAU,KAAK,EAAE,CAAC,IAAMga,EAAW+1B,EAAU,eAAe,CAAC,EAAE,IAAI,GAAK,CAAC70C,EAAIqR,KAAMvM,EAAG,UAAU,CAAC,IAAMxH,EAAKwhB,EAAW9e,GAAK,GAAG,CAAC1C,EAAK,SAC3I,GAAG,CAAC+T,EAAG,SAAS,CAACA,EAAG,MAAM,CAAC,IAAM0E,EAAI1E,EAAG,UAAa0E,GAAKA,EAAI,OAAOA,EAAI,UACtE6+B,EAAa,aAAa,CAACJ,IAAc,EAAI,MAAM,SAAS,GAAGz+B,EAAI,YAAYA,EAAI,MAAM,SAAS,GAAG,KAAK,IAAI0d,EAAQmhB,EAAa,WAAW,KAAK,GAAG,CAAC,EAAEA,EAAa,eAAe,GAAG,EAAI,MAAM,SAAS,GAAG,KAAK,IAAInhB,EAAQmhB,EAAa,WAAW,KAAK,EAAE,EAAE,IAAI,EAAI,MAAM,SAAS,GAAG,KAAK,IAAInhB,EAAQmhB,EAAa,WAAW,KAAK,GAAG,EAAE,EAAE,KAC/U7+B,EAAI,OAAO6+B,EAAa,iBAAiB,CAACJ,GAAcxzC,GAA0B+U,EAAIA,EAAI,KAAK,GAAEA,EAAI,MAAM,OAAO7gB,CAAE,EAAE2zB,GAAyB9S,EAAI,MAAMg/B,CAAkB,EAAE1sB,GAA4BtS,EAAI,MAAMjR,EAAG,kBAAkB8vC,CAAY,GAAG,QAAS,CAC7N,GAAtC,EAAG,MAAM,QAAQt3C,EAAK,UAAU,GAAS,CAAC+T,EAAG,MAAM,QAAQ,SAC3D,IAAM2lC,EAAa,CAAC,EAAE15C,EAAK,cAAcA,EAAK,QAAc25C,EAAYD,IAAe15C,EAAK,aAAaA,EAAK,aAAa,OAAO,OAAO,MAAU45C,EAAW55C,EAAK,OAAO,EAAM65C,EAAU75C,EAAK,MAAM,EAAM85C,EAAU95C,EAAK,MAAM,EAAM+5C,EAAU/5C,EAAK,MAAM,EAAMg6C,EAAUh6C,EAAK,MAAM,EAAMi6C,EAAUj6C,EAAK,MAAM,EAAMk6C,EAAUl6C,EAAK,MAAM,EAC5U,GAAGs3C,EAAa,sBAAsB,CAAC,AAAqBvjC,EAAG,eAAa,CAAC,MAAM6lC,EAAW,KAAKC,EAAU,KAAKC,EAAU,KAAKC,EAAU,KAAKC,EAAU,KAAKC,EAAU,KAAKC,CAAS,EAAG,IAAMC,EAAIpmC,EAAG,aAAmBulC,EAAWhC,EAAa,iBAAiB,IAAI,EAAI,QAAQsC,EAAWO,EAAI,OAAOb,EAAW,EAAI,OAAOO,EAAUM,EAAI,MAAMb,EAAW,EAAI,OAAOQ,EAAUK,EAAI,MAAMb,EAAW,EAAI,OAAOS,EAAUI,EAAI,MAAMb,EAAW,EAAI,OAAOU,EAAUG,EAAI,MAAMb,EAAW,EAAI,OAAOW,EAAUE,EAAI,MAAMb,EAAW,EAAI,OAAOY,EAAUC,EAAI,MAAMb,EAAW,EAAWa,EAAI,MAAM,EAAUA,EAAI,KAAK,EAAUA,EAAI,KAAK,EAAUA,EAAI,KAAK,EAAUA,EAAI,KAAK,EAAUA,EAAI,KAAK,EAAUA,EAAI,IAAK,CAAC,IAAMC,EAAYV,EAAapC,EAAa,sBAAsB9vC,EAAG,cAAc8vC,EAAa,YAAY,EAAE,EAAQ+C,EAAWX,EAAapC,EAAa,sBAAsB9vC,EAAG,aAAa8vC,EAAa,cAAc,EAAE,EAAQgD,EAAWZ,EAAapC,EAAa,sBAAsB9vC,EAAG,aAAa8vC,EAAa,cAAc,EAAE,EAAQiD,EAAWb,EAAapC,EAAa,sBAAsB9vC,EAAG,aAAa8vC,EAAa,cAAc,EAAE,EAAQkD,EAAWd,EAAapC,EAAa,sBAAsB9vC,EAAG,aAAa8vC,EAAa,gBAAgB,EAAE,EAAQmD,EAAWf,EAAapC,EAAa,sBAAsB9vC,EAAG,aAAa8vC,EAAa,gBAAgB,EAAE,EAAQoD,EAAWhB,EAAapC,EAAa,sBAAsB9vC,EAAG,aAAa8vC,EAAa,gBAAgB,EAAE,EAAQqD,EAASP,EAAYR,EAAiBgB,EAAQP,EAAWR,EAAgBgB,EAAQP,EAAWR,EAAgBgB,EAAQP,EAAWR,EAAgBgB,GAAQP,EAAWR,EAAgBgB,GAAQP,EAAWR,EAAgBgB,EAAQP,EAAWR,EAAgBgB,EAAaxB,GAAcC,IAAc,OAC/lDF,GAAtHC,EAAalyC,EAAG,eAAeuM,EAAG,iBAAyC2lC,EAAalyC,EAAG,SAASuM,EAAG,UAA4E,KAAK,IAAI,IAAI4mC,CAAQ,EAExO,GAF0O5mC,EAAG,MAAM,MAAM,UAAU0lC,CAAc,EAE9Q1lC,EAAG,sBAAsB0lC,EAAe,CAAC,GAAG,OAAO,SAAS1lC,EAAG,SAAS,EAAG,EAAG,gBAAgBA,EAAG,cAAc,GAAG0lC,EAAe,EAAG,gBAAgB1lC,EAAG,cAAc,GAAG0lC,EAAe,EAAG,gBAAgB1lC,EAAG,cAAc,GAAG0lC,EAAe,EAAG,aAAa1lC,EAAG,WAAW,GAAG0lC,MAAoB,CAAC1lC,EAAG,MAAM,SAAS,IAAI,EAAE,EAAE,CAAC,EAAEA,EAAG,MAAM,SAAS,IAAI,EAAE,EAAE,CAAC,EAAElP,GAAS,KAAK+L,GAA4BmD,EAAG,KAAK,CAAC,EAAE,IAAMpd,EAAEkO,GAAS,UAAUH,EAAS,EAAE,EAAG,eAAe/N,EAAE,EAAE,EAAG,eAAeA,EAAE,EAAE,EAAG,eAAeA,EAAE,EAAE,EAAG,YAAYkO,GAAS,IAAI,CAAE,CAAC,EAAG,oBAAoB40C,CAAe,CAGlkB,IAAM0B,EAAY3zC,EAAG,aAAaA,EAAG,QAAQ,UAAU,GAAG,EAE1D,GAF+D0zC,GAAcl2C,GAAuB,IAAIw1C,EAAW97C,EAAS+7C,EAAW/7C,EAASg8C,EAAWh8C,EAAS,KAAK,EAAEuG,GAAsB,aAAaD,EAAsB,EAAED,GAAwB,IAAI,CAACgP,EAAG,eAAe8lC,EAAUsB,GAAapnC,EAAG,aAAa,GAAG+lC,EAAU,CAAC/lC,EAAG,eAAegmC,CAAS,CAAC,CAAC,gBAAgB90C,EAAqB,EAAE8O,EAAG,MAAM,SAAS,IAAIsmC,EAAWt1C,GAAwB,EAAEu1C,EAAWv1C,GAAwB,EAAEw1C,EAAWx1C,GAAwB,CAAC,GAAQgP,EAAG,MAAM,SAAS,IAAI,CAACA,EAAG,eAAe6mC,EAAQO,GAAapnC,EAAG,aAAa,GAAG8mC,EAAQ,CAAC9mC,EAAG,eAAe+mC,CAAO,EAAG,EAAG,WAAW/mC,EAAG,MAAM,SAAS,EAAEA,EAAG,MAAM,SAAS,IAAIgnC,GAAQr8C,EAASs8C,GAAQt8C,EAASu8C,EAAQv8C,CAAQ,EACvvB44C,EAAa,aAAa,CAACJ,IAAc,EAAG,MAAM,SAAS,EAAEnjC,EAAG,WAAW,KAAK,IAAIoiB,EAAQmhB,EAAa,WAAW,KAAK,GAAG,CAAC,EAAEA,EAAa,eAAe,GAAG,EAAG,MAAM,SAAS,GAAG,KAAK,IAAInhB,EAAQmhB,EAAa,WAAW,KAAK,EAAE,EAAE,IAAI,EAAG,MAAM,SAAS,GAAG,KAAK,IAAInhB,EAAQmhB,EAAa,WAAW,KAAK,GAAG,EAAE,EAAE,KACnTA,EAAa,qBAAqB,CAACJ,EAAa,CAAC,IAAM14B,EAAU84B,EAAa,uBAAuB,EAAG,MAAM,SAAS,GAAG9vC,EAAG,OAAOgX,EAAU,EAAG,MAAM,SAAS,GAAGhX,EAAG,OAAOgX,EAAU,EAAG,CAACuN,GAA0BhY,EAAG,KAAK,EAAEwX,GAAyBxX,EAAG,MAAM0jC,CAAkB,EAAEhsB,GAA8B1X,EAAG,MAAM8jC,EAAsBP,EAAasD,EAAQC,EAAQC,EAAQH,CAAQ,EAAEnvB,GAA2BzX,EAAG,MAAM8jC,EAAsBP,EAAayD,GAAQC,GAAQC,CAAO,EAAE3vB,GAA4BvX,EAAG,KAAK,EAAEgX,GAA4BhX,EAAG,MAAMvM,EAAG,kBAAkB8vC,CAAY,EAAEtrB,GAA4BjY,EAAG,MAAMujC,EAAa1/C,EAAGs/C,CAAY,EAChpBnjC,EAAG,OAAOujC,EAAa,iBAAiB,CAACJ,GAAcxzC,GAA0BqQ,EAAGA,EAAG,KAAK,GAAEA,EAAG,MAAM,OAAOnc,CAAE,CAAE,CAAC,CAEtH,GADG4P,EAAG,OAAO8vC,EAAa,iBAAiB,CAACJ,GAAcxzC,GAA0B8D,EAAGA,EAAG,KAAK,GAAEA,EAAG,MAAM,OAAO5P,CAAE,EAAEg4C,GAA2BlwC,CAAG,EAChJA,EAAI,4BAA4B8H,EAAG,WAAW,CAAC,IAAMsoC,GAAUtoC,EAAG,YAAY,MAAM,IAAI,KAAK9H,EAAI,0BAA0B,IAAI,QAAQ8H,EAAG,WAAW,MAAM,GAAG,GAAGwnC,KAAyBc,GAAU,CAACf,EAAoB,CAC5N,kBAAoB,IAAI,IAAI,GAAuBe,EAAS,IAAI,IAAMxb,KAAM50B,EAAI,sBAAsB,CAAC,EAAE,CAAC,IAAM07C,EAAY9mB,EAAG,SAAS,KAAK,CAAC,CAAC,YAAY,EAAQ+mB,EAAU5L,GAA0Bnb,CAAE,EAAE,GAAG,CAAC8mB,GAAarM,EAAoB,IAAIsM,CAAS,EAAE,SAC/P,IAAIC,EAAQhnB,EAAG,SAASib,GAAuB/nC,EAAG,WAAW8sB,EAAG,QAAQ,EAAE,KAAiK,GAAxJA,EAAG,UAAS9sB,EAAG,WAAW,SAAS,GAAG,CAAI8zC,GAAkB3kD,IAAI6Q,EAAG,YAAqB7Q,EAAE,MAAMA,EAAE,KAAK,YAAY,CAAC,CAAC,SAASykD,CAAW,IAAE,EAAQzkD,EAAE,CAAC,EAAK,CAAC29B,EAAG,UAAU,CAACgnB,GAAS9zC,EAAG,UAAW,IAAI,GAAK,EAAEuM,KAAMvM,EAAG,UAAU,CAAC,GAAG8zC,EAAQ,MAASvnC,EAAG,SAASA,EAAG,OAAOA,EAAG,MAAM,SAAS,GAAG,CAAIunC,GAAkB3kD,IAAIod,EAAG,OAAgBpd,EAAE,MAAMA,EAAE,KAAK,YAAY,CAAC,CAAC,SAASykD,CAAW,IAAG,EAAQzkD,EAAG,CAAC,CAAG,CAAEo4C,EAAoB,IAAIsM,EAAUC,CAAO,CAAE,CAAC,CAChhBvL,GAAgB,MAAM,EAAEC,EAAiB,MAAM,EAAEC,GAAqB,MAAM,EAAE,IAAI,IAAM3b,KAAM50B,EAAI,sBAAsB,CAAC,EAAE,CAA8D,GAAG,EAAhD40B,GAAI,SAASA,GAAI,uBAAuB,IAAmB,SAAS,IAAM+mB,EAAU5L,GAA0Bnb,CAAE,EAAE,GAAG+mB,IAAY,QAAQ,SAAS,IAAMC,EAAQvM,EAAoB,IAAIsM,CAAS,EAAE,GAAG,CAACC,EAAQ,SAG3VrL,GAAqB,IAAIqL,EAAQhnB,CAAE,EAAE,IAAMinB,EAAiB,CAACjE,EAAa,mBAAsBhjB,EAAG,YAAWyb,GAAgB,IAAIuL,CAAO,EAAKC,GAAkBjnB,EAAG,aAAY0b,EAAiB,IAAIsL,CAAO,CAAE,CAC7M,IAAI,GAAK,CAAC/iC,KAAQs2B,GAAsBkB,GAAgB,IAAIx3B,CAAI,GAAEs2B,GAAiB,OAAOt2B,CAAI,EAAG,IAAI,IAAMlb,KAAK0yC,GAAgB,CAAC,IAAMzb,EAAG2b,GAAqB,IAAI5yC,CAAC,EAAE,GAAG,CAACwxC,GAAiB,IAAIxxC,CAAC,EAAGwxC,GAAiB,IAAIxxC,EAAE,CAAC,MAAMi3B,GAAI,qBAAqB,EAAE,KAAKA,GAAI,oBAAoB,GAAG,CAAC,MAAO,CAAC,IAAMnc,EAAK02B,GAAiB,IAAIxxC,CAAC,EAAE,EAAK,MAAMi3B,GAAI,qBAAqB,EAAE,EAAK,KAAKA,GAAI,oBAAoB,GAAI,CAAC,CACrZ,IAAI,GAAK,CAAC/b,KAAQu2B,EAAmB,GAAG,CAACkB,EAAiB,IAAIz3B,CAAI,EAAE,CAAC,IAAMJ,EAAK22B,EAAkB,IAAIv2B,CAAI,EAAE,EAAK,SAAS,EAAEJ,EAAK,SAAS,EAAK,SAAS,EAAEA,EAAK,SAAS22B,EAAkB,OAAOv2B,CAAI,CAAE,CAAE,IAAI,IAAMlb,KAAK2yC,EAAiB,CAAC,IAAM1b,EAAG2b,GAAqB,IAAI5yC,CAAC,EAAE,GAAG,CAACyxC,EAAkB,IAAIzxC,CAAC,EAAGyxC,EAAkB,IAAIzxC,EAAE,CAAC,UAAUi3B,GAAI,0BAA0B,GAAG,SAASj3B,EAAE,SAAS,EAAE,SAASA,EAAE,SAAS,CAAC,CAAC,MAAO,CAAC,IAAM8a,EAAK22B,EAAkB,IAAIzxC,CAAC,EAAE,EAAK,UAAUi3B,GAAI,0BAA0B,EAAG,CAAC,CAAC,MACvc,GAAjDua,GAAiB,KAAK,GAAEA,GAAiB,MAAM,EAAKC,EAAkB,KAAK,EAAE,CAAC,IAAI,GAAK,CAACv2B,EAAKJ,KAAQ22B,EAAmB,EAAK,SAAS,EAAE32B,EAAK,SAAS,EAAK,SAAS,EAAEA,EAAK,SAAU22B,EAAkB,MAAM,CAAE,CAClN,GAAGD,GAAiB,KAAK,GAAGj3C,EAAG,EAAG,IAAI,GAAK,CAAC2gB,EAAKJ,KAAQ02B,GAAiB,CAAC,IAAM2M,EAAIrjC,EAAK,MAAMvgB,EAAMugB,EAAK,OAAO,IAAI,EAAK,SAAS,GAAGqjC,EAAYrjC,EAAK,OAAO,IAAI,EAAK,SAAS,GAAGqjC,EAAS,EAAK,SAAS,GAAGA,CAAI,CAClN,GAAG1M,EAAkB,KAAK,GAAGtnC,EAAG,eAAe,IAAA,GAAW,IAAI,GAAK,CAAC+Q,EAAKJ,KAAQ22B,EAAkB,CAAC,IAAM2M,EAAGj0C,EAAG,QAAQ,EAAQk0C,EAAGl0C,EAAG,QAAQ,EAAE,EAAK,SAAS,EAAE2Q,EAAK,SAASsjC,EAAGtjC,EAAK,UAAU,EAAK,SAAS,EAAEA,EAAK,SAASujC,EAAGvjC,EAAK,UAAU,EAAG,CACnP,GAAGvgB,EAAG,EAAE,CACR,GAAGw2C,EAAW,KAAK,CAAC,IAAMoN,EAAIpN,EAAW,QAAQ,YAAY,GAAwBuN,EAAO,KAAK,IAAI,EAAE/jD,EAAG4jD,CAAG,EAAE,EAAW,WAAWpN,EAAW,OAAOA,EAAW,UAAUuN,EACzK,KAAK,IAAIvN,EAAW,OAAOA,EAAW,QAAQ,EAAE,OAAM,EAAW,SAASA,EAAW,OAAQ,CAChG,GAAGC,EAAc,KAAK,CAAC,IAAMmN,EAAInN,EAAc,QAAQ,YAAY,GAAwBsN,EAAO,KAAK,IAAI,EAAE/jD,EAAG4jD,CAAG,EAAE,EAAc,WAAW,EAAEnN,EAAc,UAAUsN,EAAUtN,EAAc,SAAS,MACzMgF,GAAkBhF,CAAa,CAAG,CAClC,GAAGO,GAAc,CAAC,IAAMgN,EAAGhN,GAAoB+M,EAAO,KAAK,IAAI,EAAE/jD,EAAG,CAAoB,EAAEgkD,EAAG,KAAK,SAAS,KAAKA,EAAG,UAAUD,CAAM,EAAKC,EAAG,KAAK,SAAS,WAAWA,EAAG,SAAS,EAAE,OAAMA,EAAG,KAAK,SAAS,KAAKA,EAAG,SAAS,EAAE,GAAc,KAAM,CAAC,CAIjP,GAAGl8C,EAAI,0BAA0B8H,EAAG,WAAW,CAAC,AAAmBA,EAAG,8BAAY,IAAI,IACtF,IAAMq0C,EAAen8C,EAAI,sBAAsBA,EAAI,iBAAiB,IAAI,EAAQo8C,GAAYt0C,EAAG,YAAY,MAAM,IAAI,KAAK9H,EAAI,wBAAwB,IAAI,QAAQ8H,EAAG,WAAW,MAAM,GAAG,GAAG6oC,KAAyByL,GAAY,CAAC1L,GAAoB,CAAC,mBAAoB,IAAI,IAAI,GAAuB0L,EAAW,IAAI,IAAMhvB,KAAQptB,EAAI,oBAAoB,CAAC,EAAE,CAAC,IAAM07C,EAAYtuB,EAAK,SAAS,KAAK,CAAC,CAAC,YAAY,EAAQuuB,EAAUvuB,EAAK,SAAS,QAAQA,EAAK,WAAW,QAAQsuB,IAAc,GAAG,CAACA,GAAahL,GAAoB,IAAIiL,CAAS,EAAE,SAAS,IAAIC,EAAQxuB,EAAK,SAASyiB,GAAuB/nC,EAAG,WAAWslB,EAAK,QAAQ,EAAE,KAA0M,GAAjMA,EAAK,UAAStlB,EAAG,WAAW,SAAS,GAAG,CAAI8zC,GAAkB3kD,IAAI6Q,EAAG,aAAsB7Q,EAAE,QAAQA,EAAE,SAASA,EAAE,aAAaA,EAAE,MAAMA,EAAE,KAAK,YAAY,CAAC,CAAC,SAASykD,CAAW,IAAG,EAAQzkD,EAAG,CAAC,EAAK,CAACm2B,EAAK,UAAU,CAACwuB,GAAS9zC,EAAG,UAAW,IAAI,GAAK,EAAEuM,KAAMvM,EAAG,UAAU,CAAC,GAAG8zC,EAAQ,MAASvnC,EAAG,SAASA,EAAG,OAAOA,EAAG,MAAM,SAAS,GAAG,CAAIunC,GAAkB3kD,IAAIod,EAAG,QAAiBpd,EAAE,QAAQA,EAAE,SAASA,EAAE,aAAaA,EAAE,MAAMA,EAAE,KAAK,YAAY,CAAC,CAAC,SAASykD,CAAW,IAAG,EAAQzkD,EAAG,CAAC,CAAG,CAAEy5C,GAAoB,IAAIiL,EAAUC,CAAO,CAAE,CAAC,CAAC,IAAI,IAAMxuB,KAAQptB,EAAI,oBAAoB,CAAC,EAAE,CAAC,IAAMq8C,EAASjvB,EAAK,SAAS,KAAK,EAAE,GAAG,CAACivB,EAAS,SACruC,IAAMV,EAAUvuB,EAAK,SAAS,QAAQA,EAAK,WAAW,QAAQivB,EAAS,YAAY,IAAUzxC,EAAO8lC,GAAoB,IAAIiL,CAAS,EAAE,GAAG,CAAC/wC,EAAO,SAClJ,IAAMklB,EAAQ5C,GAAyBE,EAAKvjB,GAA8BujB,EAAK,YAAYqL,EAAQ,QAAQrL,EAAK,aAAa,CAAC,EACxHkvB,EAAY,OAAOlvB,GAAM,aAAa,EAAE,CAAC,CAAC,KAAK,EAAMmvB,EAAGz0C,EAAG,YAAY,IAAIu0C,CAAQ,EAGiM,IAH5L,CAACE,GAAIA,EAAG,eAAeD,KAErH,EAAG,CAAC,KAAKxsB,EAAQ,KAAK,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,KAAKA,EAAQ,KAAK,OAAOA,EAAQ,OAAO,OAAOA,EAAQ,OAAO,OAAOA,EAAQ,OAAO,QAAQA,EAAQ,QAAQ,aAAawsB,CAAW,EAAEx0C,EAAG,YAAY,IAAIu0C,EAASE,CAAE,GAClQ,EAAG,OAAOzsB,EAAQ,KAAKysB,EAAG,MAAMJ,EAAe,EAAG,OAAOrsB,EAAQ,KAAKysB,EAAG,MAAMJ,EAAe,EAAG,OAAOrsB,EAAQ,KAAKysB,EAAG,MAAMJ,EAAe,EAAG,OAAOrsB,EAAQ,KAAKysB,EAAG,MAAMJ,EAAe,EAAG,OAAOrsB,EAAQ,KAAKysB,EAAG,MAAMJ,EAAe,EAAG,OAAOrsB,EAAQ,KAAKysB,EAAG,MAAMJ,EAAkBI,EAAG,SAAS,IAAA,GAAU,CAAC,IAAMC,EAAYD,EAAG,OAAO,EAAE,EAAG,OAAOC,EAAY,EAAG,OAAOA,EAAY,EAAG,OAAOA,CAAY,CAAC,EAAG,SAAS1sB,EAAQ,OAAOysB,EAAG,QAAQJ,EAAe,EAAG,SAASrsB,EAAQ,OAAOysB,EAAG,QAAQJ,EAAe,EAAG,SAASrsB,EAAQ,OAAOysB,EAAG,QAAQJ,EAAe,EAAG,UAAUrsB,EAAQ,QAAQysB,EAAG,SAASJ,EAC1lBvxC,EAAO,mBAAmB,IAAA,KAAW,EAAO,iBAAiBA,EAAO,SAAS,MAAM,EAAE,EAAO,iBAAiBA,EAAO,SAAS,MAAM,EAAE,EAAO,mBAAmBA,EAAO,MAAM,MAAM,GACrL,EAAO,SAAS,EAAEA,EAAO,iBAAiB,EAAE2xC,EAAG,KAAK,EAAO,SAAS,EAAE3xC,EAAO,iBAAiB,EAAE2xC,EAAG,KAAK,EAAO,SAAS,EAAE3xC,EAAO,iBAAiB,EAAE2xC,EAAG,KACvJ,EAAO,SAAS,EAAE3xC,EAAO,iBAAiB,EAAE2xC,EAAG,KAAKv9C,EAAS,EAAO,SAAS,EAAE4L,EAAO,iBAAiB,EAAE2xC,EAAG,KAAKv9C,EAAS,EAAO,SAAS,EAAE4L,EAAO,iBAAiB,EAAE2xC,EAAG,KAAKv9C,EAC9K,EAAO,MAAM,EAAE4L,EAAO,mBAAmB,EAAE,KAAK,IAAI,KAAK2xC,EAAG,MAAM,EAAE,EAAO,MAAM,EAAE3xC,EAAO,mBAAmB,EAAE,KAAK,IAAI,KAAK2xC,EAAG,MAAM,EAAE,EAAO,MAAM,EAAE3xC,EAAO,mBAAmB,EAAE,KAAK,IAAI,KAAK2xC,EAAG,MAAM,EAC1M,IAAMz+B,EAAG,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEy+B,EAAG,OAAO,CAAC,EAAE,GAAG3xC,EAAO,uBAAuBkT,EAAG,CAAC,IAAI2+B,EAAe7xC,EAAO,wBAA4B6xC,IAAgB,EAAe7xC,EAAO,OAAO,CAACA,CAAM,EAAE,CAAC,EAAMA,EAAO,QAAQA,EAAO,SAAS,GAAM,CAAInB,EAAK,QAAQA,EAAK,UAASgzC,EAAe,KAAKhzC,CAAI,CAAE,CAAC,EAAG,EAAO,wBAAwBgzC,GAAgB,IAAI,IAAMhzC,KAAQgzC,GAA2B,MAAM,QAAQhzC,EAAK,QAAQ,EAAEA,EAAK,SAAS,CAACA,EAAK,QAAQ,EAAA,CAAO,QAAQ,GAAG,CAAC,EAAE,QAAQqU,EAAG,EAAE,YAAYA,EAAG,CAAE,CAAC,EAAG,EAAO,qBAAqBA,CAAG,CAAC,CAAC,CAGnhB,IAAM4+B,kBAAY,IAAI,IAAUC,EAAS,GAAI,CAAInJ,GAAI,MAAM,CAACkJ,EAAY,IAAIlJ,EAAG,IAAI,IAAGkJ,EAAY,IAAIlJ,EAAG,IAAI,EAAMA,EAAG,KAAK,mBAAqBA,EAAG,cAAaA,EAAG,KAAK,SAAS,KAAKA,EAAG,YAAY,EAAKA,EAAG,cAAaA,EAAG,KAAK,SAAS,KAAKA,EAAG,YAAY,EAAKA,EAAG,WAAUA,EAAG,KAAK,MAAM,KAAKA,EAAG,SAAS,GAAI,EAEpT,GAFsTmJ,EAASjO,CAAU,EAAEiO,EAAShO,CAAa,EAAEgO,EAAS/N,CAAU,EAAKF,EAAW,MAAK6E,GAAgB7E,CAAU,EAAKC,EAAc,MAAK4E,GAAgB5E,CAAa,EAAKC,EAAW,MAAK2E,GAAgB3E,CAAU,EAAEhrB,GAAiB9b,EAAGxK,EAAMm7B,EAAQ,QAAQA,EAAQ,SAAS,sBAAsB,EAAEjmC,CAAK,EAChmBsV,EAAG,WAAW,UAAS,EAAG,UAAU,SAAS,KAAK,MAAM2uB,GACxD3uB,EAAG,eAAe,CAAC,IAAM80C,EAAc,EAAE58C,EAAI,iBAAiB,EAAG,kBAAkB9H,EAAG0kD,EAAc90C,EAAG,kBAAkB,IAAM+0C,EAAK,GAAG5kC,GAAoBI,EAAErY,EAAI,kBAAkBA,EAAI,iBAAiB,EAAE,GAAG8H,EAAG,oBAAoB,EAAE,CACzO,GAAGA,EAAG,kBAAkB,EAAG,EAAG,iBAAiB,EAAE,AAC+bA,EAAG,oBAD1aA,EAAG,MAAM,OAAOA,EAAG,gBAAgB,EAAEA,EAAG,iBAAiB,SAAS,GAAG,CAAC,GAAG7Q,EAAE,OAAO,CACgB,GAAxKA,EAAE,eAAeA,EAAE,UAAUA,EAAE,SAAS,QAAQ,EAAM6Q,EAAG,kBAAkB,IAAI7Q,EAAE,IAAI,IAAG6Q,EAAG,kBAAkB,IAAI7Q,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE6Q,EAAG,kBAAkB,OAAO7Q,EAAE,IAAI,GAAM6Q,EAAG,0BAA0B,IAAI7Q,EAAE,IAAI,EAAE,CAAC,IAAM6lD,EAAQh1C,EAAG,0BAA0B,IAAI7Q,EAAE,IAAI,GAAG,MAAM,QAAQ6lD,CAAO,EAAEA,EAAQ,CAACA,CAAO,EAAA,CAAG,QAAQ,GAAGn/C,EAAE,UAAU,CAAC,CAAE,EAAE,MAAM,QAAQ1G,EAAE,QAAQ,EAAEA,EAAE,SAAS,CAACA,EAAE,QAAQ,EAAA,CAAG,QAAQ,GAAG0G,EAAE,UAAU,CAAC,EAAEoI,GAAqB,OAAO9O,EAAE,IAAI,CAAE,CAAC,CAAC,EAAE6Q,EAAG,0BAA0B,MAAM,EAAsB,MAASA,EAAG,MAAOwU,GAAyBxU,EAAG9H,CAAG,GAAQgY,GAAyBlQ,EAAG,iBAAiB,EAAE,EAAG,kBAAkB,KAAK,EAAG,mBAAmB,GAAK,EAAG,eAAe,SAAa,GAAGA,EAAG,iBAAiB,CAAC,IAAMmb,EAAO45B,EAAK/0C,EAAG,gBAAgB,EAAEA,EAAG,iBAAiB,SAAS,GAAO,CAAC,GAAGkI,EAAM,QAAQlI,EAAG,0BAA0B,IAAIkI,EAAM,IAAI,EAAE,CAAC,GAAIlI,EAAG,kBAAkB,IAAIkI,EAAM,IAAI,EAAqZ,CAAC,IAAMuM,EAAYzU,EAAG,kBAAkB,IAAIkI,EAAM,IAAI,EAAE,GAAGuM,GAAaA,EAAY,SAAS,eAAe,CAAC,IAAMpH,EAAEoH,EAAY,SAAS,eAAe,EAAE,UAAU,MAAM0G,EAAO,EAAE,MAAM,MAAMjjB,EAAI,mBAAmB,EAAE,KAAK,MAAMA,EAAI,kBAAkB,EAAE,MAAM,MAAMA,EAAI,kBAAqB8H,EAAG,2BAA2B9H,EAAI,wBAAuB,EAAG,yBAAyBA,EAAI,sBAAsB,EAAG,wBAAwBmL,EAAWnL,EAAI,qBAAqB,GAAGmV,EAAE,WAAW,MAAM,KAAKrN,EAAG,uBAAuB,EAAE,EAAE,eAAe,MAAM9H,EAAI,yBAA0B,CAAC,KAA/8B,CAAgE,IAAMuc,EAAYjB,GAA/DxT,EAAG,0BAA0B,IAAIkI,EAAM,IAA+C,EAAY,CAAC,SAASiT,EAAO,WAAWjjB,EAAI,mBAAmB,UAAUA,EAAI,kBAAkB,UAAUA,EAAI,kBAAkB,cAAcA,EAAI,sBAAsB,kBAAkBA,EAAI,yBAAyB,CAAC,EAAE8H,EAAG,kBAAkB,IAAIkI,EAAM,KAAKuM,CAAW,EAAE,EAAM,SAASA,CAAY,CAAkkB,CAAC,CAAC,CAAE,CAAE,MACn2D,GAAGzU,EAAG,kBAAkB,EAAG,EAAG,iBAAiB,EAAE,EAAG,eAAe,GAASA,EAAG,OAAOA,EAAG,MAAM,SAAS,GAAO,CAAIkI,EAAM,SAAWlI,EAAG,kBAAkB,IAAIkI,EAAM,IAAI,IAAGlI,EAAG,kBAAkB,IAAIkI,EAAM,IAAI,CAAC,CAAC,QAAQ,EAAElI,EAAG,kBAAkB,OAAOkI,EAAM,IAAI,GAAMlI,EAAG,0BAA0B,IAAIkI,EAAM,IAAI,IAAG,EAAM,SAASlI,EAAG,0BAA0B,IAAIkI,EAAM,IAAI,GAAI,CAAC,EAAGlI,EAAG,0BAA0B,MAAM,EACxZkQ,GAAyBlQ,EAAG,iBAAiB,EAAE,EAAG,kBAAkB,UAAW,GAAGA,EAAG,MAAM,CAAC,IAAMmb,EAAO45B,EAAK/0C,EAAG,gBAAgB,EAAEA,EAAG,MAAM,SAAS,GAAO,CAAC,GAAGkI,EAAM,QAAQlI,EAAG,0BAA0B,IAAIkI,EAAM,IAAI,EAAE,CAAC,GAAIlI,EAAG,kBAAkB,IAAIkI,EAAM,IAAI,EAAqZ,CAAC,IAAMuM,EAAYzU,EAAG,kBAAkB,IAAIkI,EAAM,IAAI,EAAE,GAAGuM,GAAaA,EAAY,SAAS,eAAe,CAAC,IAAMpH,EAAEoH,EAAY,SAAS,eAAe,EAAE,UAAU,MAAM0G,EAAO,EAAE,MAAM,MAAMjjB,EAAI,mBAAmB,EAAE,KAAK,MAAMA,EAAI,kBAAkB,EAAE,MAAM,MAAMA,EAAI,kBAAqB8H,EAAG,2BAA2B9H,EAAI,wBAAuB,EAAG,yBAAyBA,EAAI,sBAAsB,EAAG,wBAAwBmL,EAAWnL,EAAI,qBAAqB,GAAGmV,EAAE,WAAW,MAAM,KAAKrN,EAAG,uBAAuB,EAAE,EAAE,eAAe,MAAM9H,EAAI,yBAA0B,CAAC,KAA/8B,CAAgE,IAAMuc,EAAYjB,GAA/DxT,EAAG,0BAA0B,IAAIkI,EAAM,IAA+C,EAAY,CAAC,SAASiT,EAAO,WAAWjjB,EAAI,mBAAmB,UAAUA,EAAI,kBAAkB,UAAUA,EAAI,kBAAkB,cAAcA,EAAI,sBAAsB,kBAAkBA,EAAI,yBAAyB,CAAC,EAAE8H,EAAG,kBAAkB,IAAIkI,EAAM,KAAKuM,CAAW,EAAE,EAAM,SAASA,CAAY,CAAkkB,CAAC,CAAC,CAAE,CACztC,GAAGzU,EAAG,kBAAkB,CAAC,IAAM9Q,EAAE8Q,EAAG,kBAC9Bi1C,EAAYj1C,EAAG,kBAAkBA,EAAG,MAASi1C,IAAa/lD,EAAE,OAAO,SAAS,KAAK+lD,EAAY,QAAQ,EAAE/lD,EAAE,OAAO,SAAS,KAAK+lD,EAAY,QAAQ,EAAE/lD,EAAE,OAAO,MAAM,KAAK+lD,EAAY,KAAK,GAAG,IAAM95B,EAAO45B,EAAK/0C,EAAG,gBAAgB,EAAE,EAAE,IAAI,SAAS,UAAU,MAAMmb,EAAO,EAAE,IAAI,SAAS,MAAM,MAAMjjB,EAAI,mBAAmB,EAAE,IAAI,SAAS,KAAK,MAAMA,EAAI,kBAAkB,EAAE,IAAI,SAAS,MAAM,MAAMA,EAAI,kBAAkB,IAAMg9C,EAAYh9C,EAAI,uBAAuBA,EAAI,sBAAyB8H,EAAG,+BAA+Bk1C,IAAa,EAAG,6BAA6BA,EAAY,EAAG,4BAA4B7xC,EAAW6xC,CAAW,GAAGhmD,EAAE,IAAI,SAAS,OAAO,MAAM,KAAK8Q,EAAG,2BAA2B,EAAE,EAAE,IAAI,SAAS,UAAU,MAAM9H,EAAI,0BAA0B,GAAG,EAAE,MAAM,MAAMA,EAAI,uBAAuB,IAAI,EAAE,MAAM,QAAQA,EAAI,yBAAyB,EAAE,EAAE,MAAM,UAAU,EAAEA,EAAI,sBAAsB,IAAI,EAAE,MAAM,UAAU,EAAEA,EAAI,sBAAsB,EAAE6W,GAAwB7f,EAAE,KAAK,EAAE2gB,GAAuB3gB,EAAE,IAAIA,EAAE,KAAK,CAAE,CAAC,CACtgC,GAAGgJ,EAAI,gBACP,IADwB,AAAwH8H,EAAG,kBAApGA,EAAG,qBAAqB9H,EAAI,cAAcA,EAAI,aAAaA,EAAI,cAAcA,EAAI,cAAc,EAAoBuqC,GAC/JziC,EAAG,eAAe,CAAC,IAAM6O,EAAI7O,EAAG,eAAe,SAAY6O,EAAI,OAAO3W,EAAI,eAAa,EAAI,KAAKA,EAAI,cAAgB8H,EAAG,uBAAuB9H,EAAI,gBAAe,EAAG,qBAAqBA,EAAI,cAAc,EAAG,oBAAoBmL,EAAWnL,EAAI,aAAa,GAAO2W,EAAI,MAAM,OAAO7O,EAAG,mBAAmB,GAAG6O,EAAI,MAAM,KAAK7O,EAAG,mBAAmB,EACpUA,EAAG,eAAe,SAAS,WAAW,SAAS,QAAwB9H,EAAI,gBAAe8H,EAAG,qBAAqB9H,EAAI,cAAcA,EAAI,aAAaA,EAAI,cAAcA,EAAI,cAAc,EAAE,EAAG,eAAeuqC,GAChOziC,EAAG,gBAAgB9H,EAAI,cAAcA,EAAI,cAAc,CAAE,MAAO,CAC6C8H,EAAG,kBAAhHA,EAAG,MAAM,OAAOA,EAAG,cAAc,EAAEA,EAAG,eAAe,SAAS,QAAQ,EAAEA,EAAG,eAAe,SAAS,QAAQ,EAAoB,MAC/H,IAAMm1C,EAAU5tC,GAAoBrP,CAAG,EACvC,GAAG83C,EAAe,CAAC,GAAG93C,EAAI,aAAa,UAAU8H,EAAG,aAAa,CAACA,EAAG,aAAa,OAAO8F,CAAM,EAAE5E,EAAS,QAAQ5D,EAAc,EAAE,IAAM83C,EAAI93C,GAAqB+3C,EAAqBn0C,EAAS,UAAU,WAAW,EAAS,UAAU,GAAKA,EAAS,eAAe,EAAI,EAAE,GAAG,CAC7QA,EAAS,WAAW,EAAE,EAAEk0C,EAAI,EAAE,EAAEA,EAAI,CAAC,EAAEl0C,EAAS,YAAY,EAAE,EAAEk0C,EAAI,EAAE,EAAEA,EAAI,CAAC,EAAEl0C,EAAS,OAAOsV,EAAMxW,EAAG,aAAa,OAAO,EAC5H,EAAS,UAAU,WAAW,GAAMkB,EAAS,WAAWk0C,EAAI,EAAE,EAAE,EAAEA,EAAI,EAAE,EAAEA,EAAI,CAAC,EAAEl0C,EAAS,YAAYk0C,EAAI,EAAE,EAAE,EAAEA,EAAI,EAAE,EAAEA,EAAI,CAAC,EAAEl0C,EAAS,OAAOsV,EAAMxW,EAAG,aAAa,OAAO,CAAE,QAAQ,CAAC,EAAS,UAAU,WAAWq1C,EAAqBn0C,EAAS,eAAe,EAAK,EAAEA,EAAS,YAAY,EAAE,EAAEk0C,EAAI,EAAEA,EAAI,CAAC,CAAE,CAAC,MAASD,GACtTj9C,EAAI,uBAAuBgJ,EAAS,cAAc,EAAE,CAAC,EAAE,EAAS,UAAU,GAAuCqjC,GAAqBrsC,EAAIy4B,EAAQ,SAAS,aAAa,EAAEA,EAAQ,SAAS,cAAc,CAAC,GAAM3wB,EAAG,WAAW,UAAS,EAAG,UAAU,SAAS,KAAK,MAAM2uB,GAAY3uB,EAAG,WAAU,EAAG,SAAS,eAAe,GAAKA,EAAG,SAAS,OAAO,IAEvVkB,EAAS,OAAOsV,EAAM1Q,CAAM,IAASw+B,GAAsB,EAAE,EAAS,UAAU,GAAKpjC,EAAS,OAAOsV,EAAM1Q,CAAM,EAAG,CACpH,GAAG9F,EAAG,iBAAiB,GAAG29B,GAAU,QAAQ,CAAC,IAAM2X,GAAa,YAAY,IAAI,EAAEt1C,EAAG,kBAAkB,IAAUu1C,EAAQr9C,EAAI,oBAAoB,GAASs9C,EAAQt9C,EAAI,qBAAqB,GAAG,GAAGo9C,GAAaC,EAC9M,GAAU,QAAQ,MAAM,OAAO,GAAG,GAAU,QAAQ,MAAM,WAAW,GAAG,EAAG,iBAAiB,MAAO,CAC1C,IAAME,EAAYD,GAAS,GAA7C,GAAW,EAA1CF,EAAYC,IAAkC,IAAsC,GAAU,QAAQ,MAAM,OAAO,QAAQE,EAAY,QAAQ,CAAC,EAAE,IAAK,CAAC,CAChK,GAAG,EAAEz1C,EAAG,gBAAgB,IAAI2wB,EAAQ,QAAQ,CAAC,EAAG,eAAe,EAAE,IAAM+kB,EAAG/kB,EAAQ,QAAQ,YAAkB+a,EAAG/a,EAAQ,QAAQ,aAAa,GAAG+kB,GAAIhK,EAAG,CAAC,IAAMvkC,EAAIjG,EAAS,cAAc,GAAG,EAAQy0C,EAAGz0C,EAAS,WAAW,MAAMiG,EAAUyuC,EAAG10C,EAAS,WAAW,OAAOiG,EAAU0uC,EAAUvV,EAAY,QAAcwV,EAAUnvC,GAAiBkvC,CAAS,GAAK,KAAK,IAAIH,EAAGC,CAAE,EAAE,GAAG,KAAK,IAAIjK,EAAGkK,CAAE,EAAE,GAAG,KAAK,IAAIE,GAAW91C,EAAG,gBAAgBmH,EAAI,EAAE,MAAK4nC,GAAe,EAAK,CAAG,CAAC,CAACY,GAAc,MAAM,CAAE,EAAS,OAAPF,GAAK,MAAY,CAAC,EAAG,UAAU,GAAKhsC,GAAkB,WAAWzD,EAAG,QAAQ,EAAE,EAAG,SAAS,EAAE,qBAAqB49B,GAAO,OAAO,EACvmByJ,GAAiB,MAAM,EAAEC,EAAkB,MAAM,EAAEwC,EAAkC,EAAE,EAAoB,KAAK,GAAuB,GAAGrC,GAA0B,MAAM,EAAE,GAA8B,GAAG,GAA6B,GAAG,GAA6B,CAAC,EAAE,GAAgC,GAAG,GAA+B,OAAO,EAAE,GAAoB,KAAK,GAAuB,GACrY9J,GAAU,UAAS,GAAU,QAAQ,MAAM,QAAQ,IAAI,GAAU,QAAQ,MAAM,OAAO,GAAG,GAAU,QAAQ,MAAM,WAAW,IAAI,SAAS,oBAAoB,mBAAmByR,EAAkB,EAAEzgD,EAAO,oBAAoB,SAAS0gD,EAAoB,EAAE1gD,EAAO,oBAAoB,SAAS0gD,EAAoB,EAAE,SAAS,oBAAoB,SAASA,GAAqB,EAAI,EAAEC,IAAI,oBAAoB,SAASD,EAAoB,EAAEC,IAAI,oBAAoB,SAASD,EAAoB,EAAE1gD,EAAO,oBAAoB,YAAY4gD,EAAsB,EAAKC,IAAGA,GAAG,WAAW,EAAE/d,GAAG,WAAW,EAAKgd,IAAU,qBAAqBA,EAAS,EAAKC,IAAc,aAAaA,EAAa,EAAK1uC,EAAG,kBAAkB+uC,IAAgB,OAAO/uC,EAAG,gBAAiBmvC,GAAoB,QAAQ,GAAO,aAAa4G,CAAK,CAAC,EAAEn2B,GAAoB5f,CAAE,EAAEob,EAAS,QAAQ,EAAEiE,GAA4B,UAAU,CAAC,KAAK,OAAO,QAAQ2iB,EAAgB,SAAO,OAAO,eAAe,WAAWxjB,GAAwB,CAAC,CAAC,WAAW,aAAa9uB,EAAa,QAAQ,EAAE,UAAU8uB,GAAwB,CAAC,CAAC,WAAW,EAAE,UAAUA,GAAwB,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,CAACA,GAAwB,CAAC,CAAC,aAAa,CAAC,EAAE8lB,GAAsB,EAAEpjC,EAAS,QAAQ,EAAE2X,GAAuB7Y,CAAE,EACruCyiC,IAAgBziC,EAAG,MAAM,OAAOyiC,CAAc,EAAEA,EAAe,SAAS,QAAQ,EAAEA,EAAe,SAAS,QAAQ,GAAMziC,EAAG,QAAO7G,GAAoC6G,EAAGA,EAAG,KAAK,EAAEA,EAAG,MAAM,cAAc,EAAE,EAAG,yBAAyB,IAC3OkQ,GAAyBlQ,EAAG,iBAAiB,EAAE,EAAG,kBAAkB,KAAK,EAAG,mBAAmB,GAC5FA,EAAG,mBAAkBA,EAAG,MAAM,OAAOA,EAAG,gBAAgB,EAC3DyM,GAAsBzM,EAAG,gBAAgB,EAAEA,EAAG,0BAA0B,MAAM,GAC9E,IAAI,IAAMyU,KAAezU,EAAG,kBAAkB,OAAO,EAAGyU,EAAY,QAAQ,EAAGzU,EAAG,kBAAkB,MAAM,EAC1G,IAAI,GAAK,EAAEuM,KAAMvM,EAAG,UAAcuM,EAAG,QAAOvM,EAAG,MAAM,OAAOuM,EAAG,KAAK,EAAEE,GAAsBF,EAAG,KAAK,GAAMA,EAAG,QAAOpT,GAAoCoT,EAAGA,EAAG,KAAK,EAAEA,EAAG,MAAM,cAAc,EAAE,EAAG,yBAAyB,IAAKvM,EAAG,UAAU,MAAM,EAAE,SAAS,oBAAoB,YAAYqlC,EAAW,EAAE,SAAS,oBAAoB,YAAYO,EAAgB,EAAEC,GAAuB,EAC5X,SAAS,oBAAoB,YAAYkI,EAAwB,EAAKF,IAAmB,qBAAqBA,EAAkB,EAAElD,GAAgB,GAAM,KAAK,EAAI,EAAEh8C,EAAO,oBAAoB,SAAS6/C,EAA8B,EAAEzgC,EAAO,oBAAoB,cAAc4/B,EAA0B,EAAE5/B,EAAO,oBAAoB,QAAQwgC,GAAc,EAAI,EAAE,SAAS,oBAAoB,YAAYL,EAAiB,EAAKF,IAAiB,qBAAqBA,EAAgB,EAAE,SAAS,oBAAoB,QAAQtB,EAAe,EAAE3+B,EAAO,oBAAoB,cAAcm/B,EAAqB,EAAE,SAAS,oBAAoB,cAAcoB,EAAwB,EAAKF,IAAwB,qBAAqBA,EAAuB,EAAE,SAAS,oBAAoB,YAAYZ,EAAmB,EAAE,SAAS,oBAAoB,YAAYI,EAAwB,EAAE,SAAS,oBAAoB,gBAAgBJ,EAAmB,EAAE,SAAS,oBAAoB,gBAAgBI,EAAwB,EAAE7/B,EAAO,oBAAoB,aAAam/B,EAAqB,EAAE,SAAS,oBAAoB,YAAYoB,EAAwB,EAAE,SAAS,oBAAoB,WAAWd,EAAmB,EAAE,SAAS,oBAAoB,WAAWI,EAAwB,EAAE,EAAG,oBAAoB,GAAM7O,GAAuB,EAAK,EAAE6L,GAAqB,EAAK,EAAE,GAAc,KAAKjM,GAAmB,IAAI,EAC12CmN,GAAoB,EAAED,GAAkBjF,CAAU,EAAEiF,GAAkBhF,CAAa,EACnF,IAAI,IAAMlwB,KAAS3W,EAAG,kBAAmBwW,EAAM,OAAOG,CAAK,EAAKA,EAAM,QAAQA,EAAM,aAAYH,EAAM,OAAOG,EAAM,MAAM,EAAKA,EAAM,QAAQ,KAAIA,EAAM,OAAO,IAAI,QAAQ,EAAEA,EAAM,QAAQ,EAAG,EAAG,kBAAkB,OAAO,EAGrN3W,EAAG,QAAOwW,EAAM,OAAOxW,EAAG,KAAK,EAAEyM,GAAsBzM,EAAG,KAAK,GAAGwM,GAAkBgK,CAAK,EAC5F,EAAG,MAAM,KAAK,EAAG,OAAO,KAAK,EAAG,MAAM,KAAK,EAAG,WAAW,KAAK,EAAG,SAAS,KAAK,EAAG,SAAS,KAAK,GAAoB,IAAK,CAAE,EAAE,CAACipB,EAAkB,CAAC,EAAEnwC,MAAc,CAA2B6uC,EAAR,SAAY,kBAAkB,EAAI,CAAE,EAAE,CAACrB,GAAkBC,GAAwBxP,EAAwB,CAAC,EAC9Rj+B,MAAc,CAAC,IAAI0mD,EAAU,GAAUC,EAAU,GAC1Cj2C,EAAGm+B,EAAS,QAAcjmC,EAAIooC,EAAY,QAAQ,GAAG,CAACtgC,EAAG,OAAO,GAAG,CAACqrB,EAAS,CAAC58B,MAAoB,CAACqvC,GAAU,kCAAkC,CAAE,CAAC,EAAE,MAAO,CAAC,EAAG,cAAc,GAAG,EAAG,iBAAiB,GAAG,EAAG,iBAAiB,GAAG,EAAG,YAAY,GAAG,EAAG,gBAAgB,GAG1Q,IAAMoY,EAAiBC,KAAsB9qB,EAAe+qB,EAAe14C,GAAY,IAAI2tB,CAAQ,EAAQgrB,EAAa14C,GAAiB,IAAI0tB,CAAQ,EAAQirB,EAA4B3nD,IAAS,QAAaA,EAAO,qBAAqB,UAG3O,GAHwPunD,GAAkBE,GAAgBC,GAAcC,EACxS7nD,MAAoB,CAACqvC,GAAU,EAAE,CAAE,CAAC,GAAQrvC,MAAoB,CAACqvC,GAAU,UAAU,CAAE,CAAC,EAAYnvC,IAAS,QAAaA,EAAO,qBAAqBA,EAAO,oBAAoB,WAAW08B,CAAQ,GACjMrrB,EAAG,iBAAiB,GAAG29B,GAAU,UAAS,GAAU,QAAQ,MAAM,QAAQ,IAAI,GAAU,QAAQ,MAAM,OAAO,GAAG,GAAU,QAAQ,MAAM,WAAW,GAAG,EAAG,iBAAiB,GAAOzlC,EAAI,kBAAiB,EAAG,mBAAmB,IAC5NA,EAAI,iBAAiB8H,EAAG,OAAO,CAACA,EAAG,eAAe,CACrD,IAAI,IAAMyU,KAAezU,EAAG,kBAAkB,OAAO,EAAGyU,EAAY,QAAQ,EAAGzU,EAAG,kBAAkB,MAAM,EAAEA,EAAG,0BAA0B,MAAM,EAAE,EAAG,iBAAiBA,EAAG,MAAM,EAAG,eAAe,GAAK,EAAG,mBAAmB,GAAM,EAAG,iBAAiB,EAAE,EAAG,kBAAkB,EAG5Q,IAAMu2C,EAAYv2C,EAAG,iBAAiB,SAAS,MAAM,EAAQw2C,EAAYx2C,EAAG,iBAAiB,SAAS,MAAM,EAAQy2C,EAAcz2C,EAAG,iBAAiB,MAAM,MAAM,EAClKA,EAAG,iBAAiB,SAAS,GAAO,CAAC,GAAGkI,EAAM,OAAO,CAAClI,EAAG,0BAA0B,IAAIkI,EAAM,KAAKA,EAAM,QAAQ,EAChH,IAAMuM,EAAYjB,GAAuBtL,EAAM,SAAS,CAAC,SAASiI,GAAoB,EAAEjY,EAAI,kBAAkBA,EAAI,iBAAiB,EAAE,WAAWA,EAAI,mBAAmB,UAAUA,EAAI,kBAAkB,UAAUA,EAAI,kBAAkB,cAAcA,EAAI,sBAAsB,kBAAkBA,EAAI,yBAAyB,CAAC,EAAE8H,EAAG,kBAAkB,IAAIkI,EAAM,KAAKuM,CAAW,EAAE,EAAM,SAASA,CAAY,CAAC,CAAC,EAC5Yvc,EAAI,2BAA0BgY,GAAyBlQ,EAAG,iBAAiB,EAAE,EAAG,kBAAkBkO,GAAwBlO,EAAG,iBAAiB9H,CAAG,EAAE8H,EAAG,kBAAkB,OAAO,SAAS,KAAKu2C,CAAW,EAAEv2C,EAAG,kBAAkB,OAAO,SAAS,KAAKw2C,CAAW,EAAEx2C,EAAG,kBAAkB,OAAO,MAAM,KAAKy2C,CAAa,EAAEz2C,EAAG,MAAM,IAAIA,EAAG,kBAAkB,MAAM,EAAE,EAAG,kBAAkB,IAAI,SAAS,UAAU,MAAMmQ,GAAoB,EAAEjY,EAAI,kBAAkBA,EAAI,iBAAiB,GAC7b,EAAG,yBAAyB8H,EAAG,aAAa,EAAG,yBAAyBA,EAAG,aAAa,EAAG,yBAAyBA,EAAG,aAAa,EAAG,yBAAyBA,EAAG,aAAa,EAAG,yBAAyBA,EAAG,aAAa,EAAG,yBAAyBA,EAAG,aAAa,EAAG,0BAA0BA,EAAG,cAClU,EAAG,MAAM,KAAK,EAAG,WAAW,IAAK,MAASA,EAAG,QAAO,EAAG,mBAAmB,GAE1EA,EAAG,MAAM,OAAOA,EAAG,KAAK,EAAEyM,GAAsBzM,EAAG,KAAK,EAAE,EAAG,MAAM,KAAK,EAAG,WAAW,MAASA,EAAG,QAAO7G,GAAoC6G,EAAGA,EAAG,KAAK,EAAEA,EAAG,MAAM,cAAc,EAAE,EAAG,MAAM,KAAK,EAAG,uBAAuB,KAAK,EAAG,oBAAoB,GAAG,EAAG,yBAAyB,GAAG,EAAG,yBAAyB,GAAG,EAAG,sCAAsB,IAAI,IAAI,EAAG,+BAA+B,KAAK,EAAG,6BAA6B,KAAK,EAAG,qBAAqB,GAAM,EAAG,2BAA2B,GAAM,EAAG,6BAA6B,GAAG,EAAG,gCAAgC,IAAI,IAAMwN,EAAOnM,GAAagqB,CAAQ,EAAQpf,GAAU,EAAO,IAAa,CAAqB,GAAjB+pC,GAAoB,CAACh2C,GAAI,UAAU,CAACA,GAAI,MAAM,OAC3qB0M,GAAqBzE,CAAM,EAAE,IAAMwF,EAAezE,GAAiCf,EAAOlP,GAAY,CAAC,CAAC,EAAQsQ,EAAID,GAA4BnB,CAAM,EAAQqU,EAAOjT,EAAI,UAAU,IAAIhf,CAAa,EAAQ0U,EAAKsK,EAAI,QAAQ,IAAIhf,CAAa,EAAuDqsD,EAAe,GAAvD,KAAK,IAAI33C,EAAK,EAAEA,EAAK,EAAEA,EAAK,CAAC,GAAG,GAAsCgmB,EAAQ,IAAIp6B,EAAYsd,EAAO,SAAS,IAAIqU,CAAM,EAAEyI,EAAQ,IAAI9c,CAAM,EAAE8c,EAAQ,MAAM,UAAU2xB,CAAc,EAAE,IAAMx+C,EAAIooC,EAAY,QAAch5B,EAASD,GAAwBrH,EAAG,SAAS9H,CAAG,EAS9e,GATgf6sB,EAAQ,SAAS,GAAO,CAAC,GAAG7c,EAAM,OAAO,CAAC,EAAM,WAAW,GAAK,EAAM,cAAc,GAE7lB,EAAM,cAAc,CAACA,EAAM,cAAc,IAAMiF,EAAK,MAAM,QAAQjF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAM2G,KAAO1B,EAAK,CACrI0B,EAAI,MAAI,EAAI,IAAI,WAAW/lB,IAAwB+lB,EAAI,cAAY,EAAI,YAAY,WAAW/lB,IACX,IAAI,IAAMqoB,IAAK,CAAtF,MAAM,YAAY,eAAe,eAAe,QAAQ,aAAoC,EAAMtC,EAAIsC,KAAI,EAAIA,EAAE,CAAC,WAAW7J,EAAW,CAAC,CAAC,CAAC,EACzJkU,GAAoBuJ,CAAO,EAAE,EAAG,sBAAsBxsB,GAAiBL,CAAG,GAEvE8H,EAAG,gBAAgBA,EAAG,oBAAoB,GAAGA,EAAG,sBAAoB,EAAQ,QAAQ,IAAOA,EAAG,MAAM,IAAI+kB,CAAO,EAAE,EAAG,MAAMA,EAAQ,EAAG,WAAW9c,EACnJ,AACAjI,EAAG,kBAAgB,KAAS9H,EAAI,cAAc,CAAC,IAAMy+C,EAAG,IAAI/rD,GAAiBsN,EAAI,mBAAmB,CAAC,EAAE,EAAG,YAAY,IAAI,EAAG,SAAS,UAAU,GAAM6sB,EAAQ,IAAI4xB,CAAE,EAAE,EAAG,gBAAgBA,CAAG,CAC5L,IAAMC,EAAoB,CAAC,EAAQC,EAAmB,CAAC,EACvD,SAASC,EAAe,EAAK,EAAM,CAAC,IAAMC,EAAOp1C,EAAK,QAAQA,EAAK,cAAoBq1C,EAAQr1C,EAAK,SAASA,EAAK,WAAiBs1C,EAAQ,CAAC,CAACt1C,EAAK,KAAK,GAAGo1C,GAAQE,EAAQ,CAACL,EAAoB,KAAKj1C,EAAK,IAAI,EAAE,IAAIykC,EAAM,EAAKzkC,EAAK,UAAU,YAAY,WAAU,EAAMA,EAAK,SAAS,WAAW,SAAS,OAAOk1C,EAAmB,KAAK,CAAC,KAAKl1C,EAAK,KAAK,KAAKA,EAAK,cAAc,cAAc,OAAO,QAAM,QAAM,QAAQ,GAAM,eAAe,CAAC,CAAC,CAAE,MAAM,GAAGq1C,GAASC,GAASt1C,IAAOsG,EAAO,CAC7d,IAAIivC,EAAU,EAAEv1C,EAAK,SAAS,GAAG,CAAIw1C,IAAIx1C,IAAOw1C,EAAE,QAAQA,EAAE,gBAAe,GAAY,CAAC,EAAKD,EAAU,GAAGL,EAAmB,KAAK,CAAC,KAAKl1C,EAAK,KAAK,KAAK,QAAQ,QAAM,MAAM,EAAE,QAAQ,GAAK,eAAeu1C,CAAS,CAAC,CAAG,CAAC,IAAI,IAAMhvC,KAASvG,EAAK,SAAUm1C,EAAe5uC,EAAMkvC,GAAOH,GAASt1C,IAAOsG,EAAO,EAAE,EAAE,CAAG,CAAC6uC,EAAe7uC,EAAO,CAAC,EAC3U,EAAG,qBAAqB2uC,EAAoB,EAAG,oBAAoBC,EAAmB,IAAMQ,EAAcjuC,GAA4B2b,CAAO,EAC7I,GADiKsyB,EAAc,UAAU,IAAIhtD,CAAa,EAAE2V,EAAG,OAAO,SAAS,IAAI9H,EAAI,gBAAgBA,EAAI,gBAAgBA,EAAI,eAAe,EAAE,EAAG,OAAO,KAAK,IAAI,EAAG,OAAO,IAAI,IAC9Ty4B,EAAQ,QAAQ,CAAC,IAAM+kB,EAAG/kB,EAAQ,QAAQ,YAAkB+a,EAAG/a,EAAQ,QAAQ,aAAa,GAAG+kB,GAAIhK,EAAG,CAAC,GAAG1rC,EAAG,OAAO,qBAAqB,CAAC,IAAM8U,EAAO4gC,EAAGhK,EAAG,EAAG,OAAO,KAAK,IAAgB52B,EAAO,EAAE,EAAG,OAAO,MAAA,GAAqBA,EAAO,EAAE,EAAG,OAAO,IAAA,EAAqB,EAAG,OAAO,OAAO,EAAkB,KAAM,GAAG,OAAO,OAAO4gC,EAAGhK,CAAI,CAAC,CAAC1rC,EAAG,OAAO,uBAAuB,EAAEA,EAAG,SAAS,OAAO,IAAI,EAAE,EAAE,CAAC,EAAEA,EAAG,SAAS,OAAO,EACta,IAAMoG,EAASixC,EAAc,QAAQ,IAAIhtD,CAAa,EAAQitD,EAASnxC,GAAiBnG,EAAG,OAAOoG,CAAQ,EAC1G,EAAG,eAAeswC,EAAe,EAAG,SAASY,EAC7C,EAAQ,qBAAqBZ,EAAe,EAAQ,eAAeY,EAAS,IAAM5M,EAAG,KAAK,IAAI,IAAIxyC,EAAI,YAAY,CAAC,EAG0Q,GAHxQ6sB,EAAQ,MAAM,UAAU2xB,EAAeY,EAAS5M,CAAE,EACvK5lB,GAAoB9kB,EAAG9H,CAAG,EAAE,EAAG,eAAeA,EAAI,WAAW,EAAG,YAAYA,EAAI,aAAa,EAAG,YAAYA,EAAI,aAAa,EAAG,YAAYA,EAAI,aAAa,EAAG,SAASA,EAAI,eAAe,EAAG,SAASA,EAAI,eAAe,EAAG,SAASA,EAAI,gBAEvO8H,EAAG,gBAAgBA,EAAG,sBAA4C,EAAG,aAAaA,EAAG,yBAAyB,EAAG,aAAaA,EAAG,yBAAyB,EAAG,aAAaA,EAAG,yBAAyB,EAAG,aAAaA,EAAG,yBAAyB,EAAG,aAAaA,EAAG,yBAAyB,EAAG,aAAaA,EAAG,yBAAyB,EAAG,cAAcA,EAAG,2BAA8BA,EAAG,mBAAmB,CAAC,IAAI,IAAMyU,KAAezU,EAAG,kBAAkB,OAAO,EAAGyU,EAAY,QAAQ,EAAGzU,EAAG,kBAAkB,MAAM,EAAEA,EAAG,0BAA0B,MAAM,EAAEwU,GAAyBxU,EAAG9H,CAAG,CAAE,CAA2F,GAAvFkrB,GAA0BlrB,CAAG,GAAGorB,GAAuBtjB,EAAG9H,EAAIylC,GAAU,QAAQ,EAAI,EAAMlwB,GAAgBA,EAAe,OAAO,EAAE,CAAC,EAAG,MAAM,IAAI5iB,GAAqBod,CAAM,EAAE,EAAG,WAAWwF,EAAe1S,GAAsBiF,EAAGA,EAAG,MAAMyN,EAAevV,CAAG,EAC30B,IAAMq/C,EAAU9pC,EAAe,IAAI,GAAGte,EAAE,IAAI,CAAC,CAAC,OAAO,OAAO,EAAKooD,EAAU,QAAQ9oD,MAAoB,CAACyvC,GAAsBqZ,CAAS,CAAE,CAAC,EAAMr/C,EAAI,kBAAiB6hB,GAAyB/Z,EAAGA,EAAG,MAAMyN,EAAevV,EAAIA,EAAI,cAAcA,EAAI,aAAa,EAAE,EAAG,MAAM,UAAUA,EAAI,eAAgB,MAAMzJ,MAAoB,CAACyvC,GAAsB,CAAC,CAAC,CAAE,CAAC,EAC/V,GAAGhmC,EAAI,YAAYylC,GAAU,QAAQ,CAAC,IAAM3mB,EAAU9e,EAAI,qBAAqB,GAAG,GAAU,QAAQ,MAAM,OAAO,QAAQ8e,EAAU,KAAK,GAAU,QAAQ,MAAM,WAAW,SAAS,EAAG,iBAAiB,YAAY,IAAI,CAAE,CAE1N,GAAG9e,EAAI,oBAAoB,CAAC+9C,EAAU,CACtC,IAAMljC,EAAYF,GAA4BkS,CAAO,EACrD3O,GAAqBpW,EAAG9H,CAAG,EAAEqH,GAAoBS,EAAG9H,CAAG,EAAE,EAAG,cAAcO,GAAgBP,CAAG,EAAE,EAAG,iBAAiBC,GAAaD,CAAG,EAAE,EAAG,YAAYG,GAAQH,CAAG,EAAE,EAAG,gBAAgBI,GAAYJ,CAAG,EAAE,EAAG,iBAAiB,GACzNud,GAAasP,EAAQ,CAAC,EAAEt2B,MAAoB,CAACqvC,GAAU,EAAE,CAAE,CAAC,EAClDnvC,IAAS,QAAaA,EAAO,qBAAqBA,EAAO,oBAAoB,YAAY08B,EAAS,EAAE,EAC9GjY,GAA4BpT,EAAG,SAAS+S,EAAY,GAAU,CAC9D,IAAMykC,EAAQ,GAAG7jC,EAAS,GAAahlB,IAAS,QAAaA,EAAO,qBAAqBA,EAAO,oBAAoB,YAAY08B,EAASmsB,CAAO,CAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAGxB,EAAU,OAC7KzgC,GAA6BwP,CAAO,EACpCpP,GAAsBoP,EAAQ7sB,CAAG,EAAEqiB,GAAuBva,EAAG9H,CAAG,EAChE,IAAMu/C,EAAQv/C,EAAI,yBAAyB,GAASw/C,EAAU,YAAY,IAAI,EAAE,EAAG,uBAAuB,GAAK,IAAMC,MAAW,CAAC,GAAG3B,GAAW,CAACh2C,EAAG,uBAAuB,OAAO,IAAM2uB,GAAS,YAAY,IAAI,EAAE+oB,GAAW,IAAUnnC,EAAE,KAAK,IAAIoe,EAAQ8oB,EAAQ,CAAC,EACnQhiC,GAAasP,EAAQxU,CAAC,EAAKA,EAAE,EAAG,sBAAsBonC,CAAM,GAAQliC,GAAasP,EAAQ,CAAC,EAAE,EAAG,uBAAuB,GACtHgK,GAAuB,EAAE,GAAoB1D,EAAmB18B,IAAS,QAAaA,EAAO,sBAAqBA,EAAO,oBAAoB,YAAY08B,EAAS,CAAC,EAAE18B,EAAO,oBAAoB,YAAY08B,CAAQ,GAAI,EAAE,sBAAsBssB,CAAM,CAAE,CAAC,CAAE,KAAK,CAEhQhiC,GAAsBoP,EAAQ7sB,CAAG,EAAEke,GAAqBpW,EAAG9H,CAAG,EAAEqH,GAAoBS,EAAG9H,CAAG,EAC1FqiB,GAAuBva,EAAG9H,CAAG,EAC7Bud,GAAasP,EAAQ,CAAC,EAAEt2B,MAAoB,CAACqvC,GAAU,EAAE,CAAE,CAAC,EAC5D/O,GAAuB,EACvB,GAAG,CAAIxnB,GAAoBrP,CAAG,GAAGy4B,EAAQ,SAAS3wB,EAAG,sBAAsBA,EAAG,qBAAqB9H,EAAIy4B,EAAQ,QAAQ,aAAa,EAAEA,EAAQ,QAAQ,cAAc,CAAC,EAAG3wB,EAAG,UAAU,OAAO,EAAWA,EAAG,UAAUA,EAAG,OAAOA,EAAG,QAAQA,EAAG,SAAS,OAAOA,EAAG,MAAMA,EAAG,MAAM,CAAG,MAAS,CAAC,CAE3R,GAAoBqrB,EAAmB18B,IAAS,QAAaA,EAAO,qBAAqBA,EAAO,oBAAoB,YAAY08B,EAAS,GAAG,EAAG,0BAA0B,CAAI2qB,IAA2BrnD,IAAS,QAAaA,EAAO,qBAAqBA,EAAO,oBAAoB,YAAY08B,EAAS,GAAG,EAAG,0BAA0B,CAAI2qB,GAA2BrnD,IAAS,QAAaA,EAAO,sBAAqBA,EAAO,oBAAoB,YAAY08B,EAAS,CAAC,EAAE18B,EAAO,oBAAoB,YAAY08B,CAAQ,EAAG,CAAC,EAAE,CAAC,CAAE,CAAC,EAAQvuB,EAAQ,GAAK,CAAKk5C,IAAW,QAAQ,MAAM9pC,CAAG,EAAEzd,MAAoB,CAACqvC,GAAU5xB,GAAK,SAAS,YAAY,CAAE,CAAC,EAAE6iB,GAAuB,EAC1oBpgC,IAAS,QAAaA,EAAO,qBAAqBA,EAAO,oBAAoB,YAAY08B,CAAQ,EAAI,EACzGusB,EAAmB,GAAO,CAAC,GAAG,CAACh+C,EAAM,iBAAiB,OACxD60B,KAAkB,GAAiB,GAAKM,GAAuB,GAAG,IAAMK,EAAIx1B,EAAM,OAAOA,EAAM,MAAgBjL,IAAS,QAAaA,EAAO,sBAAwBuJ,EAAI,mBAAoBvJ,EAAO,oBAAoB,YAAY08B,EAAS+D,EAAI,EAAE,EAAQzgC,EAAO,oBAAoB,YAAY08B,EAAS+D,EAAI,GAAG,EAAI,EAAE,GAAG,CAC9T,IAAM/kB,EAAO3M,GAAY,IAAI2tB,CAAQ,EAAE,GAAGhhB,EAAO,CAAC,EAAU,GAAK,GAAK,CAAC,MAAMwtC,EAAY,WAAWC,GAAa7qC,GAAkB5C,CAAM,EAAE4B,EAAS4rC,EAAYC,CAAW,CAAE,MAASn6C,GAAiB,IAAI0tB,CAAQ,EACnN1tB,GAAiB,IAAI0tB,CAAQ,CAAC,CAAC,SAAS,CAAC,GAAG2qB,EAAU,OAAO,IAAM+B,EAAUr6C,GAAY,IAAI2tB,CAAQ,EAAE,GAAG0sB,EAAU,CAAC,EAAU,GAAK,GAAK,CAAC,MAAMF,EAAY,WAAWC,GAAa7qC,GAAkB8qC,CAAS,EAAE9rC,EAAS4rC,EAAYC,CAAW,CAAE,MACnP,QAAQ,KAAK,oEAAoE,EAAMnpD,EAAO,qBAAqB,WAAWF,MAAoB,CAACqvC,GAAU,UAAU,CAAE,CAAC,EAAGvwB,GAAiB8d,EAAS7d,EAAOvB,EAAS2rC,EAAmB96C,CAAO,CAAG,CAAC,GAErPwxB,GAAwBjD,CAAQ,EAAE9d,GAAiB8d,EAAS7d,EAAOvB,EAAS2rC,EAAmB96C,CAAO,EAAG,OAAOoP,EAAI,CAACpP,EAAQoP,CAAG,CAAE,CAAC,UAAU,CAAC,EAAU,GACrJiyB,EAAS,UAAQ,EAAS,QAAQ,uBAAuB,IAAMrrB,GAA0B,MAAM,CAGlG,CAAE,EAAE,CAACuY,EAAS+G,GAAWqN,EAAkB,CAAC,EAAEnwC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAQ,GAAG,CAACn+B,GAAI,MAAM,OAAO,IAAIygC,EAAI,EAC0wD,MADxwD,GAAI,0BAA0B,CAAC,IAAMrhB,EAAK+e,EAAS,QAAQ,GAAG,CAAC/e,GAAM,OAAOA,IAAOpf,EAAG,OAAO,IAAM9H,EAAIooC,EAAY,QACzO,GADiPvlC,GAAsBqkB,EAAKA,EAAK,MAAMA,EAAK,WAAWlnB,CAAG,EAAKi8B,EAAiBpa,GAAyBqF,EAAKA,EAAK,MAAMA,EAAK,WAAWlnB,EAAI2yB,EAAcD,EAAa,GAAQzxB,GAAoCimB,EAAKA,EAAK,KAAK,EAAEA,EAAK,MAAM,cAAc,EAAE,EAAK,uBAAuB,KAAK,EAAK,oBAAoB,GAAG,EAAK,yBAAyB,GAAG,EAAK,yBAAyB,IACzmBA,EAAK,UAAU,CAAC,IAAMpF,EAAWmR,IAAe,CAAC,EAAQlR,EAAY,CAAC,GAAG/hB,EAAI,wBAAwB,IAAI,EAAE,IAAI,GAAK,CAACgD,EAAIqR,KAAM6S,EAAK,UAAU,CAA+C,GAA3C,CAAC7S,EAAG,OAAO,CAACA,EAAG,YAAY,QAAmBA,EAAG,OAAOA,EAAG,MAAM,UAAU,GAAM,SAASxR,GAAsBwR,EAAGA,EAAG,MAAMA,EAAG,WAAWrU,CAAG,EAAE,IAAMM,EAAKwhB,EAAW9e,GAAK,GAAG1C,GAAM,aAAa,CAAC,IAAMw/C,EAAY,CAAC,WAAW,KAAoBx/C,EAAK,UAAU,MAAMA,EAAK,UAAU,GAAGN,EAAI,wBAAwB,EAAE,KAAI,cAAkB,KAAI,mBAAuB,KAAI,yBAA6BA,EAAI,mBAAmB,SAAS2pC,EAA0B,CAAC,CAAC,KAAK,GAAG,EAAK1N,EAAoB5nB,EAAG,gCAAgCyrC,IAAa,EAAG,8BAA8BA,EAAY38C,GAAgBkR,EAAG,MAAMA,EAAG,WAAW/T,EAAK,UAAU,MAAMA,EAAK,UAAU,GAAGyD,GAA0BsQ,EAAGrU,CAAG,CAAC,IAASiB,GAAoCoT,EAAGA,EAAG,KAAK,EAAEA,EAAG,MAAM,cAAc,EAAE,EAAG,uBAAuB,KAAK,EAAG,oBAAoB,GAAG,EAAG,yBAAyB,GAAG,EAAG,yBAAyB,GAAG,EAAG,8BAA8B,GAAI,KAAK,CAAC,IAAM0rC,EAAU,CAAC,SAAS,KAAoBptB,EAAcD,IAAe,GAAG1yB,EAAI,wBAAwB,EAAE,KAAI,cAAkB,KAAI,mBAAuB,KAAI,yBAA6BA,EAAI,mBAAmB,SAAS,KAAI,wBAA4B,KAAoC2pC,EAA0B,CAAC,CAAC,KAAK,GAAG,EAAK1N,GAAiB,EAAG,yBAAyB/U,EAAK,yBAA4B7S,EAAG,gCAAgC0rC,IAAW,EAAG,8BAA8BA,EAAUl+B,GAAyBxN,EAAGA,EAAG,MAAMA,EAAG,WAAW0N,EAAY4Q,EAAcD,EAAa,KAASzxB,GAAoCoT,EAAGA,EAAG,KAAK,EAAEA,EAAG,MAAM,cAAc,EAAE,EAAG,uBAAuB,KAAK,EAAG,oBAAoB,GAAG,EAAG,yBAAyB,GAAG,EAAG,yBAAyB,GAAG,EAAG,8BAA8B,GAAI,CAAC,CAAC,CAAC,CAAC,MAAY,qBAAqBk0B,CAAG,CAAE,EAAE,CAACtM,EAAgBtJ,EAAcD,GAAcyJ,GAAuBC,GAAcC,GAAmBC,GAAyBC,GAAkBC,GAAwBC,GAAmBC,EAAgCiN,GAA2BE,EAAoB,CAAC,EAC/qEzyC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAQ,GAAG,CAACn+B,GAAI,MAAM,OAAO,IAAIygC,EAAI,EAAujB,MAArjB,GAAI,0BAA0B,CAAC,IAAMrhB,EAAK+e,EAAS,QAAQ,GAAI/e,GAAM,OAAOA,IAAOpf,IAAaof,EAAK,MAAM,YAAYgV,KAAgB,EAAK,MAAM,UAAUA,IAAmBhV,EAAK,WAAU,CAAC,IAAMpF,EAAWmR,IAAe,CAAC,EAAE,IAAI,GAAK,CAACjwB,EAAIqR,KAAM6S,EAAK,UAAU,CAAuB,GAAnB,CAAC7S,EAAG,OAAkBA,EAAG,OAAOA,EAAG,MAAM,UAAU,GAAM,SAAS,IAAM/T,EAAKwhB,EAAW9e,GAAQ1C,GAAM,cAAcA,EAAK,WAAW,KAAS+T,EAAG,MAAM,YAAY/T,EAAK,YAAW,EAAG,MAAM,UAAUA,EAAK,WAAoB+T,EAAG,MAAM,YAAY6nB,KAAgB,EAAG,MAAM,UAAUA,GAAiB,CAAC,CAAC,CAAC,MAAY,qBAAqBqM,CAAG,CAAE,EAAE,CAACrM,GAAe2N,EAAoB,CAAC,EAAEzyC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAYn+B,IAAUA,EAAG,OAAO,SAAS,IAAIqyB,GAAgBC,GAAgBC,EAAe,EAAEvyB,EAAG,SAAS,OAAO,EAAE,EAAE,CAACqyB,GAAgBC,GAAgBC,EAAe,CAAC,EACj5BjjC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAYn+B,GAAI,QAAQ,uBAA4B,EAAG,OAAO,KAAKwyB,GAAUxyB,EAAG,OAAO,uBAAuB,EAAE,EAAE,CAACwyB,EAAS,CAAC,EAC9JljC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAYn+B,GAAI,eAAoB,EAAG,aAAa,OAAOyyB,EAAa,EAAE,CAACA,CAAY,CAAC,EACzHnjC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAQ,GAAIn+B,IAC7C,AAAqHA,EAAG,cAAtGA,EAAG,MAAM,OAAOA,EAAG,UAAU,EAAEA,EAAG,WAAW,UAAU,QAAQ,EAAEA,EAAG,WAAW,UAAU,QAAQ,EAAgB,MAASo6B,IAAS,CAAC,IAAMzsB,EAAE,IAAI7iB,GAAiBuvC,GAAaC,GAAkBj3B,EAAWk3B,EAAc,EAAEl3B,EAAWm3B,EAAc,CAAC,EAAE,EAAE,SAAS,YAAY,GAAK,EAAE,SAAS,QAAQ,GAAG,EAAE,SAAS,WAAW,GAAM,EAAE,YAAY,GAAGx6B,EAAG,MAAM,IAAI2N,CAAC,EAAE,EAAG,WAAWA,CAAE,CAAC,EAAE,CAACysB,GAASC,GAAaC,GAAkBC,GAAeC,EAAc,CAAC,EACldlrC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAQ,GAAIn+B,IAC7C,AAAqNA,EAAG,cAAtMA,EAAG,MAAM,OAAOA,EAAG,UAAU,EAAEA,EAAG,WAAW,UAAU,QAAQ,EAAK,MAAM,QAAQA,EAAG,WAAW,QAAQ,EAAGA,EAAG,WAAW,SAAS,QAAQ,GAAGnK,EAAE,QAAQ,CAAC,EAAQmK,EAAG,WAAW,UAAU,QAAQ,EAAiB,MAASy6B,IAAS,CAAC,IAAM31B,EAAE,IAAIla,GAAiB8vC,EAAY,EAAE,EAAE,YAAY,IAAI,EAAE,SAAS,UAAU,GACvU16B,EAAG,MAAM,IAAI8E,CAAC,EAAE,EAAG,WAAWA,CAAE,CAAC,EAAE,CAAC21B,GAASC,EAAY,CAAC,EAC3DprC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAQ,GAAIn+B,IAC7C,AAAqQA,EAAG,mBAAjPA,EAAG,gBAAgB,QAAQ,OAAOA,EAAG,eAAe,EAAEA,EAAG,gBAAgB,UAAU,QAAQ,EAAK,MAAM,QAAQA,EAAG,gBAAgB,QAAQ,EAAGA,EAAG,gBAAgB,SAAS,QAAQ,GAAGnK,EAAE,QAAQ,CAAC,EAAQmK,EAAG,gBAAgB,UAAU,QAAQ,EAAsB,MAAS26B,IAAe36B,EAAG,OAAM,CAAC,IAAM22C,EAAG,IAAI/rD,GAAiBgwC,EAAiB,EAAE,EAAG,YAAY,IAAI,EAAG,SAAS,UAAU,GAAM56B,EAAG,MAAM,IAAI22C,CAAE,EAAE,EAAG,gBAAgBA,CAAG,CAAC,EAAE,CAAChc,GAAcC,EAAiB,CAAC,EACretrC,MAAc,CAAC,IAAM0Q,EAAGm+B,EAAS,QAAQ,GAAG,CAACn+B,EAAG,OAAO,IAAIg2C,EAAU,GAC/DhuB,kBAAQ,IAAI,IAAI,IAAI,IAAI3iB,EAAE,EAAEA,EAAE8lB,GAAc,OAAO,IAAI,CAAC,IAAM3yB,EAAK2yB,GAAc9lB,GAAM7M,GAAMA,EAAK,UAAUA,EAAK,SAAS,KAAK,GAAGwvB,EAAQ,IAAI3iB,EAAE7M,EAAK,SAAS,KAAK,CAAC,CAAG,CAAC,IAAM0/C,EAAYlwB,EAAQ,KAASmwB,EAAY,EAAQC,MAA0B,CAAC,IAAc3pD,MAAoB,CAACuvC,GAAmB,CAAC,OAAOma,EAAY,MAAMD,CAAW,CAAC,CAAE,CAAC,CAAE,EACjW,IAAI,GAAK,CAACh9C,EAAIqR,KAAMvM,EAAG,UAAcuM,EAAG,SAASyb,EAAQ,IAAI9sB,CAAG,GAAG8sB,EAAQ,IAAI9sB,CAAG,IAAIqR,EAAG,WAAW,IAAgB9d,MAAoB,CAACuvC,GAAmB,CAAC,OAAOma,EAAY,MAAMD,CAAW,CAAC,CAAE,CAAC,EACrM,IAAMG,kBAAe,IAAI,IAEzB,IAAI,GAAK,CAACn9C,EAAIqR,KAAMvM,EAAG,UAAU,CAAC,IAAMs4C,EAAQtwB,EAAQ,IAAI9sB,CAAG,EAAMo9C,EACZA,IAAU/rC,EAAG,YACtE8rC,EAAe,IAAIn9C,EAAIqR,CAAE,EAAEvM,EAAG,UAAU,OAAO9E,CAAG,IADlDoR,GAAgBtM,EAAGuM,CAAE,EAAEvM,EAAG,UAAU,OAAO9E,CAAG,EACO,CACrD,IAAI,GAAK,CAACA,EAAIyB,KAAOqrB,EAAQ,CAAC,GAAGhoB,EAAG,UAAU,IAAI9E,CAAG,EAAE,SACvD,IAAMq9C,EAAMF,EAAe,IAAIn9C,CAAG,EAElC8E,EAAG,UAAU,IAAI9E,EAAI,CAAC,MAAM,KAAK,WAAW,KAAK,MAAM,KAAK,WAAW,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,UAAUyB,EAAI,QAAQ,GACzI,UAAU47C,GAAO,KAAK,8BAA8B,EAAE,CAAC,EAAE,IAAM/qC,EAAOnM,GAAa1E,CAAG,EAAQ67C,EAAYj3C,GAAkB5E,CAAG,EAAQ87C,GAAa,EAAO,IAAa,CAAqB,GAAjBzC,GAAoB,CAACh2C,GAAI,UAAU,CAACA,GAAI,OAAO,CAACA,GAAI,OAAO,OAAO,IAAM9H,EAAIooC,EAAY,QAAQ5zB,GAAqBzE,CAAM,EAAE,IAAMwF,EAAezE,GAAiCf,EAAOlP,GAAY,CAAC,CAAC,EAAQsQ,EAAID,GAA4BnB,CAAM,EAAQqU,EAAOjT,EAAI,UAAU,IAAIhf,CAAa,EAAQ0U,EAAKsK,EAAI,QAAQ,IAAIhf,CAAa,EAAuDqsD,EAAe,GAAvD,KAAK,IAAI33C,EAAK,EAAEA,EAAK,EAAEA,EAAK,CAAC,GAAG,GAAsCmO,EAAM,IAAIviB,EAAYsd,EAAO,SAAS,IAAIqU,CAAM,EAAEpP,EAAM,IAAIjF,CAAM,EAAEiF,EAAM,MAAM,UAAU,CAAC,EAAE7P,GAAS,KAAK+L,GAA4B8D,CAAK,CAAC,EAAE,IAAMwrC,EAAWr7C,GAAS,UAAU,IAAIhT,CAAa,EAAQsuD,EAASt7C,GAAS,IAAI,EAAE6P,EAAM,MAAM,UAAUwpC,CAAc,EACv1B,IAAMpvC,EAASD,GAAwBrH,EAAG,SAAS9H,CAAG,EAAEgV,EAAM,SAAS,GAAO,CAAC,GAAGhF,EAAM,OAAO,CAAC,EAAM,WAAW,CAACswC,EAAY,EAAM,cAAc,CAACA,EAAY,EAAM,cAAc,CAACtwC,EAAM,cAAc,IAAMiF,EAAK,MAAM,QAAQjF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAM2G,KAAO1B,EAAK,CAAI0B,EAAI,MAAI,EAAI,IAAI,WAAW/lB,IAAwB+lB,EAAI,cAAY,EAAI,YAAY,WAAW/lB,IAA2G,IAAI,IAAMqoB,IAAK,CAAtF,MAAM,YAAY,eAAe,eAAe,QAAQ,aAAoC,EAAMtC,EAAIsC,KAAG,EAAIA,EAAE,CAAC,WAAW7J,EAAU,CAAC,CAAC,CAAC,EAC9f,IAAMlB,EAAzCgD,GAA4B8D,CAAkC,CAAC,CAAC,QAAQ,IAAI7iB,CAAa,EAAQitD,EAASnxC,GAAiBnG,EAAG,OAAOoG,CAAQ,EACrH5N,GAA5BN,EAAI,eAAe,CAAC,EAAA,CAAuBgD,IAAMiwB,GAAcjwB,GAAW09C,EAAQ,KAAK,IAAI,IAAIpgD,GAAM,OAAO,CAAC,EAAE0U,EAAM,MAAM,UAAUwpC,EAAeY,EAASsB,CAAO,EACpL,IAAMC,EAAY74C,EAAG,UAAU,IAAI9E,CAAG,EAAE,EAAM,QAAQ1C,GAAM,UAAU,GAAMwH,EAAG,MAAM,IAAIkN,CAAK,EAC1FsrC,GAAa7iC,GAAsBzI,EAAMhV,CAAG,EAC7C2gD,GAAa,WAAWvsC,GAAgBtM,EAAG64C,EAAY,SAAS,EAAG,IAAIx/C,EAAM,KAAWy/C,EAAkB,CAAC,uBAAuB,KAAK,oBAAoB,GAAG,yBAAyB,GAAG,yBAAyB,GAAG,8BAA8B,GAAG,sCAAsB,IAAI,IAAI,+BAA+B,KAAK,6BAA6B,KAAK,qBAAqB,GAAM,yBAAyB94C,EAAG,yBAAyB,2BAA2B,GAAM,6BAA6B,GAAG,gCAAgC,EAAE,EAAE,GAAGyN,GAAgBA,EAAe,OAAO,IAAG,EAAM,IAAI5iB,GAAqBod,CAAM,EAAElN,GAAsB+9C,EAAkBz/C,EAAMoU,EAAevV,CAAG,EAAKA,EAAI,iBAAgB,CAC/rB,IAAM0d,EAAYpd,GAAM,aAAmBugD,EAAavgD,GAAM,UAAU,GAASwgD,EAASpjC,EAAY,OAAOmjC,CAAY,CAAC,CAAC,KAAK,EAAE,SAAS,MAAM7gD,EAAI,cAAoB+gD,EAASrjC,EAAYmjC,EAAa7gD,EAAI,cAAc,GAAG0d,EAAava,GAAgBhC,EAAMoU,EAAeurC,EAASC,EAASh9C,GAA0B68C,EAAkB5gD,CAAG,CAAC,MAAO,CAAC,IAAM+hB,EAAY,CAAC,GAAG/hB,EAAI,wBAAwB,IAAI,EAAE6hB,GAAyB++B,EAAkBz/C,EAAMoU,EAAewM,EAAY++B,EAASC,CAAQ,CAAE,CAChfrjC,GAAapd,EAAK,WAAW,KAAM,EAAM,UAAUA,EAAK,UAAgB,EAAM,UAAUN,EAAI,cAAgB,CAC/G,IAAMghD,EAAWhhD,EAAI,sBAAsB,CAAC,MAAMM,GAAM,OAAO,EAAE,KAAKA,GAAM,MAAM,EAAE,KAAKA,GAAM,MAAM,EAAE,KAAKA,GAAM,MAAM,EAAE,KAAKA,GAAM,MAAM,EAAE,KAAKA,GAAM,MAAM,EAAE,KAAKA,GAAM,MAAM,CAAC,EAAE,KAAKwH,EAAG,UAAU,IAAI9E,EAAI,CAAC,QAAM,WAAW+M,EAAO,QAAM,WAAWwF,GAAgB,CAAC,EAAE,iBAAe,WAAS,WAAW,EAAE,UAAU9Q,EAAI,QAAQ,GAAK,UAAU,KAAK,aAAau8C,EAAW,uBAAuBJ,EAAkB,uBAAuB,oBAAoBA,EAAkB,oBAAoB,yBAAyBA,EAAkB,yBAAyB,yBAAyBA,EAAkB,yBAAyB,8BAA8BA,EAAkB,8BAA8B,sBAAsBA,EAAkB,sBAAsB,+BAA+BA,EAAkB,+BAA+B,6BAA6BA,EAAkB,6BAA6B,qBAAqBA,EAAkB,qBAAqB,yBAAyBA,EAAkB,yBAAyB,2BAA2BA,EAAkB,2BAA2B,6BAA6BA,EAAkB,6BAA6B,gCAAgCA,EAAkB,gCAAgC,eAAe,CAAC,CAACN,EAAY,aAAaE,EAAW,EAAE,aAAaA,EAAW,EAAE,aAAaA,EAAW,EAAE,UAAUC,CAAQ,CAAC,EAAEP,EAAsB,CAAE,EAAQe,EAAW,GAAK,CAAC,GAAG,CAACnD,EAAU,CAAC,QAAQ,KAAK,aAAa96C,EAAI,cAAcgR,CAAG,EACj/C,IAAM2sC,EAAY74C,EAAG,UAAU,IAAI9E,CAAG,EAAK29C,GAAa,YAAWvsC,GAAgBtM,EAAG64C,EAAY,SAAS,EAAE,EAAY,UAAU,KAAM,CAACT,EAAsB,CAC/J,EAAE,GAAG,CAAC,GAAGI,EAAY,CAAC5jC,GAAoBjY,EAAIqD,EAAG,SAASy4C,EAAYU,CAAU,EAAE,QAAS,CAC5F,IAAM9uC,EAAO3M,GAAY,IAAIf,CAAG,EAAE,GAAG0N,EAAO,CAAC,GAAK,CAAC,MAAMwtC,EAAY,WAAWC,GAAa7qC,GAAkB5C,CAAM,EAAEouC,EAAYZ,EAAYC,CAAW,CAAE,MAASn6C,GAAiB,IAAIhB,CAAG,EAC7LgB,GAAiB,IAAIhB,CAAG,CAAC,CAAC,SAAS,CAAC,GAAGq5C,EAAU,OAAO,IAAM+B,EAAUr6C,GAAY,IAAIf,CAAG,EAAE,GAAGo7C,EAAU,CAAC,GAAK,CAAC,MAAMqB,EAAG,WAAWC,GAAIpsC,GAAkB8qC,CAAS,EAAEU,EAAYW,EAAGC,CAAE,CAAE,MAAM9rC,GAAiB5Q,EAAI6Q,EAAOirC,EAAY,IAAA,GAAUU,CAAU,CAAG,CAAC,EAAQ5rC,GAAiB5Q,EAAI6Q,EAAOirC,EAAY,IAAA,GAAUU,CAAU,CAAG,OAAOjtC,EAAI,CAACitC,EAAWjtC,CAAG,CAAE,CAAC,CAAC,UAAU,CAAC,EAAU,GACzX,IAAI,GAAK,EAAEK,KAAMvM,EAAG,UAAW,AAAkDuM,EAAG,aAApCD,GAAgBtM,EAAGuM,EAAG,SAAS,EAAe,KAAO,CAAE,EAAE,CAACu1B,GAAoBrC,EAAkB,CAAC,EAKjJ,IAAM6Z,GAAgB7sB,EAAoB,IAAIxE,EAAoC,CAAC,CAAC,KAAK,GAAI6E,GAAI,WAAWA,EAAG,uBAAuB,GAAK,EAAuEysB,IAA3CxlB,IAAqBulB,KAAgExa,GAA0B0a,GAAYD,GAAqB,OAAO,UAAkGE,GAA1Dxe,KAAqB,YAAY0E,GAAqE,CAAC,SAAS1E,GAAmB,OAAOM,GAAa,IAAIJ,GAAU,KAAKC,GAAW,GAAGC,KAAc,MAAMA,KAAc,GAAG,CAAC,MAAMA,EAAW,EAAE,CAAC,EAAE,GAAGC,KAAe,MAAMA,KAAe,GAAG,CAAC,OAAOA,EAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAoB,gBAAM,MAAM,CAAC,IAAI3K,EAAQ,GAAG2O,GAAiB,iCAAiCD,GAAO,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,GAAG38B,EAAM,GAAG+2C,GAAoB,OAAOD,GAAY,SAAS,SAAS,WAAW7mB,GAAsB,cAAc,IAAA,GAAU,cAAc4mB,GAAqB,OAAO,OAAO,YAAYxlB,GAAoB,QAAQ,MAAM,EAAE,SAAS,CAACiM,IAAmC,gBAAK,SAAS,CAAC,IAAIrC,GAAU,oBAAoByB,GAAS,MAAM,CAAC,QAAQ,QAAQ,MAAM,OAAO,OAAO,OAAO,QAAQ,EAAE,cAAcma,GAAqB,OAAO,OAAO,YAAYxlB,GAAoB,QAAQ,MAAM,CAAC,CAAC,EAAE8L,IAAoBC,IAA6B,gBAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,QAAQ,OAAO,cAAc,SAAS,WAAW,SAAS,eAAe,SAAS,WAAW,2BAA2B,eAAe,YAAY,OAAO,uCAAuC,aAAa,GAAG,QAAQ,GAAG,UAAU,SAAS,IAAI,GAAG,MAAM,OAAO,WAAW,OAAO,SAAS,QAAQ,EAAE,SAAS,CAAc,gBAAM,MAAM,CAAC,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,0BAA0B,YAAY,MAAM,cAAc,QAAQ,eAAe,QAAQ,SAAS,CAAc,gBAAK,OAAO,CAAC,EAAE,2HAA2H,CAAC,EAAe,gBAAK,WAAW,CAAC,OAAO,+BAA+B,CAAC,EAAe,gBAAK,OAAO,CAAC,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAK,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,IAAI,cAAc,SAAS,QAAQ,GAAG,WAAW,4FAA4F,EAAE,SAAS,wCAAwC,CAAC,CAAC,CAAC,CAAC,EAAED,IAAoB,CAACC,IAA6B,gBAAK,MAAM,CAAC,+BAA+B,OAAO,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,cAAc,OAAO,WAAW,aAAa,CAAC,CAAC,EAAE7F,IAAgBmE,IAA0B,gBAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,KAAK,KAAK,IAAIA,GAAY,EAAE,IAAIzN,EAAQ,SAAS,aAAa,KAAK,GAAG,EAAE,IAAI,KAAK,IAAIyN,GAAY,EAAE,GAAG,CAAC,EAAE,cAAc,OAAO,OAAO,GAAG,EAAE,SAAsB,gBAAM,MAAM,CAAC,MAAM,CAAC,WAAW,mBAAmB,OAAO,mCAAmC,aAAa,EAAE,QAAQ,WAAW,eAAe,aAAa,SAAS,IAAI,SAAS,GAAG,EAAE,SAAS,CAAc,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,WAAW,SAAS,IAAI,EAAE,aAAa,CAAC,EAAE,SAAS,CAAc,gBAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,WAAWA,GAAY,OAAO,cAAc,UAAU,SAAS,CAAC,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,WAAW,IAAI,SAAS,GAAG,cAAc,SAAS,EAAE,SAASA,GAAY,IAAI,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,SAAS,OAAO,IAAI,WAAW,UAAU,CAAC,EAAE,SAAS,CAAc,gBAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,eAAe,QAAQ,UAAU,aAAa,EAAE,SAAS,EAAE,WAAWA,GAAY,OAAO,cAAc,wBAAwB,wBAAwB,MAAMA,GAAY,OAAO,cAAc,UAAU,UAAU,OAAO,aAAaA,GAAY,OAAO,cAAc,uBAAuB,wBAAwB,EAAE,SAASA,GAAY,IAAI,CAAC,EAAe,gBAAM,OAAO,CAAC,MAAM,CAAC,MAAM,wBAAwB,SAAS,EAAE,EAAE,SAAS,CAACA,GAAY,MAAM,eAAe,EAAE,QAAQ,CAAC,CAAC,EAAEA,GAAY,KAAkB,gBAAK,OAAO,CAAC,MAAM,CAAC,MAAM,wBAAwB,SAAS,EAAE,EAAE,SAASA,GAAY,GAAG,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,wBAAwB,SAAS,EAAE,UAAU,WAAW,EAAE,SAASA,GAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEM,GAAgBA,GAAgB,SAAS,OAAO,SAAW,IAAY3zC,EAA0B,gBAAK,MAAM,CAAC,MAAM,CAAC,SAAS,QAAQ,KAAK,KAAK,IAAI2zC,GAAgB,EAAE,GAAU/vC,IAAS,OAAkC,IAAtBA,EAAO,WAAW,GAAO,EAAE,IAAI,KAAK,IAAI+vC,GAAgB,EAAE,GAAG,CAAC,EAAE,cAAc,OAAO,OAAO,UAAU,EAAE,SAAsB,gBAAK,MAAM,CAAC,MAAM,CAAC,WAAW,mBAAmB,MAAM,OAAO,QAAQ,WAAW,aAAa,EAAE,SAAS,GAAG,WAAW,wBAAwB,WAAW,SAAS,UAAU,4BAA4B,OAAO,kCAAkC,SAAS,IAAI,SAAS,SAAS,aAAa,UAAU,EAAE,SAASA,GAAgB,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAe,gBAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,KAAK,KAAK,IAAIA,GAAgB,EAAE,IAAI/N,EAAQ,SAAS,aAAa,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI+N,GAAgB,EAAE,GAAG,CAAC,EAAE,cAAc,OAAO,OAAO,MAAM,EAAE,SAAsB,gBAAK,MAAM,CAAC,MAAM,CAAC,WAAW,mBAAmB,MAAM,OAAO,QAAQ,WAAW,aAAa,EAAE,SAAS,GAAG,WAAW,wBAAwB,WAAW,SAAS,UAAU,4BAA4B,OAAO,kCAAkC,SAAS,IAAI,SAAS,SAAS,aAAa,UAAU,EAAE,SAASA,GAAgB,IAAI,CAAC,CAAC,CAAC,EAAE,KAAKzE,IAAgBkE,EAAS,SAAS,qBAAqB,OAAO,GAAGoB,IAA6B,gBAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,GAAG,IAAI,GAAG,UAAU,MAAM,UAAU,OAAO,QAAQ,QAAQ,SAAS,GAAG,MAAM,yBAAyB,WAAW,kBAAkB,aAAa,EAAE,eAAe,aAAa,cAAc,OAAO,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,OAAO,GAAG,OAAO,kCAAkC,EAAE,SAAS,CAAc,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,eAAe,SAAS,GAAG,MAAM,wBAAwB,aAAa,kCAAkC,aAAa,EAAE,QAAQ,OAAO,WAAW,SAAS,IAAI,CAAC,EAAE,SAAS,CAAc,gBAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,eAAe,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,SAAS,CAAC,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,uBAAuB,EAAE,SAAS,iBAAiB,CAAC,EAAe,gBAAM,OAAO,CAAC,MAAM,CAAC,WAAW,OAAO,SAAS,CAAC,EAAE,SAAS,CAACpB,EAAS,QAAQ,qBAAqB,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,EAAS,QAAQ,oBAAoB,KAAK,EAAK,IAAI,CAAC,IAAM/oC,EAAUgpC,IAAa,OAAO5lC,EAAK,KAAWkhD,EAAOlhD,EAAK,MAAM,GAAG,GAAGA,EAAK,QAClgN,MAAoB,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,gBAAgB,GAAGkhD,EAAO,IAAI,WAAW,SAAS,SAAS,SAAS,aAAa,WAAW,QAAQ,OAAO,WAAW,SAAS,IAAI,EAAE,UAAUr0C,EAAE,EAAE,mCAAmC,OAAO,UAAU,IAAE,EAAK,EAAE,SAAS,CAAc,gBAAK,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,SAAS,GAAG,MAAM,UAAU,cAAc,QAAQ,EAAE,SAAS7M,EAAK,IAAI,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,yBAAyB,WAAW,OAAO,WAAW,EAAE,QAAQ,UAAU,aAAa,EAAE,WAAW,uBAAuB,OAAO,iCAAiC,EAAE,SAASA,EAAK,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK6M,GAAG,EAC5tB,IAAMs0C,EAAUnhD,EAAK,OAAO,cAAc,CAAC,GAAG,wBAAwB,OAAO,uBAAuB,KAAK,SAAS,EAAE,CAAC,GAAG,uBAAuB,OAAO,wBAAwB,KAAK,SAAS,EAAE,MAAoB,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,gBAAgB,GAAGkhD,EAAO,IAAI,WAAW,SAAS,SAAS,SAAS,aAAa,WAAW,QAAQ,OAAO,WAAW,SAAS,IAAI,EAAE,MAAMtkD,EAAU,UAAU,wBAAwB,WAAWA,EAAU,uBAAuB,cAAc,WAAW,gCAAgC,SAAS,EAAE,EAAE,SAAS,CAAc,gBAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,MAAM,WAAWA,EAAU,UAAU,wBAAwB,WAAW,CAAC,CAAC,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,SAAS,SAAS,aAAa,UAAU,EAAE,SAASoD,EAAK,IAAI,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAMmhD,EAAU,KAAK,QAAQ,QAAQ,aAAa,EAAE,WAAWA,EAAU,GAAG,OAAO,aAAaA,EAAU,SAAS,WAAW,EAAE,WAAW,MAAM,EAAE,SAASnhD,EAAK,OAAO,cAAc,OAAO,MAAM,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,wBAAwB,WAAW,CAAC,EAAE,SAASA,EAAK,MAAM,IAAI,IAAIA,EAAK,MAAM,IAAA,CAAK,QAAQ,CAAC,EAAE,GAAGA,EAAK,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK6M,GAAG,CAAE,CAAC,EAAe,gBAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,eAAe,SAAS,EAAE,MAAM,wBAAwB,UAAU,mCAAmC,UAAU,CAAC,EAAE,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,EAAEw4B,IAAqB,gBAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,KAAK,MAAM,IAAI,MAAM,UAAU,wBAAwB,QAAQ,YAAY,SAAS,GAAG,WAAW,mBAAmB,MAAM,OAAO,aAAa,GAAG,eAAe,YAAY,cAAc,MAAM,EAAE,SAASA,EAAM,CAAC,EAAE,CAACA,IAAQE,GAAgB,MAAM,GAAGA,GAAgB,OAAOA,GAAgB,OAAoB,gBAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,KAAK,MAAM,OAAO,GAAG,UAAU,mBAAmB,QAAQ,WAAW,SAAS,GAAG,WAAW,kBAAkB,MAAM,wBAAwB,aAAa,EAAE,eAAe,YAAY,cAAc,OAAO,WAAW,QAAQ,EAAE,SAAS,CAAC,cAAcA,GAAgB,OAAO,IAAIA,GAAgB,KAAK,CAAC,CAAC,EAAE5J,GAAiB8J,GAAmB,OAAO,GAAGsB,IAA6B,gBAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,KAAK,GAAG,OAAO,GAAG,UAAU,MAAM,UAAU,OAAO,QAAQ,QAAQ,SAAS,GAAG,MAAM,yBAAyB,WAAW,mBAAmB,aAAa,EAAE,eAAe,YAAY,cAAc,OAAO,SAAS,IAAI,WAAW,GAAG,EAAE,SAAS,CAAc,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,eAAe,SAAS,EAAE,MAAM,yBAAyB,aAAa,kCAAkC,aAAa,CAAC,EAAE,SAAS,CAAC,eAAetB,GAAmB,OAAO,GAAG,CAAC,CAAC,EAAEA,GAAmB,IAAI,GAAmB,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,WAAW,OAAO,UAAU,WAAWpT,IAAgB,UAAUD,KAAgBpiB,EAAK,uBAAuB,cAAc,MAAMqiB,IAAgB,UAAUD,KAAgBpiB,EAAK,UAAU,yBAAyB,WAAW,QAAQ,EAAE,SAAS,CAACqiB,IAAgB,OAAOA,IAAgB,UAAUD,KAAgBpiB,EAAK,KAAK,MAAMA,CAAI,CAAC,EAAEA,CAAI,CAAC,EAAEqiB,IAAgB,OAAoB,gBAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,WAAW,SAAS,EAAE,MAAM,yBAAyB,UAAU,kCAAkC,UAAU,CAAC,EAAE,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAEmP,IAAcjG,IAAqB,CAAC8J,IAAqB,gBAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,GAAG,OAAO,GAAG,QAAQ,UAAU,SAAS,EAAE,MAAM,yBAAyB,WAAW,kBAAkB,aAAa,EAAE,cAAc,OAAO,WAAW,IAAI,UAAU,OAAO,EAAE,SAAS,CAAC,gBAAgB7J,GAAW,oBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,C,0KA1dgnE,GAAoB,KAAsF,GAAmB,EAAM,GAAkB,EAInzL,GAAwB,KAAS,GAAwB,EAAM,GAAiB,GA+e1E,GAAK,CAAC,UAAU3D,EAAmB,C,+JC3enC,QAAU,CACe,IAAM2pB,EAA4B,IAA0CC,EAAiB,KAASC,EAAgB,KAASC,EAAe,KAASC,EAAmB,KAE5MC,EAAgB,KAASC,EAAuB,GAAM,SAASC,GAAgC,CAAIF,GAAiBC,IAA8B,EAAuB,GAAKlkD,GAAmB,CAAC,CAAC,KAAK,GAAM,CAAC,EAAgBguC,EAAK,EAAuB,EAAM,CAAC,CAAC,CAAC,MAAM,GAAK,CAAC,EAAuB,GAAM,QAAQ,KAAK,2DAA2Dl4B,CAAG,CAAE,CAAC,EAAE,CAAC,IAAMsuC,kBAAgB,IAAI,IAAUC,kBAAkB,IAAI,IAAUC,EAA0Bn6C,GAAW,SAASo6C,GAAoB,CAAqR,OAAhRT,IAAiB,EAAiB,IAAIlvD,EAAYivD,EAAiB,eAAe,yDAAyD,EAAE,EAAgB,IAAIhvD,GAAWivD,EAAgB,eAAeD,CAAgB,EAAEC,EAAgB,kBAAkBhvD,EAAc,GAAUgvD,CAAgB,CAAC,eAAeU,GAAmB,CAAC,GAAG,CAACT,EAAe,CAAC,IAAMrwC,EAAU,MAAMpU,GAAe,EAAE,AAAmBykD,IAAe,IAAIrwC,CAAU,CAAC,OAAOqwC,CAAe,CAAC,SAASU,GAAuB,CAAuE,MAAtE,CAAuBT,IAAmB79C,GAA0B,EAAS69C,CAAmB,CAAC,SAASU,EAAuB,EAAM,CAAC,IAAM9tC,EAAOxX,GAAO,aAAa,MAAYulD,EAAQvlD,GAAO,WAAW,GAASmH,EAAInH,GAAO,UAAUA,GAAO,cAAc,GAAG,OAAO,OAAOwX,IAAS,OAAO+tC,GAASp+C,EAAIA,GAAKo+C,CAAO,CAAC,CAAC,KAAK,CAAE,CAAC,SAASC,EAAwB,EAAK,CAAC,IAAMxlD,EAAMylD,GAAM,OAAO,CAAC,EAAQzuB,EAAKh3B,EAAM,aAAa,CAAC,EAAQu0B,EAAGv0B,EAAM,IAAI,CAAC,EAAE,OAAOg3B,EAAK,aAAazC,EAAG,aAAa,EAAK,CAAC,SAASmxB,EAAsB,EAAK,CAAuB,GAAnB,CAACD,GAAM,IAAe,CAACD,EAAwBC,CAAI,EAAE,MAAM,GAAG,IAAMt+C,EAAIm+C,EAAuBG,EAAK,KAAK,EAAQE,EAAaC,GAA4BH,EAAK,MAAMA,EAAK,iBAAiBA,EAAK,OAAO,yBAAyB,EAAkC,MAA7B,CAACt+C,GAAK,CAACw+C,EAAmB,GAAS,GAAGF,EAAK,GAAG,GAAGt+C,GAAK,iBAAkB,CAAC,SAAS0+C,EAAiB,EAAI,CAAC,IAAMC,EAAM,OAAO3+C,GAAK,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,EAAgQ,OAA3P2+C,EAAM,SAAS,MAAM,EAAQ,MAASA,EAAM,SAAS,MAAM,GAAGA,EAAM,SAAS,OAAO,EAAQ,OAAUA,EAAM,SAAS,MAAM,GAAGA,EAAM,SAAS,MAAM,GAAGA,EAAM,SAAS,OAAO,GAAGA,EAAM,SAAS,OAAO,EAAQ,QAAWA,EAAM,SAAS,MAAM,EAAQ,MAAY,EAAG,CAAC,SAASC,GAAyB,EAAK,CAAC,IAAMvuC,EAAOxU,GAAM,aAAa,MAAYuiD,EAAQviD,GAAM,WAAW,GAASmE,EAAInE,GAAM,UAAU,GAAG,OAAO,OAAOwU,IAAS,OAAO+tC,GAASp+C,EAAIA,GAAKo+C,CAAO,CAAC,CAAC,KAAK,CAAE,CAAC,SAASS,GAAiB,EAAI,CAAC,GAAG,CAAC7+C,EAAI,OAAO,QAAQ,OAAO,gBAAI,MAAM,qBAAqB,CAAC,EAAE,GAAG89C,EAAkB,IAAI99C,CAAG,EAAE,OAAO89C,EAAkB,IAAI99C,CAAG,EAAE,IAAMuyB,EAAQ,IAAI,SAAS,EAAQ,IAAS,CAAC2rB,EAAsB,CAAC,CAAC,KAAKl+C,EAAI,GAAS,CAAC,EAAQ,WAAWxR,GAAqB,EAAQ,YAAY,GAAKmoB,EAAQvW,CAAO,CAAE,EAAE,IAAA,GAAU0+C,CAAM,CAAE,CAAC,EAAqC,OAAnChB,EAAkB,IAAI99C,EAAIuyB,CAAO,EAASA,CAAQ,CAAC,SAASwsB,EAAsB,EAAQ,CAAC,IAAM7mC,EAAM9X,GAAS,OAAO,CAAC,EAAQ+X,EAAOD,EAAM,OAAOA,EAAM,OAAOA,EAAM,MAAM,KAAK,IAAI,EAAEA,EAAM,MAAM,EAAE,EAAQI,EAAS,IAAI7pB,EAAoB0pB,GAAQ,EAAEA,EAAO,EAAEA,GAAQ,EAAE,EAAE,EAAEA,CAAM,EAAQI,EAAS,IAAI7pB,GAAwB,CAAC,IAAI0R,EAAQ,YAAY,GAAK,UAAU,KAAK,WAAW,GAAM,KAAK,CAAgB,CAAC,EAAE,OAAO,IAAIzR,GAAW2pB,EAASC,CAAQ,CAAE,CAAC,SAASymC,EAAe,EAAI,CAAC,GAAG,CAACh/C,EAAI,OAAO,QAAQ,OAAO,gBAAI,MAAM,mBAAmB,CAAC,EAAE,GAAG69C,EAAgB,IAAI79C,CAAG,EAAE,OAAO69C,EAAgB,IAAI79C,CAAG,EAAE,IAAMuyB,EAAQ,IAAI,SAAS,EAAQ,IAAS,CAAC,IAAM1hB,EAAO6tC,EAAiB1+C,CAAG,EAAK6Q,IAAS,MAAOvD,GAAatN,GAAK,EAAO,EAAW,CAAC,IAAI,CAAC+P,GAAqBzE,CAAM,EAA2EqL,EAAQ,CAAC,SAAO,WAApEtK,GAAiCf,EAAOlP,CAAoD,EAAE,OAAO,KAAK,CAAC,CAAE,EAAE,IAAA,GAAU0iD,CAAM,EAAajuC,IAAS,QAASguC,GAAiB7+C,CAAG,CAAC,CAAC,KAAK,GAAS2W,EAAQ,CAAC,OAAOooC,EAAsB3+C,CAAO,EAAE,WAAW,CAAC,EAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM0+C,CAAM,EAAajuC,IAAS,MAAOotC,EAAkB,CAAC,CAAC,KAAK,GAAQ,CAACltC,EAAO,KAAK/Q,EAAI,GAAQ2W,EAAQ,CAAC,SAAO,WAAWtK,GAAiCf,EAAOA,EAAO,YAAY,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,IAAA,GAAUwzC,CAAM,CAAE,CAAC,CAAC,CAAC,MAAMA,CAAM,EAAUd,EAAmB,CAAC,CAAC,KAAKh+C,EAAI,GAAM2W,EAAQ,CAAC,OAAOjH,EAAK,MAAM,WAAWrD,GAAiCqD,EAAK,MAAMA,EAAK,YAAY,CAAC,CAAC,EAAE,OAAO,MAAM,CAAC,EAAE,IAAA,GAAUovC,CAAM,CAAE,CAAC,EAA6H,OAA3HjB,EAAgB,IAAI79C,EAAIuyB,CAAO,EAAEA,EAAQ,UAAU,CAAIsrB,EAAgB,IAAI79C,CAAG,IAAIuyB,GAASsrB,EAAgB,OAAO79C,CAAG,CAAG,CAAC,EAASuyB,CAAQ,CAAC,SAAS0sB,EAA4B,EAAO,EAAI,CAAK3zC,GAAQA,EAAO,UAAU,cAAc,SAAe0N,GAAsB1N,EAAO/P,CAAG,CAAE,CAAC,SAAS2jD,IAA8B,CAAC,GAAUltD,IAAS,OAAY,OAAO,IAAMwtB,EAAMxtB,EAAO,oBAAuB,CAACwtB,GAAOA,EAAM,WAAWA,EAAM,YAAkBA,EAAM,aAAa,CAAE,CAAC,SAAS2/B,IAAiC,CAAC,GAAUntD,IAAS,OAAY,OAAO,IAAMwtB,EAAMxtB,EAAO,oBAAwBwtB,GAAO,GAAM,aAAkBA,EAAM,cAAc,CAAC,EAAEA,EAAM,cAAc,EAAE,CAAC,SAAS4/B,GAAoB,EAAI,CAAC,IAAMC,EAAS,OAAOr/C,GAAK,EAAE,CAAC,CAAC,KAAK,EAAiI,MAA5H,CAACq/C,GAAqCxB,EAAgB,IAAIwB,CAAQ,EAAS,QAAQ,QAAQ,GAAEH,GAA6B,EAASF,EAAeK,CAAQ,CAAC,CAAC,SAAS,CAAC,GAAUrtD,IAAS,OAAY,OAAO,IAAMwtB,EAAMxtB,EAAO,oBAAuBwtB,GAAO,WAAW,CAACA,GAAO,YAAYA,EAAM,cAAc,GAAG,CAAG,CAAC,CAAC,CAAC,MAAM,GAAO,CAAC,QAAQ,KAAK,yCAAyCwC,CAAK,CAAE,CAAC,EAAE,CAAC,SAASs9B,GAA2B,CAAC,GAAUttD,IAAS,OAAY,OAAO,IAAMqhC,EAAIrhC,EAAautD,EAAgBlsB,EAAI,iBAAiB,GAAGksB,GAAiB,mBAAmB,OAAO,IAAMC,EAAQ,GAAK,CAAC,IAAM5hD,EAAQ,CAACwhD,GAAoBp/C,CAAG,CAAC,EAAE,GAAG,OAAOu/C,GAAkB,WAAY,GAAG,CAAC3hD,EAAQ,KAAK,QAAQ,QAAQ2hD,EAAgBv/C,CAAG,CAAC,CAAC,CAAE,OAAOgiB,EAAM,CAAC,QAAQ,KAAK,kDAAkDA,CAAK,CAAE,CAAE,OAAO,QAAQ,WAAWpkB,CAAO,CAAC,CAAC,SAAS,IAAA,EAAS,CAAE,EAAE,EAAQ,mBAAmB,GAAK,EAAQ,iBAAiB2hD,EAAgB,EAAI,iBAAiBC,CAAQ,CAACF,EAA0B,EAAE,SAASG,GAA6B,EAAM,CAAC,IAAM/yC,EAAID,GAA4BiF,CAAK,EAAQtP,EAAKsK,EAAI,QAAQ,IAAI9d,CAAa,EAAQ+wB,EAAOjT,EAAI,UAAU,IAAI9d,CAAa,EAAE8iB,EAAM,SAAS,IAAIiO,CAAM,EAAoD,IAAMo6B,EAAe,EAAzD,KAAK,IAAI33C,EAAK,EAAEA,EAAK,EAAEA,EAAK,EAAE,IAAmC,EAAwC,OAAtCsP,EAAM,MAAM,UAAUqoC,CAAc,EAASA,CAAe,CAAC,SAAS2F,GAA0B,EAAM,CAAChuC,EAAM,kBAAkB,EAAI,EAAE,IAAMiuC,kBAAW,IAAI,IAAUC,kBAAU,IAAI,IAAIluC,EAAM,SAAS,GAAO,CAA8C,GAA1C,CAACnG,EAAM,QAAQA,EAAM,eAAwB,CAACA,EAAM,UAAU,CAACA,EAAM,SAAS,WAAW,SAAS,OAAO,IAAIs0C,EAAO,GAAG,GAAG,MAAM,QAAQt0C,EAAM,QAAQ,EAAG,EAAOA,EAAM,SAAS,IAAI,GAAGrS,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,OAAQ,GAAGqS,EAAM,SAAU,EAAOA,EAAM,SAAS,UAAW,OAAQ,IAAMu0C,EAAQv0C,EAAM,SAAS,KAAWw0C,EAAQF,EAAO,MAAMC,EAAYF,EAAU,IAAIG,CAAO,GAAGH,EAAU,IAAIG,EAAQ,CAAC,OAAO,CAAC,EAAE,SAASx0C,EAAM,SAAS,SAASA,EAAM,QAAQ,CAAC,EAAGq0C,EAAU,IAAIG,CAAO,CAAC,CAAC,OAAO,KAAKx0C,CAAK,CAAE,CAAC,EAAE,IAAM0K,EAAS,CAAC,EAAQ+pC,EAAU,IAAInxD,GAAc,CAAC,CAAC,KAAK6iB,EAAM,WAAW,CAAC,CAAC,OAAO,EACp7N,IAAI,GAAK,CAACquC,EAAQxvC,KAASqvC,EAAU,QAAQ,EAAG,GAAGrvC,EAAM,OAAO,OAAO,EAAE,CAAC,IAAMoB,EAAMpB,EAAM,OAAO,OAAa0vC,EAAc,IAAInxD,GAAoByhB,EAAM,SAASA,EAAM,SAASoB,CAAK,EAAE,EAAc,KAAK,aAAaouC,EAAQ,UAAU,EAAE,EAAE,EAAE,IAAMG,EAAQ,IAAIrxD,GAAc,IAAI,IAAI6Z,EAAE,EAAEA,EAAEiJ,EAAM,IAAI,CAAC,IAAMyC,EAAK7D,EAAM,OAAO7H,GAAGw3C,EAAQ,KAAK9rC,EAAK,WAAW,EAAE8rC,EAAQ,YAAYF,CAAS,EAAEC,EAAc,YAAYv3C,EAAEw3C,CAAO,EAAEjqC,EAAS,KAAK7B,CAAI,EAAE,EAAK,SAAS,WAAW,EAAK,CAAC1C,EAAM,IAAIuuC,CAAa,CAAE,CACtfvuC,EAAM,SAAS,GAAO,CAAmG,GAA/F,CAACnG,EAAM,QAAQA,EAAM,eAAeA,EAAM,SAAS,YAAY0K,EAAS,SAAS1K,CAAK,GAAY,CAACA,EAAM,UAAU,CAACA,EAAM,SAAS,WAAW,SAAS,OAAO,IAAIs0C,EAAO,GAAG,GAAG,MAAM,QAAQt0C,EAAM,QAAQ,EAAG,EAAOA,EAAM,SAAS,IAAI,GAAGrS,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,OAAQ,GAAGqS,EAAM,SAAU,EAAOA,EAAM,SAAS,UAAW,OAAQ,IAAM40C,EAAS,OAAO,KAAK50C,EAAM,SAAS,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAQ60C,EAASP,EAAO,MAAMM,EAAaR,EAAW,IAAIS,CAAQ,GAAGT,EAAW,IAAIS,EAAS,CAAC,OAAO,CAAC,EAAE,SAAS70C,EAAM,QAAQ,CAAC,EAAGo0C,EAAW,IAAIS,CAAQ,CAAC,CAAC,OAAO,KAAK70C,CAAK,CAAE,CAAC,EAAE,IAAI,GAAK,CAAC60C,EAAS7vC,KAASovC,EAAW,QAAQ,EAAG,GAAGpvC,EAAM,OAAO,OAAO,EAAE,CAAC,IAAM8vC,EAAkB,CAAC,EAAE,IAAI,IAAMjsC,KAAQ7D,EAAM,OAAO,CAAC,IAAM+vC,EAAWlsC,EAAK,SAAS,MAAM,EAAEksC,EAAW,aAAalsC,EAAK,WAAW,EAAEksC,EAAW,aAAaN,CAAS,EAAEK,EAAkB,KAAKC,CAAU,EAAErqC,EAAS,KAAK7B,CAAI,CAAE,CAAC,GAAG,CAAC,IAAMmsC,EAAexxD,GAAoCsxD,EAAkB,EAAK,EAAE,GAAGE,EAAe,CAAC,IAAMC,EAAW,IAAI7xD,GAAW4xD,EAAehwC,EAAM,QAAQ,EAAE,EAAW,KAAK,UAAU6vC,EAAS,UAAU,EAAE,EAAE,EAAE1uC,EAAM,IAAI8uC,CAAU,CAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,KAAK,uDAAuDJ,EAAS,CAAC,EAAE,IAAI,IAAMhsC,KAAQ7D,EAAM,OAAO,CAAC,IAAMhS,EAAI0X,EAAS,QAAQ7B,CAAI,EAAK7V,EAAI,IAAG0X,EAAS,OAAO1X,EAAI,CAAC,CAAE,CAAC,QAAQ,CAAC,IAAI,IAAMkiD,KAAQJ,EAAmBI,EAAK,QAAQ,CAAG,CAAC,CAAE,IAAI,IAAMrsC,KAAQ6B,EAAa7B,EAAK,QAAQA,EAAK,OAAO,OAAOA,CAAI,EAAOA,EAAK,SAAS,YAAYA,EAAK,UAAU,UAAU,EAAI,OAAO1C,CAAM,CACjgD,SAASgvC,GAAkB,EAAM,CAAChvC,EAAM,SAAS,GAAO,CAAKnG,GAAO,SAAc,EAAM,cAAc,GAAM,EAAM,WAAW,GAAM,EAAM,cAAc,GAAM,AAAmBA,EAAM,WAAS,MAAM,QAAQA,EAAM,QAAQ,EAAEA,EAAM,SAAS,IAAI,GAAK2G,GAAK,QAAQ,GAAGA,CAAG,EAAE3G,EAAM,SAAS,QAAQ,GAAGA,EAAM,UAA0B,MAAM,QAAQA,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAA,CAAY,QAAQ,GAAK,CAAK2G,IAAW,EAAI,SAASA,EAAI,UAAU,CAAC,EAAMA,EAAI,SAAS,gBAAe,EAAI,SAAS,cAAc,CAAC,MAAMA,EAAI,OAAO,QAAQ,EAAE,SAASA,EAAI,UAAU,QAAQ,EAAE,UAAUA,EAAI,UAAU,UAAUA,EAAI,UAAU,QAAQA,EAAI,QAAQ,YAAYA,EAAI,YAAY,UAAUA,EAAI,UAAU,gBAAgBA,EAAI,eAAe,GAAG,EAAI,YAAY,GAAQA,EAAI,aAAaA,EAAI,SAAS,OAAK,EAAI,QAAQ,GAAKA,EAAI,SAAS,mBAAmB,IAAA,KAAW,EAAI,SAAS,iBAAiBA,EAAI,SAAS,GAAMA,EAAI,SAAS,uBAAuB,IAAA,KAAW,EAAI,SAAS,qBAAqBA,EAAI,aAAa,IAAO,CAAC,EAAE,CAAC,CAAE,CAAC,SAASyuC,GAAyB,EAAE,EAAI,EAAK,CAAC,IAAMltC,GAAOC,GAAK,KAAKC,GAAM,IAAI,MAAM,CAACF,EAAMG,EAAE,EAAEH,CAAM,CAAC,SAASmtC,GAA4B,EAAiB,EAAO,CAAC,IAAM1uC,EAAI6E,EAAiB,MAAM,EAAQ8pC,EAAU,IAAI7xD,GAAY8xD,EAAO,uBAAuB,SAAS,EAoB1uC,MApB4uC,GAAI,SAAS5uC,EAAI,UAAU,CAAC,EAAE,EAAI,SAAS,sBAAsByuC,GAAyB,EAAEG,EAAO,kBAAkBA,EAAO,iBAAiB,EAAE,EAAI,SAAS,kBAAkBA,EAAO,oBAAoB,IAAI,EAAI,SAAS,iBAAiBA,EAAO,mBAAmB,GAAG,EAAI,SAAS,kBAAkBA,EAAO,mBAAmB,GAAG,EAAI,SAAS,uBAAuBD,EAAU,EAAI,SAAS,2BAA2BC,EAAO,2BAA2B,EAAE,EAAI,SAAS,iBAAiB/pC,GAAkB,UAAU,kBAAkBA,GAAkB,SAAS,EAAE,EAAI,SAAS,qBAAqBA,GAAkB,UAAU,sBAAsBA,GAAkB,aAAa,GAAM,EAAI,YAAY,GAAK,EAAI,gBAAgB,GAAQ,CAAC,EAAO,SAAS,UAAU,CAAC,MAAM7E,EAAI,SAAS,qBAAqB,EAAE,EAAO,SAAS,MAAM,CAAC,MAAMA,EAAI,SAAS,iBAAiB,EAAE,EAAO,SAAS,KAAK,CAAC,MAAMA,EAAI,SAAS,gBAAgB,EAAE,EAAO,SAAS,MAAM,CAAC,MAAMA,EAAI,SAAS,iBAAiB,EAAE,EAAO,SAAS,WAAW,CAAC,MAAMA,EAAI,SAAS,sBAAsB,EAAE,EAAO,SAAS,eAAe,CAAC,MAAMA,EAAI,SAAS,0BAA0B,EAAE,EAAI,SAAS,sBAAsBkF,EAAO,SAAS,EAAO,aAAaA,EAAO,aAAa,QAAQ,oBAAoB;+BACh8E,EAAE,EAAO,aAAaA,EAAO,aAAa,QAAQ,0BAA0B;6BAC9E,EAAE,EAAO,eAAeA,EAAO,eAAe,QAAQ,oBAAoB;;;;;;;;EAQrG2mC,EAA0B;CAC3B,EAAE,EAAO,eAAe3mC,EAAO,eAAe,QAAQ,gCAAgC;;;;;;;;;CAStF,CAAE,EAAE,EAAI,YAAY,GAAYlF,CAAI,CAAC,SAAS6uC,GAA2B,EAAO,CAAC,GAAG,CAACz1C,EAAO,OAAO,IAAMkU,EAAMlU,EAAO,UAAU,oBAAwBkU,GAAO,SAAclU,EAAO,SAAS,GAAO,CAAC,GAAG,CAACC,GAAO,OAAO,OAAO,IAAMy1C,EAASxhC,EAAM,kBAAkB,IAAIjU,EAAM,IAAI,EAAKy1C,IAAS,EAAM,SAASA,GAAS,IAAM72B,EAAS3K,EAAM,kBAAkB,IAAIjU,EAAM,IAAI,GAAG,MAAM,QAAQ4e,CAAQ,EAAEA,EAAS,CAACA,CAAQ,EAAA,CAAG,QAAQ,GAAKjY,GAAK,UAAU,CAAC,CAAE,CAAC,EAAEsN,EAAM,kBAAkB,MAAM,EAAEA,EAAM,kBAAkB,MAAM,EAAE,AAAuIA,EAAM,aAAzHjM,GAAyBiM,EAAM,SAAS,EAAKA,EAAM,UAAU,QAAOA,EAAM,UAAU,OAAO,OAAOA,EAAM,SAAS,EAAkB,MAAM,EAAM,OAAO,GAAM,EAAM,KAAK,GAAG,CAAC,SAASyhC,GAAwB,EAAO,EAAW,EAAO,CAAC,GAAG,CAAC31C,EAAO,OAAqE,IAAMsI,EAAE,EAA9C,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEyS,GAAY,CAAC,CAA6B,EAAgD66B,EAAe,CAA9C,CAACJ,GAAQ,iBAA8CltC,EAAE,KAA6ButC,EAAa,CAACL,EAAO,mBAAmBA,EAAO,kBAAkBA,EAAO,kBAAkBA,EAAO,sBAAsBA,EAAO,0BAA0BA,EAAO,uBAAuB,CAAC,CAAC,KAAK,GAAG,EAAQthC,EAAMlU,EAAO,SAAS,sBAAsB,EAAO,SAAS,oBAAoB,CAAC,OAAO,GAAM,KAAK,GAAG,kCAAkB,IAAI,IAAI,kCAAkB,IAAI,IAAI,UAAU,IAAI,GAAG,GAAG,CAAC41C,EAAe,CAACH,GAA2Bz1C,CAAM,EAAE,MAAO,EAAI,CAACkU,EAAM,QAAQA,EAAM,OAAO2hC,KAAcJ,GAA2Bz1C,CAAM,EAAEA,EAAO,SAAS,GAAO,CAAC,GAAG,CAACC,GAAO,QAAQ,CAACA,EAAM,SAAS,OAAO,IAAMy1C,EAASz1C,EAAM,SAASiU,EAAM,kBAAkB,IAAIjU,EAAM,KAAKy1C,CAAQ,EAAE,IAAMI,EAAa,MAAM,QAAQJ,CAAQ,EAAEA,EAAS,IAAI,GAAKJ,GAA4B1uC,EAAI4uC,CAAM,CAAC,EAAEF,GAA4BI,EAASF,CAAM,EAAEthC,EAAM,kBAAkB,IAAIjU,EAAM,KAAK61C,CAAY,EAAE,EAAM,SAASA,CAAa,CAAC,EAAKN,EAAO,0BAAyB,EAAM,UAAUvvC,GAAwBjG,EAAOw1C,CAAM,EAAKx1C,EAAO,QAAQA,EAAO,OAAO,IAAIkU,EAAM,UAAU,MAAM,GAAI,EAAM,OAAO,GAAK,EAAM,KAAK2hC,GAAc,IAAME,EAAeV,GAAyB/sC,EAAEktC,EAAO,kBAAkBA,EAAO,iBAAiB,EAAEx1C,EAAO,SAAS,GAAO,CAAKC,GAAO,QAASA,EAAM,WAAgC,MAAM,QAAQA,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAA,CAAY,QAAQ,GAAK,CAAC,GAAG,CAAC2G,GAAK,SAAS,OAAO,EAAI,SAAS,sBAAsBmvC,EAAe,IAAMr/C,EAASkQ,EAAI,SAAS,sBAA0BlQ,IAAgB,EAAS,UAAU,MAAMq/C,EAAe,EAAS,MAAM,MAAMP,EAAO,oBAAoB,IAAI,EAAS,KAAK,MAAMA,EAAO,mBAAmB,GAAG,EAAS,MAAM,MAAMA,EAAO,mBAAmB,GAAG9+C,EAAS,WAAW,MAAM,IAAI8+C,EAAO,uBAAuB,SAAS,EAAE,EAAS,eAAe,MAAMA,EAAO,2BAA2B,EAAE,CAAC,CAAE,CAAC,EAAKthC,EAAM,YAI5vF,EAAM,UAAU,IAAI,SAAS,UAAU,MAAM6hC,EAAe,EAAM,UAAU,IAAI,SAAS,MAAM,MAAMP,EAAO,oBAAoB,IAAI,EAAM,UAAU,IAAI,SAAS,KAAK,MAAMA,EAAO,mBAAmB,GAAG,EAAM,UAAU,IAAI,SAAS,MAAM,MAAMA,EAAO,mBAAmB,GAAG,EAAM,UAAU,IAAI,SAAS,UAAU,MAAMA,EAAO,0BAA0B,GAAGthC,EAAM,UAAU,IAAI,SAAS,OAAO,MAAM,KAAK9Y,EAAWo6C,EAAO,uBAAuBA,EAAO,uBAAuB,SAAS,CAAC,EAAE,EAAM,UAAU,MAAM,MAAMA,EAAO,uBAAuB,IAAI,EAAM,UAAU,MAAM,QAAQA,EAAO,yBAAyB,EAAE,EAAM,UAAU,MAAM,UAAU,EAAEA,EAAO,sBAAsB,IAAI,EAAM,UAAU,MAAM,UAAU,EAAEA,EAAO,sBAAsB,EAAE1uC,GAAwBoN,EAAM,UAAU,KAAK,EAAEtM,GAAuBsM,EAAM,UAAU,IAAIA,EAAM,UAAU,KAAK,EAAG,CAAC,SAAS8hC,GAA+B,EAAK,CAA4C,OAAjCtvD,IAAS,QAA8B,CAACgT,GAAMA,IAAOhT,GAAQgT,IAAO,SAAS,MAAMA,IAAO,SAAS,iBAAiBA,IAAO,SAAS,gBAAiB,CAAC,SAASu8C,EAAsB,EAAgB,CAAC,GAAUvvD,IAAS,OAAa,MAAM,CAAC,gBAAgB,KAAK,WAAW,GAAK,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAG,IAAMwvD,EAAWF,GAA+BtuB,CAAe,EAAQyuB,EAASD,EAAW,SAAS,kBAAkB,SAAS,iBAAiB,SAAS,KAAKxuB,EAAsB0uB,EAAc,KAAK,IAAI,EAAEF,EAAWxvD,EAAO,YAAY,EAAEyvD,GAAU,aAAa,CAAC,EAAQE,EAAe,KAAK,IAAI,EAAEH,EAAWxvD,EAAO,aAAa,EAAEyvD,GAAU,cAAc,CAAC,EAAQG,EAAcJ,EAAW,CAAC,KAAK,EAAE,IAAI,EAAE,MAAME,EAAc,OAAOC,EAAe,MAAMD,EAAc,OAAOC,CAAc,EAAEF,EAAS,sBAAsB,EAAE,MAAM,CAAC,gBAAgBA,EAAS,aAAW,WAAWA,GAAU,YAAYzvD,EAAO,SAAS,EAAE,UAAUyvD,GAAU,WAAWzvD,EAAO,SAAS,EAAE,gBAAc,iBAAe,aAAa4vD,EAAc,KAAK,YAAYA,EAAc,IAAI,cAAcA,EAAc,KAAKF,EAAc,eAAeE,EAAc,IAAID,EAAe,eAAa,CAAE,CAAC,SAASE,GAA4B,EAAK,CAAC,GAAU7vD,IAAS,QAAa,CAACgT,EAAK,MAAO,GAAE,IAAIc,EAAQd,EAASq2B,EAAQ,EAAE,KAAMv1B,GAASA,IAAU,SAAS,MAAMA,IAAU,SAAS,iBAAgB,CAAC,GAAG,EAAEA,aAAmB,aAAa,CAAC,EAAQA,EAAQ,cAAc,QAAS,CAAC,IAAMC,EAAM/T,EAAO,iBAAiB8T,CAAO,EAAE,GAAGC,EAAM,UAAU,QAAQA,EAAM,aAAa,SAAU,MAAO,GAAG,IAAM+7C,EAAW,OAAO,WAAW/7C,EAAM,SAAS,GAAG,EAAK,OAAO,SAAS+7C,CAAU,IAAE,GAASA,GAAW,EAAQh8C,EAAQ,aAAc,CAAC,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEu1B,CAAO,CAAC,CAAE,CAAC,SAAS0mB,GAAsB,EAAE,EAAE,EAAU,EAAE,CAAwB,MAApB,CAAC55C,GAAG,CAACD,EAAS,GAAa,KAAK,KAAKC,EAAE,MAAM,IAAID,EAAE,MAAM,EAAE,GAAG85C,GAAW,KAAK,KAAK75C,EAAE,KAAK,IAAID,EAAE,KAAK,EAAE,GAAG85C,GAAW,KAAK,KAAK75C,EAAE,OAAO,IAAID,EAAE,OAAO,EAAE,GAAG85C,GAAW,KAAK,KAAK75C,EAAE,QAAQ,IAAID,EAAE,QAAQ,EAAE,GAAG85C,CAAU,CAAC,SAASC,GAA4B,EAAE,EAAE,CAAC,IAAMC,EAAa,OAAO,CAAC,CAACh6C,GAAG,UAAU,EAAE,OAAO,CAAC,CAACC,GAAG,UAAU,EAAE,GAAG+5C,IAAe,EAAE,OAAOA,EAAa,IAAMC,GAAcj6C,GAAG,YAAY,IAAIC,GAAG,YAAY,GAAG,GAAG,KAAK,IAAIg6C,CAAY,EAAE,KAAK,OAAOA,EAAa,IAAMC,GAAcl6C,GAAG,WAAW,IAAIC,GAAG,WAAW,GAAG,GAAG,KAAK,IAAIi6C,CAAY,EAAE,GAAG,OAAOA,EAAa,IAAMC,GAAiBn6C,GAAG,YAAY,IAAIC,GAAG,YAAY,GAA4D,OAAtD,KAAK,IAAIk6C,CAAe,EAAE,KAAYA,GAAuBl6C,GAAG,UAAU,IAAID,GAAG,UAAU,EAAG,CAAC,SAASo6C,GAAwB,EAAE,EAAE,CAAuD,GAAvCP,GAAsB55C,GAAG,KAAKD,GAAG,IAAgB,EAAE,CAAC,IAAMi6C,GAAch6C,GAAG,YAAY,IAAID,GAAG,YAAY,GAAG,GAAG,KAAK,IAAIi6C,CAAY,EAAE,KAAK,OAAOA,EAAa,IAAMC,GAAcj6C,GAAG,WAAW,IAAID,GAAG,WAAW,GAAG,GAAG,KAAK,IAAIk6C,CAAY,EAAE,GAAG,OAAOA,CAAa,CAAC,OAAOj6C,GAAG,UAAU,IAAID,GAAG,UAAU,EAAG,CAAC,SAASq6C,GAAyB,EAAE,EAAE,CAAC,IAAMF,GAAiBn6C,GAAG,YAAY,IAAIC,GAAG,YAAY,GAA4D,OAAtD,KAAK,IAAIk6C,CAAe,EAAE,KAAYA,GAAuBl6C,GAAG,UAAU,IAAID,GAAG,UAAU,EAAG,CAAC,SAASs6C,GAAgC,EAAU,EAAM,CAAC,OAAO54B,GAA+BN,EAAU,CAAC,OAAK,CAAC,CAAE,CAAC,SAASm5B,GAA8B,EAAM,CAAC,OAAO,OAAO9gD,GAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAE,CAAC,SAAS+gD,GAAiC,EAAK,EAAS,CAA8F,GAA1F,CAAC19C,GAAMA,EAAK,WAAW,GAAkB29C,GAAUA,EAAS,WAAW39C,CAAI,GAAkBA,EAAK,eAAe,mBAAmB,EAAE,MAAO,GAAM,IAAMS,EAAKT,EAAK,wBAAwB,EAAE,GAAG,CAACS,GAAMA,EAAK,MAAM,GAAGA,EAAK,OAAO,EAAE,MAAO,GAAM,IAAIK,EAAQd,EAAK,KAAMc,GAASA,IAAU,SAAS,MAAK,CAAC,GAAGA,EAAQ,eAAe,aAAa,IAAI,QAAQA,EAAQ,eAAe,oBAAoB,IAAI,OAAQ,MAAO,GAAO,IAAMC,EAAa/T,IAAS,OAA6C,KAAjCA,EAAO,iBAAiB8T,CAAO,EAAO,GAAGC,IAAQA,EAAM,UAAU,QAAQA,EAAM,aAAa,UAAU,OAAOA,EAAM,OAAO,IAAI,GAAI,MAAO,GAAO,EAAQD,EAAQ,aAAc,CAAC,MAAO,EAAK,CAAC,SAAS88C,GAA0B,EAAS,EAAS,CAAC,IAAM38C,EAAQ,OAAOX,GAAU,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAIm9C,EAA6B,CAAC,CAAC,QAAQ,GAAO,CAAC9gD,EAAMA,EAAM,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,GAAG,CAACsE,EAAQ,OAAO,MAAO,GAAK,IAAIjB,EAAKkB,EAAS,KAAMlB,GAAMA,IAAO,SAAS,MAAK,CAAC,IAAMC,EAAO,CAACD,EAAK,GAAGA,EAAK,eAAe,YAAY,EAAEA,EAAK,eAAe,kBAAkB,EAAEA,EAAK,eAAe,4BAA4B,EAAEA,EAAK,eAAe,iBAAiB,EAAEA,EAAK,eAAe,WAAW,EAAEA,EAAK,eAAe,OAAO,CAAC,EAA+D,GAA1DA,EAAK,WAAUC,EAAO,KAAK,GAAG,MAAM,KAAKD,EAAK,SAAS,CAAC,EAAKC,EAAO,OAAO,OAAO,CAAC,CAAC,IAAIw9C,EAA6B,CAAC,CAAC,KAAK,GAAOx8C,EAAQ,SAAStE,CAAK,CAAC,EAAG,MAAO,GAAM,EAAKqD,EAAK,aAAc,CAAC,MAAO,EAAM,CAAC,SAAS69C,GAA2B,EAAS,EAAS,KAAK,CAAC,GAAG,OAAO,SAAW,IAAY,OAAO,KAAK,IAAM58C,EAAQ,OAAOX,GAAU,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAIm9C,EAA6B,CAAC,CAAC,IAAI,GAAO9gD,EAAM,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,GAAG,CAACsE,EAAQ,OAAO,OAAO,KAAK,IAAMG,EAAgB,SAAS,iBAAiB,wBAAwB,EAAE,IAAI,IAAMD,KAAUF,EAAQ,CAAC,IAAI,IAAMjB,KAAQoB,EAAgB,CAAC,GAAG,CAACs8C,GAAiC19C,EAAK29C,CAAQ,EAAE,SAAS,IAAMG,EAAUL,GAA8Bz9C,EAAK,eAAe,iBAAiB,CAAC,EAAE,GAAG89C,GAAWA,IAAY38C,EAAO,OAAOnB,CAAK,CAAC,IAAI,IAAMA,KAAQoB,EAAgB,CAAC,GAAG,CAACs8C,GAAiC19C,EAAK29C,CAAQ,EAAE,SAAS,IAAM55C,EAAG05C,GAA8Bz9C,EAAK,EAAE,EAAE,GAAG+D,GAAIA,IAAK5C,EAAO,OAAOnB,CAAK,CAAC,CAAC,OAAO,IAAK,CAAC,SAAS+9C,GAA6B,EAAO,EAAS,EAAgB,EAAI,CAAC,GAAG3jC,EAAO,4BAA4B5W,EAAI4W,EAAO,2BAA2B,IAAOA,EAAO,4BAA4B5Z,GAAU4Z,EAAO,mCAAmC4T,GAAiB5T,EAAO,0BAA2B,OAAOA,EAAO,0BAA4B,EAAO,2BAA2B5W,EAAI,EAAO,0BAA0BhD,EAAS,EAAO,iCAAiCwtB,EAAmB5T,EAAO,4BAA4B,MAAOA,EAAO,2BAA2B,MAAM,EAAQ,EAAO,2CAA2B,IAAI,IAAK,IAAM0oB,EAAQyZ,EAAsBvuB,CAAe,EAAgR,MAA9Q,GAAO,0BAA0B8U,EAAQ,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,MAAMA,EAAQ,cAAc,OAAOA,EAAQ,eAAe,MAAM,EAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAMA,EAAQ,cAAc,OAAOA,EAAQ,eAAe,MAAM,GAAK,SAASA,EAAQ,cAAc,OAAO,EAAE,OAAO,CAAC,EAAS1oB,EAAO,yBAA0B,CAAC,SAAS4jC,GAAyB,EAAO,EAAK,EAAS,CAAC,GAAG,CAACh+C,EAAK,OAAO,KAAK,IAAM6e,EAAUzE,EAAO,2BAA2B,GAAGyE,GAAW,IAAI7e,CAAI,EAAE,OAAO6e,EAAU,IAAI7e,CAAI,EAAE,IAAM8e,EAAQ9e,EAAK,sBAAsB,EAAE,GAAG,CAAC+e,GAAU,OAAO,CAACA,EAAS,SAAuC,OAA7BF,GAAW,IAAI7e,EAAK8e,CAAO,EAASA,EAAS,IAAME,EAAOD,EAAS,QAAQ,EAAQE,EAAOF,EAAS,QAAQ,EAAQtC,GAAMqC,EAAQ,KAAKC,EAAS,SAAS,MAAMC,EAAaxH,GAAKsH,EAAQ,IAAIC,EAAS,SAAS,KAAKE,EAAahiB,EAAM6hB,EAAQ,MAAME,EAAa9hB,EAAO4hB,EAAQ,OAAOG,EAAaxe,EAAK,CAAC,OAAK,MAAI,QAAM,SAAO,MAAMgc,EAAKxf,EAAM,OAAOua,EAAIta,CAAM,EAA4B,OAA1B2hB,GAAW,IAAI7e,EAAKS,CAAI,EAASA,CAAK,CAAC,SAASw9C,GAAoB,EAAM,EAAU,EAAE,CAAC,OAAOj2B,GAAoCn0B,EAAM,CAAC,MAAMw1B,CAAS,CAAC,CAAE,CAAC,SAAS60B,EAA2B,EAAO,EAAc,CAAC,GAAG,CAAC53C,GAAQ,CAAC63C,EAAc,OAAO,IAAM94B,EAAa84B,EAAc,cAAc,CAAC,EAAQnsC,EAASmsC,EAAc,gBAAgB,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEA,EAAc,UAAU,CAAC,CAAC,EAAE,EAA0F,GAAxF,EAAO,SAAS,GAAGA,EAAc,SAAS,EAAE,EAAO,SAAS,GAAGA,EAAc,SAAS,EAAKA,EAAc,gBAAgB,CAAC,EAAO,SAAS,IAAI94B,EAAa,MAAM,GAAGrT,EAAS,EAAO,SAAS,IAAIqT,EAAa,MAAM,GAAGrT,EAAS,EAAO,SAAS,IAAIqT,EAAa,MAAM,GAAGrT,EAAS,IAAM0Q,EAAgB2C,EAAa,OAAO,KAAuC,EAAlC,GAAGA,EAAa,MAAM,GAAGrT,EAAW1L,EAAO,MAAM,eAAeoc,CAAe,EAAE,EAAO,SAAS,IAAI2C,EAAa,MAAM,GAAGrT,EAAS,KAAK,GAAG,IAAI,EAAO,SAAS,IAAIqT,EAAa,MAAM,GAAGrT,EAAS,KAAK,GAAG,IAAI,EAAO,SAAS,IAAIqT,EAAa,MAAM,GAAGrT,EAAS,KAAK,GAAG,GAAI,CAAC,CAA4a,SAASosC,EAAqB,EAAO,EAAI,EAAS,EAAgB,EAAO,EAAI,CAAC,IAAMj/B,EAAU/E,EAAO,iBAAiB,GAAG,CAAC7jB,EAAI,eAAe,CAACA,EAAI,aAAoBvJ,IAAS,OAAkR,MAArQ,GAAO,mBAAmB,EAAE,EAAO,mBAAmB,EAAE,EAAO,wBAAwB,IAAA,GAAU,EAAO,wBAAwB,IAAA,GAAU,EAAO,wBAAwB,GAAG,EAAO,2BAA2B,EAAE,EAAO,cAAc,KAAK,EAAO,iBAAiB,GAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,GAAK,SAAS,CAAC,EAAG,IAAMoyB,EAAmB,OAAO7oB,EAAI,oBAAoB,EAAE,CAAC,CAAC,KAAK,EAAQ8oB,EAAoB,CAAC,CAAC9oB,EAAI,kBAAwB+oB,EAAaH,IAAY5oB,EAAI,YAAY,GAAG+oB,GAAc,CAAClF,EAAO,eAAe,CAACA,EAAO,cAAc,aAAa,CAACsjC,GAAiCtjC,EAAO,cAAc5Z,CAAQ,GAAGgD,IAAM4W,EAAO,qBAAqB,GAAG,CAAC,IAAMmF,EAAenF,EAAO,cAAc,EAAO,iBAAiB7jB,EAAI,YAAY,EAAO,cAAcsnD,GAA2BtnD,EAAI,YAAYiK,CAAQ,EAAE,EAAO,oBAAoBgD,EAAI,IAAO+b,GAAgBA,IAAiBnF,EAAO,gBAAe,EAAO,wBAAwB,GAAG,EAAO,2BAA2B,EAAG,CAAC,IAAI5rB,EAAG4rB,EAAO,cAAiB5rB,GAAI,CAACkvD,GAAiClvD,EAAGgS,CAAQ,IAAG,EAAO,cAAcq9C,GAA2BtnD,EAAI,YAAYiK,CAAQ,EAAE,EAAO,oBAAoBgD,EAAI,IAAI,EAAG4W,EAAO,cAAc,EAAO,wBAAwB,GAAG,EAAO,2BAA2B,GAAG,IAAMoF,EAAOL,GAAWA,IAAY5oB,EAAI,YAAYsnD,GAA2B1+B,EAAU3e,CAAQ,EAAE,KAAWif,EAAwB,CAACL,GAAoB,CAAC,CAACI,GAAQo+B,GAA0Bp+B,EAAOJ,CAAkB,GAAGq+B,GAA8Br+B,CAAkB,IAAIq+B,GAA8Bt+B,CAAS,GAAGs+B,GAA8Br+B,CAAkB,IAAIq+B,GAA8BrjC,EAAO,kCAAkC,EAAQsF,EAAkBL,GAAqBI,EAAwB,GAAG,CAACjxB,EAAoN,MAAhN,GAAO,mBAAmB,EAAE,EAAO,mBAAmB,EAAE,EAAO,wBAAwB,IAAA,GAAU,EAAO,wBAAwB,IAAA,GAAU,EAAO,wBAAwB,GAAG,EAAO,2BAA2B,EAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,GAAM,SAAS,CAAC,EAAG,IAAMuwB,EAASg/B,GAA6B3jC,EAAO5Z,EAASwtB,EAAgBxqB,CAAG,EAAQ66C,EAAoB,GAAM,CAAC,GAAG,CAACr+C,GAAahT,IAAS,OAAY,OAAO,KAAK,IAAMyT,EAAKu9C,GAAyB5jC,EAAOpa,EAAK+e,CAAQ,EAAE,GAAG,CAACte,EAAK,OAAO,KAAK,IAAMmf,EAAMb,EAAS,MAAYre,EAAMqe,EAAS,OAAO,GAAG,CAACa,GAAO,CAAClf,EAAM,OAAO,KAAK,IAAMmf,EAAQtpB,EAAI,SAAS,GAASoK,EAAQpK,EAAI,SAAS,GAASupB,EAAIrf,EAAK,KAAKA,EAAK,MAAMof,GAASd,EAAS,KAAKa,EAAM,GAASG,EAAItf,EAAK,IAAIA,EAAK,OAAOE,GAASoe,EAAS,IAAIre,EAAM,GAASsf,EAAcvf,EAAK,IAAIA,EAAK,OAAOE,EAAQoe,EAAS,IAAU/M,EAAS,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,EAAEgO,EAActf,CAAK,CAAC,EAAMuf,EAAeC,EAAW,GAAG/b,GAAQ,qBAAsB,GAAYA,EAAO,MAAMA,EAAO,OAAOA,EAAO,MAAM,GAAGyb,EAAM,GAAYzb,EAAO,IAAIA,EAAO,SAASA,EAAO,MAAM,GAAGzD,MAAW,CAA+C,IAAMiD,EAAQO,GAAgBC,EAA9DA,GAAQ,UAAU,SAAS,GAAG,CAA8C,EAAE,EAAWR,EAAQ,MAAMic,EAAM,EAAWjc,EAAQ,OAAOjD,CAAM,CAAC,MAAM,CAAC,EAAEof,EAAIG,GAAY1pB,EAAI,SAAS,GAAG,EAAE,CAACwpB,EAAIG,GAAY3pB,EAAI,SAAS,GAAG,OAAOkK,EAAK,MAAMse,EAAS,MAAMte,EAAK,KAAKse,EAAS,KAAKa,GAAOnf,EAAK,OAAOse,EAAS,KAAKte,EAAK,IAAIse,EAAS,IAAIre,EAAM,UAAQ,CAAE,EAAQ0f,EAAei+B,EAAoB7vD,CAAE,EAAE,GAAG,CAAC4xB,EAAgB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAM,OAAO,GAAK,SAAS,CAAC,EAAG,IAAMC,EAAYg+B,EAAoB7+B,CAAM,EAAQc,EAAaF,EAAe,OAAaG,EAAQH,EAAe,EAAQI,EAAQJ,EAAe,EAAmV,GAA9U7pB,EAAI,oBAA6U+oB,GAAcH,GAAW,CAACkB,EAAqO,MAAxN,GAAO,wBAAwB,GAAG,EAAO,2BAA2B,EAAE,EAAO,mBAAmBE,EAAQ,EAAO,mBAAmBC,EAAQ,EAAO,wBAAwBD,EAAQ,EAAO,wBAAwBC,EAAc,CAAC,EAAED,EAAQ,EAAEC,EAAQ,OAAO,GAAK,OAAOF,EAAa,SAASF,EAAe,QAAQ,EAAG,IAAMK,EAAkB,CAAC,CAACrG,EAAO,0BAA0BsF,EAAgxB,GAA3vBA,IAAoBJ,GAAcmB,KAAqBrG,EAAO,qBAAqB,IAAA,IAAWA,EAAO,qBAAqB,IAAA,IAAWiG,IAAc,EAAO,mCAAmClB,GAAW,GAAG,EAAO,wBAAwBO,EAAkB,EAAO,2BAA2BtF,EAAO,oBAAoBiG,GAAa,GAAGE,EAAQ,EAAO,2BAA2BnG,EAAO,oBAAoBiG,GAAa,GAAGG,EAAQ,EAAO,yBAAyBD,EAAQ,EAAO,yBAAyBC,EAAQ,EAAO,2BAA2Bhd,EAAI,EAAO,8BAA8B,KAAK,IAAI,IAAI,KAAKjN,EAAI,cAAc,GAAG,GAAG,GAAYmpB,EAA+F,EAAO,wBAAwB,IAA3G,EAAO,wBAAwB,GAAG,EAAO,2BAA2B,GAAgD,CAACA,GAAmBJ,GAAcH,EAA6J,MAAlJ,GAAO,mBAAmBoB,EAAQ,EAAO,mBAAmBC,EAAQ,EAAO,wBAAwBD,EAAQ,EAAO,wBAAwBC,EAAc,CAAC,EAAED,EAAQ,EAAEC,EAAQ,OAAO,GAAK,OAAOF,EAAa,SAASF,EAAe,QAAQ,EAAG,GAAGV,GAAmBtF,EAAO,2BAA2B,EAAE,CAAC,EAAO,yBAAyBmG,EAAQ,EAAO,yBAAyBC,EAAQ,IAAME,EAAS,KAAK,IAAI,EAAEtG,EAAO,+BAA+B,GAAG,EAAQxL,EAAE,KAAK,IAAI,GAAGpL,EAAI4W,EAAO,4BAA4BsG,CAAQ,EAAQC,EAAM,GAAW,EAAE/R,IAAE,EAAymB,MAAtmB,GAAO,oBAAoBwL,EAAO,4BAA4BmG,KAAWnG,EAAO,0BAA0BmG,IAAUnG,EAAO,4BAA4BmG,IAAUI,EAAM,EAAO,oBAAoBvG,EAAO,4BAA4BoG,KAAWpG,EAAO,0BAA0BoG,IAAUpG,EAAO,4BAA4BoG,IAAUG,EAAM,EAAO,wBAAwBvG,EAAO,mBAAmB,EAAO,wBAAwBA,EAAO,mBAAsBxL,GAAG,IAAG,EAAO,2BAA2B,EAAE,EAAO,2BAA2BwL,EAAO,mBAAmB,EAAO,2BAA2BA,EAAO,oBAA0B,CAAC,EAAEA,EAAO,mBAAmB,EAAEA,EAAO,mBAAmB,OAAO,GAAK,OAAOkG,EAAa,SAASF,EAAe,QAAQ,CAAE,CAAC,IAAMQ,EAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAErqB,EAAI,cAAc,CAAC,CAAC,EAAQsqB,EAAMzG,EAAO,oBAAoBmG,EAAcO,EAAM1G,EAAO,oBAAoBoG,EAAwO,MAAhO,GAAO,mBAAmBK,GAAON,EAAQM,GAAOD,EAAO,EAAO,mBAAmBE,GAAON,EAAQM,GAAOF,EAAO,EAAO,wBAAwBxG,EAAO,mBAAmB,EAAO,wBAAwBA,EAAO,mBAAyB,CAAC,EAAEA,EAAO,mBAAmB,EAAEA,EAAO,mBAAmB,OAAO,GAAK,OAAOkG,EAAa,SAASF,EAAe,QAAQ,CAAE,CAAC,SAASk+B,GAAwB,EAAO,EAAI,EAAS,EAAgB,EAAI,CAAC,GAAG,CAAC/nD,EAAI,kBAAkB,CAACA,EAAI,gBAAuBvJ,IAAS,OAAwE,MAA3D,GAAO,iBAAiB,KAAK,EAAO,oBAAoB,GAAS,CAAC,OAAO,GAAM,OAAO,GAAK,SAAS,CAAC,EAAG,IAAMqT,EAAM9J,EAAI,gBAAkB6jB,EAAO,sBAAsB/Z,GAAO,CAAC+Z,EAAO,kBAAkB,CAACA,EAAO,iBAAiB,aAAa,CAACsjC,GAAiCtjC,EAAO,iBAAiB5Z,CAAQ,GAAGgD,IAAM4W,EAAO,wBAAwB,MAAI,EAAO,oBAAoB/Z,EAAM,EAAO,iBAAiBw9C,GAA2Bx9C,EAAMG,CAAQ,EAAE,EAAO,uBAAuBgD,EAAI,KAAK,IAAMhV,EAAG4rB,EAAO,iBAAiB,GAAG,CAAC5rB,EAAI,MAAM,CAAC,OAAO,GAAM,OAAO,GAAM,SAAS,CAAC,EAAG,IAAMuwB,EAASg/B,GAA6B3jC,EAAO5Z,EAASwtB,EAAgBxqB,CAAG,EAAQ/C,EAAKu9C,GAAyB5jC,EAAO5rB,EAAGuwB,CAAQ,EAAE,GAAG,CAACte,EAAM,MAAM,CAAC,OAAO,GAAM,OAAO,GAAK,SAAS,CAAC,EAAG,IAAMmf,EAAMb,EAAS,MAAYre,EAAMqe,EAAS,OAAO,GAAG,CAACa,GAAO,CAAClf,EAAO,MAAM,CAAC,OAAO,GAAM,OAAO,GAAK,SAAS,CAAC,EAAG,IAAMC,EAAQpK,EAAI,SAAS,GAASypB,EAAcvf,EAAK,IAAIA,EAAK,OAAOE,EAAQoe,EAAS,IAAU/M,EAAS,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,EAAEgO,EAActf,CAAK,CAAC,EAA8H,MAAM,CAAC,OAAO,GAAK,OAAlID,EAAK,MAAMse,EAAS,MAAMte,EAAK,KAAKse,EAAS,KAAKa,GAAOnf,EAAK,OAAOse,EAAS,KAAKte,EAAK,IAAIse,EAAS,IAAIre,EAAgC,UAAQ,CAAE,CAAC,SAAS69C,EAAsB,EAAO,EAAM,EAAK,EAAK,EAAO,EAAW,KAAK,CAAC,IAAMhoD,EAAIm0B,GAAYuzB,GAAoBpqD,EAAM4M,GAAM,OAAO,CAAC,EAAQ+C,EAAI,OAAO,YAAc,IAAY,YAAY,IAAI,EAAE,KAAK,IAAI,EAAQm6C,EAASrE,GAAM,SAAS,KAAWtrB,EAAgBsrB,GAAM,iBAAiB,KAAWkF,EAAaJ,EAAqBhkC,EAAO7jB,EAAIonD,EAAS3vB,EAAgB7pB,EAAOX,CAAG,EAAQi7C,EAAgBH,GAAwBlkC,EAAO7jB,EAAIonD,EAAS3vB,EAAgBxqB,CAAG,EAAE,MAAM,CAAC,QAAQg7C,EAAa,EAAE,QAAQA,EAAa,EAAE,aAAaA,EAAa,OAAO,aAAaA,EAAa,OAAO,eAAeA,EAAa,SAAS,SAASC,EAAgB,SAAS,gBAAgBA,EAAgB,OAAO,gBAAgBA,EAAgB,OAAO,aAAaloD,EAAI,YAAY,CAAE,CAAoF,SAASmoD,GAA0B,EAAM,EAAU,EAAE,CAAC,IAAMnoD,EAAIk0B,GAA4B52B,EAAM,CAAC,YAAU,KAAK,MAAM,CAAC,EAAQ8qD,EAAY9qD,GAAO,0BAAyE,OAA5C8qD,EAAmB,CAAC,GAAGpoD,EAAI,GAAGooD,CAAW,EAAUpoD,CAAI,CAAC,SAASqoD,GAAgC,EAAM,CAAC,EAAE,CAAC,OAAOj3B,GAAO,CAAC,EAAA,CAAG,IAAI,GAAW9wB,GAAwBsvB,GAAkCtvB,CAAI,CAAG,CAAE,CAAC,SAASgoD,GAA0B,EAAM,EAAW,KAAK,CAAC,IAAMC,EAASjrD,GAAO,QAAQ,CAAC,EAA4H,GAA9FirD,EAAS,KAAK,GAAMjoD,GAAM,mBAAmBA,GAAM,kBAAkBA,GAAM,iBAA0C,EAAG,OAAO+nD,GAAgCE,CAAQ,EAAG,IAAMC,EAAar0B,GAAY,eAAe72B,GAAO,2BAA2B,cAAoG,OAA/C+qD,GAApC,MAAM,QAAQG,CAAY,EAA0CA,EAAsDD,CAA1C,CAAoD,CAAC,SAASE,EAA2B,EAAO,CAAC,GAAG,CAAC14C,GAAQA,EAAO,UAAU,qBAAqB,OAAO,IAAM24C,EAAa34C,EAAO,UAAU,QAAQ,EAAQ44C,EAAa54C,EAAO,UAAU,QAAQ,EAAQ4b,EAAU5b,EAAO,OAAO,QAAQ,EAAEA,EAAO,UAAU,MAAM,EAAE,EAAE,CAAC,EAAEA,EAAO,UAAU,MAAM,EAAE,EAAE,CAAC,EAAEA,EAAO,OAAO,YAAY,CAAC,EAAEA,EAAO,oBAAoB,EAAI,EAAE5K,GAAS,KAAK+L,GAA4BnB,CAAM,CAAC,EAAE,IAAMqU,EAAOjf,GAAS,UAAUH,EAAS,EAAQ6B,EAAK1B,GAAS,QAAQF,EAAS,EAAE,EAAO,SAAS8K,EAAO,UAAU,CAAC,EAAE,EAAO,SAAS,iBAAiBqU,EAAO,EAAE,EAAO,SAAS,iBAAiBA,EAAO,EAAE,EAAO,SAAS,iBAAiBA,EAAO,EAAE,EAAO,SAAS,cAAcjf,GAAS,IAAI,EAAE,EAAO,SAAS,eAAe0B,EAAK,EAAE,EAAO,SAAS,eAAeA,EAAK,EAAE,EAAO,SAAS,eAAeA,EAAK,EAAE,EAAO,SAAS,qBAAqB,GAAQ6hD,GAAa34C,EAAO,SAAS,KAAK24C,CAAY,EAAKC,GAAa54C,EAAO,SAAS,KAAK44C,CAAY,EAAKh9B,GAAU5b,EAAO,MAAM,KAAK4b,CAAS,EAAE5b,EAAO,oBAAoB,EAAI,CAAE,CAAC,SAAS64C,EAA0B,EAAO,EAAM,EAAK,EAAM,EAAO,CAAC,GAAG,CAAC/kC,GAAQ,CAACA,EAAO,MAAM,OAAUA,EAAO,iBAAgBA,EAAO,MAAM,OAAOA,EAAO,cAAc,EAAEA,EAAO,eAAe,SAAS,QAAQ,EAAEA,EAAO,eAAe,SAAS,QAAQ,GAAG,IAAM9G,EAAS,IAAIrpB,EAA2BooB,EAAU,IAAI,aAAa1F,EAAM,CAAC,EAAQq0B,EAAW,IAAI,aAAar0B,EAAM,CAAC,EAAE,IAAI,IAAIjJ,EAAE,EAAEA,EAAEiJ,EAAM,IAAI,CAAC,IAAMs0B,EAAGv9B,EAAE,EAAQw9B,EAAEtlB,EAAO,KAAK,OAAO,EAAQulB,EAAM,KAAK,OAAO,EAAE,KAAK,GAAG,EAAQC,EAAI,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,EAAUH,GAAIC,EAAE,KAAK,IAAIE,CAAG,EAAE,KAAK,IAAID,CAAK,EAAE,EAAUF,EAAG,GAAGC,EAAE,KAAK,IAAIE,CAAG,EAAE,KAAK,IAAID,CAAK,EAAE,EAAUF,EAAG,GAAGC,EAAE,KAAK,IAAIE,CAAG,EAAE,EAAWH,IAAK,KAAK,OAAO,EAAE,IAAI,IAAI,EAAWA,EAAG,IAAI,KAAK,OAAO,EAAE,IAAI,IAAI,EAAWA,EAAG,IAAI,KAAK,OAAO,EAAE,IAAI,GAAI,CAAC3tB,EAAS,aAAa,WAAW,IAAIppB,GAAsBmoB,EAAU,CAAC,CAAC,EAAEiB,EAAS,aAAa,WAAW,IAAIppB,GAAsB82C,EAAW,CAAC,CAAC,EAAE,IAAMztB,EAAS,IAAIppB,GAAqB,CAAM,OAAK,MAAM,IAAIH,GAAYorB,CAAK,EAAE,YAAY,GAAK,QAAQ,GAAG,SAAS,EAAuB,WAAW,EAAK,CAAC,EAAE,EAAO,eAAe,IAAIhrB,GAAakpB,EAASC,CAAQ,EAAE6G,EAAO,MAAM,IAAIA,EAAO,cAAc,CAAE,CAAC,SAASglC,GAAqB,EAAO,EAAM,EAAO,CAAC,GAAG,CAAChlC,GAAQ,eAAe,OAAO,IAAM/H,EAAU+H,EAAO,eAAe,SAAS,WAAW,SAAS,MAAY4mB,EAAW5mB,EAAO,eAAe,SAAS,WAAW,SAAS,MAAYzN,EAAM0F,EAAU,OAAO,EAAE,IAAI,IAAI3O,EAAE,EAAEA,EAAEiJ,EAAM,IAAI,CAAC,IAAMs0B,EAAGv9B,EAAE,EAA+N,GAA7N,EAAUu9B,IAAKD,EAAWC,GAAIzoC,EAAM,EAAUyoC,EAAG,IAAID,EAAWC,EAAG,GAAGzoC,EAAM,EAAUyoC,EAAG,IAAID,EAAWC,EAAG,GAAGzoC,EAAmB6Z,EAAU4uB,GAAI5uB,EAAU4uB,GAAI5uB,EAAU4uB,EAAG,GAAG5uB,EAAU4uB,EAAG,GAAG5uB,EAAU4uB,EAAG,GAAG5uB,EAAU4uB,EAAG,GAAarlB,EAAOA,EAAO,CAAC,IAAMslB,EAAEtlB,EAAO,KAAK,OAAO,EAAE,GAASulB,EAAM,KAAK,OAAO,EAAE,KAAK,GAAG,EAAQC,EAAI,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,EAAUH,GAAIC,EAAE,KAAK,IAAIE,CAAG,EAAE,KAAK,IAAID,CAAK,EAAE,EAAUF,EAAG,GAAGC,EAAE,KAAK,IAAIE,CAAG,EAAE,KAAK,IAAID,CAAK,EAAE,EAAUF,EAAG,GAAGC,EAAE,KAAK,IAAIE,CAAG,CAAE,CAAC,CAAC,EAAO,eAAe,SAAS,WAAW,SAAS,YAAY,EAAK,CAAC,SAASie,GAA0B,EAAO,EAAS,CAAC,GAAIjlC,GAAQ,GAAO,yBAAgC,CAAwI,GAAxI,EAAO,UAAU7a,EAAS,EAAO,aAAa6a,EAAO,cAAcA,EAAO,QAAQ,EAAO,kBAAkBA,EAAO,mBAAmB,CAAC,EAAK,CAACA,EAAO,OAAO,CAAC,IAAMknB,EAAO,IAAI33C,GAAW,IAAIF,EAAoB,GAAG,EAAE,EAAE,IAAIY,GAAqB,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAO,SAAS,EAAE,CAAC,KAAK,GAAG,EAAE,EAAO,cAAc,GAAK,EAAO,QAAQ,GAAM,EAAO,OAAOi3C,EAAOlnB,EAAO,OAAO,MAAMknB,CAAM,CAAE,CAAC,EAAO,yBAAyB,EAA5Y,CAAiZ,CAAC,SAASge,GAAiB,EAAI,CAAC,OAAO15C,GAAoBrP,CAAG,CAAE,CAAC,SAASgpD,GAA2B,EAAO,CAAKnlC,IAAcA,EAAO,eAAe,UAAU,EAAEA,EAAO,YAAY,UAAU,EAAKA,EAAO,eAAeA,EAAO,eAAe,UAAU,EAAOA,EAAO,cAAc,UAAU,EAAEA,EAAO,eAAe,UAAU,EAAEA,EAAO,cAAc,UAAU,EAAEA,EAAO,gBAAgB,UAAU,EAAEA,EAAO,uBAAuB,UAAU,UAAU,EAAEA,EAAO,mBAAmB,UAAU,UAAU,EAAEA,EAAO,oBAAoB,UAAU,UAAU,EAAEA,EAAO,oBAAoB,UAAU,UAAU,EAAEA,EAAO,oBAAoB,UAAU,EAAEA,EAAO,iBAAiB,UAAU,EAAEA,EAAO,eAAe,UAAU,UAAU,EAAEA,EAAO,uBAAuB,UAAU,UAAU,EAAE,EAAO,cAAc,KAAK,EAAO,WAAW,KAAK,EAAO,aAAa,KAAK,EAAO,gBAAgB,KAAK,EAAO,cAAc,KAAK,EAAO,aAAa,KAAK,EAAO,eAAe,KAAK,EAAO,sBAAsB,KAAK,EAAO,kBAAkB,KAAK,EAAO,mBAAmB,KAAK,EAAO,mBAAmB,KAAK,EAAO,mBAAmB,KAAK,EAAO,gBAAgB,KAAK,EAAO,cAAc,KAAK,EAAO,eAAe,KAAK,EAAO,sBAAsB,KAAK,EAAO,OAAO,KAAK,EAAO,MAAM,KAAK,EAAO,KAAK,KAAK,EAAO,cAAc,KAAK,EAAO,UAAU,KAAK,EAAO,qBAAqB,KAAK,EAAO,WAAW,KAAK,EAAO,WAAW,KAAK,EAAO,MAAM,KAAK,EAAO,WAAW,KAAK,EAAO,cAAc,KAAK,EAAO,mBAAmB,EAAE,EAAO,oBAAoB,EAAE,EAAO,iBAAiB,EAAE,EAAO,qBAAqB,GAAG,EAAO,gBAAgB,GAAG,CAAC,SAASolC,GAA0B,EAAO,EAAS,EAAM,EAAO,EAAI,CAAC,GAAG,CAACplC,GAAQ,CAAC7a,GAAU,CAAChJ,GAAK,CAAC+oD,GAAiB/oD,CAAG,EAAsC,OAAnCgpD,GAA2BnlC,CAAM,EAAS,GAAO,GAAG,CAACs+B,EAAkD,OAAjCE,EAA+B,EAAS,GAAO,GAAK,CAAC,iBAAe,aAAW,kBAAgB,aAAW,WAAS,YAAU,aAAW,cAAYF,EAAsBt5C,EAAE,KAAK,IAAI,EAAE,KAAK,MAAMnC,GAAO,CAAC,CAAC,EAAQxG,EAAE,KAAK,IAAI,EAAE,KAAK,MAAMyG,GAAQ,CAAC,CAAC,EAAQsI,EAAI,KAAK,IAAI,GAAGjG,EAAS,gBAAgB,GAAG,CAAC,EAAQkgD,EAAQ,KAAK,IAAI,EAAE,KAAK,MAAMrgD,EAAEoG,CAAG,CAAC,EAAQk6C,EAAQ,KAAK,IAAI,EAAE,KAAK,MAAMjpD,EAAE+O,CAAG,CAAC,EAAQm6C,EAAY95C,GAAyBtP,CAAG,EAAE,GAAG,CAAC6jB,EAAO,eAAeA,EAAO,wBAAwB7a,GAAU6a,EAAO,uBAAuBulC,EAAY,CAACJ,GAA2BnlC,CAAM,EAAE,IAAMsnB,EAAM,IAAIp3C,GAAwBm1D,EAAQC,EAAQ,CAAC,KAAKn1D,GAAoB,OAAOC,GAAiB,UAAUC,EAAmB,UAAUA,EAAmB,WAAWjB,EAAoB,CAAC,EAAQi4C,EAAS,IAAIuB,EAAezjC,EAASmiC,CAAK,EAAED,EAAS,cAAcj8B,CAAG,EAAEi8B,EAAS,QAAQriC,EAAE3I,CAAC,EAAE,IAAIkrC,EAAW,IAAIsB,EAAW7oB,EAAO,MAAMA,EAAO,MAAM,EAAE,EAAW,MAAM,GAAK,EAAW,WAAW,GAAKqnB,EAAS,QAAQE,CAAU,EAAE,IAAIie,EAAc,KAAShe,EAAS,KAAQrrC,EAAI,aAAY,EAAS,IAAI2sC,EAAS9oB,EAAO,MAAMA,EAAO,OAAOqlC,EAAQC,CAAO,EAAE,EAAS,OAAOxc,EAAS,OAAO,QAAQzB,EAAS,QAAQG,CAAQ,GAAG,IAAM97B,EAAQvP,EAAI,WAAWA,EAAI,aAAa,eAAqBmI,GAAcnI,EAAI,cAAcuP,IAAUvP,EAAI,sBAA0BurC,EAAQ,KAASC,EAAU,KAAQrjC,IAAc,EAAQ,IAAIpU,GAAwBm1D,EAAQC,EAAQ,CAAC,KAAKn1D,GAAoB,OAAOC,GAAiB,UAAUC,EAAmB,UAAUA,CAAkB,CAAC,EAAE,EAAU,IAAIwU,GAAc6iC,CAAO,EAAEL,EAAS,QAAQM,CAAS,GAAG,IAAI8d,EAAQ,KAAQ/5C,IAAS,EAAQ,IAAIq9B,EAAU/oB,EAAO,MAAMA,EAAO,OAAO,CAAC,MAAM7jB,EAAI,SAAS,SAASA,EAAI,YAAY,QAAQA,EAAI,UAAU,CAAC,EAAEkrC,EAAS,QAAQoe,CAAO,GAAG,IAAIC,EAAU,KAAQvpD,EAAI,eAAc,EAAU,IAAI6sC,EAAgB,IAAI14C,GAAc+0D,EAAQC,CAAO,EAAEnpD,EAAI,cAAcA,EAAI,YAAYA,EAAI,cAAc,EAAEkrC,EAAS,QAAQqe,CAAS,GAAG,IAAIC,EAAiB,KAAQxpD,EAAI,qBAAoB,EAAiB,IAAIuG,EAAWoC,EAAkB,EAAEuiC,EAAS,QAAQse,CAAgB,GAAG,IAAIC,GAAa,KAAQzpD,EAAI,iBAAgB,GAAa,IAAIuG,EAAW+B,EAAc,EAAE4iC,EAAS,QAAQue,EAAY,GAAG,IAAIC,GAAc,KAAQ1pD,EAAI,4BAA2B,GAAc,IAAIuG,EAAWgC,EAAyB,EAAE2iC,EAAS,QAAQwe,EAAa,GAAG,IAAIC,EAAc,KAAQ3pD,EAAI,kBAAiB,EAAc,IAAIuG,EAAWiC,EAAe,EAAE0iC,EAAS,QAAQye,CAAa,GAAG,IAAIC,EAAiB,KAAQzhD,IAAc,EAAiB,IAAI5B,EAAWkC,EAAkB,EAAE,EAAiB,SAAS,OAAO,MAAM8iC,EAAQ,QAAQL,EAAS,QAAQ0e,CAAgB,GAAG,IAAIle,EAAW,KAAQ1rC,EAAI,iBAEzt2B,EAAW,IAAI8sC,EAAW5B,EAAS,QAAQQ,CAAU,GAAG,IAAIme,EAAS,KAAQ7pD,EAAI,aAAY,EAAS,IAAIuG,EAAWwmC,CAAU,EAAE7B,EAAS,QAAQ2e,CAAQ,GAAM7pD,EAAI,iBAAgB,EAAcqG,GAA6BE,CAAU,EAAE8iD,EAAc,gBAAgBp6C,CAAG,EAAEo6C,EAAc,UAAUH,EAAQC,CAAO,EAAEE,EAAc,wBAAwBrpD,CAAG,EAAEkrC,EAAS,QAAQme,CAAa,GAAG,EAAO,cAAcne,EAAS,EAAO,sBAAsBliC,EAAS,EAAO,qBAAqBogD,EAAY,EAAO,WAAWje,EAAM,EAAO,aAAaI,EAAQ,EAAO,gBAAgBH,EAAW,EAAO,mBAAmBie,EAAc,EAAO,cAAche,EAAS,EAAO,eAAeG,EAAU,EAAO,aAAa8d,EAAQ,EAAO,eAAeC,EAAU,EAAO,sBAAsBC,EAAiB,EAAO,kBAAkBC,GAAa,EAAO,mBAAmBC,GAAc,EAAO,mBAAmBC,EAAc,EAAO,gBAAgBje,EAAW,EAAO,cAAcme,EAAS,EAAO,sBAAsBD,EAAiB,EAAO,OAAOL,EAAU,EAAO,MAAMle,EAAS,EAAO,KAAKie,EAAQ,EAAO,cAAcE,EAAiB,EAAO,UAAUC,GAAa,EAAO,qBAAqBC,GAAc,EAAO,WAAWC,EAAc,EAAO,WAAWN,EAAc,EAAO,YAAY3d,EAAW,EAAO,MAAMme,EAAS,EAAO,WAAWre,EAAU,EAAO,cAAcoe,EAAiB,EAAO,gBAAgB,EAAG,CAAy7C,OAAr7C/lC,EAAO,kBAAiB,EAAO,gBAAgB,MAAMA,EAAO,MAAM,EAAO,gBAAgB,OAAOA,EAAO,QAAWA,EAAO,qBAAoB,EAAO,mBAAmB,MAAMA,EAAO,MAAM,EAAO,mBAAmB,OAAOA,EAAO,QAAWA,EAAO,gBAAe,EAAO,cAAc,MAAMA,EAAO,MAAM,EAAO,cAAc,OAAOA,EAAO,QAAWA,EAAO,eAAc,EAAO,aAAa,MAAMA,EAAO,MAAM,EAAO,aAAa,OAAOA,EAAO,SAAWA,EAAO,qBAAqBhb,GAAGgb,EAAO,sBAAsB3jB,GAAG,KAAK,KAAK2jB,EAAO,kBAAkB,GAAG5U,CAAG,EAAE,OAAK,EAAO,mBAAmBpG,EAAE,EAAO,oBAAoB3I,EAAE,EAAO,iBAAiB+O,EAAI4U,EAAO,eAAe,gBAAgB5U,CAAG,EAAE4U,EAAO,eAAe,UAAUhb,EAAE3I,CAAC,EAAE2jB,EAAO,YAAY,UAAUqlC,EAAQC,CAAO,EAAEtlC,EAAO,cAAc,UAAUqlC,EAAQC,CAAO,EAAEtlC,EAAO,gBAAgB,UAAUqlC,EAAQC,CAAO,EAAEtlC,EAAO,eAAe,UAAUqlC,EAAQC,CAAO,EAAEtlC,EAAO,gBAAgB,YAAY,MAAMqlC,EAAQC,CAAO,EAAEtlC,EAAO,oBAAoB,gBAAgB5U,CAAG,EAAE4U,EAAO,oBAAoB,UAAUqlC,EAAQC,CAAO,EAAEtlC,EAAO,eAAe,UAAU,YAAY,OAAO,MAAM,EAAEqlC,EAAQ,EAAEC,CAAO,EAAEtlC,EAAO,oBAAoB,UAAU,YAAY,OAAO,MAAMqlC,EAAQC,CAAO,GAAMtlC,EAAO,uBAAuBA,EAAO,eAAc,EAAO,sBAAsB,SAAS,OAAO,MAAMA,EAAO,aAAa,SAASxc,GAAoBwc,EAAO7jB,CAAG,EAAE,EAAO,gBAAgBA,EAAI,cAAcI,GAAYJ,CAAG,EAAS,EAAK,CAAC,SAAS8pD,GAAsB,EAAO,EAAO,CAAC,IAAMC,EAAQ,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEvsC,CAAM,CAAC,EAAQwsC,EAAS,GAAK,CAAK7jD,GAAWA,EAAI,WAAW,GAAO,CAAC,GAAG,CAAC6J,EAAM,OAAO,OAAO,IAAMiF,EAAK,MAAM,QAAQjF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAM2G,KAAO1B,EAAU0B,IAAgBA,EAAI,gBAAgB,IAAA,KAAW,EAAI,cAAcA,EAAI,SAAS,EAAE,EAAI,mBAAmBA,EAAI,aAAa,IAAO,EAAI,SAASA,EAAI,eAAe,GAAGozC,EAAQ,EAAI,YAAYpzC,EAAI,QAAQ,KAAK,EAAI,YAAY,GAAM,CAAC,CAAE,EAAEqzC,EAASnmC,EAAO,KAAK,EAAE,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,WAAW,CAAC,EAAGmmC,EAAS3vC,GAAO,KAAK,CAAG,CAAC,SAAS4vC,GAAuB,EAAO,CAAC,IAAMC,EAAW,GAAK,CAAK/jD,GAAWA,EAAI,WAAW,GAAO,CAAC,GAAG,CAAC6J,EAAM,OAAO,OAAO,IAAMiF,EAAK,MAAM,QAAQjF,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAE,IAAI,IAAM2G,KAAO1B,EAAU0B,GAAKA,EAAI,gBAAgB,IAAA,KAAmB,EAAI,QAAQA,EAAI,cAAc,EAAI,YAAYA,EAAI,oBAAoBA,EAAI,QAAQ,KAAK,EAAI,YAAY,GAAK,OAAOA,EAAI,cAAc,OAAOA,EAAI,mBAAoB,CAAC,CAAE,EAAEuzC,EAAWrmC,EAAO,KAAK,EAAE,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,WAAW,CAAC,EAAGqmC,EAAW7vC,GAAO,KAAK,CAAG,CAAC,SAAS8vC,GAA+B,EAAO,EAAI,EAAS,EAAG,EAAE,CAAC,GAAG,CAACtmC,GAAQ,CAAC7jB,GAAK,CAACgJ,EAAS,OAAO8/C,GAA0BjlC,EAAO7a,CAAQ,EAAE,IAAMsZ,EAAUtiB,EAAI,kBAAkBO,GAAgBP,CAAG,EAAQ4iB,EAAiB5iB,EAAI,eAAeD,GAAaC,CAAG,EAAQ6iB,EAAiB7iB,EAAI,eAAeC,GAAaD,CAAG,EAAQ8iB,EAAY9iB,EAAI,UAAUG,GAAQH,CAAG,EAAQ+iB,EAAgB/iB,EAAI,cAAcI,GAAYJ,CAAG,EAAQoqD,EAAgBxnC,IAAmBiB,EAAO,iBAAuBwmC,EAAWvnC,IAAce,EAAO,YAAkBymC,EAAgBznC,IAAmBgB,EAAO,iBAAuB0mC,EAAexnC,IAAkBc,EAAO,gBAAgB,GAAGumC,GAAiBC,EAAW,CAAmD,IAAnCrqD,EAAI,4BAA4B,KAAgB,KAC3pJ6jB,EAAO,mBAAmB,GAAG,GAAGomC,GAAuBpmC,CAAM,EAAG,EAAO,kBAAkB,EAAE,EAAO,oBAAoB,KAAK,EAAO,mBAAmB,KAAK,EAAO,kBAAkB,QAAY,IAAIA,EAAO,mBAAmB,KAAK,EACtO,EAAO,kBAAkB,IAAI,EAAO,oBAAoBvB,EAAU,EAAO,mBAAmB,CAAC,GAAGtiB,CAAG,EAAE,EAAO,kBAAkB,QAAY,GAAGsiB,IAAYuB,EAAO,oBAAoB,CACpL,GAAGA,EAAO,kBAAkB,GAAG,CAAC,GAAG,CAACA,EAAO,mBAAmBA,EAAO,mBAAmB,CAAComC,GAAuBpmC,CAAM,EAAE,IAAMo1B,EAAGp1B,EAAO,mBAAmB6/B,EAA4B7/B,EAAO,MAAMo1B,CAAE,EAAE,IAAI,GAAK,EAAE5+B,KAASwJ,EAAO,WAAW,CAAC,EAAMxJ,GAAO,oBAA+BA,GAAO,OAAMqpC,EAA4BrpC,EAAM,MAAM4+B,CAAE,EAAG,EAAO,iBAAiBA,EAAG,eAAel5C,GAAak5C,CAAE,EAAE53B,GAAwBwC,EAAOo1B,EAAGjwC,EAAS6a,EAAO,KAAK,EAAE,EAAO,YAAYo1B,EAAG,UAAU94C,GAAQ84C,CAAE,EAAE/6B,GAAqB2F,EAAOo1B,CAAE,EAAE,EAAO,iBAAiBA,EAAG,eAAeh5C,GAAag5C,CAAE,EAAKp1B,EAAO,eAAcxc,GAAoBwc,EAAOo1B,CAAE,EAAE,EAAO,gBAAgBA,EAAG,cAAc74C,GAAY64C,CAAE,CAAE,MAAM6Q,GAAsBjmC,EAAO,CAAC,EAAG,EAAO,kBAAkB,IAAI,EAAO,oBAAoBvB,EAAU,EAAO,mBAAmB,CAAC,GAAGtiB,CAAG,EAAE,EAAO,kBAAkB,EAAM,KAAM,GAAO,oBAAoBsiB,EAAU,EAAO,mBAAmB,CAAC,GAAGtiB,CAAG,EAAE,EAAO,kBAAkB,EAAO,CAAC,CAAC,IAAI6jB,EAAO,mBAAmB,KAAK,EAAE,CAC//B,GAAGumC,EAAgB,CAAC1G,EAA4B7/B,EAAO,MAAM7jB,CAAG,EAAE,IAAI,GAAK,EAAEqa,KAASwJ,EAAO,WAAW,CAAC,EAAMxJ,GAAO,oBAA+BA,GAAO,OAAMqpC,EAA4BrpC,EAAM,MAAMra,CAAG,EAAG,EAAO,iBAAiB4iB,CAAiB,CAAI0nC,IAAiBpsC,GAAqB2F,EAAO7jB,CAAG,EAAE,EAAO,iBAAiB6iB,GAAqBwnC,IAAYhpC,GAAwBwC,EAAO7jB,EAAIgJ,EAAS6a,EAAO,KAAK,EAAE,EAAO,YAAYf,GAAgBynC,IAAmB1mC,EAAO,eAAexc,GAAoBwc,EAAO7jB,CAAG,EAAG,EAAO,gBAAgB+iB,EAAiB,KAAK,CAC5f,IAAM+1B,EAAU,EAAjE,KAAK,IAAI,IAAI94C,EAAI,4BAA4B,EAA6B,EAAE,EAAO,mBAAmB9H,EAAG4gD,EAAU,IAAMC,EAAQ,IAAUC,EAAM,IAAU95C,EAAc,GAAGQ,EAAE,GAAG,EAAEA,EAAEA,EAAE,GAAW,GAAGA,EAAE,IAAE,EAAG,EAAE,GAAGmkB,EAAO,kBAAkBk1B,EAAoG+Q,GAAsBjmC,EAA3Dm1B,EAAO,KAAU,EAAE95C,EAAjE2kB,EAAO,kBAAkBk1B,CAAuD,EAAsC,MAAO,CAAC,GAAG,CAACl1B,EAAO,kBAAkB,CAAC,IAAMo1B,EAAGp1B,EAAO,oBAAoB7jB,EAAIiqD,GAAuBpmC,CAAM,EAAE6/B,EAA4B7/B,EAAO,MAAMo1B,CAAE,EAAE,IAAI,GAAK,EAAE5+B,KAASwJ,EAAO,WAAW,CAAC,EAAMxJ,GAAO,oBAA+BA,GAAO,OAAMqpC,EAA4BrpC,EAAM,MAAM4+B,CAAE,EAAG,EAAO,iBAAiBA,EAAG,eAAel5C,GAAak5C,CAAE,EAAE53B,GAAwBwC,EAAOo1B,EAAGjwC,EAAS6a,EAAO,KAAK,EAAE,EAAO,YAAYo1B,EAAG,UAAU94C,GAAQ84C,CAAE,EAAE/6B,GAAqB2F,EAAOo1B,CAAE,EAAE,EAAO,iBAAiBA,EAAG,eAAeh5C,GAAag5C,CAAE,EAAKp1B,EAAO,eAAcxc,GAAoBwc,EAAOo1B,CAAE,EAAE,EAAO,gBAAgBA,EAAG,cAAc74C,GAAY64C,CAAE,EAAE,EAAO,kBAAkB,GAAK6Q,GAAsBjmC,EAAOm1B,CAAK,CAAE,CAAIn1B,EAAO,mBAAmB,GAAGomC,GAAuBpmC,CAAM,EAAE,EAAO,kBAAkB,EAAE,EAAO,oBAAoB,KAAK,EAAO,mBAAmB,KAAK,EAAO,kBAAkB,IAAiHimC,GAAsBjmC,EAAvDm1B,EAAO,IAAS95C,GAA3E2kB,EAAO,kBAAkBk1B,GAAU,GAAuD,CAAqC,CAAG,CAAC,CAAC,EAAO,MAAM,qBAAqB/4C,EAAI,kBAAkBA,EAAI,qBAAqB,EAAK6jB,EAAO,MAAM,aAAa7jB,EAAI,2BAA2B,CAACA,EAAI,uBAAuBA,EAAI,kBAAkB,SAAQ,EAAO,MAAM,WAAW6jB,EAAO,MAAM,aAAa,IAAM2mC,EAAY,GAAGxqD,EAAI,gBAAgB,GAAGA,EAAI,cAAc,GAAGA,EAAI,aAAa,GAAGA,EAAI,cAAc,GAAGA,EAAI,iBAAoB6jB,EAAO,mBAAmB2mC,IAAa,EAAO,iBAAiBA,EAAexqD,EAAI,gBAAiB4oD,EAA0B/kC,EAAO7jB,EAAI,eAAe,IAAIA,EAAI,cAAc,GAAGA,EAAI,eAAe,UAAUA,EAAI,gBAAgB,EAAE,EAAQ,AAA6J6jB,EAAO,kBAA1IA,EAAO,MAAM,OAAOA,EAAO,cAAc,EAAEA,EAAO,eAAe,UAAU,UAAU,EAAEA,EAAO,eAAe,UAAU,UAAU,EAAwB,OAAO,EAAO,cAAcvB,CAAU,CAAC,SAASmoC,EAAyB,EAAO,CAAC,GAAG,CAACC,EAAO,OAAOA,EAAO,QAAQ,SAASA,CAAM,EAAEA,EAAO,UAAU,UAAU,EAAE,IAAM1tC,EAAS0tC,EAAO,SAAY,MAAM,QAAQ1tC,CAAQ,EAAGA,EAAS,QAAQ,GAAKrG,GAAK,UAAU,CAAC,EAAQqG,GAAU,UAAU,CAAG,CAAC,SAAS2tC,GAAuB,EAAO,EAAI,CAAC,GAAG,CAAC9mC,GAAQ,OAAO,CAAC7jB,EAAI,OAAO,IAAM4qD,EAAQ,CAAC,CAAC,CAAC5qD,EAAI,SAASA,EAAI,cAAc,GAAGA,EAAI,mBAAmB,GAAGA,EAAI,gBAAgB,yBAAyBA,EAAI,gBAAgB,uBAAuB,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG6jB,EAAO,qBAAqB+mC,IAASH,EAAyB5mC,EAAO,UAAU,EAAE,EAAO,WAAW,KAAK,EAAO,mBAAmB+mC,EAAW5qD,EAAI,UAAS,CAAC,IAAM6qD,EAAK,IAAIz2D,GAAiB4L,EAAI,cAAc,GAAGA,EAAI,mBAAmB,GAAGmL,EAAWnL,EAAI,gBAAgB,wBAAwB,EAAEmL,EAAWnL,EAAI,gBAAgB,uBAAuB,CAAC,EAAQgd,EAAS6tC,EAAK,SAAS,EAAS,YAAY,GAAK,EAAS,QAAQ,GAAG,EAAS,WAAW,GAAM,EAAK,YAAY,GAAGhnC,EAAO,MAAM,IAAIgnC,CAAI,EAAE,EAAO,WAAWA,CAAK,CAAE,IAAMC,EAAQ,CAAC,CAAC,CAAC9qD,EAAI,SAASA,EAAI,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG6jB,EAAO,qBAAqBinC,IAASL,EAAyB5mC,EAAO,UAAU,EAAE,EAAO,WAAW,KAAK,EAAO,mBAAmBinC,EAAW9qD,EAAI,UAAS,CAAC,IAAM+qD,EAAK,IAAI12D,GAAiB2L,EAAI,cAAc,CAAC,EAAE,EAAK,YAAY,IAAI,IAAMgd,EAAS+tC,EAAK,SAAY,MAAM,QAAQ/tC,CAAQ,EAAGA,EAAS,QAAQ,GAAK,CAAC,EAAI,UAAU,EAAM,CAAC,EAAWA,IAAU,EAAS,UAAU,IAAO6G,EAAO,MAAM,IAAIknC,CAAI,EAAE,EAAO,WAAWA,CAAK,CAAE,IAAMC,EAAa,CAAC,CAAC,CAAChrD,EAAI,cAAcA,EAAI,mBAAmB,EAAE6jB,EAAO,OAAO,MAAM,UAAU,CAAC,CAAC,KAAK,GAAG,EAAE,GAAGA,EAAO,0BAA0BmnC,IAAcP,EAAyB5mC,EAAO,eAAe,EAAE,EAAO,gBAAgB,KAAK,EAAO,wBAAwBmnC,EAAgBhrD,EAAI,eAAe6jB,EAAO,OAAM,CAAC,IAAMonC,EAAU,IAAI52D,GAAiB2L,EAAI,mBAAmB,CAAC,EAAE,EAAU,YAAY,IAAI,IAAMgd,EAASiuC,EAAU,SAAY,MAAM,QAAQjuC,CAAQ,EAAGA,EAAS,QAAQ,GAAK,CAAC,EAAI,UAAU,EAAM,CAAC,EAAWA,IAAU,EAAS,UAAU,IAAO6G,EAAO,MAAM,IAAIonC,CAAS,EAAE,EAAO,gBAAgBA,CAAU,CAAE,CAAC,SAASC,GAA0B,EAAO,EAAM,EAAU,EAAE,EAAI,KAAK,CAAC,IAAMr4B,EAAG7yB,EAAI,CAAC,MAAMA,EAAI,WAAW,KAAKA,EAAI,aAAa,KAAKA,EAAI,aAAa,KAAKA,EAAI,aAAa,KAAKA,EAAI,eAAe,KAAKA,EAAI,eAAe,KAAKA,EAAI,cAAc,EAAEinD,GAAgC3pD,GAAO,WAAW,CAAC,EAAEw1B,CAAS,EAAQloB,EAAO,CAAC,MAAMioB,EAAG,OAAO,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAK7yB,GAAK,iBAAiB,GAAG,KAAKA,GAAK,iBAAiB,EAAE,KAAKA,GAAK,iBAAiB,EAAE,EAAE,GAAG,CAACA,GAAK,sBAA+D,MAAxC,GAAO,2BAA2B,GAAa4K,EAAQ,IAAMyf,EAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAErqB,EAAI,iBAAiB,GAAG,CAAC,EAAE,GAAG6jB,EAAO,qBAAqBA,EAAO,cAAcA,EAAO,qBAAsB,OAAOA,EAAO,qBAAsB,GAAG,CAACA,EAAO,qBAA4G,MAAtF,GAAO,qBAAqB,CAAC,GAAGjZ,CAAM,EAAE,EAAO,mBAAmBiZ,EAAO,aAAoBA,EAAO,qBAAsB,IAAMqD,EAAKrD,EAAO,qBAAqB,GAAGwG,GAAQ,EAAiI,MAA9H,GAAO,qBAAqB,CAAC,GAAGzf,CAAM,EAAE,EAAO,mBAAmBiZ,EAAO,aAAa,EAAO,2BAA2B,GAAaA,EAAO,qBAAsB,IAAIsnC,EAAkB,GAAM,IAAI,IAAMjlD,KAAO,OAAO,KAAK0E,CAAM,EAAM,KAAK,IAAIA,EAAO1E,GAAKghB,EAAKhhB,EAAI,EAAE,OAAM,EAAkB,IAAM,EAAKA,KAAO0E,EAAO1E,GAAKghB,EAAKhhB,IAAMmkB,EAA0G,MAAlG,GAAO,2BAA2B8gC,EAAkB,EAAO,mBAAmBtnC,EAAO,aAAoBqD,CAAK,CAAC,SAASkkC,GAA0B,EAAO,EAAI,EAAU,EAAE,CAAC,GAAG,CAACvnC,GAAQ,QAAQ,CAAC7jB,GAAK,sBAAsB,OAAO,IAAMqrD,EAASH,GAA0BrnC,EAAOA,EAAO,sBAAsB,CAAC,EAAEiP,EAAU9yB,CAAG,EAAE6jB,EAAO,OAAO,SAAS,IAAIwnC,EAAS,KAAKA,EAAS,KAAKA,EAAS,IAAI,EAAExnC,EAAO,OAAO,yBAAyB,CAAE,CAAC,SAASynC,EAA8B,EAAO,CAAyB,OAApB/F,EAA2B,KAAK,IAAIA,EAAO,MAAM,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAO,MAAM,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAO,MAAM,CAAC,EAAE,MAAM,KAAK,KAAKA,EAAO,OAAO,GAAG,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAO,MAAM,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAO,MAAM,CAAC,EAAE,MAAM,KAAK,IAAIA,EAAO,MAAM,CAAC,EAAE,KAArO,EAA0O,CAAC,SAASgG,GAAyB,EAAO,CAAC,MAAM,CAAC,CAAChG,GAAQ,iBAAiB+F,EAA8B/F,CAAM,CAAE,CAAC,SAASiG,GAA2B,EAAO,EAAI,EAAM,GAAM,CAAK3nC,IAAS1B,GAAQniB,GAAK,iBAAkBsrD,EAA8BtrD,CAAG,KAAW,EAAO,iBAAiB,YAAY,IAAI,EAAE,EAAO,sBAAsB,EAAE,CAAC,SAASyrD,GAAgB,EAAO,EAAI,CAAC,IAAMC,EAASrrD,GAAiBL,GAAK,CAAC,CAAC,EAAQ2rD,EAAcJ,GAAyBvrD,CAAG,EAAQ4rD,EAAazgC,GAAoBnrB,CAAG,EAAE,GAAG,CAAC6jB,EAAO,gBAAiB,EAAO,gBAAgB,GAAK,EAAO,gBAAgB6nC,EAAS,EAAO,sBAAsB,IAAkB,EAAO,iBAAiBC,EAAc,YAAY,IAAI,EAAE,EAAE,EAAO,yBAAyB,OAAW,CAAC,AAAkG9nC,EAAO,4BAAlE+nC,GAAcJ,GAA2B3nC,EAAO7jB,EAAI,EAAI,EAAmC,IAAO,IAAMs4C,EAAsB,CAAC,CAACz0B,EAAO,gBAAmB6nC,IAAW7nC,EAAO,kBAAiB,EAAO,gBAAgB6nC,EAAYpT,GAAuBqT,GAAeC,GAAcJ,GAA2B3nC,EAAO7jB,EAAI,EAAI,EAAI,CAAC,IAAI8qB,EAAW,EAAE,GAAGjH,EAAO,iBAAiB,EAAE,CAAC,IAAM4S,GAAS,YAAY,IAAI,EAAE5S,EAAO,kBAAkB,IAAUsG,EAAS,KAAK,IAAI,KAAKnqB,GAAK,kBAAkB,GAAG,EAAKy2B,GAAStM,EAAU,EAAO,iBAAiB,EAAiC,EAAW,GAAW,EAAvCsM,EAAQtM,IAAmC,CAAI,CAA8I,MAA7I,GAAO,sBAAsBW,EAAW,EAAO,kBAAkB9qB,GAAK,WAAW,KAAK,IAAI,GAAGA,GAAK,qBAAqB,KAAK,EAAE8qB,EAAW,EAAE,EAASA,CAAW,CAAC,SAAS+gC,GAAgC,EAAO,CAAK97C,IAAc,EAAO,oBAAoB,EAAE,EAAO,oBAAoB,EAAE,EAAO,oBAAoB,EAAE,EAAO,uBAAuB,EAAE,EAAO,uBAAuB,EAAE,EAAO,uBAAuB,EAAE,EAAO,wBAAwB,EAAE,CAAC,SAAS+7C,GAAgC,EAAO,EAAW,EAAO,CAAC,GAAG,CAAC/7C,EAAO,OAAoE,IAAMsI,EAAE,EAA9C,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEyS,GAAY,CAAC,CAA4B,EAAQd,GAASu7B,EAAO,MAAM,GAAGltC,EAAQ4R,GAASs7B,EAAO,MAAM,GAAGltC,EAAQiT,GAASi6B,EAAO,MAAM,GAAGltC,EAAQkT,EAAY,IAAIg6B,EAAO,OAAO,GAAG,GAAGltC,EAAQmT,GAAY+5B,EAAO,MAAM,GAAG,KAAK,GAAG,IAAIltC,EAAQoT,GAAY85B,EAAO,MAAM,GAAG,KAAK,GAAG,IAAIltC,EAAQqT,GAAY65B,EAAO,MAAM,GAAG,KAAK,GAAG,IAAIltC,EAAQ0zC,EAAUh8C,EAAO,EAAO,SAAS,GAAGia,GAAS+hC,EAAU,qBAAqB,GAAG,EAAO,SAAS,GAAG9hC,GAAS8hC,EAAU,qBAAqB,GAAG,EAAO,SAAS,GAAGzgC,GAASygC,EAAU,qBAAqB,GAAG,EAAO,SAAS,GAAGvgC,GAAYugC,EAAU,wBAAwB,GAAG,EAAO,SAAS,GAAGtgC,GAAYsgC,EAAU,wBAAwB,GAAG,EAAO,SAAS,GAAGrgC,GAAYqgC,EAAU,wBAAwB,GAAG,IAAMpgC,EAAUogC,EAAU,yBAAyB,EAAKpgC,IAAY,GAAG5b,EAAO,MAAM,eAAewb,EAAYI,CAAS,EAAG,EAAU,oBAAoB3B,EAAQ,EAAU,oBAAoBC,EAAQ,EAAU,oBAAoBqB,EAAQ,EAAU,uBAAuBE,EAAW,EAAU,uBAAuBC,EAAW,EAAU,uBAAuBC,EAAW,EAAU,wBAAwBH,CAAY,CAAC,SAASygC,GAAwB,EAAO,EAAW,CAAC,GAAG,CAACj8C,EAAO,OAAO,IAAMk8C,EAAiB,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEnhC,GAAY,CAAC,CAAC,EAAE/a,EAAO,SAAS,GAAO,CAAKC,GAAO,QAASA,EAAM,WAAgC,MAAM,QAAQA,EAAM,QAAQ,EAAEA,EAAM,SAAS,CAACA,EAAM,QAAQ,EAAA,CAAY,QAAQ,GAAK,CAAC,GAAG,CAAC2G,EAAI,OAAO,EAAI,SAASA,EAAI,UAAU,CAAC,EAAKA,EAAI,SAAS,mBAAmB,IAAA,KAAW,EAAI,SAAS,iBAAiBA,EAAI,UAAU,eAAe,SAASA,EAAI,SAAS,GAAMA,EAAI,SAAS,uBAAuB,IAAA,KAAW,EAAI,SAAS,qBAAqBA,EAAI,UAAU,eAAe,aAAaA,EAAI,aAAa,IAAO,IAAMu1C,EAAYv1C,EAAI,UAAU,kBAAkBA,EAAI,SAAS,EAAQw1C,EAAgBx1C,EAAI,UAAU,sBAAsBA,EAAI,aAAa,GAAYy1C,EAAYF,EAAYD,EAAiB,EAAI,QAAQG,EAAY,EAAI,YAAYD,GAAiBC,EAAY,KAAK,EAAI,WAAWA,GAAa,KAAK,EAAI,YAAY,EAAK,CAAC,CAAE,CAAC,CAAE,CAAC,SAASC,GAA2B,EAAO,EAAO,EAAQ,CAAC,GAAG,CAACx2C,EAAO,OAAO,GAAG,CAAC+I,GAAS,CAACiF,EAAO,CAAC,EAAO,MAAM,QAAQ,IAAI,EAAO,MAAM,OAAO,GAAG,EAAO,MAAM,WAAW,YAAY,MAAO,CAAC,IAAMiH,EAAW,KAAK,IAAI,EAAE,KAAK,IAAI,GAAGjH,EAAO,uBAAuB,IAAIA,EAAO,iBAAiB,EAAE,CAAC,EAAQoH,EAAO,KAAK,IAAI,EAAEpH,EAAO,mBAAmB,CAAC,EAAE,EAAO,MAAM,QAAQiH,GAAY,KAAK,IAAIA,EAAW,QAAQ,CAAC,EAAE,EAAO,MAAM,OAAOG,EAAO,IAAI,QAAQA,EAAO,QAAQ,CAAC,EAAE,KAAK,GAAG,EAAO,MAAM,WAAWA,EAAO,KAAKH,EAAW,KAAK,6BAA6B,WAAY,CAAC,SAASwhC,GAAwB,EAAM,EAAM,EAAU,EAAE,EAAc,KAAK,EAAO,KAAK,EAAW,KAAK,CAAC,IAAMz5B,EAAGhP,EAAOqnC,GAA0BrnC,EAAOvmB,EAAMw1B,EAAUqB,CAAU,EAAE8yB,GAAgC3pD,GAAO,WAAW,CAAC,EAAEw1B,CAAS,EAAQxF,EAAMuF,EAAG,OAAO,EAAQY,EAAKZ,EAAG,MAAM,EAAQa,EAAKb,EAAG,MAAM,EAAQc,EAAKd,EAAG,MAAM,EAAQe,EAAKf,EAAG,MAAM,EAAQgB,EAAKhB,EAAG,MAAM,EAAQiB,EAAKjB,EAAG,MAAM,EAAQ05B,GAAWp2C,EAAM,UAAU,qBAAqB,IAAIA,EAAM,UAAU,eAAe,GAASq2C,EAAmBl/B,EAAYysB,EAAewS,EAAU,KAAK,IAAI,KAAKC,CAAkB,EAAE/D,EAA2BtyC,CAAK,EAAE,IAAMiO,EAAO,CAAC,GAAGjO,EAAM,UAAU,kBAAkB,GAAG4jC,EAAe,GAAG5jC,EAAM,UAAU,kBAAkB,GAAG4jC,EAAe,GAAG5jC,EAAM,UAAU,kBAAkB,GAAG4jC,CAAc,EAAQ0S,GAAat2C,EAAM,UAAU,eAAe,GAAG4jC,EAAe5jC,EAAM,MAAM,UAAU4jC,CAAc,EAAE5jC,EAAM,SAAS,IAAI,CAACiO,EAAO,EAAEqP,EAAK,CAACrP,EAAO,EAAEsP,EAAK,CAACtP,EAAO,EAAEuP,CAAI,EAAExd,EAAM,SAAS,IAAIyd,EAAK,KAAK,GAAG,IAAIC,EAAK,KAAK,GAAG,IAAIC,EAAK,KAAK,GAAG,GAAG,EAAE,EAAM,SAAS,iBAAiB24B,EAAY,EAAM,SAAS,mBAAmB,CAAC,MAAMD,EAAmB,OAAK,OAAK,OAAK,OAAK,OAAK,MAAI,EAAE,EAAM,SAAS,sBAAsBr2C,EAAM,SAAS,EAAEs2C,EAAY,KAAK9E,EAA2BxxC,EAAMyxC,CAAa,EAAE,EAAM,SAAS,sBAAsB,CAAC,MAAMzxC,EAAM,MAAM,EAAE,KAAK,IAAI,KAAKo2C,CAAS,EAAE,KAAKp2C,EAAM,SAAS,EAAEiO,EAAO,EAAE,KAAKjO,EAAM,SAAS,EAAEiO,EAAO,EAAE,KAAKjO,EAAM,SAAS,EAAEiO,EAAO,EAAE,KAAKjO,EAAM,SAAS,EAAE,IAAI,KAAK,GAAG,KAAKA,EAAM,SAAS,EAAE,IAAI,KAAK,GAAG,KAAKA,EAAM,SAAS,EAAE,IAAI,KAAK,EAAE,CAAE,CAAC,SAASu2C,GAAgB,EAAI,EAAO,CAA2C,IAA/B1sD,GAAK,YAAY,iBAAwB,eAAe,CAAC,IAAmC4N,EAAO,IAAItZ,GAAyB,GAAOsoB,EAAO,EAAMA,EAAO,EAAM,GAAO,IAAI,GAAG,EAAoL,MAAlL,GAAO,KAAK5c,GAAK,WAAW,EAAE4N,EAAO,SAAS,IAAI5N,GAAK,iBAAiB,GAAGA,GAAK,iBAAiB,EAAEA,GAAK,iBAAiB,EAAE,EAAE4N,EAAO,OAAO,EAAE,EAAE,CAAC,EAAEA,EAAO,uBAAuB,EAASA,CAAO,CAAC,IAAMA,EAAO,IAAIrZ,GAAwByL,GAAK,KAAK,GAAG4c,EAAO,IAAI,GAAG,EAAsJ,OAApJhP,EAAO,SAAS,IAAI5N,GAAK,iBAAiB,GAAGA,GAAK,iBAAiB,EAAEA,GAAK,iBAAiB,EAAE,EAAE4N,EAAO,OAAO,EAAE,EAAE,CAAC,EAAEA,EAAO,uBAAuB,EAASA,CAAO,CAAC,SAAS++C,GAAgB,EAAI,EAAO,CAAC,MAAM,CAAC3sD,GAAK,YAAY,cAAc,OAAO4c,GAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE5c,GAAK,iBAAiB,GAAGA,GAAK,iBAAiB,EAAEA,GAAK,iBAAiB,GAAGA,GAAK,WAAW,EAAEA,GAAK,KAAK,GAAGA,GAAK,cAAc,IAAI,CAAC,CAAC,KAAK,GAAG,CAAE,CAAC,SAAS4sD,GAAe,EAAO,EAAI,EAAO,CAAC,IAAMC,EAAKF,GAAgB3sD,EAAI4c,CAAM,EAAiR,OAA5Q,CAACiH,EAAO,QAAQA,EAAO,kBAAkBgpC,KAAM,EAAO,OAAOH,GAAgB1sD,EAAI4c,CAAM,EAAE,EAAO,gBAAgBiwC,GAAS7sD,GAAK,aAAa,WAAU,AAAwB6jB,EAAO,eAAa,IAAIrvB,GAAmB,EAAO,aAAa,OAAOwL,GAAK,cAAc,MAAa6jB,EAAO,MAAO,CAAC,SAASipC,GAAe,EAAI,EAAO,CAAC,IAAMxuC,EAAM,IAAI7pB,GAAkBs4D,EAAQ,IAAIr4D,GAAmB,SAASsL,GAAK,uBAAuB,EAAE,EAAQgtD,EAAI,IAAIr4D,EAAuB,SAASqL,GAAK,2BAA2B,GAAG,EAAEgtD,EAAI,MAAM,IAAIhtD,GAAK,uBAAuB,SAAS,EAAEgtD,EAAI,SAAS,IAAIhtD,GAAK,cAAc,EAAEA,GAAK,cAAc,GAAGA,GAAK,cAAc,CAAC,EAE/+b,IAAMqqC,EAAU,IAAI11C,EAAuB,SAAS,EAAE,EAAE01C,EAAU,SAAS,IAAI,GAAG,EAAE,EAAE,EAAE,IAAM4iB,EAAgB,IAAIr4D,GAAsB,SAAS,QAAQ,GAAG,EAAmD,OAAjD0pB,EAAM,IAAIyuC,EAAQC,EAAI3iB,EAAU4iB,CAAe,EAAQ,CAAC,QAAM,UAAQ,SAASD,EAAI,YAAU,kBAAgB,OAAON,GAAgB1sD,EAAI4c,CAAM,EAAE,MAAM,KAAK,UAAU,GAAG,WAAW,GAAG,MAAM,KAAK,WAAW,CAAC,EAAE,0BAAU,IAAI,IAAI,MAAM,IAAI/nB,GAAY,sCAAsB,IAAI,IAAI,uBAAuB,KAAK,oBAAoB,GAAG,yBAAyB,GAAG,yBAAyB,GAAG,gBAAgB,EAAE,CAAE,CAAC,SAASq4D,GAAmB,EAAO,CAAC,IAAMrP,EAAMh6B,GAAQ,MAA0C,OAAhCg6B,GAAeA,EAAM,SAAS,EAAS,KAAK,IAAI,IAAIA,EAAM,WAAW,GAAG,CAAC,GAA5D,CAA8D,CAAC,SAASsP,GAAc,EAAW,EAAS,CAAC,GAAG,CAACtsD,GAAY,OAAO,OAAO,KAAK,GAAG,CAACF,EAAS,OAAOE,EAAW,GAAG,IAAMusD,EAAO,OAAOzsD,CAAQ,CAAC,CAAC,YAAY,EAAE,OAAOE,EAAW,KAAK,GAAM,OAAOqC,EAAK,IAAI,CAAC,CAAC,YAAY,IAAIkqD,CAAM,GAAGvsD,EAAW,KAAK,GAAM,OAAOqC,EAAK,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,SAASkqD,CAAM,CAAC,GAAG,IAAK,CAAC,SAASC,GAA4B,EAAO,EAAS,CAAC,IAAMjqD,EAAK,OAAOrC,GAAU,QAAQ,CAAC,CAAC,YAAY,EAAKqC,IAAO,QAAQpC,EAAO,QAAQlM,GAAe,CAAC,EAAE,EAAO,kBAAkB,IAAcsO,IAAO,YAAYpC,EAAO,QAAQjM,GAAmB,GAAQ,EAAE,EAAO,kBAAkB,KAAYiM,EAAO,QAAQhM,GAAiB,GAAQ,EAAE,EAAO,kBAAkB,GAAO,CAAC,SAASs4D,GAAwB,EAAW,EAAW,CAAC,IAAM7qD,EAASC,GAAY,UAAU,EAAQC,EAASC,GAAY,UAAU,EAAMH,GAAU,UAAWE,GAAU,WAA6G,EAAW,MAAlFD,EAAW,KAAKD,EAAS,SAASA,EAAS,UAAUA,EAAS,SAAwCA,EAAS,SAASE,EAAS,SAAS,CAAC,IAAM4qD,GAAoB,IAAIt4D,EAAgB,GAAoB,aAAa,GAAK,IAAMu4D,GAAgB,IAAIr5D,GAAoBs5D,GAAwB,IAAIp6D,EAAoBq6D,GAAiB,IAAIr6D,EAAoBs6D,GAAoB,IAAIz4D,GAAsB04D,GAAsB,IAAIz4D,GAAkB04D,GAAqB,IAAIx6D,EAAoBy6D,GAAqB,IAAIz6D,EAAoB06D,GAAsB,IAAIt6D,GAAsC,IAAI2B,GAAW,SAAS44D,GAA0B,EAAO,CAAKnqC,IAAc,EAAO,uBAAuBA,EAAO,uBAAuB,GAAG,EAAE,CAAC,SAASoqC,GAA4B,EAAO,EAAK,EAAM,CAAC,GAAG,CAACpqC,GAAQ,CAAC3Z,EAAK,OAAO,IAAMxK,EAAEukB,GAAO,SAAelN,EAAEkN,GAAO,SAAwBA,GAAO,eAAe,OAAO,SAASvkB,CAAC,GAAG,OAAO,SAASqX,CAAC,GAAGrX,GAAGwK,EAAK,MAAMxK,GAAGwK,EAAK,OAAO6M,GAAG7M,EAAK,KAAK6M,GAAG7M,EAAK,QAAkB,EAAO,mBAAmBxK,EAAEwK,EAAK,MAAM,KAAK,IAAI,EAAEA,EAAK,KAAK,EAAE,EAAE,EAAE,EAAO,mBAAmB6M,EAAE7M,EAAK,KAAK,KAAK,IAAI,EAAEA,EAAK,MAAM,EAAE,EAAE,IAAQ,EAAO,kBAAkB,EAAE,EAAO,kBAAkB,GAAG,EAAO,aAAa2Z,EAAO,aAAa,KAAKA,EAAO,mBAAmB,IAAIA,EAAO,aAAa,IAAI,IAAI,EAAO,aAAaA,EAAO,aAAa,KAAKA,EAAO,mBAAmB,IAAIA,EAAO,aAAa,IAAI,GAAI,CAAC,SAASqqC,GAAwB,EAAO,EAAO,EAAI,EAAW,EAAE,CAAC,GAAG,CAACn+C,GAAQ,CAAC8T,GAAQ,EAAE7jB,GAAK,qBAAqB,IAAO,OAAO,IAAM8e,GAAW9e,GAAK,wBAAwB,IAAImuD,EAAW,EAAO,SAAS,IAAItqC,EAAO,aAAa,GAAG/E,EAAU,EAAO,SAAS,IAAI+E,EAAO,aAAa,GAAG/E,EAAU,EAAG,CAAC,SAASsvC,GAAsB,EAAO,EAAI,CAAC,IAAMxgD,EAAOiW,GAAQ,OAAO,GAAG,CAACA,GAAQ,CAACjW,EAAO,OAAO,IAAMhD,EAAOijD,GAAqB,IAAI,EAAE,EAAE,CAAC,EAAEJ,GAAwB,IAAIztD,GAAK,iBAAiB,GAAGA,GAAK,iBAAiB,EAAEA,GAAK,iBAAiB,EAAE,EAGh+G,IAAMquD,EAAWruD,GAAK,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,EAAE6jB,EAAO,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAO,eAAewqC,EAAcruD,GAAK,qBAAqB0tD,GAAiB,KAAKD,EAAuB,EAAEE,GAAoB,eAAeD,EAAgB,EAAE,GAAoB,OAAO7pC,EAAO,iBAAiB,EAAE,GAAoB,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI8pC,GAAoB,KAAK9pC,EAAO,eAAe,EAAE,CAAC,EAAE,GAAoB,QAAQwqC,EAAWX,GAAiB,iBAAiBC,EAAmB,EAAE//C,EAAO,SAAS,KAAKhD,CAAM,CAAC,CAAC,IAAI8iD,EAAgB,IAAQ9/C,EAAO,SAAS,KAAK6/C,EAAuB,CAAC,CAAC,eAAeY,CAAU,CAAC,CAAC,IAAIzjD,CAAM,EAAE,EAAO,gBAAgB,EAAE,EAAO,cAAc,GAAMgD,EAAO,uBAAsB,EAAO,MAAM5N,GAAK,WAAW,GAAGquD,GAAYzgD,EAAO,OAAOhD,CAAM,EAAEgD,EAAO,oBAAoB,EAAI,EAAEA,EAAO,yBAAyB,CAAE,CAAC,SAAS0gD,GAA8B,EAAO,EAAU,EAAM,EAAI,CAAC,IAAMlqD,EAAQopB,IAASskB,GAAW,GAAI1tC,EAAe,IAAG1C,GAAO,OAAOA,GAAQ,SAAU,GAAG,CAAC,EAAM,SAASyE,GAAK,MAAMqnB,GAAQ,UAAU,GAAG,EAAM,WAAWrnB,EAAI,EAAM,gBAAgBqnB,CAAO,MAAM,CAAC,CAAE,GAAG,CAAI9rB,EAAM0C,EAAQ1C,CAAK,EAAO0C,EAAQ,CAAE,OAAOqiB,EAAM,CAAC,QAAQ,KAAK,kDAAkDA,CAAK,CAAE,CAAjI,CAAkI,CAAC,SAAS8nC,GAAyB,EAAO,EAAI,CAAC,IAAMljD,EAAM,CAACwY,GAAQ,OAAO,MAAM,UAAUA,GAAQ,OAAO,UAAU,GAAqB,cAAf,eAA6B7jB,GAAK,2BAA2BA,GAAK,0BAA0B,EAAE,EAAE,GAAG6jB,GAAQ,UAAW,IAAI,GAAK,CAAC3d,EAAImU,KAASwJ,EAAO,UAAU,CAAC,IAAM2qC,EAAOn0C,GAAO,mBAAmBhP,EAAM,KAAK,GAAGnF,EAAI,GAAGmU,GAAO,OAAO,MAAM,OAAO,GAAGA,GAAO,OAAO,UAAU,GAAM,GAAGm0C,GAAQ,2BAA2BA,GAAQ,0BAA0B,IAAI,CAAE,CAAE,OAAOnjD,EAAM,KAAK,GAAG,CAAE,CAAC,SAASojD,GAA8B,EAAO,EAAI,CAAC,GAAG,CAAC5qC,EAAO,MAAM,CAAC,EAAE,IAAM3d,EAAIqoD,GAAyB1qC,EAAO7jB,CAAG,EAAE,GAAG6jB,EAAO,4BAA4B3d,EAAI,CAAC,IAAM0nC,EAAO,CAAC,EAA6G,GAAxG/pB,EAAO,OAAO,UAAU,IAAOA,EAAO,OAAO,WAAW,GAAO,CAAI7T,GAAO,QAAO49B,EAAO,KAAK59B,CAAK,CAAE,CAAC,EAAM6T,EAAO,UAAW,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,UAAexJ,GAAO,OAAOA,EAAM,MAAM,UAAU,IAAeA,EAAM,MAAM,WAAW,GAAO,CAAIrK,GAAO,QAAO49B,EAAO,KAAK59B,CAAK,CAAE,CAAC,EAAI,EAAO,uBAAuB49B,EAAO,EAAO,0BAA0B1nC,EAAI,EAAO,yCAAyB,IAAI,GAAI,CAAC,OAAO2d,EAAO,wBAAwB,CAAC,EAAA,CAAG,OAAO,GAAMhL,GAAM,UAAU,EAAK,CAAE,CAAC,SAAS61C,GAAwB,EAAO,EAAI,EAAI,CAAC,IAAMt9B,EAAMpxB,GAAK,sBAAsB,CAAC,EAAE,GAAG,CAACoxB,EAAM,QAAQ,CAACjrB,EAAI,OAAO,KAAK,AAAqC0d,EAAO,2CAAyB,IAAI,IAAK,IAAM8qC,EAAO3uD,GAAK,2BAA2BA,GAAK,0BAA0B,GAASowC,EAAS,GAAGjqC,EAAI,MAAM,GAAG,GAAGwoD,IAAS,GAAG9qC,EAAO,yBAAyB,IAAIusB,CAAQ,EAAG,OAAOvsB,EAAO,yBAAyB,IAAIusB,CAAQ,EAAG,IAAM9/B,EAAK,OAAOnK,EAAI,MAAM,EAAE,CAAC,CAAC,YAAY,EAAMy1C,EAAQ,KAAK,GAAGtrC,EAAM,IAAI,IAAMhQ,KAAQ8wB,EAAM,CAAC,IAAMxmB,EAAO,OAAOtK,GAAM,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,GAAGsK,GAAQ0F,EAAK,SAAS1F,CAAM,EAAE,CAAC,EAAQtK,EAAK,KAAM,CAAC,CAAwD,OAAtDujB,EAAO,yBAAyB,IAAIusB,EAASwL,CAAO,EAASA,CAAQ,CAAC,SAASgT,GAA2B,EAAO,EAAU,EAAI,CAAC,IAAIzoD,EAAI0oD,EAAU,KAAM1oD,GAAKA,IAAM0d,GAAQ,OAAO1d,IAAM0d,GAAQ,OAAO1d,IAAM0d,GAAQ,YAAW,CAAC,IAAM2J,EAAOkhC,GAAwB7qC,EAAO1d,EAAInG,CAAG,EAAE,GAAGwtB,EAAO,CAAC,IAAMld,EAAK,OAAOkd,EAAO,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAQ8mB,EAAWzwB,EAAO,6BAA6B,MAAMvT,CAAI,EAAiC,OAA5BgkC,IAAY,EAAIA,GAAkB,CAAC,MAAI,QAAM,CAAE,CAAC,EAAInuC,EAAI,MAAO,CAAC,OAAO,IAAK,CAAC,SAAS2oD,GAAuB,EAAO,EAAU,CAAC,IAAI3oD,EAAI0oD,EAAU,KAAM1oD,GAAKA,IAAM0d,GAAQ,OAAM,CAAC,GAAG1d,EAAI,UAAU,oBAAqB,MAAM,CAAC,GAAGA,EAAI,UAAU,kBAAkB,GAAG,MAAMA,EAAI,SAAS,oBAAoB,gBAAgBA,EAAI,UAAU,2BAA2B,IAAI,EAAG,EAAIA,EAAI,MAAO,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM0d,GAAQ,sBAAsB,KAAK,gBAAgBA,GAAQ,gCAAgC,IAAI,CAAE,CAAC,SAASkrC,GAAiC,EAAO,EAAK,EAAU,EAAY,CAAC,IAAMC,EAASF,GAAuBjrC,EAAOgrC,CAAS,EAAQI,EAAUD,GAAU,OAAO,KAAK,GAAG,CAACC,GAAWA,IAAYprC,GAAQ,qBAAsB,OAAOqrC,EAAoI,IAAMC,EAAShH,GAArH6G,GAAU,gBAAgB,CAAC,GAAGC,EAAU,0BAA0BD,EAAS,eAAe,EAAEC,EAA8D/kD,GAAM,OAAO,CAAC,EAAE,OAAOilD,GAAU,2BAA2BA,EAASD,CAAY,CAAC,SAASE,GAAwB,EAAO,EAAK,EAAU,EAAY,CAAC,IAAMD,EAASJ,GAAiClrC,EAAO3Z,EAAK2kD,EAAUK,CAAW,EAAQG,EAAWT,GAA2B/qC,EAAOgrC,EAAUM,CAAQ,EAA0D,OAArDE,GAAYF,IAAWD,EAAmBG,EAAkBT,GAA2B/qC,EAAOgrC,EAAUK,CAAW,CAAE,CAAC,SAASI,GAAoC,EAAK,EAAI,CAAgD,OAA5CtvD,GAAK,2BAAkC,GAAYsoD,GAA0BvF,GAAM,MAAM/iD,CAAG,CAAC,CAAC,KAAK,GAAMM,GAAM,mBAAmB,0BAA0B,CAAE,CAAC,SAASivD,GAAgC,EAAM,EAAgB,KAAK,CAAC,IAAMC,EAAQ73B,GAAiBr6B,GAAO,0BAA0B,MAAM,CAAC,EAAEA,GAAO,mBAAmBA,GAAO,iBAAiBkyD,GAAS,mBAAmBA,GAAS,gBAAiB,CAAC,SAASC,GAA0B,EAAK,EAAO,CAAC,GAAG1M,GAAM,cAAe,OAAOjQ,EAAOiQ,EAAK,cAAc,MAAMA,EAAK,cAAc,IAAK,IAAMzlD,EAAMylD,GAAM,OAAO,CAAC,EAAQyM,EAAQzM,GAAM,iBAAiBzlD,EAAM,2BAA2B,CAAC,EAAE,OAAOw1C,EAAOx1C,EAAM,mBAAmBkyD,EAAQ,kBAAkBlyD,EAAM,iBAAiBkyD,EAAQ,eAAgB,CAAC,SAASE,GAA+B,EAAK,CAAC,IAAIjrC,EAAM,KAASkrC,EAAI,KAAK,IAAI,IAAMrvD,KAAQgoD,GAA0BvF,GAAM,MAAMA,GAAM,eAAe,EAAE,CAAC,IAAMzlD,EAAMgD,GAAM,kBAAkB,CAAC,EAAQkvD,EAAQlvD,GAAM,wBAAwBhD,EAAM,2BAA2B,CAAC,EAA0H,GAAxH,EAAMmnB,GAAOnnB,EAAM,mBAAmBkyD,EAAQ,kBAAkB,EAAIG,GAAKryD,EAAM,iBAAiBkyD,EAAQ,gBAAmB/qC,GAAOkrC,EAAI,KAAM,CAA6B,MAAzB,CAAClrC,GAAO,CAACkrC,EAAW,KAAW,CAAC,GAAG,GAAG5M,GAAM,IAAI,QAAQ,cAAc,MAAM,CAAC,kBAAkBt+B,GAAO,IAAA,GAAU,gBAAgBkrC,GAAK,IAAA,EAAS,EAAE,gBAAgB,KAAK,cAAc,CAAC,QAAM,KAAG,EAAE,QAAQ5M,GAAM,QAAQ,gBAAgBA,GAAM,eAAe,CAAE,CAAC,SAAS6M,GAAyB,EAAK,EAAI,CAAmH,OAA/GL,GAAgCxM,GAAM,MAAMA,GAAM,eAAe,GAAG/iD,GAAK,wBAAgC,GAAasoD,GAA0BvF,GAAM,MAAM/iD,CAAG,CAAC,CAAC,KAAK,GAAM,CAAC,IAAM1C,EAAMgD,GAAM,iBAAiB,OAAOivD,GAAgCjyD,EAAMgD,GAAM,sBAAsB,CAAE,CAAC,CAAE,CAAC,SAASuvD,GAAsB,EAAK,EAAM,CAA0M,OAAtMC,GAAO,OAAOA,EAAM,QAAQ/M,GAAM,MAAa,CAAC,GAAG+M,EAAM,IAAI/M,GAAM,IAAI,GAAG,MAAM+M,EAAM,MAAM,gBAAgBA,EAAM,iBAAiB,KAAK,QAAQ/M,GAAM,QAAQ,gBAAgBA,GAAM,eAAe,EAAUA,CAAK,CAAC,SAASgN,GAAgC,EAAO,EAAK,EAAK,EAAI,CAAC,IAAMC,EAAiBN,GAA+B3M,CAAI,EAAE,IAAI,IAAM1O,KAAOvG,GAAM,CAAC,EAAE,CAAwD,IAAMmiB,EAAUJ,GAAsB9M,EAAjF+L,GAAuBjrC,EAAOwwB,GAAK,MAAuD,CAAC,EAAE,GAAGkb,GAAgCU,GAAW,MAAMA,GAAW,eAAe,EAAG,OAAOD,GAAkBC,CAAW,CAAyH,OAArHD,GAAkBliB,GAAM,OAAekiB,EAAqBhwD,GAAK,yBAAyB8tC,GAAM,OAAeiV,EAAa,IAAK,CAAC,SAASmN,GAA0B,EAAO,EAAK,EAAE,EAAE,EAAI,CAAoC,GAAhC,CAACrsC,GAAQ,QAAQ,CAAC3Z,GAAiB,CAAC,OAAO,SAASxK,CAAC,GAAG,CAAC,OAAO,SAASqX,CAAC,GAAGrX,EAAEwK,EAAK,MAAMxK,EAAEwK,EAAK,OAAO6M,EAAE7M,EAAK,KAAK6M,EAAE7M,EAAK,OAAQ,MAAM,CAAC,EAAG,IAAM0jC,EAAO6gB,GAA8B5qC,EAAO7jB,CAAG,EAEz+O,OAF++O4tC,EAAO,QAAgB/pB,EAAO,OAAO,oBAAoB,EAAI,EAAEA,EAAO,MAAM,oBAAoB,EAAI,EAAE,GAAgB,GAAGnkB,EAAEwK,EAAK,MAAM,KAAK,IAAI,EAAEA,EAAK,KAAK,EAAE,EAAE,EAAE,GAAgB,EAAE,GAAG6M,EAAE7M,EAAK,KAAK,KAAK,IAAI,EAAEA,EAAK,MAAM,GAAG,EAAE,EAAEqjD,GAAoB,cAAcC,GAAgB3pC,EAAO,MAAM,EAEtwP0pC,GAAoB,iBAAiB3f,EAAO,EAAK,GAF28O,CAAC,CAE18O,CAAC,SAASuiB,GAAwB,EAAI,CAAC,IAAMviB,EAAO,CAAC,EAAsG,OAAjGznC,GAAK,OAAOynC,EAAO,KAAKznC,CAAG,EAAOA,GAAK,WAAW,GAAO,CAAI6J,GAAO,QAAO49B,EAAO,KAAK59B,CAAK,CAAE,CAAC,EAAS49B,CAAO,CAAC,SAASwiB,GAAsB,EAAO,CAAC,IAAM/c,kBAAI,IAAI,IAAI,IAAI,IAAMx6B,KAAQ+0B,EAAO,CAAC,GAAG,CAAC/0B,GAAM,SAAS,SAAS,IAAM5D,EAAK,MAAM,QAAQ4D,EAAK,QAAQ,EAAEA,EAAK,SAAS,CAACA,EAAK,QAAQ,EAAEw6B,EAAI,IAAIx6B,EAAK5D,EAAK,IAAI,GAAU0B,GAAK,UAAqB,EAAI,SAASA,EAAI,UAAU,CAAC,EAAMA,EAAI,SAAS,uBAAsB,EAAI,SAAS,qBAAqBA,EAAI,SAAS,MAAM,GAAUA,EAAI,SAAS,qBAAqB,MAAM,GAAjL,IAAoL,CAAC,CAAE,CAAC,OAAO08B,CAAI,CAAC,SAASgd,GAAoB,EAAQ,CAAC,GAAG,CAACC,GAAS,KAAK,OAAO,IAAM,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEA,EAAQ,UAAU,CAAC,CAAC,EAAKA,EAAQ,cAAcA,EAAQ,aAAaA,EAAQ,aAAa,SAAS,EAAM,IAAO,CAAKz3C,GAAM,WAA2B,MAAM,QAAQA,EAAK,QAAQ,EAAEA,EAAK,SAAS,CAACA,EAAK,QAAQ,EAAA,CAAO,SAAS,EAAI,IAAQ,CAAC,GAAG,CAAClC,GAAK,SAAS,OAAO,IAAM+8B,EAAKrF,IAAQ4B,GAAUyD,EAAKqa,GAAsB,KAAKra,CAAI,EAAOqa,GAAsB,OAAO,CAAC,EAAEp3C,EAAI,SAAS,KAAKo3C,GAAsB,KAAKuC,EAAQ,YAAY,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,EAAMA,EAAQ,WAAWA,EAAQ,cAAa,EAAQ,KAAK,MAAM,IAAIA,EAAQ,YAAY,EAAEA,EAAQ,UAAU,GAAG,EAAE,EAAQ,KAAK,MAAM,IAAIA,EAAQ,YAAY,EAAEA,EAAQ,UAAU,GAAG,EAAE,EAAQ,KAAK,MAAM,IAAIA,EAAQ,YAAY,EAAEA,EAAQ,UAAU,GAAG,GAAMA,EAAQ,cAAcA,EAAQ,iBAAgB,EAAQ,KAAK,SAAS,IAAIA,EAAQ,eAAe,EAAEA,EAAQ,aAAa,GAAG,EAAE,EAAQ,KAAK,SAAS,IAAIA,EAAQ,eAAe,EAAEA,EAAQ,aAAa,GAAG,EAAE,EAAQ,KAAK,SAAS,IAAIA,EAAQ,eAAe,EAAEA,EAAQ,aAAa,GAAG,GAAMA,EAAQ,cAAcA,EAAQ,iBAAgB,EAAQ,KAAK,SAAS,IAAIA,EAAQ,eAAe,EAAEA,EAAQ,aAAa,GAAG,EAAE,EAAQ,KAAK,SAAS,IAAIA,EAAQ,eAAe,EAAEA,EAAQ,aAAa,GAAG,EAAE,EAAQ,KAAK,SAAS,IAAIA,EAAQ,eAAe,EAAEA,EAAQ,aAAa,GAAG,EAAG,CAAC,SAASC,GAAsB,EAAQ,CAAKD,GAAS,OAAY,EAAQ,SAAS,EAAED,GAAoBC,CAAO,EAC5jEA,EAAQ,KAAK,mBAAqBA,EAAQ,cAAaA,EAAQ,KAAK,SAAS,KAAKA,EAAQ,YAAY,EAAKA,EAAQ,cAAaA,EAAQ,KAAK,SAAS,KAAKA,EAAQ,YAAY,EAAKA,EAAQ,WAAUA,EAAQ,KAAK,MAAM,KAAKA,EAAQ,SAAS,GAAGziC,GAAoCyiC,EAAQ,IAAI,EAAE,EAAQ,KAAK,KAAK,EAAQ,OAAO,KAAK,EAAQ,aAAa,KAAK,EAAQ,aAAa,KAAK,EAAQ,aAAa,KAAK,EAAQ,UAAU,KAAK,EAAQ,YAAY,KAAK,EAAQ,eAAe,KAAK,EAAQ,eAAe,KAAK,EAAQ,YAAY,KAAK,CAAC,SAASE,GAA4B,EAAO,CAAK3sC,EAAO,iBAAgB,EAAO,eAAe,CAAC,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE,OAAO,EAAE,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,UAAU,KAAK,YAAY,KAAK,eAAe,KAAK,eAAe,KAAK,YAAY,IAAI,EAAE,EAAO,kBAAkB,CAAC,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE,OAAO,EAAE,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,UAAU,KAAK,YAAY,KAAK,eAAe,KAAK,eAAe,KAAK,YAAY,IAAI,EAAE,EAAO,eAAe,CAAC,KAAK,KAAK,OAAO,KAAK,SAAS,EAAE,OAAO,EAAE,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,UAAU,KAAK,YAAY,KAAK,eAAe,KAAK,eAAe,KAAK,YAAY,IAAI,EAAG,CAAC,SAAS4sC,GAAwB,EAAO,CAAC,GAAG,CAAC5sC,GAAQ,gBAAgB,KAAK,OAAO,IAAMysC,EAAQzsC,EAAO,eAAe,EAAQ,SAAS,EAAEwsC,GAAoBC,CAAO,EAAE,EAAQ,KAAK,KAAK,EAAQ,OAAO,KAAK,EAAQ,aAAa,KAAK,EAAQ,aAAa,KAAK,EAAQ,UAAU,KAAK,EAAQ,eAAe,KAAK,EAAQ,eAAe,KAAK,EAAQ,YAAY,IAAK,CAAC,SAASI,GAAwB,EAAO,EAAI,EAAO,CAAC,GAAG,CAAC7sC,GAAQ,CAAC1d,GAAK,CAACqnB,GAAQ,cAAcA,GAAQ,UAAU,OAAOgjC,GAA4B3sC,CAAM,EAAKA,EAAO,gBAAgB,MAAMA,EAAO,eAAe,OAAO1d,GAAKsqD,GAAwB5sC,CAAM,EAAG,IAAMysC,EAAQzsC,EAAO,eAAqBnZ,EAAQojB,GAAiC3nB,EAAIqnB,EAAO,gBAAgB,EAAE,EAAQ,KAAKrnB,EAAI,EAAQ,OAAOqnB,EAAO,EAAQ,SAAS,EAAE,EAAQ,OAAO,EAAE,EAAQ,aAAa9iB,EAAQ,aAAa,EAAQ,aAAaA,EAAQ,aAAa,EAAQ,UAAUA,EAAQ,UAAU,EAAQ,eAAeA,EAAQ,eAAe,EAAQ,eAAeA,EAAQ,eAAe,EAAQ,YAAYA,EAAQ,YAAY2lD,GAAoBC,CAAO,CAAE,CAAC,SAASK,GAAyB,EAAO,EAAU,GAAK,EAAM,KAAK,CAAC,GAAG,CAAC9sC,EAAO,OAAO,AAAsFA,EAAO,8BAAvD,aAAaA,EAAO,0BAA0B,EAAoC,MAAM2sC,GAA4B3sC,CAAM,EAAE,IAAM+sC,EAAQ/sC,EAAO,qBAAqB,GAAG+sC,EAAQ,CAAI9c,GAAWwa,GAA8BzqC,EAAO,2BAA2B,cAAcniB,EAAMkvD,CAAO,EAAM1rD,IAAoBA,GAAoB,KAAK,EAAE,CAAC,EAAE,IAAM4tC,EAAOjvB,EAAO,eAAqBgtC,EAAQhtC,EAAO,kBAAqBgtC,EAAQ,MAAMA,EAAQ,OAAOD,GAAQL,GAAsBM,CAAO,EAAE,EAAQ,KAAK/d,EAAO,KAAK,EAAQ,OAAOA,EAAO,OAAO,EAAQ,SAASA,EAAO,SAAS,EAAQ,aAAaA,EAAO,aAAa,EAAQ,aAAaA,EAAO,aAAa,EAAQ,aAAaA,EAAO,aAAa,EAAQ,UAAUA,EAAO,UAAU,EAAQ,YAAYA,EAAO,YAAY,EAAQ,eAAeA,EAAO,eAAe,EAAQ,eAAeA,EAAO,eAAe,EAAQ,YAAYA,EAAO,YAAY,EAAO,KAAK,KAAK,EAAO,OAAO,KAAK,EAAO,SAAS,EAAE,EAAO,OAAO,EAAE,EAAO,aAAa,KAAK,EAAO,aAAa,KAAK,EAAO,aAAa,KAAK,EAAO,UAAU,KAAK,EAAO,YAAY,KAAK,EAAO,eAAe,KAAK,EAAO,eAAe,KAAK,EAAO,YAAY,IAAK,CAAC,EAAO,qBAAqB,KAAK,EAAO,2BAA2B,IAAK,CAAC,SAASge,GAAiC,EAAO,EAAM,KAAK,CAAKjtC,GAAQ,sBAAsB,GAAO,6BAAkC,EAAO,2BAA2B,eAAe,CAAC,EAAO,2BAA2B,KAAK8sC,GAAyB9sC,EAAO,GAAKniB,CAAK,CAAE,EAAE,EAAE,EAAE,CAAC,SAASqvD,GAAuB,EAAO,EAAI,EAAO,EAAM,KAAK,CAAC,GAAG,CAACltC,GAAQ,CAAC1d,GAAK,CAACqnB,EAAO,OAAyK,GAAlK,AAAsF3J,EAAO,8BAAvD,aAAaA,EAAO,0BAA0B,EAAoC,MAAM2sC,GAA4B3sC,CAAM,EAAKA,EAAO,uBAAuB1d,EAAI,CAAC,IAAMouC,GAAa/mB,EAAO,cAAc,GAAA,CAAI,KAAK,EAAK+mB,GAAarvC,IAAqBxD,GAAOwD,GAAoBqvC,EAAY7yC,EAAM,SAAS,EAAEA,EAAM,SAAS,CAAC,EAAG,MAAO,CAAC,IAAMmvD,EAAQhtC,EAAO,kBAAwBivB,EAAOjvB,EAAO,eAAe,GAAGgtC,EAAQ,OAAO1qD,EAAI,CAAC,EAAO,KAAK0qD,EAAQ,KAAK,EAAO,OAAOA,EAAQ,OAAO,EAAO,SAASA,EAAQ,SAAS,EAAO,OAAO,EAAE,EAAO,aAAaA,EAAQ,aAAa,EAAO,aAAaA,EAAQ,aAAa,EAAO,aAAaA,EAAQ,aAAa,EAAO,UAAUA,EAAQ,UAAU,EAAO,YAAYA,EAAQ,YAAY,EAAO,eAAeA,EAAQ,eAAe,EAAO,eAAeA,EAAQ,eAAe,EAAO,YAAYA,EAAQ,YAAY,EAAQ,KAAK,KAAK,EAAQ,OAAO,KAAK,EAAQ,SAAS,EAAE,EAAQ,aAAa,KAAK,EAAQ,aAAa,KAAK,EAAQ,aAAa,KAAK,EAAQ,UAAU,KAAK,EAAQ,YAAY,KAAK,EAAQ,eAAe,KAAK,EAAQ,eAAe,KAAK,EAAQ,YAAY,KAAK,EAAO,qBAAqB1qD,EAAI,EAAO,2BAA2BqnB,EAAO8gC,GAA8B9gC,EAAO,cAAc9rB,EAAMyE,CAAG,EAAE,IAAMouC,GAAa/mB,EAAO,cAAc,GAAA,CAAI,KAAK,EAAK+mB,GAAarvC,IAAqBxD,GAAOwD,GAAoBqvC,EAAY7yC,EAAM,SAAS,EAAEA,EAAM,SAAS,CAAC,EAAG,MAAO,CAACivD,GAAyB9sC,EAAO,GAAKniB,CAAK,EAAE,EAAO,qBAAqByE,EAAI,EAAO,2BAA2BqnB,EAAO8gC,GAA8B9gC,EAAO,cAAc9rB,EAAMyE,CAAG,EAAE,IAAMouC,GAAa/mB,EAAO,cAAc,GAAA,CAAI,KAAK,EAAK+mB,GAAarvC,IAAqBxD,GAAOwD,GAAoBqvC,EAAY7yC,EAAM,SAAS,EAAEA,EAAM,SAAS,CAAC,EAAG,IAAMuyC,EAAYzmB,EAAO,aAAa,YAAY,GAAGymB,IAAc,OAClpL,IADgqL,EAAO,KAAK9tC,EAAI,EAAO,OAAOqnB,EAAO,EAAO,SAAS,EAAE,EAAO,OAAO,EACx1L,EAAO,aAAa4iC,GAAjDD,GAAwBhqD,CAAyD,CAAC,EAAE,EAAO,YAAYgF,EAAWqiB,EAAO,YAAY,SAAS,EAAKymB,IAAc,QAAS,EAAO,UAAU9tC,EAAI,MAAM,MAAM,EAAE,EAAO,YAAYA,EAAI,MAAM,MAAM,CAAC,CAAC,eAAeqnB,EAAO,YAAY,GAAG,OAAQ,GAAGymB,IAAc,YAAY,CAAC,IAAMvpC,EAAQojB,GAAiC3nB,EAAIqnB,EAAO,gBAAgB,EAAE,EAAO,aAAa9iB,EAAQ,aAAa,EAAO,aAAaA,EAAQ,aAAa,EAAO,UAAUA,EAAQ,UAAU,EAAO,eAAeA,EAAQ,eAAe,EAAO,eAAeA,EAAQ,eAAe,EAAO,YAAYA,EAAQ,WAAY,EAAC,CAAC,SAASsmD,GAAmB,EAAO,EAAK,EAAK,EAAM,EAAI,CAAC,GAAG,CAACntC,GAAQ,CAACyrC,GAAoCvM,EAAK/iD,CAAG,GAAGA,GAAK,mBAAmB,CAAC2wD,GAAyB9sC,EAAO,GAAKI,GAAO,YAAY,EAAE,MAAO,CAAC,IAAMvkB,EAAEukB,GAAO,SAAelN,EAAEkN,GAAO,SAAS,GAAG,CAACA,GAAO,eAAe,CAAC,OAAO,SAASvkB,CAAC,GAAG,CAAC,OAAO,SAASqX,CAAC,IAAIkN,GAAO,oBAAoB,GAAG,YAAY,IAAI,EAAE,CAAC0sC,GAAyB9sC,EAAO,GAAKI,GAAO,YAAY,EAAE,MAAO,CAAC,IAAMhX,EAAI,YAAY,IAAI,EAAQgkD,EAAWhtC,GAAO,YAAY,EAAQitC,EAAcrtC,EAAO,qBAAqB,GAAG,GAAuE,GAAjE5W,GAAK4W,EAAO,2BAA2B,GAAGqtC,GAA0BrtC,EAAO,+BAA+BotC,GAAYhkD,GAAK4W,EAAO,2BAA2B,GAAG,IAAK,OAAQ,EAAO,6BAA6BotC,EAAW,EAAO,0BAA0BhkD,EAAI,IAAM6gC,EAAKoiB,GAA0BrsC,EAAO3Z,EAAKxK,EAAEqX,EAAE/W,CAAG,EAAE,IAAI,IAAMq0C,KAAOvG,EAAK,CAAC,IAAM8N,EAAQwT,GAAwBvrC,EAAO3Z,EAAKmqC,EAAI,OAAOr0C,CAAG,EAAE,GAAG47C,EAAQ,CAACmV,GAAuBltC,EAAO+3B,EAAQ,IAAIA,EAAQ,OAAO33B,GAAO,YAAY,EAAE,MAAO,CAAC,CAAC6sC,GAAiCjtC,EAAOI,GAAO,YAAY,CAAE,CAAC,SAASktC,GAA8B,EAAO,EAAI,EAAG,CAAC,GAAG,CAACttC,EAAO,OAAO2sC,GAA4B3sC,CAAM,EAAE,IAAMivB,EAAOjvB,EAAO,eAAqBgtC,EAAQhtC,EAAO,kBAAkB,GAAG3rB,EAAG,EAAE,CAAC,GAAG46C,EAAO,KAAK,CAAC,IAAM7wC,EAAM6wC,EAAO,QAAQ,YAAY,GAAG,EAAO,WAAW,EAAEA,EAAO,UAAU,KAAK,IAAI,EAAE56C,EAAG+J,CAAK,EAAK,KAAK,IAAI,EAAE6wC,EAAO,QAAQ,EAAE,OAAK,EAAO,SAAS,GAAEud,GAAoBvd,CAAM,CAAE,CAAC,GAAG+d,EAAQ,KAAK,CAAC,IAAM5uD,EAAM4uD,EAAQ,QAAQ,YAAY,GAAG,EAAQ,WAAW,EAAEA,EAAQ,UAAU,KAAK,IAAI,EAAE34D,EAAG+J,CAAK,EAAK4uD,EAAQ,SAAS,KAAKN,GAAsBM,CAAO,EAAOR,GAAoBQ,CAAO,CAAE,CAAC,GAAGhtC,EAAO,mBAAmB,MAAMA,EAAO,mBAAmB,UAAU,CAAC,IAAMutC,EAAKvtC,EAAO,kBAAkButC,EAAK,KAAK,SAAS,KAAKA,EAAK,UAAU,KAAK,IAAI,EAAEl5D,EAAG,CAAC,CAAC,EAAKk5D,EAAK,KAAK,SAAS,WAAWA,EAAK,SAAS,EAAE,OAAMA,EAAK,KAAK,SAAS,KAAKA,EAAK,SAAS,EAAE,EAAO,kBAAkB,KAAM,CAAC,CAAC,IAAIC,EAAmB,CAAC,CAACrxD,GAAK,2BAA2B,GAAG,CAACqxD,GAAoBxtC,EAAO,UAAe,KAAA,GAAK,EAAExJ,KAASwJ,EAAO,UAAW,GAAGxJ,GAAO,oBAAoB,2BAA2B,CAAC,EAAmB,GAAK,KAAM,EAAG,GAAG,CAACg3C,EAAmB,OAAO,IAAMjgC,EAAM,CAAC,GAAGpxB,GAAK,sBAAsB,CAAC,CAAC,EAAE,GAAG6jB,EAAO,UAAW,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,UAAU,CAAC,IAAM2qC,EAAOn0C,GAAO,mBAAsBm0C,GAAQ,4BAA4BA,EAAO,sBAAsBp9B,EAAM,KAAK,GAAGo9B,EAAO,oBAAoB,CAAG,CAAE,GAAIp9B,EAAM,OAAc,IAAGvN,EAAO,+BAA+B0qC,GAAyB1qC,EAAO7jB,CAAG,EAAE,CAAC,EAAO,6BAA6BuuD,GAAyB1qC,EAAO7jB,CAAG,EAAE,EAAO,4CAA4B,IAAI,IAAI,IAAI,IAAMM,KAAQ8wB,EAAM,CAAC,IAAM9gB,EAAK,OAAOhQ,GAAM,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAACgQ,GAAMuT,EAAO,4BAA4B,IAAIvT,CAAI,EAAE,SAAS,IAAIsrC,EAAQ,KAAW0V,EAAM,CAACztC,EAAO,KAAK,EAAE,GAAGA,EAAO,UAAW,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,UAAUytC,EAAM,KAAKj3C,GAAO,KAAK,EAAG,IAAI,IAAMqJ,KAAQ4tC,EAAU,IAAU5tC,GAAcA,EAAK,WAAW,GAAM,CAAIk4B,GAAkBnyC,IAAOia,GAAe,OAAOja,GAAM,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS6G,CAAI,IAAG,EAAQ7G,EAAM,CAAC,EAAGoa,EAAO,4BAA4B,IAAIvT,EAAKsrC,CAAO,CAAE,CAAC,CAAC,IAAI,IAAMt7C,KAAQ8wB,EAAM,CAAC,IAAM9gB,EAAK,OAAOhQ,GAAM,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAQsK,EAAOiZ,EAAO,6BAA6B,MAAMvT,CAAI,EAAE,GAAI1F,EAAgB,IAAGtK,EAAK,YAAYpI,EAAG,EAAE,CAAC,IAAM+J,GAAO3B,EAAK,qBAAqB,GAAGpI,EAASq5D,EAAKjxD,EAAK,oBAAoB,IAAOixD,IAAO,IAAI,EAAO,SAAS,GAAGtvD,EAAcsvD,IAAO,IAAI,EAAO,SAAS,GAAGtvD,EAAW,EAAO,SAAS,GAAGA,CAAM,CAAC,GAAG3B,EAAK,aAAa,CAACN,EAAI,mBAAmB,CAAC,AAAmC4K,EAAO,yBAAuB,CAAC,EAAEA,EAAO,SAAS,EAAE,EAAEA,EAAO,SAAS,CAAC,EAAG,IAAMkU,EAAUxe,EAAK,0BAA0B,GAAG,EAAO,SAAS,EAAEsK,EAAO,uBAAuB,GAAGiZ,EAAO,aAAa,GAAG/E,EAAU,EAAO,SAAS,EAAElU,EAAO,uBAAuB,GAAGiZ,EAAO,aAAa,GAAG/E,EAAU,EAAG,CAAxX,CAAyX,CAA/vB,CAAgwB,CAAC,SAAS0yC,GAA8B,EAAO,CAAC,GAAG,CAAC3tC,EAAO,OAAO,IAAMivB,EAAOjvB,EAAO,eAAqBgtC,EAAQhtC,EAAO,kBAAwBqM,EAAMrM,EAAO,eAAqB64B,kBAAY,IAAI,IAAUC,EAAS,GAAS,CAAI2T,GAAS,MAAM,CAAC5T,EAAY,IAAI4T,EAAQ,IAAI,IAAG5T,EAAY,IAAI4T,EAAQ,IAAI,EAAMA,EAAQ,KAAK,mBAAqBA,EAAQ,cAAaA,EAAQ,KAAK,SAAS,KAAKA,EAAQ,YAAY,EAAKA,EAAQ,cAAaA,EAAQ,KAAK,SAAS,KAAKA,EAAQ,YAAY,EAAKA,EAAQ,WAAUA,EAAQ,KAAK,MAAM,KAAKA,EAAQ,SAAS,GAAI,EAAE3T,EAAS7J,CAAM,EAAE6J,EAASkU,CAAO,EAAElU,EAASzsB,CAAK,EAAK4iB,GAAQ,MAAKud,GAAoBvd,CAAM,EAAK+d,GAAS,MAAKR,GAAoBQ,CAAO,EAAK3gC,GAAO,MAAKmgC,GAAoBngC,CAAK,CAAE,CAAC,SAASuhC,GAA2B,EAAO,EAAI,CAAC,IAAMpmD,EAAM,CAACwY,GAAQ,OAAO,MAAM,UAAU7jB,GAAK,wBAAwB,EAAE,EAAE,GAAG6jB,GAAQ,UAAW,IAAI,GAAK,CAAC3d,EAAImU,KAASwJ,EAAO,UAAWxY,EAAM,KAAK,GAAGnF,EAAI,GAAGmU,GAAO,OAAO,MAAM,OAAO,GAAGA,GAAO,OAAO,UAAU,IAAO,EAAI,OAAOhP,EAAM,KAAK,GAAG,CAAE,CAAC,SAASqmD,GAAwB,EAAO,EAAI,CAAkE,GAA9D,CAAC7tC,IAAc,EAAO,kCAAkC,GAAS,CAAC7jB,GAAK,0BAAyB,OAAO,IAAMoxB,EAAMpxB,EAAI,oBAAoB,CAAC,EAAE,GAAG,CAACoxB,EAAM,OAAO,OAAO,AAA2BvN,EAAO,kCAAgB,IAAI,IAAI,IAAMusB,EAASqhB,GAA2B5tC,EAAO7jB,CAAG,EAAE,GAAG6jB,EAAO,6BAA6BusB,EAAS,CAAC,EAAO,2BAA2BA,EAAS,EAAO,0CAA0B,IAAI,IAAI,IAAMkhB,EAAM,CAACztC,EAAO,KAAK,EAAE,GAAGA,EAAO,UAAW,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,UAAUytC,EAAM,KAAKj3C,GAAO,KAAK,EAAG,IAAI,IAAM+S,KAAQgE,EAAM,CAAC,IAAM9gB,EAAK,OAAO8c,GAAM,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC9c,GAAMuT,EAAO,0BAA0B,IAAIvT,CAAI,EAAE,SAAS,IAAIsrC,EAAQ,KAAK,IAAI,IAAMl4B,KAAQ4tC,EAAU,IAAU5tC,GAAcA,EAAK,WAAW,GAAM,CAAIk4B,GAAkBnyC,IAAOia,IAAgBja,GAAM,QAAQA,GAAM,SAASA,GAAM,aAAa,OAAOA,GAAM,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS6G,CAAI,IAAG,EAAQ7G,EAAM,CAAC,EAAGoa,EAAO,0BAA0B,IAAIvT,EAAKsrC,CAAO,CAAE,CAAC,CAAC,IAAMhC,EAAW55C,EAAI,sBAAsB,KAAK,IAAI,KAAK,KAAK,IAAI,EAAEA,EAAI,iBAAiB,GAAG,CAAC,EAAE,EAAQ2xD,EAAS,KAAK,GAAG,IAAQxG,EAAkB,GAAM,IAAI,IAAM/9B,KAAQgE,EAAM,CAAC,IAAMirB,EAAS,OAAOjvB,GAAM,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAACivB,EAAS,SAAS,IAAMn2C,EAAIm2C,EAAS,YAAY,EAAQzxC,EAAOiZ,EAAO,2BAA2B,MAAM3d,CAAG,EAAE,GAAG,CAAC0E,EAAO,SAAS,IAAMklB,EAAQ5C,GAAyBE,EAAKvjB,GAA8BujB,EAAK,YAAY,KAAKA,EAAK,aAAa,CAAC,EAAQkvB,EAAY,OAAOlvB,GAAM,aAAa,EAAE,CAAC,CAAC,KAAK,EAAM/C,EAAOxG,EAAO,gBAAgB,IAAI3d,CAAG,EAAE,GAAG,CAACmkB,GAAQA,EAAO,eAAeiyB,EAG3sO,EAAO,CAAC,GAAGxsB,EAAQ,aAAawsB,CAAW,EAAEz4B,EAAO,gBAAgB,IAAI3d,EAAImkB,CAAM,MAAO,CAAC,IAAMunC,EAAcvnC,EAAO,QAAQA,EAAO,OAAO,EAAQwnC,EAAcxnC,EAAO,QAAQA,EAAO,OAAO,EAAQynC,EAAcznC,EAAO,QAAQA,EAAO,OAAO,EAAgxB,GAA3wBuvB,EAAW,IAAI,KAAK,IAAI9pB,EAAQ,KAAKzF,EAAO,IAAI,EAAE,MAAM,KAAK,IAAIyF,EAAQ,KAAKzF,EAAO,IAAI,EAAE,MAAM,KAAK,IAAIyF,EAAQ,KAAKzF,EAAO,IAAI,EAAE,MAAM,KAAK,IAAIyF,EAAQ,KAAKzF,EAAO,IAAI,EAAE,MAAM,KAAK,IAAIyF,EAAQ,KAAKzF,EAAO,IAAI,EAAE,MAAM,KAAK,IAAIyF,EAAQ,KAAKzF,EAAO,IAAI,EAAE,MAAM,KAAK,IAAIyF,EAAQ,OAAO8hC,CAAa,EAAE,MAAM,KAAK,IAAI9hC,EAAQ,OAAO+hC,CAAa,EAAE,MAAM,KAAK,IAAI/hC,EAAQ,OAAOgiC,CAAa,EAAE,MAAM,KAAK,IAAIhiC,EAAQ,SAASzF,EAAO,SAAS,EAAE,EAAE,QAAO,EAAkB,IAAM,EAAO,OAAOyF,EAAQ,KAAKzF,EAAO,MAAMuvB,EAAW,EAAO,OAAO9pB,EAAQ,KAAKzF,EAAO,MAAMuvB,EAAW,EAAO,OAAO9pB,EAAQ,KAAKzF,EAAO,MAAMuvB,EAAW,EAAO,OAAO9pB,EAAQ,KAAKzF,EAAO,MAAMuvB,EAAW,EAAO,OAAO9pB,EAAQ,KAAKzF,EAAO,MAAMuvB,EAAW,EAAO,OAAO9pB,EAAQ,KAAKzF,EAAO,MAAMuvB,EAAcvvB,EAAO,SAAS,IAAA,GAAU,CAAC,IAAMmyB,EAAYnyB,EAAO,OAAO,EAAE,EAAO,OAAOmyB,EAAY,EAAO,OAAOA,EAAY,EAAO,OAAOA,CAAY,CAAC,EAAO,SAAS1sB,EAAQ,OAAOzF,EAAO,QAAQuvB,EAAW,EAAO,SAAS9pB,EAAQ,OAAOzF,EAAO,QAAQuvB,EAAW,EAAO,SAAS9pB,EAAQ,OAAOzF,EAAO,QAAQuvB,EAAW,EAAO,UAAU9pB,EAAQ,QAAQzF,EAAO,SAASuvB,CAAW,CAAIhvC,EAAO,mBAAmB,IAAA,KAAW,EAAO,iBAAiBA,EAAO,SAAS,MAAM,EAAE,EAAO,iBAAiBA,EAAO,SAAS,MAAM,EAAE,EAAO,mBAAmBA,EAAO,MAAM,MAAM,GAAG,EAAO,SAAS,EAAEA,EAAO,iBAAiB,EAAEyf,EAAO,KAAK,EAAO,SAAS,EAAEzf,EAAO,iBAAiB,EAAEyf,EAAO,KAAK,EAAO,SAAS,EAAEzf,EAAO,iBAAiB,EAAEyf,EAAO,KAAK,EAAO,SAAS,EAAEzf,EAAO,iBAAiB,EAAEyf,EAAO,KAAKsnC,EAAS,EAAO,SAAS,EAAE/mD,EAAO,iBAAiB,EAAEyf,EAAO,KAAKsnC,EAAS,EAAO,SAAS,EAAE/mD,EAAO,iBAAiB,EAAEyf,EAAO,KAAKsnC,EAAS,EAAO,MAAM,EAAE/mD,EAAO,mBAAmB,EAAE,KAAK,IAAI,KAAKyf,EAAO,MAAM,EAAE,EAAO,MAAM,EAAEzf,EAAO,mBAAmB,EAAE,KAAK,IAAI,KAAKyf,EAAO,MAAM,EAAE,EAAO,MAAM,EAAEzf,EAAO,mBAAmB,EAAE,KAAK,IAAI,KAAKyf,EAAO,MAAM,EAAE,IAAMyV,EAAQ,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEzV,EAAO,OAAO,CAAC,EAAE,GAAGzf,EAAO,uBAAuBk1B,EAAQ,CAAC,IAAI2c,EAAe7xC,EAAO,wBAA4B6xC,IAAgB,EAAe7xC,EAAO,OAAO,CAACA,CAAM,EAAE,CAAC,EAAMA,EAAO,QAAQA,EAAO,WAAW,GAAM,CAAInB,GAAM,QAAQA,EAAK,UAASgzC,EAAe,KAAKhzC,CAAI,CAAE,CAAC,EAAG,EAAO,wBAAwBgzC,GAAgB,IAAI,IAAMhzC,KAAQgzC,GAA2B,MAAM,QAAQhzC,EAAK,QAAQ,EAAEA,EAAK,SAAS,CAACA,EAAK,QAAQ,EAAA,CAAO,QAAQ,GAAK,CAAKkN,IAAW,EAAI,QAAQmpB,EAAQ,EAAI,YAAYA,EAAQ,GAAG,CAAC,CAACnpB,EAAI,YAAY,EAAI,YAAY,GAAK,CAAC,EAAG,EAAO,qBAAqBmpB,CAAQ,CAAC,CAAC,EAAO,kCAAkCqrB,CAAkB,CAAC,SAAS4G,GAAyB,EAAO,EAAO,CAAC,IAAMlsC,EAAO4nB,GAAQ,OAAiG,OAAvF5nB,GAAQA,IAAShC,GAAQ,OAAOgC,IAAShC,GAAQ,OAAO,CAACgC,EAAO,OAAeA,EAAe4nB,CAAO,CAAC,SAASukB,GAAyB,EAAO,EAAO,EAAK,EAAE,EAAE,CAAC,GAAG,CAACnuC,GAAQ,CAAC4pB,GAAQ,CAACvjC,EAAK,OAAO,KAAK,IAAM8K,EAAM+8C,GAAyBluC,EAAO4pB,CAAM,EAAQn9B,EAAK0E,GAAO,MAAMy4B,GAAQ,MAAM,YAAkB9uB,EAAK8uB,GAAQ,cAAc,cAAc,OAAaU,EAAY,CAAC,EAAKn5B,GAAO,OAAOm5B,EAAY,KAAKn5B,CAAK,EAAOA,GAAO,WAAW,GAAO,CAAIhF,GAAO,QAAOm+B,EAAY,KAAKn+B,CAAK,CAAE,CAAC,EAAG,IAAIk+B,EAAM,EAAE,IAAI,IAAMr1B,KAAQs1B,EAAY,CAAC,IAAM8jB,EAAKp5C,GAAM,UAAU,eAAe,UAAU,EAAKo5C,IAAK,GAAOA,EAAK,OAAO,EAAE,CAAC,IAAIt7C,EAAI,GAAM82B,GAAQ,WAAU,AAA0I92B,EAAvI,MAAM,QAAQ82B,EAAO,QAAQ,EAAOA,EAAO,SAAS,IAAI,GAAUzwB,GAAU,MAAMA,GAAU,MAAM,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI,EAAYywB,EAAO,SAAS,MAAMA,EAAO,SAAS,MAAM,IAAK,IAAIp6B,EAAK/C,EAAS/F,EAAQyK,GAAO,OAAO,KAAMzK,GAASA,IAAUsZ,EAAO,OAAUtZ,EAAQ,OAAK,EAAK,GAAGA,EAAQ,KAAK,KAAK8I,KAAO,EAAQ9I,EAAQ,OAAQ,MAAM,CAAC,EAAE7K,EAAEwK,EAAK,KAAK,EAAE6M,EAAE7M,EAAK,IAAI,QAAQxK,EAAE,QAAQqX,EAAE,OAAK,OAAK,QAAM,MAAI,MAAI,CAAE,CAAC,SAASm7C,GAA2B,EAAK,CAAC,IAAI97C,EAAM,EAAuD,OAArD3M,GAAM,WAAW,GAAO,CAAIuG,GAAO,QAAO,GAAQ,CAAC,EAASoG,CAAM,CAAC,SAAS+7C,GAAyB,EAAO,CAAC,GAAG,CAACtuC,EAAO,MAAM,CAAC,EAAE,IAAMuuC,EAAK,CAAC,EAAQd,EAAM,CAAC,EAA2C,GAAtCztC,EAAO,OAAMytC,EAAM,KAAKztC,EAAO,KAAK,EAAKA,EAAO,UAAe,IAAA,GAAK,EAAExJ,KAASwJ,EAAO,UAAcxJ,GAAO,OAAMi3C,EAAM,KAAKj3C,EAAM,KAAK,EAAI,IAAMg4C,GAAO,EAAK,IAAQ,CAAC,GAAG,CAAC5oD,GAAM2oD,EAAK,QAAQ,IAAI,OAAO,GAAG3oD,EAAK,OAAO,CAAC,IAAMwoD,EAAKxoD,EAAK,UAAU,eAAe,UAAU,EAAE2oD,EAAK,KAAK,CAAC,KAAK3oD,EAAK,MAAM,YAAY,KAAKA,EAAK,cAAc,cAAc,OAAO,QAAM,MAAMwoD,GAAM,OAAO,EAAE,QAAQ,EAAK,CAAC,EAAE,MAAO,CAAC,IAAMK,EAAeJ,GAA2BzoD,CAAI,EAAKA,EAAK,MAAM6oD,EAAe,GAAGF,EAAK,KAAK,CAAC,KAAK3oD,EAAK,KAAK,KAAK,QAAQ,QAAM,MAAM,EAAE,QAAQ,GAAK,gBAAc,CAAC,EAAG,IAAM8oD,EAAU9oD,EAAK,KAAKy1C,EAAM,EAAEA,EAAM,IAAI,IAAMlvC,KAASvG,EAAK,UAAU,CAAC,EAAE4oD,EAAMriD,EAAMuiD,CAAS,CAAE,EAAqC,OAAnCjB,EAAM,QAAQ,GAAMe,EAAM3uC,EAAK,CAAC,CAAC,EAAS0uC,CAAK,CAAC,SAASI,GAA4B,EAAO,EAAO,EAAM,EAAI,CAAC,IAAM7xD,EAAS,OAAO6sB,GAAQ,eAAe,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC7sB,GAAU,CAACkjB,GAAQ,OAAO,CAACA,EAAO,YAAY,OAAO,OAAO,IAAM3gB,EAAKzC,GAAmBojB,EAAO,WAAWljB,CAAQ,EAAE,GAAG,CAACuC,EAAK,OAAO,IAAMlC,EAAO6iB,EAAO,MAAM,WAAW3gB,CAAI,EAAE,GAAGlC,GAAQ,YAAY,EAAE,CAAC,AAA2GA,EAAO,yBAAjF6iB,EAAO,MAAM,oBAAoB,WAAW7iB,EAAO,qBAAqB,EAA+B,MAAMA,EAAO,KAAK,EAAE,MAAO,CAAC,AAA2GA,EAAO,yBAAjF6iB,EAAO,MAAM,oBAAoB,WAAW7iB,EAAO,qBAAqB,EAA+B,MAAM,IAAMD,EAASysB,EAAO,eAAe,OAA8X,GAApXzsB,IAAW,UAAUC,EAAO,QAAQhM,GAAiB,GAAQ,EAAE,EAAO,kBAAkB,IAAe+L,IAAW,YAAYC,EAAO,QAAQjM,GAAmB,GAAQ,EAAE,EAAO,kBAAkB,KAAYiM,EAAO,QAAQlM,GAAe,CAAC,EAAE,EAAO,kBAAkB,IAAM,EAAO,UAAU04B,EAAO,iBAAiB,GAAG,EAAKA,EAAO,mBAAkB,EAAO,KAAKtqB,EAAK,UAAanC,IAAW,QAAQysB,EAAO,oBAAoB,CAAC,IAAMzrB,EAAW,GAAK,CAAID,GAAK,SAASd,IAAc6iB,EAAO,MAAM,oBAAoB,WAAW9hB,CAAU,EAAE,EAAO,sBAAsB,KAAKusD,GAA8B9gC,EAAO,sBAAsB9rB,EAAMyE,CAAG,EAAE,EAAE0d,EAAO,MAAM,iBAAiB,WAAW9hB,CAAU,EAAE,EAAO,sBAAsBA,CAAW,CAACf,EAAO,MAAM,EAAKwsB,EAAO,mBAAkB,EAAO,KAAKtqB,EAAK,SAAS,EAAO,OAAO,IAAOlC,EAAO,KAAK,CAAE,CAAC,SAASyxD,GAA0B,EAAO,EAAO,EAAM,EAAI,CAAC,IAAMzxD,EAAOwsB,GAAQ,aAAa,OAAO,GAAGxsB,IAAS,UAAU,CAAC,IAAMyD,EAAI+oB,EAAO,UAAU,GAAM/oB,IAAQ+oB,EAAO,eAAe/2B,EAAO,KAAKgO,EAAI,SAAS,UAAU,EAAO,EAAO,SAAS,KAAKA,EAAK,MAAM,GAAGzD,IAAS,mBAAmB,CAAC,IAAM2wC,EAAW,OAAOnkB,EAAO,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,GAAG,CAACmkB,EAAW,CAAC,EAAI,QAAQ,CAACxrC,EAAI,QAAQ6nD,GAA0BnqC,CAAM,EAAE,MAAO,CAAC,IAAM6uC,EAAO,GAAM,CAAKjpD,GAAYA,EAAK,WAAW,GAAO,CAAI,OAAOuG,GAAO,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS2hC,CAAU,IAAG,EAAM,QAAQ,CAAC3hC,EAAM,QAAS,CAAC,CAAE,EAAuB,GAArB0iD,EAAO7uC,EAAO,KAAK,EAAKA,EAAO,UAAW,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,UAAU6uC,EAAOr4C,GAAO,KAAK,EAAG2zC,GAA0BnqC,CAAM,CAAE,MAAM,GAAG7iB,IAAS,cAAc,CAAC,IAAM4sC,EAAOuiB,GAAwBhqD,CAAG,EAAQwsD,EAAQ,CAAC,CAACxsD,EAAI,sBAAsB,IAAI,IAAM0S,KAAQ+0B,EAAQ,GAAG+kB,EAASx1C,GAAiBtE,CAAI,OAAQ,GAAGA,EAAK,SAAS,CAACoE,GAAgBpE,CAAI,EAAE,IAAM5D,EAAK,MAAM,QAAQ4D,EAAK,QAAQ,EAAEA,EAAK,SAAS,CAACA,EAAK,QAAQ,EAAQgG,EAAM1T,EAAWqiB,EAAO,YAAY,SAAS,EAAEvY,EAAK,QAAQ,GAAK,CAAI0B,GAAK,OAAMA,EAAI,MAAM,KAAKkI,CAAK,CAAE,CAAC,CAAE,CAAE,EAAI,sBAAsB,CAAC8zC,CAAQ,MAAS3xD,IAAS,iBAAiBwxD,GAA4B3uC,EAAO2J,EAAO9rB,EAAMyE,CAAG,CAAG,CAAC,SAASysD,GAA2B,EAAO,CAA2Q,OAAtQ/uC,GAAmB,AAAoCA,EAAO,0BAAwB,GAAO,CAAC,IAAMzf,EAAQyf,EAAO,gCAAgC,yBAAyBA,EAAO,sBAAsB,wBAA4Bzf,GAAeA,EAAQ1C,CAAK,CAAE,EAAUmiB,EAAO,yBAAtQ,IAA8R,CAAC,SAASgvC,GAAyB,EAAO,EAAK,EAAO,EAAU,KAAK,EAAU,GAAM,CAAC,GAAG,CAAChvC,EAAO,OAAUivB,GAAQjvB,EAAO,0BAAyB,aAAaA,EAAO,uBAAuB,EAAE,EAAO,wBAAwB,KAAK,EAAO,+BAA+B,MAAS,CAACivB,GAAQC,GAAWlvB,EAAO,0BAAyB,aAAaA,EAAO,uBAAuB,EAAE,EAAO,wBAAwB,KAAK,EAAO,+BAA+B,MAAM,IAAMivC,EAAejvC,EAAO,6BAA6B,GAAWkvC,EAAWjgB,GAAOiQ,GAAM,IAAI,GAAYiQ,EAASnvC,EAAO,qBAAqBk/B,EAAWkQ,EAAWpvC,EAAO,uBAAuB,GAAmH,GAA1FivC,GAAgBjvC,EAAO,wBAAwBivB,IAAS,CAACA,GAAQmgB,IAAaF,GAA+B,CAAIjgB,GAAQiQ,IAAK,EAAO,oBAAoBA,GAAK,MAAO,CAAC,GAAG,CAACjQ,GAAQggB,GAAgB,CAAC/f,EAAU,CAAiD,GAAhD,EAAO,+BAA+BmgB,EAAarvC,EAAO,wBAAwB,OAAO,EAAO,wBAAwB,eAAe,CAAC,EAAO,wBAAwB,KAAK,IAAMmvB,EAAanvB,EAAO,+BAA+B,EAAO,+BAA+B,KAAKgvC,GAAyBhvC,EAAOk/B,EAAK,GAAM/P,EAAa,EAAI,CAAE,EAAE,EAAE,EAAE,MAAO,CAAC,GAAGF,GAAQggB,GAAgBjvC,EAAO,uBAAuBovC,GAAYA,IAAaF,EAAW,CAAC,IAAMI,EAAY1D,GAA0BuD,EAAS,EAAK,EAAE,GAAGG,EAAa,GAAG,CAAID,EAAUC,EAAYD,CAAS,EAAOC,EAAY,CAAE,OAAO1sC,EAAM,CAAC,QAAQ,KAAK,qDAAqDA,CAAK,CAAE,CAAE,CAAiN,GAAhN,EAAO,2BAA2B,GAAK,EAAO,sBAAsBqsB,EAAO,EAAO,oBAAoBA,EAAOiQ,EAAK,KAAK,EAAO,sBAAsBjQ,EAAOigB,EAAW,GAAG,EAAO,yBAAyBjgB,EAAUjvB,EAAO,UAAW,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,UAAW,EAAM,yBAAyBivB,EAAS,GAAG,CAACggB,GAAgB,CAAChgB,EAAO,OAA4C,IAAM1uC,EAAQqrD,GAAnC3c,EAAOiQ,EAAKiQ,EAA2DlgB,CAAM,EAAE,GAAI1uC,EAAe,GAAG,CAAI8uD,EAAU9uD,EAAQ8uD,CAAS,EAAO9uD,EAAQ,CAAE,OAAOqiB,EAAM,CAAC,QAAQ,KAAK,qDAAqDA,CAAK,CAAE,CAAC,CAAC,SAAS2sC,GAAoB,EAAO,EAAK,EAAK,EAAM,CAAC,IAAMpzD,EAAI6jB,GAAQ,gBAAoE,GAAG,CAAtC+rC,GAAyB7M,EAAK/iD,CAAkB,GAAG,CAAC6jB,GAAQ,QAAQ,CAAC3Z,EAAK,CAAC2oD,GAAyBhvC,EAAOk/B,EAAK,GAAM,KAAK,EAAI,EAAE,MAAO,CAAC,IAAMrjD,EAAEukB,GAAO,SAAelN,EAAEkN,GAAO,SAAwL,GAAG,EAA5JA,GAAO,eAAiD,OAAO,SAASvkB,CAAC,GAAG,OAAO,SAASqX,CAAC,GAAGrX,GAAGwK,EAAK,MAAMxK,GAAGwK,EAAK,OAAO6M,GAAG7M,EAAK,KAAK6M,GAAG7M,EAAK,QAAyB,CAAC2oD,GAAyBhvC,EAAOk/B,EAAK,GAAM9+B,GAAO,aAAa,EAAI,EAAE,MAAO,CAAC,IAAMhX,EAAI,YAAY,IAAI,EAAE,IAAIgX,GAAO,oBAAoB,GAAGhX,EAAK,OAAQ,IAAMgkD,EAAWhtC,GAAO,YAAY,EAAQovC,EAAa,CAAC,KAAK,MAAMnpD,EAAK,IAAI,EAAE,KAAK,MAAMA,EAAK,GAAG,EAAE,KAAK,MAAMA,EAAK,KAAK,EAAE,KAAK,MAAMA,EAAK,MAAM,EAAE2Z,EAAO,uBAAuB,CAAC,CAAC,CAAC,KAAK,GAAG,EAAQyvC,EAAmBzvC,EAAO,sBAAsB,GAAG,GAAqH,GAA/GA,EAAO,wBAAwBwvC,GAAcpmD,GAAK4W,EAAO,uBAAuB,GAAGyvC,GAA+BzvC,EAAO,2BAA2BotC,GAAYptC,EAAO,wBAAwBwvC,EAAc,OAAQ,EAAO,yBAAyBpC,EAAW,EAAO,sBAAsBoC,EAAa,EAAO,sBAAsBpmD,EAAI,IAAM6gC,EAAKoiB,GAA0BrsC,EAAO3Z,EAAKxK,EAAEqX,EAAE/W,CAAG,EAAE,GAAG8tC,EAAK,OAAO,EAAE,CAAC,IAAMmiB,EAAUF,GAAgClsC,EAAOk/B,EAAKjV,EAAK9tC,CAAG,EAAE,GAAGiwD,EAAU,CAAC4C,GAAyBhvC,EAAOosC,EAAU,GAAKhsC,GAAO,YAAY,EAAE,MAAO,CAAC,CAAC4uC,GAAyBhvC,EAAOk/B,EAAK,GAAM9+B,GAAO,YAAY,CAAE,CAAC,SAASsvC,GAA8B,EAAO,EAAS,GAAG,CAAKryD,IAAc,EAAO,2BAA2B,GAAM,EAAO,6BAA6BP,EAAS,EAAO,gCAAgCA,EAAS,CAAC,SAAS6yD,GAAgC,EAAO,EAAI,EAAS,CAAC,GAAG,CAACxzD,GAAK,yBAAyBA,GAAK,gBAAgB,SAAqE,OAA3DuzD,GAA8BryD,EAAO,OAAOP,GAAU,EAAE,CAAC,EAASA,EAAU,IAAMghB,EAAc,OAAOhhB,GAAU,EAAE,EAAkP,OAA5OO,EAAO,6BAA4B,EAAO,2BAA2B,GAAK,EAAO,6BAA6BygB,GAAe,EAAO,gCAAgCA,EAAiBzgB,EAAO,yBAAiCygB,EAAsBzgB,EAAO,8BAA8BA,EAAO,0BAA0BygB,CAAc,CAAC,SAAS8xC,GAA8B,EAAO,EAAW,EAAS,CAA4T,OAAxTvyD,EAAO,gCAAgCM,GAAYN,EAAO,mCAAmCO,KAAU,EAAO,8BAA8BD,EAAW,EAAO,iCAAiCC,EAAS,EAAO,2BAA2B,GAAO,CAAC,EAAO,+BAA+BD,EAAWC,IAAWC,CAAK,CAAE,GAAUR,EAAO,0BAA2B,CAAC,SAASwyD,GAAiC,EAAO,EAAW,EAAS,CAA2U,OAAvUxyD,EAAO,mCAAmCM,GAAYN,EAAO,sCAAsCO,KAAU,EAAO,iCAAiCD,EAAW,EAAO,oCAAoCC,EAAS,EAAO,8BAA8B,GAAO,CAAC,EAAO,+BAA+BD,EAAWC,IAAWC,CAAK,CAAE,GAAUR,EAAO,6BAA8B,CAAC,SAASyyD,GAAoB,EAAO,EAAI,CAAC,IAAM9yD,EAAWK,EAAO,YAAY,CAAC,EAAE,GAAG,CAACA,EAAO,OAAO,CAACL,EAAW,QAAQ,EAAEb,GAAK,iBAAiB,IAAO,CAAIkB,EAAO,qBAAoBA,EAAO,OAAO,gBAAgB,EAAED,GAAoCC,EAAOA,EAAO,KAAK,EAAE,EAAO,oBAAoB,GAAG,EAAO,uBAAuB,KAAK,EAAO,yBAAyB,GAAG,EAAO,yBAAyB,GAAG,EAAO,+BAA+B,GAAG,MAAO,CAAC,IAAMkC,EAAKpD,GAAK,eAAe,MAAYW,EAAS6yD,GAAgCtyD,EAAOlB,EAAIA,GAAK,eAAe,EAAE,EAAQiC,EAAMjC,GAAK,gBAAgB,EAAQe,EAASf,GAAK,gCAAgC,OAAOA,GAAK,mBAAmB,SAAe4zD,EAAmB,OAAO7yD,GAAU,QAAQ,CAAC,CAAC,YAAY,EAAQ8yD,EAAgB,CAAC,EAAE7zD,GAAK,0BAA0BA,GAAK,iCAA8D,GAA7B,EAAO,MAAM,UAAUiC,EAASmB,IAAO,SAAS,CAAC,IAAMF,EAAKiqD,GAActsD,EAAWF,CAAQ,EAAE,GAAG,CAACuC,EAAK,CAAIhC,EAAO,qBAAoBA,EAAO,MAAM,cAAc,EAAED,GAAoCC,EAAOA,EAAO,KAAK,EAAE,EAAO,oBAAoB,GAAG,EAAO,uBAAuB,KAAK,EAAO,yBAAyB,GAAG,EAAO,yBAAyB,GAAG,EAAO,+BAA+B,GAAG,MAAO,CAAC,IAAMoC,EAAc,KAAK,IAAI,EAAEtD,GAAK,wBAAwB,GAAG,EAAQuD,EAAU,GAAGL,EAAK,KAAK,GAAGnC,IAAiBS,EAAW,CAAC,SAAS+B,EAAUD,EAAc,MAAK,cAAkB,MAAK,mBAAuB,KAAoBswD,IAAqB,QAAO5zD,GAAK,sBAAsB,EAAK,CAAC,CAAC,KAAK,GAAG,EAAQ4C,EAAW1B,EAAO,MAAM,WAAWgC,CAAI,EAAuBhC,EAAO,2BAA2BM,IAA8B,EAAO,+BAA+B,IAAI,IAAMiC,EAAqBmwD,IAAqB,QAAQ1yD,EAAO,iCAAiCM,EAAW,GAAGN,EAAO,sBAAsBqC,GAAWrC,EAAO,2BAA2BM,EAAW,CAAC,IAAMkC,EAAaxC,EAAO,wBAAwB0B,EAAud,GAA5cyqD,GAA4B3pD,EAAa3C,CAAQ,EAAE,EAAa,QAAQ,GAAU6yD,IAAqB,QAAQxyD,EAA+BsC,CAAY,IAAI,EAAa,OAAO,IAAOA,EAAa,sBAAsB,CAAC,EAAK,CAACD,GAAsB,CAACC,EAAa,UAAU,GAAG,EAAEkwD,IAAqB,QAAQxyD,EAA+BsC,CAAY,IAAIA,EAAa,KAAK,EAAG,EAAO,uBAAuBA,EAAa,EAAO,yBAAyBR,EAAK,KAAQ0wD,IAAqB,QAAQ,CAACnwD,GAAsBzD,GAAK,iCAAiCA,GAAK,wBAAwB,CAAC,IAAM4D,EAAa6vD,GAA8BvyD,EAAOM,EAAWxB,EAAI,uBAAuB,GAAKkB,EAAO,+BAA+BwC,GAAcxC,EAAO,iCAAiC0C,IAAcjC,GAA2BT,EAAOA,EAAO,MAAMwC,EAAaE,CAAY,CAAG,MAAM3C,GAAoCC,EAAOA,EAAO,KAAK,EAAG,MAAO,CAAC,IAAMwB,EAAWxB,EAAO,wBAAwB,KAAW4yD,EAAWpxD,IAAaE,EAAiBmxD,EAAW7yD,EAAO,uBAAuB,MAAMqC,CAAS,EAA8IywD,EAAtH,CAAC,CAACtxD,GAAY,CAACoxD,GAAmDF,IAAqB,QAAQ,CAACC,IAAyD7zD,GAAK,oBAAoBsD,EAAc,GAA0hC,GAAvhC+pD,GAA4BzqD,EAAW7B,CAAQ,EAAE,EAAW,QAAQ,GAAU6yD,IAAqB,QAAQxyD,EAA+BwB,CAAU,IAAI,EAAW,OAAO,IAAOA,EAAW,mBAAmB,CAAC,EAAEA,EAAW,sBAAsB,CAAC,EAAsBixD,GAAiB,CAACnxD,GAAY,CAACqxD,GAAYH,IAAqB,QAAQ1yD,EAAO,2BAA2BM,EAA6BoB,EAAW,MAAM,EAAWoxD,GAAiB1G,GAAwB5qD,EAAWE,CAAU,EAAGA,EAAW,KAAK,EAAKkxD,EAAgBlxD,EAAW,UAAU,GAAEA,EAAW,KAAK,EAAWF,EAAeY,EAAc,EAAGZ,EAAW,YAAYE,EAAWU,EAAc,CAAC,CAACtD,GAAK,aAAa,EAAQ0C,EAAW,KAAK,EAAYY,EAAc,GAAGV,EAAW,OAAOU,CAAa,EAAG,AAAkCpC,EAAO,wCAAsB,IAAI,IAAKA,EAAO,sBAAsB,IAAIqC,CAAS,EAAE,EAAO,uBAAuBX,EAAW,EAAO,oBAAoBW,EAAU,EAAO,yBAAyBL,EAAK,KAAK,EAAO,yBAAyB1B,EAAcoyD,IAAqB,QAAQ5zD,GAAK,iCAAiCA,GAAK,wBAAwB,CAAC,IAAM4D,EAAa6vD,GAA8BvyD,EAAOM,EAAWxB,EAAI,uBAAuB,EAAE2B,GAA2BT,EAAOA,EAAO,MAAM0B,EAAWgB,CAAY,CAAE,MAAM3C,GAAoCC,EAAOA,EAAO,KAAK,EAAG,MAAO,CAAC,IAAM+yD,EAAc,CAAC,MAAMlzD,EAAS,MAAK,gCAAoC6yD,IAAqB,QAAO5zD,GAAK,sBAAsB,EAAK,CAAC,CAAC,KAAK,GAAG,EAAE,GAAGkB,EAAO,sBAAsB,OAAOA,EAAO,2BAA2B+yD,EAAe,OAAQ/yD,EAAO,MAAM,cAAc,EAAED,GAAoCC,EAAOA,EAAO,KAAK,EAAE,IAAMgzD,EAAW,CAAC,EAA6M,GAA3MrzD,EAAW,QAAQ,GAAM,CAAC,IAAMG,EAAOE,EAAO,MAAM,WAAWgC,CAAI,EAAEmqD,GAA4BrsD,EAAOD,CAAQ,EAAE,EAAO,QAAQ,GAAK,EAAO,OAAO,GAAMC,EAAO,MAAM,CAAC,CAAC,KAAK,EAAEkzD,EAAW,KAAKlzD,CAAM,CAAE,CAAC,EAAK4yD,IAAqB,QAAQ5zD,GAAK,iCAAiCA,GAAK,wBAAwB,CAAC,IAAM4D,EAAa8vD,GAAiCxyD,EAAO+yD,EAAcj0D,EAAI,uBAAuB,EAAEkC,GAAkChB,EAAOA,EAAO,MAAMgzD,EAAWtwD,CAAY,CAAE,CAAC,EAAO,uBAAuB,KAAK,EAAO,oBAAoB,MAAM,EAAO,yBAAyB,GAAG,EAAO,yBAAyBqwD,EAAc,EAAO,+BAA+B,EAAG,CAAC,SAASE,GAAwB,EAAO,EAAI,EAAM,QAAQ,CAAC,GAAIjzD,EAAc,GAAG,CAACyyD,GAAoBzyD,EAAOlB,CAAG,EAAE,EAAO,2BAA2B,EAAG,OAAOymB,EAAM,CAAC,IAAM2tC,EAAS,CAACC,EAAMr0D,GAAK,eAAe,GAAGA,GAAK,eAAe,GAAGA,GAAK,mBAAmB,EAAE,CAAC,CAAC,KAAK,GAAG,EAAKkB,EAAO,6BAA6BkzD,IAAU,EAAO,2BAA2BA,EAAS,QAAQ,KAAK,wFAAwF3tC,CAAK,GAAG,EAAO,yBAAyB,EAAG,CAAC,CAAC,SAAS6tC,GAAqB,EAAO,EAAG,EAAM,QAAQ,CAAC,GAAIpzD,GAAQ,MAAa,GAAG,CAACA,EAAO,MAAM,OAAOhJ,CAAE,EAAE,EAAO,sBAAsB,EAAM,OAAOuuB,EAAM,CAAKvlB,EAAO,wBAAuB,EAAO,sBAAsB,GAAK,QAAQ,KAAK,mDAAmDmzD,EAAM,6BAA6B5tC,CAAK,EAAG,CAAC,CAAC,SAAS8tC,GAAwB,EAAO,EAAK,EAAK,EAAM,CAAC,GAAG,CAACnB,GAAoBvvC,EAAOk/B,EAAK74C,EAAK+Z,CAAK,EAAE,EAAO,oBAAoB,EAAM,OAAOwC,EAAM,CAAK5C,EAAO,sBAAqB,EAAO,oBAAoB,GAAK,QAAQ,KAAK,6EAA6E4C,CAAK,EAAG,CAAC,CAAC,SAAS+tC,GAA2B,EAAM,CAAC,EAAE,CAAC,OAAOpjC,GAAO,CAAC,EAAA,CAAG,KAAK,EAAK,IAAwD,GAAG6e,EAAM,GAA9CoT,GAAyB/iD,CAA0B,GAAK,CAAC,CAAC,KAAK,GAAG,CAAE,CAAmI,SAAS4iD,GAA4B,EAAM,EAAW,KAAK,CAAyD,OAA5CoF,GAA0BhrD,EAAM62B,CAAuB,CAAC,CAAC,KAAK,GAAsD,CAAC,CAAtCkvB,GAAyB/iD,CAAgB,CAAG,CAAE,CAAC,SAASm0D,GAA6B,EAAM,EAAK,EAAI,CAAC,IAAMvhC,EAAStD,GAAkCtvB,CAAI,GAAG,CAAC,EAAQsK,EAAO,CAAC,MAAMsoB,EAAS,OAAO,EAAE,KAAKA,EAAS,MAAM,EAAE,KAAKA,EAAS,MAAM,EAAE,KAAKA,EAAS,MAAM,EAAE,KAAKA,EAAS,MAAM,EAAE,KAAKA,EAAS,MAAM,EAAE,KAAKA,EAAS,MAAM,CAAC,EAAE,GAAG,CAAClzB,GAAK,sBAA8D,MAAvC,GAAM,2BAA2B,GAAa4K,EAAQ,GAAGyP,EAAM,qBAAqBA,EAAM,cAAcA,EAAM,aAAc,OAAOA,EAAM,aAAc,GAAG,CAACA,EAAM,aAAgI,MAAlH,GAAM,aAAa,CAAC,GAAGzP,CAAM,EAAE,EAAM,mBAAmByP,EAAM,aAAa,EAAM,2BAA2B,GAAaA,EAAM,aAAc,IAAM6M,EAAK7M,EAAM,aAAmBgQ,EAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAErqB,EAAI,iBAAiB,GAAG,CAAC,EAAE,GAAGqqB,GAAQ,EAAqH,MAAlH,GAAM,aAAa,CAAC,GAAGzf,CAAM,EAAE,EAAM,mBAAmByP,EAAM,aAAa,EAAM,2BAA2B,GAAaA,EAAM,aAEloqB,IAAI8wC,EAAkB,GAAM,IAAI,IAAMjlD,KAAO,OAAO,KAAK0E,CAAM,EAAM,KAAK,IAAIA,EAAO1E,GAAKghB,EAAKhhB,EAAI,EAAE,OAAM,EAAkB,IAAM,EAAKA,KAAO0E,EAAO1E,GAAKghB,EAAKhhB,IAAMmkB,EAAuG,MAA/F,GAAM,2BAA2B8gC,EAAkB,EAAM,mBAAmB9wC,EAAM,aAAoB6M,CAAK,CAAC,SAASwtC,GAA4B,EAAM,EAAK,EAAM,EAAO,EAAY,EAAE,EAAU,EAAE,EAAc,KAAK,EAAO,KAAK,EAAW,KAAK,CAAC,IAAM1/C,EAAMqF,GAAO,MAAM,GAAG,CAACrF,EAAM,OAAO,EAAM,aAAa6O,GAAQ,cAAcxJ,EAAM,cAAc,EAAE,IAAMs6C,EAAMF,GAA6Bp6C,EAAM/Z,EAAK6zB,CAAU,EAAQ6lB,EAAa,CAAC,EAAE15C,GAAM,cAAcA,GAAM,QAAc25C,EAAYD,IAAe15C,GAAM,aAAaA,GAAM,aAAa,OAAO,OAAO,MAAYs0D,EAAc/uC,GAAQ,UAAU,oBAAoB,CAAC,EAAQ0mC,IAAYvS,EAAan0B,GAAQ,UAAU,oBAAoB7Q,EAAM,UAAU,sBAAsB,KAAKglC,EAAan0B,GAAQ,UAAU,cAAc7Q,EAAM,UAAU,gBAAgB,GAAS0lC,EAAYV,EAAa4a,EAAc,OAAO,EAAE,EAAQja,EAAWX,EAAa4a,EAAc,MAAM,EAAE,EAAQha,EAAWZ,EAAa4a,EAAc,MAAM,EAAE,EAAQ/Z,EAAWb,EAAa4a,EAAc,MAAM,EAAE,EAAQ9Z,EAAWd,EAAa4a,EAAc,MAAM,EAAE,EAAQ7Z,EAAWf,EAAa4a,EAAc,MAAM,EAAE,EAAQ5Z,EAAWhB,EAAa4a,EAAc,MAAM,EAAE,EAAQza,EAAUwa,EAAM,KAAWva,EAAUua,EAAM,KAAWta,EAAUsa,EAAM,KAAWra,EAAUqa,EAAM,KAAWpa,EAAUoa,EAAM,KAAWna,EAAUma,EAAM,KAAW1Z,EAASP,EAAYia,EAAM,MAAYzZ,EAAQP,EAAWR,EAAgBgB,GAAQP,EAAWR,EAAgBgB,GAAQP,EAAWR,EAAgBgB,EAAQP,EAAWR,EAAgBgB,EAAQP,EAAWR,EAAgBgB,EAAQP,EAAWR,EAA8C,GAApC,EAAM,QAAQl6C,GAAM,UAAU,GAAS,CAAC0U,EAAM,QAAQ,OAAO,IAAM+kC,EAAewS,EAAU,KAAK,IAAI,IAAItR,CAAQ,EAAEwN,EAA2BzzC,CAAK,EAAEA,EAAM,MAAM,UAAU+kC,CAAc,EAAE,IAAM31B,EAAO,CAAC,GAAGpP,EAAM,UAAU,kBAAkB,GAAG+kC,EAAe,GAAG/kC,EAAM,UAAU,kBAAkB,GAAG+kC,EAAe,GAAG/kC,EAAM,UAAU,kBAAkB,GAAG+kC,CAAc,EAAQr0B,IAAM1Q,EAAM,UAAU,eAAe,GAAG+kC,EAAkBz5C,GAAM,cAAe0U,EAAM,SAAS,IAAI,CAACoP,EAAO,EAAE82B,GAAS56C,EAAK,cAAc,GAAG,GAAG,CAAC8jB,EAAO,EAAE+2B,IAAS76C,EAAK,cAAc,GAAG,GAAG,CAAC8jB,EAAO,EAAEg3B,EAAO,EAAWpB,GAAcC,IAAc,QAGx1E30C,GAAuB,IAAIw1C,EAAW,KAAK,GAAG,IAAIC,EAAW,KAAK,GAAG,IAAIC,EAAW,KAAK,GAAG,IAAI,KAAK,EAAEz1C,GAAsB,aAAaD,EAAsB,EAAED,GAAwB,IAAI,CAAC+e,EAAO,EAAE+1B,EAAUsB,EAAY/1B,GAAK00B,EAAU,CAACh2B,EAAO,EAAEi2B,CAAS,CAAC,CAAC,gBAAgB90C,EAAqB,EAAEyP,EAAM,SAAS,IAAI2lC,EAAWt1C,GAAwB,EAAEu1C,EAAWv1C,GAAwB,EAAEw1C,EAAWx1C,GAAwB,CAAC,GAAQ2P,EAAM,SAAS,IAAI,CAACoP,EAAO,EAAE82B,EAAQO,EAAY/1B,GAAKy1B,GAAQ,CAAC/2B,EAAO,EAAEg3B,EAAO,EAAGpmC,EAAM,SAAS,IAAIqmC,EAAQ,KAAK,GAAG,IAAIC,EAAQ,KAAK,GAAG,IAAIC,EAAQ,KAAK,GAAG,GAAG,EAAEoM,EAA2B3yC,EAAM4yC,CAAa,CAAE,CAAC,SAASiN,GAAmB,EAAO,EAAM,EAAW,KAAK,EAAW,KAAK,CAAC,IAAMzjC,EAAMtP,GAAYwmC,GAA0BhrD,EAAM62B,GAAYtQ,GAAQ,eAAe,EAAQ6nC,EAAS8I,GAA2BpjC,CAAK,EAAE,GAAGvN,EAAO,gBAAgB6nC,EAAS,OAAO,EAAO,cAAcA,EAAS,IAAMoJ,kBAAO,IAAI,IAAI1jC,EAAM,SAAS,EAAK,IAAQ,CAAC,IAAM3sB,EAAI4+C,GAAyB/iD,CAAI,EAAE,GAAG,CAACmE,EAAI,OAAO,IAAMyB,EAAI,GAAG+pC,EAAM,GAAGxrC,IAAsB,GAAhBqwD,EAAO,IAAI5uD,CAAG,EAAK2d,EAAO,UAAU,IAAI3d,CAAG,EAAE,OAAO,IAAMy6C,EAAY,CAAC,MAAI,QAAM,MAAI,MAAM,KAAK,MAAM,KAAK,WAAW,CAAC,EAAE,mBAAmBrgD,GAAM,mBAAmB,KAAK,oBAAoBA,GAAM,kBAAkB,KAAK,0BAA0BA,GAAM,wBAAwB,KAAK,sCAAsB,IAAI,IAAI,uBAAuB,KAAK,oBAAoB,GAAG,yBAAyB,GAAG,yBAAyB,EAAE,EAAEujB,EAAO,UAAU,IAAI3d,EAAIy6C,CAAW,EAAE8C,EAAeh/C,CAAG,CAAC,CAAC,KAAK,GAAQ,CAAC,GAAG,CAACof,EAAO,UAAU,IAAI3d,CAAG,EAAE,OAAO,IAAM8O,EAAM3f,EAAoB8lB,EAAO,MAAM,EAAQqjC,EAAe0F,GAA6BlvC,CAAK,EAAQoqC,EAASv7B,EAAO,OAAO,UAAU,eAAe,EAAQkxC,EAAe7jD,GAA4B8D,CAAK,CAAC,CAAC,QAAQ,IAAI3hB,CAAa,EAAE8xD,GAAkBnwC,CAAK,EAAEyzC,EAA2BzzC,CAAK,EAAE,EAAM,SAAS,YAAYmG,EAAO,QAAQ,GAAG,EAAM,SAAS,oBAAoBqjC,EAAe,EAAM,SAAS,oBAAoBuW,EAAe,MAAM,EAAE,EAAM,SAAS,cAAc3V,EAAS,EAAM,SAAS,oBAAoB9+C,GAAM,kBAAkB,KAAK,EAAM,SAAS,0BAA0BA,GAAM,wBAAwB,KAAK,EAAM,SAAS,iBAAiBA,GAAM,eAAe,GAAG,EAAM,QAAQA,GAAM,UAAU,GAAM,EAAY,MAAM0U,EAAM,EAAY,WAAWlE,GAAiCkE,EAAMmG,EAAO,YAAY,CAAC,CAAC,EAAE,EAAY,QAAQ,GAAK,EAAY,UAAU1W,EAAOk8C,EAAY,WAAW,SAAQ,EAAY,MAAM,IAAIrrD,GAAqB0f,CAAK,GAAG6O,EAAO,MAAM,IAAI7O,CAAK,EAAEg5C,GAA0BnqC,CAAM,EAAE,IAAMsQ,EAAW7zB,GAAM,mBAAmBujB,EAAO,iBAAiBskC,GAA0B7qD,EAAM,CAAC,EAAEomD,EAA4B1uC,EAAMmf,CAAU,EAAE,EAAY,mBAAmB7zB,GAAM,mBAAmB,KAAK,EAAY,0BAA0BA,GAAM,wBAAwB,KAAK,EAAY,qBAAqB6zB,GAAY,eAAep0B,GAAao0B,CAAU,CAAE,CAAC,CAAC,CAAC,MAAM,GAAO,CAAC,QAAQ,KAAK,gDAAgD1N,CAAK,CAAE,CAAC,CAAE,CAAC,EAAE,IAAI,GAAK,CAACvgB,EAAImU,KAASwJ,EAAO,UAAcixC,EAAO,IAAI5uD,CAAG,IAAcmU,EAAM,OAAMwJ,EAAO,MAAM,OAAOxJ,EAAM,KAAK,EAAKA,EAAM,OAAM9F,GAAsB8F,EAAM,KAAK,EAAEA,EAAM,OAAO,gBAAgB,EAAEwJ,EAAO,UAAU,OAAO3d,CAAG,EAAE8nD,GAA0BnqC,CAAM,EAAG,CAQtwG,SAASmxC,GAAsB,EAAM,CAAC,GAAK,CAAC,QAAM,CAAC,EAAE,OAAK,cAAc,eAAa,EAAE,cAAY,EAAE,mBAAiB,IAAI,cAAY,WAAW,gBAAc,IAAI,eAAa,IAAI,cAAY,GAAK,iBAAe,GAAK,mBAAiB,GAAM,iBAAe,IAAI,eAAa,GAAG,kBAAgB,GAAM,QAAM,IAAO13D,EAAY23D,GAAc1/D,EAAa,IAAI,EAAQ2/D,EAAkB3/D,EAAa,QAAQ,KAAK,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAO,CAAC4/D,EAAWC,IAAe5/D,MAAmBmxB,GAAwB,CAAC,EAAO,CAAC0uC,EAAWC,IAAe9/D,EAAe,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,EAAQ+/D,GAAchgE,EAAa8/D,CAAU,EAAE,GAAc,QAAQA,EAAW,IAAM1lD,GAAiBpY,EAAoB,EAAQ8vC,GAAe53B,GAAqBE,EAAgB,IAAI,SA6Du+D,OA7D99DvY,MAAoB,CAAC,GAAGgM,IAAO,WAAW,OAAO,IAAMoyD,EAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAc,QAAQA,EAAMF,GAAcE,CAAK,CAAE,EAAE,CAACpyD,CAAI,CAAC,EAAEgF,OAA2B,CAAC,IAAMoE,EAAO8Z,GAAwB,EAAQmvC,MAAe,CAA2F,IAAMC,EAA1Ej/D,IAAS,SAAaA,EAAO,YAAY,IAAIi7B,EAAiDikC,EAAYC,EAAa,EAAO,WAAWxyD,EAAK,EAAO,uBAAuBA,IAAO,WAAW,EAAO,cAAcsyD,EAAW,EAAEA,EAAW,KAAK,EAAO,YAAYxgC,GAAa,WAAW,EAAO,cAAc2gC,EAAc,EAAE,OAAOA,CAAa,EAAE,KAAK,EAAO,aAAaC,EAAa,EAAE,OAAOA,CAAY,EAAE,KAAK,EAAO,YAAY,CAAC,CAACC,EAAY,EAAO,eAAe,CAAC,CAACC,EAAe,EAAO,iBAAiB,CAAC,CAACC,EAAiB,EAAO,eAAe,KAAK,IAAI,EAAE,OAAOC,CAAc,GAAG,CAAC,EAAE,EAAO,cAAc,CAAC,CAACC,EAAM5vC,GAAoB,CAAE,EAAuX,MAArX,GAAO,WAAW/Z,EAAO,WAAW,GAAG,EAAKA,EAAO,UAAU,GAAG,QAAQ,KAAK,uEAAuEA,EAAO,UAAU,mGAAmG,EAAGipD,EAAW,EAAYh/D,IAAS,QAAaA,EAAO,iBAAiB,SAASg/D,EAAW,CAAC,QAAQ,EAAI,CAAC,MAAa,CAAC,IAAMW,EAAW9vC,GAAwB,EAAE,EAAW,UAAU,KAAK,IAAI,GAAG8vC,EAAW,WAAW,GAAG,CAAC,EAAKA,EAAW,YAAY,IAAG,EAAW,cAAc,KAAK,EAAW,cAAc,KAAK,EAAW,YAAY,WAAW,EAAW,cAAc,KAAK,EAAW,aAAa,KAAK,EAAW,YAAY,GAAK,EAAW,eAAe,GAAK,EAAW,iBAAiB,GAAM,EAAW,eAAe,IAAI,EAAW,cAAc,GAAM,EAAW,uBAAuB,GAAM,EAAW,WAAW,eAAe7vC,GAAoB,EAAY9vB,IAAS,QAAaA,EAAO,oBAAoB,SAASg/D,CAAU,CAAG,CAAE,EAAE,CAACryD,EAAKwyD,EAAaD,EAAYjkC,EAAiBwD,EAAY2gC,EAAcC,EAAaC,EAAYC,EAAeC,EAAiBC,EAAeC,CAAK,CAAC,EAAE/+D,MAAoB,CAAC,GAAUX,IAAS,OAAY,OAAO,IAAM+V,EAAO8Z,GAAwB,EAAE,GAAGljB,IAAO,WAAW,CAAC,EAAO,cAAc,KAAKmjB,GAAoB,EAAE,MAAO,CAAC,IAAI8vC,EAAM,EAAMC,EAAa,GAASC,EAAc,YAAY,IAAI,EAAMC,EAAe,EAAQC,EAAa,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,GAAM,MAAM,KAAK,IAAI,CAAC,EAAQC,EAAY,CAAC,SAAS,IAAW,QAAQ,IAAW,mBAAmB,CAAC,EAAQC,EAAQ,GAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,OAAO,SAASvwD,CAAK,EAAEA,EAAM,CAAC,CAAC,EAAQwwD,EAAc,GAAO,CAAC,EAAa,EAAEl1D,GAAO,SAAS,GAAG,EAAa,EAAEA,GAAO,SAAS,GAAG,EAAa,OAAO,GAAK,EAAa,MAAMA,GAAO,KAAK,EAAa,KAAK,CAAE,EAAQm1D,MAAmB,CAAC,EAAa,OAAO,GAAM,EAAa,EAAE,GAAG,EAAa,EAAE,GAAG,EAAa,MAAM,KAAK,EAAa,KAAK,CAAE,EAAQC,MAA0B,CAAC,EAAY,mBAAmB,YAAY,IAAI,EAAE,GAAI,EAAErgE,EAAO,iBAAiB,cAAcmgE,EAAc,CAAC,QAAQ,EAAI,CAAC,EAAEngE,EAAO,iBAAiB,YAAYmgE,EAAc,CAAC,QAAQ,EAAI,CAAC,EAAEngE,EAAO,iBAAiB,eAAeogE,EAAe,CAAC,QAAQ,EAAI,CAAC,EAAEpgE,EAAO,iBAAiB,QAAQqgE,EAAsB,CAAC,QAAQ,EAAI,CAAC,EAAErgE,EAAO,iBAAiB,YAAYqgE,EAAsB,CAAC,QAAQ,EAAI,CAAC,EAAE,IAAMxgC,MAAS,CAAC,IAAMygC,EAAS,MAAM,KAAKvqD,EAAO,OAAO,SAAS,GAAG,CAAC,CAAC,EAAuG+/B,EAAQyZ,EAAhF+Q,EAAS,KAAK,GAAMhU,GAAM,eAAe,CAAC,EAAE,iBAAiB,IAA+D,EAAQoD,EAAc5Z,EAAQ,cAAoB6Z,EAAe7Z,EAAQ,eAAqByqB,EAAgBzqB,EAAQ,YAAYA,EAAQ,eAAe,EAAQ0qB,EAAM7Q,EAAetE,EAAkCoV,EAAkB3qB,EAAQ,YAAY,EAAQ4qB,EAAiB5qB,EAAQ,WAAW,GAAsB,CAAC,OAAO,SAASmqB,EAAY,QAAQ,GAAG,CAAC,OAAO,SAASA,EAAY,OAAO,GAAG,KAAK,IAAIQ,EAAkBR,EAAY,QAAQ,EAAE,IAAI,KAAK,IAAIS,EAAiBT,EAAY,OAAO,EAAE,MAAqB,EAAY,SAASQ,EAAkB,EAAY,QAAQC,EAAiBL,EAAsB,GAAG,IAAMM,EAAgBV,EAAY,mBAAmB,YAAY,IAAI,EAAQW,EAAcN,EAAS,IAAI,GAAM,CAAC,IAAM9+D,EAAG8qD,GAAM,QAAQ,GAAG,CAAC9qD,GAAI,sBAAsB,OAAO,KAAK,IAAMq/D,EAAgBxU,EAAwBC,CAAI,EAAQ74C,EAAKjS,EAAG,sBAAsB,EAAQs/D,EAAWjR,GAA4BruD,CAAE,EAAQu/D,EAAcf,EAAa,QAAQA,EAAa,GAAGvsD,EAAK,MAAMusD,EAAa,GAAGvsD,EAAK,OAAOusD,EAAa,GAAGvsD,EAAK,KAAKusD,EAAa,GAAGvsD,EAAK,OAAmGutD,EAAnED,GAAe,CAACJ,GAAmB,SAAS,iBAAkD,SAAS,iBAAiBX,EAAa,EAAEA,EAAa,CAAC,EAAE,KAAWiB,EAAW,CAAC,EAAEF,GAAeC,GAASx/D,EAAG,WAAWw/D,CAAO,GAASrqD,EAAQkqD,GAAiBptD,EAAK,OAAOqiC,EAAQ,YAAY0qB,GAAO/sD,EAAK,IAAIqiC,EAAQ,eAAe0qB,GAAO/sD,EAAK,MAAMqiC,EAAQ,cAAcriC,EAAK,KAAKqiC,EAAQ,eAAegrB,EAAW,KAAWzpD,EAAS,KAAK,IAAI5D,EAAK,IAAIA,EAAK,OAAO,EAAE8sD,CAAe,EAAQW,EAAchB,GAASpqB,EAAQ,gBAAgBriC,EAAK,IAAIqiC,EAAQ,cAAc,KAAK,IAAI,EAAEA,EAAQ,eAAeriC,EAAK,MAAM,CAAC,EAAQ0tD,EAAc,KAAK,IAAI1tD,EAAK,OAAOqiC,EAAQ,cAAc,EAAE,KAAK,IAAIriC,EAAK,IAAIqiC,EAAQ,WAAW,EAAQzhB,EAAW6rC,EAAQiB,EAAc,KAAK,IAAI,EAAE1tD,EAAK,MAAM,CAAC,EAAQ+kD,EAAUlM,GAAM,OAAO,CAAC,EAAQ5yB,EAAY8+B,EAAU,aAAa,CAAC,EAAE,MAAM,CAAC,GAAGlM,EAAK,GAAG,UAAUA,EAAK,WAAW,EAAE,KAAK,CAAC,IAAI74C,EAAK,IAAI,KAAKA,EAAK,KAAK,MAAMA,EAAK,MAAM,OAAOA,EAAK,OAAO,MAAMA,EAAK,MAAM,OAAOA,EAAK,MAAM,EAAE,UAAU,CAAC,KAAKA,EAAK,KAAKqiC,EAAQ,aAAa,IAAIriC,EAAK,IAAIqiC,EAAQ,YAAY,MAAMriC,EAAK,MAAM,OAAOA,EAAK,OAAO,MAAMA,EAAK,MAAMqiC,EAAQ,aAAa,OAAOriC,EAAK,OAAOqiC,EAAQ,WAAW,EAAE,UAAQ,aAAW,aAAW,aAAW,WAAS,gBAAc,mBAAmB+qB,GAAiB,CAAC,CAACtU,EAAsBD,CAAI,EAAE,MAAM,CAAC,cAAckM,EAAU,UAAU9+B,EAAY,UAAU,GAAG,cAAc,OAAO8+B,EAAU,UAAU9+B,EAAY,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,MAAM,iBAAiB,GAAK,mBAAmB,EAAK,CAAC,CAAE,CAAC,CAAC,CAAC,OAAO,OAAO,EAAQ0nC,EAAWR,EAAc,OAAO,GAAMtU,EAAK,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAM+U,EAASpR,GAA4B95C,EAAED,CAAC,EAAkC,OAA7BmrD,IAAW,EAAyBlrD,EAAE,SAASD,EAAE,SAA7BmrD,CAAsC,CAAC,CAAC,CAAC,IAAIT,EAAc,MAAM,EAAE,IAAI,CAAC,IAAMS,EAASpR,GAA4B95C,EAAED,CAAC,EAAkC,OAA7BmrD,IAAW,EAAyBlrD,EAAE,SAASD,EAAE,SAA7BmrD,CAAsC,CAAC,CAAC,CAAC,IAAI,KAAWC,EAAU,KAAK,IAAI,GAAGxrB,EAAQ,iBAAiB,cAAc,IAAIA,EAAQ,iBAAiB,cAAc,EAAE,EAAQyrB,EAAUb,EAAuBc,EAAetB,EAAQqB,EAAUD,CAAS,EAAE,EAAO,cAAc,CAAC,KAAK,WAAW,aAAaF,GAAY,IAAI,GAAG,WAAWA,GAAY,MAAM,KAAK,gBAAgBA,GAAY,WAAW,KAAK,eAAeA,GAAY,eAAe,EAAE,iBAAiBA,GAAY,YAAY,EAAE,gBAAgBtrB,EAAQ,gBAAgB,iBAAiBA,EAAQ,WAAW,WAAWA,EAAQ,WAAW,YAAU,iBAAe,gBAAc,iBAAe,aAAaA,EAAQ,aAAa,YAAYA,EAAQ,YAAY,cAAcA,EAAQ,cAAc,eAAeA,EAAQ,eAAe,cAAcA,EAAQ,cAAc,mBAAmBuV,EAA4B,gBAAgBmV,EAAM,aAAa7Q,EAAe6Q,EAAM,EAAE,mBAAmBP,EAAY,mBAAmB,cAAc,CAAC,CAACD,EAAa,OAAO,SAASA,EAAa,EAAE,SAASA,EAAa,EAAE,aAAaA,EAAa,MAAM,WAAWA,EAAa,IAAI,MAAMY,EAAc,aAAaA,EAAc,OAAO,GAAMtU,EAAK,kBAAkB,CAAC,CAAC,KAAKiE,EAAwB,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,EAAEx6C,EAAO,eAAe,CAAC,CAAC,EAAE,WAAW6qD,EAAc,OAAO,GAAMtU,EAAK,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,IAAO,CAAC,GAAGA,EAAK,GAAG,WAAW,CAAC,CAACA,EAAK,WAAW,WAAW,OAAOA,EAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,OAAOA,EAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAACA,EAAK,OAAO,iBAAiB,UAAU,CAAC,CAACA,EAAK,OAAO,mBAAmB,SAASA,EAAK,OAAO,eAAe,GAAG,SAASA,EAAK,OAAO,eAAe,EAAE,EAAE,EAAE,UAAU,YAAY,IAAI,CAAC,EAAE,IAAM91C,EAAI,YAAY,IAAI,EAAKkpD,IAAQ0B,GAAY,IAAI,MAAMvB,GAAc,EAAauB,GAAY,IAAI,GAAGtxC,GAAoB,GAAWtZ,EAAIspD,EAAc,KAAKtpD,EAAIupD,EAAe,MAAK,EAAevpD,EAAIsZ,GAAoB,GAAG,EAAM9vB,EAAO,sBAAsB6/B,CAAI,CAAE,EAAS,OAAPA,EAAK,MAAY,CAAI+/B,GAAM5/D,EAAO,qBAAqB4/D,CAAK,EAAE5/D,EAAO,oBAAoB,cAAcmgE,CAAa,EAAEngE,EAAO,oBAAoB,YAAYmgE,CAAa,EAAEngE,EAAO,oBAAoB,eAAeogE,CAAc,EAAEpgE,EAAO,oBAAoB,QAAQqgE,CAAqB,EAAErgE,EAAO,oBAAoB,YAAYqgE,CAAqB,EAAE,EAAO,cAAc,KAAKvwC,GAAoB,CAAE,CAAE,EAAE,CAACnjB,CAAI,CAAC,EAAEhM,MAAoB,CAG77S,GAHw8SX,IAAS,QAG98S2M,IAAO,YAAY5L,EAAa,QAAQ,IAAIA,EAAa,OAAO,OAAOusD,EAA0B,EAAE,IAAMv3C,EAAO8Z,GAAwB,EAC3I,IAAI9Z,EAAO,WAAW,GAAG,EAAE,CAAC,QAAQ,KAAK,yEAAyEA,EAAO,UAAU,kEAAkE,EAAE,MAAO,CAAC,IAAM0rD,EAAYhD,EAAkB,QAAcr/C,EAAO,SAAS,cAAc,QAAQ,EAAE,GAAc,QAAQA,EAAOA,EAAO,aAAa,6BAA6B,MAAM,EAAEA,EAAO,aAAa,gCAAgCqiD,CAAW,EAAE,EAAO,MAAM,SAAS,WAAW,EAAO,MAAM,KAAK,IAAI,EAAO,MAAM,IAAI,IAAI,EAAO,MAAM,QAAQ,OAAO,EAAO,MAAM,cAAc,OAAO,EAAO,MAAM,OAAO,OAAOC,GAAc,EAAE,EAAE,EAAO,MAAM,UAAU,qBAAqB,EAAO,MAAM,WAAW,YAAY,IAAMnvD,EAAS,IAAIvT,GAAoB,CAAC,SAAO,MAAM,GAAK,UAAU,CAAC,CAAC2iE,EAAgB,gBAAgB,mBAAmB,mBAAmB,GAAK,QAAQ,EAAK,CAAC,EAAEpvD,EAAS,cAAc,EAAE,CAAC,EAAE,EAAS,wBAAwBkvD,EAAY/wC,GAA4B,SAAS,CAAC,KAAK,OAAO,QAAQ+wC,EAAY,SAAO,WAAW1rD,EAAO,WAAW,aAAahV,EAAa,QAAQ,EAAE,UAAUgV,EAAO,WAAW,EAAE,UAAUA,EAAO,OAAO,MAAM,EAAE,SAAS,CAAC,CAAC2pD,CAAK,CAAC,EAAE,IAAMhhC,GAAU1+B,EAAO,YAAY,IAAIi7B,EAAiB1oB,EAAS,cAAc,KAAK,IAAIvS,EAAO,kBAAkB,EAAE0+B,EAAS2gC,GAAc,IAAID,GAAe,GAAG,CAAC,EAAE7sD,EAAS,eAAe,EAAI,EAAE,IAAIqtD,EAAM,EAAMgC,EAAU,EAAMC,EAAW,EAAMC,EAAQ,EAAMC,EAAgB,EAAMC,EAAc,EAEh7CC,EAAuB,CAAC,EAAQC,kBAAQ,IAAI,IAAUC,kBAAY,IAAI,IAKtEC,EAAgB,OAAO,SAAW,KAAiB,CAAC,SAAS,OAAaC,MAA2B,CAAC,EAAgB,CAAC,SAAS,MAAO,EAAE,SAAS,iBAAiB,mBAAmBA,CAAsB,EAAE,IAAMC,kBAAoB,IAAI,IAAUC,GAA2B,EAAO,IAAO,CAA8E,GAA1E,CAACn1C,GAAQ,CAACk/B,GAAM,SAAS,OAAO,qBAAuB,KAAsBl/B,EAAO,uBAAuBk/B,EAAK,QAAQ,OAA8DgW,EAAhB,IAAIl1C,EAAO,GAAgB,CAAC,EAAE,aAAa,EAAE,EAAO,gBAAgB,GAAK,IAAMskB,EAAS,IAAI,sBAAsB,CAAC9tB,KAAS,CAAC,EAAO,gBAAgB,CAAC,CAACA,GAAO,cAAe,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE8tB,EAAS,QAAQ4a,EAAK,OAAO,EAAEgW,EAAoB,IAAIl1C,EAAO,IAAIskB,CAAQ,EAAE,EAAO,qBAAqB4a,EAAK,OAAQ,EAAQkW,kBAAuB,IAAI,IAAQC,GAAsB,GAAOC,EAAwB,CAAC,EAAMC,GAAS,GAAUC,GAAS,KAASC,EAAsB,KAASC,GAAoB,KAASC,GAAoB,GAASC,OAAuB,CAAIF,KAAqB,GAAoB,MAAM,SAASC,GAAoB,GAAoB,KAAK,GAAoB,GAAI,EAE5nCE,OAAmBjqD,GAAqBE,EAAgB,EAAQgqD,GAAwB,GAAO,CAAC,IAAMzT,EAAS,SAAS,kBAAkB,SAAS,iBAAiB,SAAS,KAAW8R,EAAU9R,GAAU,WAAWzvD,EAAO,SAASwtB,GAAO,WAAW,EAAM21C,EAAc,KAAK,IAAI,EAAE,KAAK,KAAKnjE,EAAO,aAAawtB,GAAO,gBAAgB,CAAC,CAAC,EAAE,IAAI,IAAMjU,KAAS,MAAM,KAAK,SAAS,KAAK,QAAQ,EAAE,CAAoJ,GAAhJA,IAAQspD,GAAuBtpD,IAAQ6F,GAAqB,EAAE7F,aAAiB,cAAkCvZ,EAAO,iBAAiBuZ,CAAc,CAAC,CAAC,WAAW,QAAQ,SAAS,IAAM9F,EAAK8F,EAAM,sBAAsB,EAAK9F,EAAK,OAAO,GAAGA,EAAK,QAAQ,IAAW,EAAc,KAAK,IAAI0vD,EAAc,KAAK,KAAK1vD,EAAK,OAAO8tD,CAAS,EAAE,KAAK,KAAKhoD,EAAM,UAAU,KAAK,IAAIA,EAAM,aAAaA,EAAM,YAAY,CAAC,CAAC,EAAE,CAAsN,OAAjNspD,GAAuB,gBAAe,EAAc,KAAK,IAAIM,EAAc,KAAK,KAAK1T,GAAU,cAAc,CAAC,EAAE,KAAK,KAAK,SAAS,iBAAiB,cAAc,CAAC,EAAE,KAAK,KAAK,SAAS,MAAM,cAAc,CAAC,CAAC,GAAU,KAAK,IAAI,EAAE0T,CAAa,CAAE,EAAQC,GAA4B,GAAO,CAAKP,IAAuB,EAAsB,SAAS,cAAc,KAAK,EAAEA,EAAsB,aAAa,qCAAqC,MAAM,EAAE,EAAsB,MAAM,SAAS,WAAW,EAAsB,MAAM,KAAK,IAAI,EAAsB,MAAM,IAAI,IAAI,EAAsB,MAAM,MAAM,OAAO,EAAsB,MAAM,SAAS,SAAS,EAAsB,MAAM,cAAc,OAAO,EAAsB,MAAM,OAAO,OAAOnB,GAAc,EAAE,EAAE,EAAsB,MAAM,QAAQ,SAAS,IAAM2B,EAAkBJ,GAAe,EAA0U,OAArUI,IAAoB,UAAUA,IAAoB,UAAW,EAAsB,MAAM,OAAO,SAAS,gBAAgB,aAAa,KAAW,EAAsB,MAAM,OAAO,GAAGH,GAAwB11C,CAAK,EAAE,IAAQq1C,EAAsB,gBAAgB,SAAS,MAAM,SAAS,KAAK,YAAYA,CAAqB,EAAUA,CAAsB,EAAQS,GAAiB,GAAO,CAAC,GAAG91C,GAAO,iBAAiB,CAACw1C,GAAmB,EAAE,IAAMO,EAAQH,GAA4B51C,CAAK,EAAKpO,EAAO,eAAeA,EAAO,gBAAgBmkD,GAASnkD,EAAO,cAAc,YAAYA,CAAM,EAAMA,EAAO,gBAAgBmkD,GAASA,EAAQ,YAAYnkD,CAAM,EAAG,EAAO,MAAM,OAAO,IAAI,GAASmkD,EAAQ,MAAO,CAAC,IAAMC,EAASh2C,GAAO,CAACA,EAAM,kBAAkBA,EAAM,gBAAgBA,EAAM,gBAAgB,SAAS,KAASg2C,GAAUA,IAAWZ,KAAmBxjD,EAAO,eAAeA,EAAO,gBAAgBokD,GAAUpkD,EAAO,cAAc,YAAYA,CAAM,EAAMokD,IAAW,SAAS,MAAMA,aAAoB,aAAaxjE,EAAO,iBAAiBwjE,CAAQ,CAAC,CAAC,WAAW,UAAUR,GAAmB,EAAE,GAAoBQ,EAAS,GAAoBA,EAAS,MAAM,UAAU,GAAG,EAAS,MAAM,SAAS,YAAoBV,IAAqBA,KAAsBU,GAAUR,GAAmB,EAAGQ,EAAS,YAAYpkD,CAAM,EAAE,EAAO,MAAM,OAAO,OAAOsiD,GAAc,EAAE,EAAE,GAAS8B,EAAS,EAAQC,IAA2B,EAAO,EAAK,EAAK,EAAW,IAAY,CAAC,IAAMz1D,EAAIm+C,EAAuBG,EAAK,KAAK,EAAMt+C,EAAkKof,EAAO,YAAYpf,GAAKof,EAAO,OAAgBA,EAAO,aAAapf,GAAKof,EAAO,kBAA2BA,EAAO,sBAAsB,YAAY,IAAI,EAAEA,EAAO,uBAA8B,EAAO,WAAWpf,EAAI,EAAO,qBAAqB,EAAM69C,EAAgB,IAAI79C,CAAG,GAAGk/C,GAA6B,EAAG,EAAO,iBAAiBF,EAAeh/C,CAAG,CAAC,CAAC,KAAK,GAAQ,CAAC,GAAG20D,IAAUT,EAAQ,IAAIwB,CAAS,IAAIt2C,EAAO,OAAUA,EAAO,QAAOA,EAAO,MAAM,OAAOA,EAAO,KAAK,EAAEA,EAAO,OAAO,gBAAgB,GAAG,IAAM1N,EAAM9gB,EAAoB8lB,EAAO,MAAM,EAAQ5F,EAAezE,GAAiCqF,EAAMgF,EAAO,YAAY,CAAC,CAAC,EAAQqjC,EAAe0F,GAA6B/tC,CAAK,EAAQikD,EAAU1N,GAAgBv4B,EAAWjqB,EAAK,MAAM,KAAK,IAAI,EAAEA,EAAK,MAAM,CAAC,EAAQ6qD,EAAe7jD,GAA4BiF,CAAK,CAAC,CAAC,QAAQ,IAAI9iB,CAAa,EAAQ+rD,EAASnxC,GAAiBmsD,EAAUrF,CAAc,EAAE5P,GAAkBhvC,CAAK,EACxpIge,EAAW,iBAAiB5e,EAAe,SAAS,GAAG4uC,GAA0BhuC,CAAK,EACzFmN,GAAoBnN,CAAK,EAGtBZ,EAAe,SAAS,GAAGY,EAAM,SAAS,GAAO,CAAInG,EAAM,QAAQ,CAACA,EAAM,gBAAeA,EAAM,aAAa,EAAE,EAAM,iBAAiB,GAAO,CAAC,EAAGy4C,EAA2BtyC,CAAK,EAAE,EAAM,SAAS,YAAYgF,EAAO,QAAQ,GAAG,EAAM,SAAS,oBAAoBqjC,EAAe,EAAM,SAAS,oBAAoBuW,EAAe,MAAM,EAAE,EAAM,SAAS,cAAc3V,EAAS,EAAO,MAAMjpC,EAAM,EAAO,WAAWZ,EAAe,EAAO,MAAMsO,EAAO,WAAW,OAAO,IAAIvuB,GAAqB6gB,CAAK,EAAE,KAAK,EAAO,sCAAsB,IAAI,IAAI,EAAO,uBAAuB,KAAK,EAAO,oBAAoB,GAAG,EAAO,yBAAyB,GAAG,EAAO,yBAAyB,GAAMo1C,GAAyBp3B,CAAU,IAAG,EAAO,yBAAyB,IAAM,EAAO,UAAU1vB,EAAI,EAAO,WAAW,GAAG,EAAO,iBAAiB,KAAKof,EAAO,MAAM,IAAI1N,CAAK,EAAE63C,GAA0BnqC,CAAM,EAAEyoC,GAAwBn2C,EAAM4sC,EAAK,MAAM74C,EAAK,KAAK,EAYl6Bw5C,EAA4BvtC,EAAMge,CAAU,EAAEggC,GAAwBtwC,EAAOsQ,EAAW,WAAW,EAAE0gC,GAAmBhxC,EAAOk/B,EAAK,MAAM5uB,CAAU,EAIpJ,EAAO,iBAAiB,GAIxBg2B,GAA+BtmC,EAAOsQ,EAAWnrB,CAAQ,EAAE,IAAMqxD,EAAeD,GAAWv2C,EAAO,OAAay2C,EAActxD,EAAS,cAAc,OAAOA,CAAQ,EAAE,GAAGsxD,GAAeD,EAAgBC,EAAcz2C,EAAO,MAAMw2C,CAAc,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAO,iBAAiB,GAAK,0BAA0B,CAAC,sBAAsBzW,EAA+B,CAAE,CAAC,CAAE,CAAC,MAAO,CAEvY,GAAGyW,EAAgB,GAAG,CAACrxD,EAAS,QAAQ6a,EAAO,MAAMw2C,CAAc,CAAE,MAAU,CAAM,CAAE,EAAO,iBAAiB,GAAK,0BAA0B,CAAC,sBAAsBzW,EAA+B,CAAE,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAO,CAAC,EAAO,WAAW,GAAG,EAAO,iBAAiB,KAAK,EAAO,qBAAqB,YAAY,IAAI,EAAE,IAAIA,GAAgC,EAAE,QAAQ,KAAK,4CAA4Cn9B,CAAK,CAAE,CAAC,IA3B4rF,EAAO,UAAU,GAAG,EAAO,WAAW,GAAMy8B,GAA4BH,EAAK,MAAM5uB,CAAU,GAAG0gC,GAAmBhxC,EAAOk/B,EAAK,MAAM5uB,CAAU,EA2Bz0F,EAAQomC,IAAW,EAAK,IAAO,CAAC,IAAMJ,EAAUnX,EAAsBD,CAAI,EAAE,GAAG,CAACoX,EAAU,OAAO,KAAK,IAAMhmC,EAAWg0B,GAA0BpF,GAAM,MAAM74C,GAAM,OAAO,CAAC,EAAM2Z,EAAO80C,EAAQ,IAAIwB,CAAS,EAAkV,OAA5Ut2C,IAAQ,EAAOipC,GAAe34B,EAAWjqB,EAAK,MAAM,KAAK,IAAI,EAAEA,EAAK,MAAM,CAAC,EAAE,EAAO,OAAO64C,EAAK,GAAG,EAAO,IAAIoX,EAAUrR,GAA0BjlC,EAAO7a,CAAQ,EAAE2vD,EAAQ,IAAIwB,EAAUt2C,CAAM,GAAG,EAAO,gBAAgBsQ,EAAW6kC,EAA0Bn1C,EAAOk/B,CAAI,EAAEmX,GAA0Br2C,EAAOk/B,EAAK74C,EAAKiqB,EAAWgmC,CAAS,EAASt2C,CAAO,EAAQ22C,IAA2B,EAAK,IAAeD,GAAUxX,EAAK74C,CAAI,EAAUuwD,IAA4B,EAAK,EAAS,IAAS,CAA0D,GAAtD,CAAC1X,GAAM,OAAO,CAACl/B,GAAQ62C,GAAU,SAAwB,CAAC72C,EAAO,OAAOA,EAAO,WAAW,OAAO,EAAE,MAAO,GAAM,IAAM3Z,EAAKwwD,GAAU,KAAK,GAAG,CAACxwD,GAAMA,EAAK,OAAO,GAAGA,EAAK,QAAQ,EAAE,MAAO,GAAM,IAAMiqB,EAAWg0B,GAA0BpF,EAAK,MAAM74C,EAAK,OAAO,CAAC,EAAQywD,EAAI,CAAC92C,EAAO,WAAW,GAAGA,EAAO,OAAO,MAAM,GAAGA,EAAO,WAAW,MAAM,EAAEsQ,GAAY,kBAAkB5zB,GAAgB4zB,CAAU,EAAE,KAAK,MAAMjqB,EAAK,KAAK,EAAE,KAAK,MAAMA,EAAK,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG2Z,EAAO,kBAAkB82C,GAAK92C,EAAO,iBAAkB,MAAO,GAAO,EAAO,iBAAiB,GAAK,EAAO,gBAAgB82C,EAAI,GAAG,CAAiD,EAAO,OAAO/N,GAAe/oC,EAAOsQ,EAAvEjqB,EAAK,MAAM,KAAK,IAAI,EAAEA,EAAK,MAAM,CAAuD,EAAEigD,GAA+BtmC,EAAOsQ,EAAWnrB,CAAQ,EAAK6a,EAAO,QAAUA,EAAO,MAAM,UAAU,sBAAqB,EAAO,MAAM,SAAS,cAAc5V,GAAiB4V,EAAO,OAAOA,EAAO,MAAM,SAAS,mBAAmB,GAAGyoC,GAAwBzoC,EAAO,MAAMk/B,EAAK,MAAM74C,EAAK,MAAM,KAAK2Z,EAAOsQ,CAAU,EAAEtxB,GAAsBghB,EAAOA,EAAO,MAAMA,EAAO,YAAY,CAAC,EAAEsQ,CAAU,GAAG,IAAI,GAAK,EAAE9Z,KAASwJ,EAAO,WAAW,CAAC,EAAOxJ,GAAO,OAAexX,GAAsBwX,EAAMA,EAAM,MAAMA,EAAM,YAAY,CAAC,EAAE8Z,CAAU,EAAG,IAAMymC,EAAa5xD,EAAS,cAAc,OAAOA,CAAQ,EAA4M,OAAvM4xD,EAAcA,EAAa/2C,EAAO,MAAMA,EAAO,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAO,iBAAiB,EAAM,CAAC,GAAQ7a,EAAS,UAAU6a,EAAO,MAAMA,EAAO,MAAM,EAAE,EAAO,iBAAiB,IAAc,EAAK,OAAO4C,EAAM,CAA8H,MAA7H,GAAO,iBAAiB,GAAM,EAAO,gBAAgB,GAAG,QAAQ,KAAK,iDAAiDA,CAAK,EAAS,EAAM,CAAC,EAAQo0C,IAAkC,EAAK,IAAW,CAAC,GAAG,CAAC9X,GAAM,OAAO,CAAC2X,GAAU,KAAK,OAAO,IAAMI,kBAAK,IAAI,IAAUC,EAAQnY,EAAuBG,EAAK,KAAK,EAAKgY,GAAQD,EAAK,IAAIC,CAAO,EAAE,IAAM5mC,EAAWg0B,GAA0BpF,EAAK,MAAM2X,EAAS,MAAM,OAAO,CAAC,EAAE,IAAI,IAAMp6D,KAAQgoD,GAA0BvF,EAAK,MAAM5uB,CAAU,EAAE,CAAC,IAAM1vB,EAAI4+C,GAAyB/iD,CAAI,EAAKmE,GAAIq2D,EAAK,IAAIr2D,CAAG,CAAE,CAAC,IAAMk2D,EAAI,MAAM,KAAKG,CAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAQE,EAAWjY,EAAK,IAAI4X,EAAI,GAAIA,GAAK/B,EAAY,IAAIoC,CAAU,IAAIL,EAAW,GAAY,IAAIK,EAAWL,CAAG,EAAE,IAAI,IAAMl2D,KAAOq2D,EAAMjX,GAAoBp/C,CAAG,EAAG+1D,GAA0BzX,EAAK2X,EAAS,IAAI,CAA/F,CAAiG,EAAQO,IAA4B,EAAO,EAAK,KAAK,EAAQ,CAAC,IAAI,CAAC,GAAIp3C,EAAc,CAA+R,GAA5RA,EAAO,0BAAyB,aAAaA,EAAO,uBAAuB,EAAE,EAAO,wBAAwB,KAAK,EAAO,+BAA+B,MAASA,EAAO,uBAAuBgvC,GAAyBhvC,EAAOk/B,EAAK,GAAM,KAAK,EAAI,EAAG4N,GAAyB9sC,EAAO,EAAK,EAAKxgB,GAAS,QAAQ,CAAwN,GAApNwgB,EAAO,QAAO5iB,GAAoC4iB,EAAOA,EAAO,KAAK,EAAEA,EAAO,MAAM,gBAAgB,GAAG,AAA0FA,EAAO,SAAhFA,EAAO,OAAO,SAASA,EAAO,KAAK,EAAEtP,GAAsBsP,EAAO,KAAK,EAAe,MAASA,EAAO,UAAU,CAAC,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,UAAcxJ,GAAO,QAAOpZ,GAAoCoZ,EAAMA,EAAM,KAAK,EAAEA,EAAM,MAAM,gBAAgB,GAAMA,GAAO,QAAOwJ,EAAO,OAAO,SAASxJ,EAAM,KAAK,EAAE9F,GAAsB8F,EAAM,KAAK,GAAIwJ,EAAO,UAAU,QAAQ,CAAE,CAAgC,GAA/BlD,GAAuBkD,CAAM,EAAKA,EAAO,mBAAmB,OAAO,CAAC,IAAI,IAAMpF,KAASoF,EAAO,kBAAmBA,EAAO,OAAO,SAASpF,CAAK,EAAKA,EAAM,QAAQA,EAAM,aAAaoF,EAAO,OAAO,SAASpF,EAAM,MAAM,EAAGA,EAAM,QAAQ,KAAK,UAAU,EAAEA,EAAM,UAAU,EAAG,EAAO,kBAAkB,OAAO,CAAE,CAAC,AAAgIoF,EAAO,UAArHA,EAAO,OAAO,SAASA,EAAO,MAAM,EAAEA,EAAO,OAAO,UAAU,UAAU,EAAEA,EAAO,OAAO,UAAU,UAAU,EAAgB,MAAM4mC,EAAyB5mC,EAAO,UAAU,EAAE4mC,EAAyB5mC,EAAO,UAAU,EAAE4mC,EAAyB5mC,EAAO,eAAe,EAAE,EAAO,WAAW,KAAK,EAAO,WAAW,KAAK,EAAO,gBAAgB,KAAKmlC,GAA2BnlC,CAAM,EAAE6D,GAAoB7D,CAAM,EAAKA,EAAO,MAAKk1C,EAAoB,IAAIl1C,EAAO,GAAG,CAAC,EAAE,aAAa,EAAEk1C,EAAoB,OAAOl1C,EAAO,GAAG,GAAG,EAAO,qBAAqB,KAAKA,EAAO,OAAO,UAAU,EAAE,EAAO,MAAM,KAAK,EAAO,WAAW,CAAC,EAAEA,EAAO,uBAAuB,QAAQ,EAAE,EAAO,uBAAuB,KAAK,EAAO,oBAAoB,GAAG,EAAO,yBAAyB,GAAG,EAAO,yBAAyB,GAAG,EAAO,cAAc,EAAK,CAAC,EAAO,iBAAiB,EAAvwD,CAA6wD,EAAQq3C,GAAW,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,EAAQC,EAAU,CAAC,OAAO,GAAM,KAAK,GAAG,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI9nE,EAAc,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,EAAK,EAAQ+nE,GAAuB,GAAO,CAAC,IAAI,GAAK,EAAEv3C,KAAU80C,EAAa90C,GAAQ,uBAAwE4I,GAAqB/qB,EAApDmiB,EAAO,iBAAiB,CAAC,CAAoC,GAAWgvC,GAAyBhvC,EAAOA,EAAO,oBAAoB,GAAMniB,EAAM,EAAI,CAAG,EAAQ25D,GAAkB,GAAO,CAAC,IAAM37D,EAAEgC,GAAO,SAAS,GAASqV,EAAErV,GAAO,SAAS,GAA6U,GAA1U,GAAW,EAAEhC,EAAE,GAAW,EAAEqX,EAAE,GAAW,KAAK,YAAY,IAAI,EAAE,EAAU,OAAO,GAAM,EAAU,KAAK,GAAG,EAAU,OAAO,KAAK,EAAU,KAAK,KAAK,EAAU,KAAK,KAAK,EAAU,IAAI,KAAK,EAAU,OAAO,KAAK,EAAU,MAAM,KAAK,EAAU,UAAUrV,GAAO,WAAW,KAAK,EAAU,MAAMhC,EAAE,EAAU,MAAMqX,EAAE,EAAU,MAAM,GAAS,CAAC,OAAO,SAASrX,CAAC,GAAG,CAAC,OAAO,SAASqX,CAAC,EAAE,OAAO,IAAMukD,EAAQ55D,GAAO,cAAc,QAAc21D,EAAc7qD,EAAO,eAAe,OAAO,CAAC,EAAQ+uD,EAAWC,GAAuBnE,EAAc,OAAO,GAAUqD,GAAU,OAAO,CAAC,CAAC,CAAC,OAAO,GAAU,CAAC,IAAMxwD,EAAKwwD,GAAU,UAAU,KAAyD,MAAjD,CAACxwD,GAAM,CAACwwD,GAAU,UAAU,QAAe,GAAah7D,GAAGwK,EAAK,MAAMxK,GAAGwK,EAAK,OAAO6M,GAAG7M,EAAK,KAAK6M,GAAG7M,EAAK,MAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAM4tD,EAASpR,GAA4B95C,EAAE,SAASD,EAAE,QAAQ,EAAkC,OAA7BmrD,IAAW,GAAyBlrD,EAAE,UAAU,UAAU,IAAID,EAAE,UAAU,UAAU,GAAhEmrD,CAAmE,CAAC,EAAE,IAAI,IAAM2D,KAAQF,EAAW,CAAC,GAAK,CAAC,WAAS,QAAME,EAAK,GAAG,CAAC1Y,GAAM,MAAM,SAAS,IAAM/iD,EAAImoD,GAA0BpF,EAAK,MAAM2X,EAAS,MAAM,OAAO,CAAC,EAAQgB,EAAajvC,GAAqB/qB,EAAM1B,CAAG,GAAG4vD,GAAyB7M,EAAK/iD,CAAG,EAAE,GAAG,EAAEA,GAAK,qBAAqB,KAAQ,CAACsvD,GAAoCvM,EAAK/iD,CAAG,GAAG,CAAC07D,EAAa,SAAS,IAAM73C,EAAO22C,GAA0BzX,EAAK2X,EAAS,IAAI,EAAE,GAAG,CAAC72C,GAAQ,OAAO,CAACA,GAAQ,WAAW,KAAK,SAAS,IAAMiqB,EAAKoiB,GAA0BrsC,EAAO62C,EAAS,KAAKh7D,EAAEqX,EAAE/W,CAAG,EAAE,GAAI8tC,EAAK,OAAgB,IAAG4tB,EAAa,CAAC,IAAM5L,EAAMhB,GAAuBjrC,EAAOiqB,EAAK,EAAE,CAAC,MAAM,EAA2Q,GAAtD+kB,GAAyBhvC,EAA5NisC,GAAO,OAAOA,EAAM,QAAQ/M,GAAM,MAAM,CAAC,GAAG+M,EAAM,IAAI/M,GAAM,IAAI,GAAG,MAAM+M,EAAM,MAAM,gBAAgBA,EAAM,iBAAiB,KAAK,QAAQ/M,GAAM,QAAQ,gBAAgBA,GAAM,eAAe,EAAEA,EAA+C,GAAKrhD,CAAK,EAAK,CAAC4tD,GAAoCvM,EAAK/iD,CAAG,GAAG,EAAEA,GAAK,qBAAqB,IAAQ,MAAQ,CAAC,GAAGsvD,GAAoCvM,EAAK/iD,CAAG,EAAG,IAAI,IAAMq0C,KAAOvG,EAAK,CAAC,IAAM8N,EAAQwT,GAAwBvrC,EAAO62C,EAAS,KAAKrmB,EAAI,OAAOr0C,CAAG,EAAE,GAAI47C,EAAiB,CAAwI,GAArI0f,GAASvK,GAAuBltC,EAAO+3B,EAAQ,IAAIA,EAAQ,OAAOl6C,CAAK,EAAGgvD,GAAwB7sC,EAAO+3B,EAAQ,IAAIA,EAAQ,MAAM,EAAKA,EAAQ,QAAQ,UAAU,CAAC2R,GAAoB,IAAI,eAAeK,GAAsB,8BAA8BhS,EAAQ,OAAO,YAAY,KAAKiS,GAAqB,IAAI,EAAE,EAAE,CAAC,EAAEjS,EAAQ,OAAO,YAAY,KAAKiS,GAAqB,IAAI,EAAE,EAAE,CAAC,EAAEjS,EAAQ,OAAO,YAAY,SAAS/3B,EAAO,OAAO,kBAAkBgqC,EAAoB,CAAC,CAAC,OAAO,EAAEA,GAAqB,IAAI,EAAE,EAAE,CAAC,EAAEjS,EAAQ,IAAI,QAAQ,EAAEkS,EAAoB,EAAE,EAAU,OAAO,GAAK,EAAU,KAAK,OAAO,EAAU,OAAOjqC,EAAO,EAAU,KAAKk/B,EAAK,EAAU,KAAK2X,EAAS,KAAK,EAAU,IAAI9e,EAAQ,IAAI,EAAU,OAAOA,EAAQ,OAAO,EAAU,MAAMgS,GAAsB,MAAM,EAAEuN,EAAU,OAAO,KAAKrN,EAAoB,CAAC,CAAC,IAAIlS,EAAQ,IAAI,QAAQ,EAAMA,EAAQ,IAAI,mBAAkB,EAAQ,IAAI,iBAAiBA,EAAQ,IAAI,SAAS,MAAM,GAAG0S,GAA8B1S,EAAQ,OAAO,cAAcl6C,EAAMk6C,EAAQ,GAAG,EAAE,MAAO,CAAC,KAA57B,CAAk8B,CAAE,GAAG,CAAC0f,IAAUt7D,GAAK,qBAAqB,IAAO,CAAC,EAAU,OAAO,GAAK,EAAU,KAAK,QAAQ,EAAU,OAAO6jB,EAAO,EAAU,KAAKk/B,EAAK,EAAU,KAAK2X,EAAS,KAAK,MAAO,CAAr2C,CAAs2C,CAAC,EAAQiB,GAAkB,GAAO,CAAgD,GAA5C,CAACR,EAAU,QAAQ,CAACA,EAAU,QAAiBA,EAAU,WAAW,MAAMz5D,GAAO,WAAW,MAAMA,EAAM,YAAYy5D,EAAU,UAAW,OAAQ,IAAMz7D,EAAEgC,GAAO,SAAS,GAASqV,EAAErV,GAAO,SAAS,GAAG,GAAG,CAAC,OAAO,SAAShC,CAAC,GAAG,CAAC,OAAO,SAASqX,CAAC,EAAE,OAAO,IAAMQ,EAAG7X,EAAEy7D,EAAU,MAAY3jD,EAAGT,EAAEokD,EAAU,MAA+F,GAAtF,KAAK,IAAI5jD,CAAE,EAAE,KAAK,IAAIC,CAAE,EAAE,KAAG,EAAU,MAAM,IAAK,EAAU,MAAM9X,EAAE,EAAU,MAAMqX,EAAKokD,EAAU,OAAO,QAAQA,EAAU,KAAKA,EAAU,MAAM,CAAC,IAAMjxD,EAAKixD,EAAU,MAAM3uD,EAAO,eAAe,OAAO,OAAO,GAAMu2C,EAAK,KAAKoY,EAAU,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,GAAG,CAACjxD,EAAK,OAA2M,GAApM,GAAgB,GAAGxK,EAAEwK,EAAK,MAAM,KAAK,IAAI,EAAEA,EAAK,KAAK,EAAE,EAAE,EAAE,GAAgB,EAAE,GAAG6M,EAAE7M,EAAK,KAAK,KAAK,IAAI,EAAEA,EAAK,MAAM,GAAG,EAAE,EAAEqjD,GAAoB,cAAcC,GAAgB2N,EAAU,OAAO,MAAM,EAAK5N,GAAoB,IAAI,eAAe4N,EAAU,MAAMrN,EAAoB,EAAE,CAACA,GAAqB,IAAIqN,EAAU,MAAM,EAAE,IAAM9lB,EAAW8lB,EAAU,QAAQ,gBAAgB,EAAQznB,EAAKynB,EAAU,IAAI,iBAAoB9lB,EAAW,GAAG3B,GAAiBoa,GAAqB,WAAWpa,CAAY,EAAE2B,GAAYyY,GAAqB,IAAIpa,CAAI,CAAC,CAAC,UAAU,CAAC,CAAC,eAAe2B,CAAU,CAAC,CAAC,IAAI3B,CAAI,EAAIynB,EAAU,IAAI,SAAS,KAAKrN,EAAoB,CAAE,CAAQ,KAAC,GAAU,OAAO,iBAAiBqN,EAAU,OAAO,iBAAiB,GAAG5jD,EAAG,KAAK,EAAU,OAAO,eAAe4jD,EAAU,OAAO,eAAe,GAAG3jD,EAAG,IAAK,EAAQokD,GAAgB,GAAO,CAAC,IAAMl8D,EAAEgC,GAAO,SAAS,GAASqV,EAAErV,GAAO,SAAS,GAASm6D,EAAY,CAAC,CAACV,EAAU,QAAQ,CAAC,CAACA,EAAU,MAAYW,EAASX,EAAU,KAAWY,EAAcZ,EAAU,OAAaa,EAAWb,EAAU,IAAU3lB,EAAc2lB,EAAU,OAAO,IAAI,GAAK,EAAEt3C,KAAU80C,EAASlI,GAAwB5sC,CAAM,EAAiM,GAA9L,EAAU,OAAO,GAAM,EAAU,KAAK,GAAG,EAAU,OAAO,KAAK,EAAU,KAAK,KAAK,EAAU,KAAK,KAAK,EAAU,IAAI,KAAK,EAAU,OAAO,KAAK,EAAU,MAAM,KAAK,EAAU,UAAU,KAAQi4C,IAAW,QAAQE,GAAYxmB,EAAc,CAAIA,EAAc,cAAcwmB,EAAW,mBAAkB,EAAc,kBAAkB,CAAC,KAAKA,EAAW,UAAUA,EAAW,iBAAiB,MAAM,CAAC,GAAG1N,GAA8B9Y,EAAc,YAAY9zC,EAAMs6D,CAAU,EAAKt6D,GAAO,cAAc,SAASivD,GAAyBoL,EAAc,GAAKr6D,CAAK,EAAG05D,GAAuB15D,CAAK,EAAE,MAAO,CAAwG,GAAvG05D,GAAuB15D,CAAK,EAAK,CAAC,OAAO,SAAShC,CAAC,GAAG,CAAC,OAAO,SAASqX,CAAC,GAAY8kD,GAAsB,KAAK,IAAIn8D,EAAEw7D,GAAW,CAAC,EAAE,GAAG,KAAK,IAAInkD,EAAEmkD,GAAW,CAAC,EAAE,GAAG,YAAY,IAAI,GAAGA,GAAW,MAAM,GAAG,IAAK,OAAQ,IAAM7D,EAAc7qD,EAAO,eAAe,OAAO,CAAC,EAAQ+uD,EAAWC,GAAuBnE,EAAc,OAAO,GAAUqD,GAAU,OAAO,CAAC,CAAC,CAAC,OAAO,GAAU,CAAC,IAAMxwD,EAAKwwD,GAAU,UAAU,KAAyD,MAAjD,CAACxwD,GAAM,CAACwwD,GAAU,UAAU,QAAe,GAAah7D,GAAGwK,EAAK,MAAMxK,GAAGwK,EAAK,OAAO6M,GAAG7M,EAAK,KAAK6M,GAAG7M,EAAK,MAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAM4tD,EAASpR,GAA4B95C,EAAE,SAASD,EAAE,QAAQ,EAAkC,OAA7BmrD,IAAW,GAAyBlrD,EAAE,UAAU,UAAU,IAAID,EAAE,UAAU,UAAU,GAAhEmrD,CAAmE,CAAC,EAAE,IAAI,IAAM2D,KAAQF,EAAW,CAAC,GAAK,CAAC,WAAS,QAAME,EAAW53C,EAAO22C,GAA0BzX,EAAK2X,EAAS,IAAI,EAAE,GAAG,CAAC72C,GAAQ,OAAO,CAACA,GAAQ,WAAW,KAAK,SAAS,IAAM7jB,EAAI6jB,EAAO,iBAAiBskC,GAA0BpF,GAAM,MAAM2X,EAAS,MAAM,OAAO,CAAC,EAAQ5sB,EAAKoiB,GAA0BrsC,EAAO62C,EAAS,KAAKh7D,EAAEqX,EAAE/W,CAAG,EAAE,GAAG,CAAC8tC,EAAK,OAAO,SAAS,IAAMmuB,EAAYnN,GAAuBjrC,EAAOiqB,EAAK,EAAE,CAAC,MAAM,EAAQouB,EAAaD,GAAa,OAAOlZ,GAAM,MAAYoZ,EAAWF,GAAa,iBAAiBC,GAAc,2BAA2B,KAAW93D,EAAQ83D,GAAc,cAAcC,GAAY,aAAa,GAAG,CAAC/3D,IAAU1C,CAAK,CAAE,OAAO+kB,EAAM,CAAC,QAAQ,KAAK,qDAAqDA,CAAK,CAAE,CAAC,GAAG6oC,GAAoCvM,EAAK/iD,CAAG,EAAG,IAAI,IAAMq0C,KAAOvG,EAAK,CAAC,IAAM8N,EAAQwT,GAAwBvrC,EAAO62C,EAAS,KAAKrmB,EAAI,OAAOr0C,CAAG,EAAE,GAAI47C,EAAiB,IAA8BA,EAAQ,OAAO,cAAcl6C,EAAMk6C,EAAQ,GAAG,EAAE6W,GAA0B5uC,EAAO+3B,EAAQ,OAAOl6C,EAAMk6C,EAAQ,GAAG,EAAKl6C,GAAO,cAAc,SAASivD,GAAyB9sC,EAAO,GAAKniB,CAAK,EAAG,MAAnJ,CAA0J,CAAE,MAAO,CAAC,EAGvta06D,GAAkB,GAAO,CAAC,IAAM18D,EAAEgC,GAAO,SAAS,GAASqV,EAAErV,GAAO,SAAS,GAAG,GAAG,CAAC,OAAO,SAAShC,CAAC,GAAG,CAAC,OAAO,SAASqX,CAAC,EAAE,OAAO,IAAMsgD,EAAc7qD,EAAO,eAAe,OAAO,CAAC,EAAQ+uD,EAAWC,GAAuBnE,EAAc,OAAO,GAAUqD,GAAU,OAAO,CAAC,CAAC,CAAC,OAAO,GAAU,CAAC,IAAMxwD,EAAKwwD,GAAU,UAAU,KAAyD,MAAjD,CAACxwD,GAAM,CAACwwD,GAAU,UAAU,QAAe,GAAah7D,GAAGwK,EAAK,MAAMxK,GAAGwK,EAAK,OAAO6M,GAAG7M,EAAK,KAAK6M,GAAG7M,EAAK,MAAO,CAAC,EAAE,IAAI,IAAMuxD,KAAQF,EAAW,CAAC,GAAK,CAAC,WAAS,QAAME,EAAK,GAAG,CAAC1Y,GAAM,MAAM,SAAS,IAAM/iD,EAAImoD,GAA0BpF,EAAK,MAAM2X,EAAS,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC16D,GAAK,YAAYA,GAAK,sBAAsB,SAAS,IAAM6jB,EAAO22C,GAA0BzX,EAAK2X,EAAS,IAAI,EAAE,GAAG,CAAC72C,EAAO,SAASniB,EAAM,iBAAiB,EAAE,IAAM8b,EAAO,KAAK,KAAK9b,EAAM,QAAQ,GAAG,KAAK,EAAE,EAAO,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGmiB,EAAO,gBAAgB,GAAGrG,CAAM,CAAC,EAAE,MAAO,CAAC,EAAE3H,EAAO,iBAAiB,QAAQumD,GAAkB,CAAC,QAAQ,EAAK,CAAC,EAAE3lE,EAAO,iBAAiB,cAAc4kE,GAAkB,CAAC,QAAQ,EAAI,CAAC,EAAE5kE,EAAO,iBAAiB,cAAcklE,GAAkB,CAAC,QAAQ,EAAI,CAAC,EAAEllE,EAAO,iBAAiB,YAAYmlE,GAAgB,CAAC,QAAQ,EAAI,CAAC,EAAEnlE,EAAO,iBAAiB,gBAAgBmlE,GAAgB,CAAC,QAAQ,EAAI,CAAC,EAAE,IAAMS,IAA2B,EAAO,EAAS,IAAQ,CAAC,IAAMC,EAAU5B,GAAU,UAI5zC,GAJy0C,CAAC72C,GAAQ,CAACy4C,GAAoB,CAACz4C,EAAO,OAAOA,EAAO,UAAU,OAAO,GAI34CA,EAAO,mBAAmB,GAAM,OAAO,IAAMozC,EAAMhzC,GAAO,iBAAiB,EAAQs4C,EAASD,EAAU,KAAWE,EAAQF,EAAU,IAAIrF,EAAYwF,EAAUF,EAASD,EAAU,MAAYI,EAAWF,EAAQF,EAAU,OAAaK,EAAY,KAAK,IAAI,EAAEJ,CAAQ,EAAQK,EAAa,KAAK,IAAIvE,EAAUoE,CAAS,EAAQI,EAAW,KAAK,IAAI,EAAEL,CAAO,EAAQM,EAAc,KAAK,IAAIxE,EAAWoE,CAAU,EAAQK,EAAaH,EAAaD,EAAkBK,EAAcF,EAAcD,EAAW,GAAGE,GAAc,GAAGC,GAAe,EAAE,OAAOh0D,EAAS,YAAY,KAAK,MAAMuzD,CAAQ,EAAE,KAAK,MAAMjE,EAAWoE,CAAU,EAAE,KAAK,MAAMJ,EAAU,KAAK,EAAE,KAAK,MAAMA,EAAU,MAAM,CAAC,EAAEtzD,EAAS,WAAW,KAAK,MAAM2zD,CAAW,EAAE,KAAK,MAAMrE,EAAWwE,CAAa,EAAE,KAAK,MAAMC,CAAY,EAAE,KAAK,MAAMC,CAAa,CAAC,EAAE,IAAMh9D,EAAI6jB,EAAO,iBAAiBskC,GAA0BtkC,EAAO,sBAAsB,CAAC,EAAEy4C,EAAU,OAAO,CAAC,EAI5wB,GADnI9vD,EAAO,aAAa,SAAiG,EAAS,YAAY,EAA5G,EAAS,YAAYpN,GAAcY,EAAI,cAAc,EAAoF,EAAS,oBAAoBA,EAAI,SAClMktD,GAAmBrpC,CAAM,EAAK7jB,EAAI,iBAAiB6oD,GAAqBhlC,EAAO7jB,EAAI,eAAe,EAAEA,EAAI,gBAAgB,EAAE,EAAMA,GAAK,aAAa,SAAS,CAAC,AAAyB6jB,EAAO,eAAa,IAAIrvB,GAAoB,EAAO,aAAa,OAAOwL,GAAK,cAAc,KAAK6jB,EAAO,aAAa,OAAOA,EAAO,MAAM,EAAE,IAAMo5C,EAAUX,EAAU,MAAM,EAAQY,GAAW,EAAU,IAAW,CAAC,IAAMC,EAAQZ,EAASU,EAAUG,EAAeC,EAASF,EAAQF,EAAgBK,EAAe,KAAK,IAAI,EAAEH,CAAO,EAA2DI,EAAnC,KAAK,IAAIlF,EAAUgF,CAA8C,EAAEC,EAAkBC,GAAiB,GAAGP,GAAe,IAASh0D,EAAS,YAAY,KAAK,MAAMm0D,CAAO,EAAE,KAAK,MAAM7E,EAAWoE,CAAU,EAAE,KAAK,MAAMO,CAAS,EAAE,KAAK,MAAMX,EAAU,MAAM,CAAC,EAAEtzD,EAAS,WAAW,KAAK,MAAMs0D,CAAc,EAAE,KAAK,MAAMhF,EAAWwE,CAAa,EAAE,KAAK,MAAMS,CAAe,EAAE,KAAK,MAAMP,CAAa,CAAC,EAAEh0D,EAAS,OAAO6a,EAAO,MAAM25C,CAAS,EAAE,EAAEN,EAAUr5C,EAAO,aAAa,QAAQ,CAAC,EAAEq5C,EAAUr5C,EAAO,aAAa,QAAQ,CAAC,CAAS,MAAiBolC,GAA0BplC,EAAO7a,EAASszD,EAAU,MAAMA,EAAU,OAAOt8D,CAAgB,GAAG6jB,EAAO,eAAkBA,EAAO,YAAY,UAAS,EAAO,WAAW,SAAS,KAAK,MAAM,YAAY,IAAI,EAAE,MAAM7a,EAAS,gBAAgB,IAAI,EAAEA,EAAS,YAAY,KAAK,MAAMuzD,CAAQ,EAAE,KAAK,MAAMjE,EAAWoE,CAAU,EAAE,KAAK,MAAMJ,EAAU,KAAK,EAAE,KAAK,MAAMA,EAAU,MAAM,CAAC,EAAEtzD,EAAS,WAAW,KAAK,MAAM2zD,CAAW,EAAE,KAAK,MAAMrE,EAAWwE,CAAa,EAAE,KAAK,MAAMC,CAAY,EAAE,KAAK,MAAMC,CAAa,CAAC,EAAEh0D,EAAS,eAAe,EAAI,EAAE,EAAO,cAAc,eAAe,GAAK6a,EAAO,cAAc,OAAO,GAAQ7a,EAAS,OAAO6a,EAAO,MAAMA,EAAO,MAAM,CAAG,EAAQ45C,GAAwB,GAAM,CAAC,IAAMC,EAAQzsD,GAAM,SAAS,KAAW0sD,EAAK1sD,GAAM,MAAM,CAAC,EAAQ0pD,EAAI,CAAC+C,GAAS,MAAM,GAAGA,EAAQ,KAAK,MAAMA,EAAQ,SAAS,CAAC,EAAE,GAAGA,EAAQ,KAAK,MAAMA,EAAQ,SAAS,CAAC,EAAE,GAAGC,EAAK,OAAOA,EAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,GAAGpI,GAAc,SAAS,OAAOoF,EAAI,OAAO,IAAMv0D,EAAM,CAAC,UAAQ,OAAK,UAAUu3D,EAAK,OAAO,GAAM,CAACr9D,EAAK,OAAO,CAAC,CAAC,OAAO,KAAKq6D,CAAG,EAAE,GAAc,QAAQv0D,EAAMkvD,GAAclvD,CAAK,CAAE,EAAQw3D,IAAuB,EAAM,IAAe,CAAC,GAAG,CAACC,GAAc,OAAO,CAACJ,GAAwB,IAAI,EAAE,MAAO,CAAC,IAAMK,EAAS75C,GAAO,SAAe85C,EAAS95C,GAAO,SAAe+5C,EAAc,CAAC,CAAC/5C,GAAO,eAAe,OAAO,SAAS65C,CAAQ,GAAG,OAAO,SAASC,CAAQ,EAAMn0D,EAAS,KAAK,IAAI,IAAM6xD,KAAQoC,EAAa,CAAC,IAAMnD,EAASe,GAAM,UAAUA,EAAW1Y,EAAK0Y,GAAM,MAAMjvD,EAAO,OAAO,MAAMkuD,EAAS,EAAE,EAAE,GAAG,CAAC3X,GAAM,MAAM,SAAS,IAAM/iD,EAAImoD,GAA0BpF,EAAK,MAAM2X,EAAS,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC16D,GAAK,eAAe,SAAS,IAAMm6D,EAAUnX,EAAsBD,CAAI,EAAQl/B,EAAOs2C,EAAUxB,EAAQ,IAAIwB,CAAS,EAAE,KAAK,GAAG,CAACt2C,GAAQ,CAACA,EAAO,OAAO,CAACA,EAAO,WAAW,KAAM,SAAU,IAAM85C,EAAKxL,GAAyBtuC,CAAM,EAAE,AAAaja,IAAS,CAAC,QAAQ,KAAK,MAAI,EAAE,IAAMM,EAAKwwD,EAAS,KAA4H,GAAG,EAA7GsD,GAAe9zD,GAAM4zD,GAAU5zD,EAAK,MAAM4zD,GAAU5zD,EAAK,OAAO6zD,GAAU7zD,EAAK,KAAK6zD,GAAU7zD,EAAK,QAAkB,SAAS,IAAM4jC,EAAKoiB,GAA0BrsC,EAAO3Z,EAAK4zD,EAASC,EAAS/9D,CAAG,EAAE,GAAG,CAAC8tC,EAAK,OAAO,CAAC2vB,GAAwB,CAAC,QAAQ,KAAK,MAAI,CAAC,EAAE,MAAO,CAAC,IAAMC,EAAQ1L,GAAyBnuC,EAAOiqB,EAAK,EAAE,CAAC,OAAO5jC,EAAK4zD,EAASC,CAAQ,EAAEN,GAAwB,CAAC,UAAQ,MAAI,CAAC,EAAE,MAAO,CAACA,GAAwB7zD,CAAQ,CAAE,EAAQq0D,IAAyB,EAAK,EAAS,EAAM,IAAuB,CAAC,IAAM/zD,EAAKwwD,GAAU,KAAW4B,EAAU5B,GAAU,UAAU,GAAG,CAAC3X,GAAM,OAAO,CAAC74C,GAAM,CAACoyD,GAAWpyD,EAAK,OAAO,GAAGA,EAAK,QAAQ,EAAG,OAAQ,IAAM2Z,EAAO22C,GAA0BzX,EAAK74C,CAAI,EAAE,GAAG,CAAC2Z,EAAO,OAAO,EAAO,qBAAqBk/B,EAAK,MAAM,EAAO,+BAA+BA,EAAK,gBAAgB,EAAO,cAAcl/B,EAAO,cAAc,GAAG,EAAE,IAAMsQ,EAAWtQ,EAAO,iBAAiBskC,GAA0BpF,GAAM,MAAM74C,GAAM,OAAO,CAAC,EAAKiqB,GAAY,kCAAiC,EAAW,wBAAwBy+B,GAA2B/uC,CAAM,GAAG,IAAMq6C,EAAe5V,GAA0BvF,EAAK,MAAM5uB,CAAU,EAAE0gC,GAAmBhxC,EAAOk/B,EAAK,MAAM5uB,EAAW+pC,CAAc,EAAE,IAAMhmE,EAAGg1D,GAAmBrpC,CAAM,EAAkD,EAAO,OAAO+oC,GAAe/oC,EAAOsQ,EAAvEjqB,EAAK,MAAM,KAAK,IAAI,EAAEA,EAAK,MAAM,CAAuD,EAAEkhD,GAA0BvnC,EAAOsQ,EAAWjqB,EAAK,KAAK,EAAEkkD,GAAsBvqC,EAAOsQ,CAAU,EAAEg2B,GAA+BtmC,EAAOsQ,EAAWnrB,EAAS9Q,CAAE,EAAEyyD,GAAuB9mC,EAAOsQ,CAAU,EAAE85B,GAA4BpqC,EAAO3Z,EAAK+Z,CAAK,EAAKJ,EAAO,mBAAmB,IAAO0nC,GAAyBp3B,CAAU,IAAG,EAAO,yBAAyB,IAAM,EAAO,iBAAiB,GAAK,IAAMgqC,EAAiB1S,GAAgB5nC,EAAOsQ,CAAU,EAAQojC,EAAW,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEmD,GAAU,YAAY,CAAC,CAAC,EAAE,EAAO,gBAAgBnD,EAAW,IAAM6G,EAAiBD,EAAiB5G,EAAiB3P,EAAcI,EAAsBnkC,EAAOk/B,EAAK,MAAMA,EAAK74C,EAAK2Z,EAAO,OAAOsQ,CAAU,EAAE,GAAGtQ,EAAO,MAAM,CAA2P,GAAvPA,EAAO,MAAM,UAAU,sBAAqB,EAAO,MAAM,SAAS,cAAc5V,GAAiB4V,EAAO,OAAOA,EAAO,MAAM,SAAS,mBAAmB,GAAGyoC,GAAwBzoC,EAAO,MAAMk/B,EAAK,MAAM74C,EAAK,MAAM09C,EAAc/jC,EAAOsQ,CAAU,EAAKA,EAAW,kBAAkB,GAAM,CAAC,IAAM3H,EAAY2H,EAAW,iBAAiB,GAAG,EAAO,MAAM,SAAS,kBAAkBtQ,EAAO,MAAM,SAAS,kBAAkB,GAAG3rB,EAAGs0B,EAAY,EAAO,MAAM,SAAS,GAAG3I,EAAO,MAAM,SAAS,gBAAiB,KAAM,GAAO,MAAM,SAAS,iBAAiB,EAAoD,GAA9BsQ,EAAW,aAAa,GAAsB,CAAC,IAAMlyB,EAAMkyB,EAAW,YAAY,GAAShc,EAAIgc,EAAW,gBAAgB,GAASkqC,EAAMx6C,EAAO,MAAM,SAAS,EAAE,EAAO,MAAM,SAAS,gBAAgBw6C,EAAM,EAAO,MAAM,SAAS,EAAEA,EAAM,KAAK,IAAI,YAAY,IAAI,EAAE,KAAKp8D,CAAK,EAAEkW,CAAI,KAAM,GAAO,MAAM,SAAS,gBAAgB0L,EAAO,MAAM,SAAS,EAAGgoC,GAAgChoC,EAAO,KAAK,EAAEioC,GAAgCjoC,EAAO,MAAMs6C,EAAiBhqC,CAAU,EAAE+5B,GAAwBrqC,EAAO,MAAMA,EAAOsQ,CAAU,EAAEuxB,GAAwB7hC,EAAO,MAAMs6C,EAAiBhqC,CAAU,EAAE,IAAMmqC,EAAuBnqC,EAAW,gBAAgBojC,EAAW6G,EAAiBpS,GAAwBnoC,EAAO,MAAM06C,EAAqB,EAAED,CAAsB,EAAEhK,GAAqBzwC,EAAO3rB,EAAG,MAAM,EAAE,EAAO,iBAAiB2rB,EAAO,MAAM,UAAU,uBAAuBA,EAAO,MAAM,SAAS,GAAGA,EAAO,MAAM,UAAU,kBAAkB,GAAG,IAAK,CAAC,IAAM/B,EAAWo8C,EAAe,IAAI,GAAK,CAACh4D,EAAImU,KAASwJ,EAAO,UAAU,CAA+C,IAAMvjB,EAAKwhB,EAA7C,OAAO,OAAO5b,CAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAA8B,IAAI,CAAC,EAAE,GAAG,CAACmU,EAAM,MAAM,SAAS,IAAMmkD,EAAel+D,GAAM,mBAAmB6zB,EAAiBsqC,EAAan+D,GAAM,iBAAiBo6D,EAAegE,EAASp+D,GAAM,iBAAiB,CAAC,GAAGA,GAAM,eAAeyiD,EAAK,GAAG,MAAMziD,EAAK,iBAAiB,gBAAgBA,GAAM,wBAAwB,KAAK,QAAQyiD,EAAK,QAAQ,gBAAgBA,EAAK,eAAe,EAAEA,EAAK,EAAM,mBAAmBziD,GAAM,mBAAmB,KAAK,EAAM,oBAAoBA,GAAM,kBAAkB,KAAK,EAAM,0BAA0BA,GAAM,wBAAwB,KAAK,IAAMq+D,EAAiBH,GAAgB,eAAez+D,GAAay+D,CAAc,EAAKnkD,EAAM,oBAAoBA,EAAM,uBAAuBskD,IAAkBjb,EAA4BrpC,EAAM,MAAMmkD,CAAc,EAAE,EAAM,qBAAqBG,GAAqBtkD,EAAM,MAAM,UAAU,sBAAqB,EAAM,MAAM,SAAS,cAAc/Z,GAAM,cAAcujB,EAAO,MAAMA,EAAO,MAAM,UAAU,eAAe,EAAE5V,GAAiB4V,EAAO,OAAOxJ,EAAM,MAAM,SAAS,mBAAmB,GAAG,IAAMukD,EAAkBt+D,GAAM,kBAAkB0nD,EAAsBnkC,EAAOvjB,EAAK,kBAAkByiD,EAAK,MAAM2b,EAASD,GAAc,MAAMv0D,EAAK2Z,EAAO,OAAO26C,CAAc,EAAE5W,EAAoO,GAAtN,EAAM,MAAM,SAAS,oBAAoBtnD,GAAM,kBAAkB,KAAK,EAAM,MAAM,SAAS,0BAA0BA,GAAM,wBAAwB,KAAK,EAAM,MAAM,SAAS,iBAAiBA,GAAM,eAAe,GAAMA,GAAM,gBAAgB,CAAC,IAAM8M,EAAQW,GAAuB8V,EAAO,OAAOA,EAAO,QAAQ,UAAU,SAAS,GAAG,CAAC,EAAE,EAAK,cAAc,CAAC,EAAEvjB,EAAK,gBAAgB,EAAE,KAAK,IAAI,EAAE4J,EAAK,OAAO,CAAC,EAAEkD,EAAQ,MAAM,EAAE,CAAC9M,EAAK,gBAAgB,EAAE,KAAK,IAAI,EAAE4J,EAAK,QAAQ,CAAC,EAAEkD,EAAQ,MAAM,CAAE,CAA0K,GAAzKsnD,GAA4Br6C,EAAM/Z,EAAKyiD,EAAK,MAAMl/B,EAAO,MAAMA,EAAO,kBAAkB,EAAE46C,GAAc,MAAM,OAAOv0D,EAAK,MAAM00D,EAAkB/6C,EAAO26C,CAAc,EAAKnkD,EAAM,MAAM,UAAU,GAAM,SAAS,GAAGmkD,EAAe,kBAAkB,GAAM,CAAC,IAAMhyC,EAAYgyC,EAAe,iBAAiB,GAAG,EAAM,MAAM,SAAS,kBAAkBnkD,EAAM,MAAM,SAAS,kBAAkB,GAAGniB,EAAGs0B,EAAY,EAAM,MAAM,SAAS,GAAGnS,EAAM,MAAM,SAAS,gBAAiB,KAAM,GAAM,MAAM,SAAS,iBAAiB,EAAG,GAAGmkD,EAAe,aAAa,GAAM,CAAC,IAAMv8D,EAAMu8D,EAAe,YAAY,GAASrmD,EAAIqmD,EAAe,gBAAgB,GAASH,EAAMhkD,EAAM,MAAM,SAAS,EAAE,EAAM,MAAM,SAAS,gBAAgBgkD,EAAM,EAAM,MAAM,SAAS,EAAEA,EAAM,KAAK,IAAI,YAAY,IAAI,EAAE,KAAKp8D,CAAK,EAAEkW,CAAI,KAAM,GAAM,MAAM,SAAS,gBAAgBkC,EAAM,MAAM,SAAS,EAAG,IAAMwkD,EAAqBv+D,GAAM,kBAAkBmrD,GAAgBpxC,EAAMmkD,CAAc,EAAEL,EAAuBW,EAAe,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEL,GAAc,YAAY/D,GAAU,YAAY,CAAC,CAAC,EAAQqE,EAAqBF,EAAqBC,EAAejT,GAAgCxxC,EAAM,KAAK,EAAEyxC,GAAgCzxC,EAAM,MAAMwkD,EAAqBL,CAAc,EAAEtQ,GAAwB7zC,EAAM,MAAMwJ,EAAO26C,CAAc,EAAE9Y,GAAwBrrC,EAAM,MAAMwkD,EAAqBL,CAAc,EAAE,IAAMQ,EAAsBR,EAAe,gBAAgBM,EAAeC,EAAqB/S,GAAwB3xC,EAAM,MAAMkkD,EAAqB,EAAES,CAAqB,EAAE1K,GAAqBj6C,EAAMniB,EAAG,WAAW,CAAE,CAACq8D,GAAwB1wC,EAAOk/B,EAAK74C,EAAK+Z,CAAK,EAAE+sC,GAAmBntC,EAAOk/B,EAAK74C,EAAK+Z,EAAMkQ,CAAU,EAAEu9B,GAAwB7tC,EAAOsQ,CAAU,EAAEg9B,GAA8BttC,EAAOsQ,EAAWj8B,CAAE,EAAEs5D,GAA8B3tC,CAAM,EAAED,GAAiBC,EAAOk/B,EAAK,MAAMA,EAAK,QAAQ74C,EAAKxU,CAAK,EAAKmuB,EAAO,OAAOswC,GAAwBtwC,EAAOsQ,EAAW,MAAM,EAAG,IAAM8qC,EAAuBf,EAAe,IAAI,GAAK,CAACh4D,EAAImU,KAASwJ,EAAO,UAAU,CAA+C,IAAMvjB,EAAK2+D,EAA7C,OAAO,OAAO/4D,CAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAA0C,IAAI,CAAC,EAAQg5D,EAAe5+D,GAAM,mBAAmB6zB,EAAiBgrC,EAAyB,CAAC,EAAE7+D,GAAM,mBAAmB4+D,GAAgB,iCAAuCE,EAAY9+D,GAAM,UAAU,GAA42B6zD,GAAwB95C,EAAh3B/Z,GAAM,aAAa,CAAC,GAAG4+D,EAAe,gBAAgB,GAAK,cAAc,OAAOE,CAAW,CAAC,CAAC,KAAK,EAAE,SAAS,MAAM,cAAcA,EAAY,eAAe9+D,EAAK,WAAW,EAAE,uBAAuBA,EAAK,WAAW4+D,EAAe,uBAAuB,kBAAkB5+D,EAAK,cAAc4+D,EAAe,kBAAkB,cAAc5+D,EAAK,UAAU4+D,EAAe,cAAc,mBAAmB5+D,EAAK,eAAe4+D,EAAe,mBAAmB,yBAAyB5+D,EAAK,aAAa4+D,EAAe,yBAAyB,gCAAgCC,EAAyB,wBAAwBA,EAAyBD,EAAe,wBAAwB,IAAI,EAAE,CAAC,GAAGA,EAAe,gCAAgCC,EAAyB,wBAAwBA,EAAyBD,EAAe,wBAAwB,IAAI,EAA2C,WAAW,CAAE,CAAC,GAAIr7C,EAAO,OAAOA,EAAO,UAAU,OAAO,EAAS,OAAOA,CAAO,EAAQw7C,IAAkB,EAAM,EAAM,IAAS,CAAyD,IAAM1wD,GAA9ClY,EAAO,YAAY,IAAIi7B,EAAoCokC,GAAc,IAAID,GAAe,IAAQ5mD,EAAI,KAAK,IAAIxY,EAAO,kBAAkB,EAAEkY,CAAG,EAAMO,EAAc,EAAE,IAAI,IAAMwrD,KAAYz2C,GAAO,OAAO,CAAC,EAAE,CAAC,GAAG,CAACy2C,GAAU,QAAQ,SAAS,IAAM3X,EAAKv2C,EAAO,OAAO,MAAMkuD,EAAS,EAAE,EAAE,GAAG,CAAC3X,GAAM,MAAM,SAAiF,IAAMuc,EAApEnX,GAA0BpF,EAAK,MAAM2X,EAAS,MAAM,OAAO,CAAmB,CAAC,EAAE,0BAA0B,EAAK4E,EAAQ,IAAG,EAAcpwD,EAAc,EAAE,KAAK,IAAIA,EAAcowD,CAAO,EAAEA,EAAS,CAAC,GAAGpwD,EAAc,EAAE,CAAC,IAAMqwD,EAAU,KAAK,IAAI,EAAE74D,EAAMC,CAAM,EAAqB44D,EAAUtwD,EAAIA,EAAoBC,IAAe,EAAI,KAAK,IAAI,GAAG,KAAK,KAAKA,EAAcqwD,CAAS,CAAC,EAAG,CAAC,OAAO,KAAK,IAAI,GAAGtwD,CAAG,CAAE,EAAQwnC,GAAO,GAAO,CAAC,IAAM+oB,EAAoB,KAAK,IAAI,EAAE,KAAK,MAAM/oE,EAAO,gBAAgB,OAAOA,EAAO,YAAYwtB,GAAO,eAAe,CAAC,CAAC,EAAQvd,EAAM,KAAK,IAAI,EAAE,KAAK,IAAI,KAAK,MAAMud,GAAO,eAAe,CAAC,EAAEu7C,CAAmB,CAAC,EAAQ74D,EAAO,KAAK,IAAI,EAAE,KAAK,MAAMsd,GAAO,cAAc,CAAC,CAAC,EAAQhV,EAAIowD,GAAiBp7C,EAAMvd,EAAMC,CAAM,EAAKD,IAAQ2xD,GAAW1xD,IAAS2xD,GAAY,KAAK,IAAIrpD,EAAIspD,CAAO,GAAG,MAAW,EAAU7xD,EAAM,EAAWC,EAAO,EAAQsI,EAAIjG,EAAS,cAAciG,CAAG,EAAEjG,EAAS,QAAQtC,EAAMC,EAAO,EAAK,EAAE,EAAO,MAAM,MAAM,GAAGD,EAAM,IAAI,EAAO,MAAM,OAAO,GAAGC,EAAO,IAAI,EAAQ84D,GAAoB,GAAO,CAAKx7C,GAA2C81C,GAAiB91C,CAAK,EAAE,EAAO,MAAM,QAAQ,QAAQ,EAAO,MAAM,UAAU,eAAe,KAAK,MAAMA,EAAM,YAAY,CAAC,EAAE,MAAM,KAAK,OAAOA,EAAM,WAAW,IAAIA,EAAM,iBAAiB,EAAE,EAAE,SAAjO,EAAO,MAAM,QAAQ,MAAoN,EAAQy7C,GAAiB,GAAM,CAAC,IAAMpiE,EAAMylD,GAAM,OAAO,CAAC,EAAmD,OAA9CzlD,EAAM,OAAO,SAAS,CAACA,EAAM,QAAc,GAAU,OAAOA,EAAM,WAAW,EAAE,CAAC,CAAC,KAAK,CAAE,EAAQqiE,GAAgB,GAAMD,GAAiB3c,CAAI,CAAC,CAAC,YAAY,EAAQ6c,GAAiB,GAAM,CAAC,IAAMzF,EAAUnX,EAAsByY,GAAM,IAAI,GAAG,GAAG,MAAM,GAAGA,GAAM,UAAU,IAAI,GAAG,GAAGtB,GAAY,EAAQ0F,IAAmB,EAAK,IAAQ,CAAC,IAAM31D,EAAKuxD,GAAM,UAAU,UAAU,GAAG,CAACvxD,EAAK,OAAO,KAAK,IAAM+sD,EAAMhzC,GAAO,iBAAiB,EAAQiC,EAAK,KAAK,MAAMhc,EAAK,MAAM,CAAC,EAAQ+W,EAAI,KAAK,OAAO/W,EAAK,KAAK,GAAG+sD,CAAK,EAAQvwD,EAAM,KAAK,MAAMwD,EAAK,OAAO,CAAC,EAAQvD,EAAO,KAAK,MAAMuD,EAAK,QAAQ,CAAC,EAAqC,OAAhCxD,GAAO,GAAGC,GAAQ,EAAS,KAAW,CAAC,IAAIi5D,GAAiBnE,CAAI,EAAE,IAAI,GAAGv1C,EAAK,GAAGjF,EAAI,GAAGva,EAAM,GAAGC,IAAS,OAAK,MAAI,QAAM,QAAM,CAAE,EAAQm5D,GAAqB,GAAM,CAAC,IAAMC,EAAG,KAAK,IAAI,EAAE71D,EAAK,IAAI,EAAQ81D,EAAG,KAAK,IAAI3H,EAAUnuD,EAAK,KAAKA,EAAK,KAAK,EAAQpC,EAAG,KAAK,IAAI,EAAEoC,EAAK,GAAG,EAAQgyC,EAAG,KAAK,IAAIoc,EAAWpuD,EAAK,IAAIA,EAAK,MAAM,EAAQ+1D,EAAGD,EAAGD,EAASlnB,EAAGqD,EAAGp0C,EAAMm4D,GAAI,GAAGpnB,GAAI,IAAS7vC,EAAS,WAAW,KAAK,MAAM+2D,CAAE,EAAE,KAAK,MAAMzH,EAAWpc,CAAE,EAAE,KAAK,MAAM+jB,CAAE,EAAE,KAAK,MAAMpnB,CAAE,CAAC,EAAE7vC,EAAS,WAAW,EAAEA,EAAS,WAAW,EAAE,EAAQk3D,GAAuB,GAAS,CAAC,CAAC5P,GAAS,MAAM,KAAK,KAAKA,EAAQ,QAAQ,IAAIA,EAAQ,UAAU,EAAE,EAAE,KAAW6P,GAAoB,GAAQ,CAAC,GAAG,CAACj/D,GAAQ,OAAO,CAAC8C,GAA0B9C,EAAOA,EAAO,KAAK,EAAG,MAAO,GAAO,IAAMF,EAAOE,EAAO,uBAAuB,MAAM,CAACF,GAAQA,EAAO,YAAY,IAAI,EAAM,EAAQo/D,IAA2B,EAAO,EAAI,IAAQ,CAAC,GAAG,CAACv8C,GAAQ,CAAC7jB,EAAI,MAAO,GAAyY,GAAhY6jB,EAAO,iBAAiB,GAAGA,EAAO,2BAA2BA,EAAO,mBAAmB,GAAG,GAAmB7jB,EAAI,iBAAiBA,EAAI,aAAaA,EAAI,kBAAkBA,EAAI,iBAAiB6jB,EAAO,4BAA4BA,EAAO,mCAAmD7jB,EAAI,qBAAqBikB,GAAO,eAA6Bk8C,GAAoBt8C,CAAM,GAAiBq8C,GAAuBr8C,EAAO,cAAc,GAAGq8C,GAAuBr8C,EAAO,iBAAiB,GAAGq8C,GAAuBr8C,EAAO,cAAc,GAAKA,EAAO,mBAAmB,KAAM,MAAO,GAAM,IAAI,GAAK,EAAExJ,KAASwJ,EAAO,WAAW,CAAC,EAAE,CAAC,IAAMw8C,EAAShmD,GAAO,oBAAoBra,EAAI,GAAGqa,GAAO,iBAAiB,GAAGA,GAAO,0BAA0BgmD,GAAU,aAAaA,GAAU,kBAAkBhmD,GAAO,4BAA4B8lD,GAAoB9lD,CAAK,EAAG,MAAO,EAAM,CAAC,MAAO,EAAM,EAAQimD,IAAqB,EAAK,EAAO,EAAI,IAAQ,CAAC,IAAMp2D,EAAKuxD,GAAM,UAAU,WAAW,CAAC,EAAE,MAAM,CAACmE,GAAiBnE,CAAI,EAAEA,GAAM,MAAM,WAAW,EAAEA,GAAM,UAAU,WAAW,EAAE,KAAK,MAAMvxD,EAAK,MAAM,CAAC,EAAE,KAAK,MAAMA,EAAK,KAAK,CAAC,EAAE,KAAK,MAAMA,EAAK,OAAO,CAAC,EAAE,KAAK,MAAMA,EAAK,QAAQ,CAAC,EAAE,KAAK,OAAOuxD,GAAM,UAAU,YAAY,GAAG,GAAG,EAAE,KAAK,MAAMx3C,GAAO,YAAY,CAAC,EAAE,KAAK,MAAMA,GAAO,WAAW,CAAC,EAAEjkB,GAAK,kBAAkB,GAAGA,GAAK,eAAe,GAAGA,GAAK,UAAU,GAAGA,GAAK,cAAc,GAAGA,GAAK,wBAAwB,GAAGA,GAAK,0BAA0B,GAAG6jB,GAAQ,OAAO,MAAM,GAAGA,GAAQ,WAAW,MAAM,EAAEA,GAAQ,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,CAAE,EAAQ08C,IAAwB,EAAK,EAAO,EAAI,IAAQ,CAAyB,GAArB,CAAC18C,GAAuB7jB,GAAK,kBAAkBA,EAAI,wBAAwB,CAAC64D,GAAiB74D,EAAI,2BAA2B6jB,EAAO,kBAAkB,IAAQ,MAAO,GAAO,GAAGA,EAAO,mBAAmB,GAAsE,MAA/D,GAAO,iBAAiB,KAAK,IAAIA,EAAO,kBAAkB,EAAE,CAAC,EAAS,GAAO,IAAM82C,EAAI2F,GAAoB7E,EAAK53C,EAAO7jB,EAAIikB,CAAK,EAA2U,OAAtU02C,IAAM92C,EAAO,qBAAoB,EAAO,mBAAmB82C,EAAI,EAAO,iBAAiB,KAAK,IAAI92C,EAAO,kBAAkB,EAAE,CAAC,GAAMu8C,GAA0Bv8C,EAAO7jB,EAAIikB,CAAK,GAAG,EAAO,iBAAiB,KAAK,IAAIJ,EAAO,kBAAkB,EAAE,CAAC,EAAS,KAAUA,EAAO,kBAAkB,GAAG,IAAG,IAAO,iBAA2B,GAAmB,EAAQ28C,GAA6B,GAAM,CAAC,IAAMljE,EAAMylD,GAAM,OAAO,CAAC,EAAQyM,EAAQzM,GAAM,iBAAiBzlD,EAAM,2BAA2B,CAAC,EAAE,MAAM,CAACA,EAAM,MAAM,GAAG,KAAM,QAAYA,EAAM,WAAW,GAAGslD,EAAuBtlD,CAAK,EAAEkyD,EAAQ,sBAAsB,GAAGA,EAAQ,kBAAkB,GAAGA,EAAQ,0BAA0B,GAAGA,EAAQ,wBAAwB,GAAG,KAAK,UAAUlyD,EAAM,kBAAkB,CAAC,CAAC,EAAE,KAAK,UAAUA,EAAM,gBAAgB,CAAC,CAAC,EAAE,KAAK,UAAUgrD,GAA0BhrD,EAAMkyD,CAAO,CAAC,CAAC,IAAI,IAAO,CAAC,IAAInM,GAAyB/iD,CAAI,EAAE,QAAQA,GAAM,QAAQ,MAAMA,GAAM,MAAM,KAAKA,GAAM,KAAK,KAAKA,GAAM,KAAK,KAAKA,GAAM,KAAK,KAAKA,GAAM,KAAK,KAAKA,GAAM,KAAK,KAAKA,GAAM,KAAK,aAAaA,GAAM,aAAa,SAASA,GAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAE,EAAQmgE,IAA0B,EAAK,IAAW,CAAC,IAAM/5D,EAAM,KAAK,MAAMg0D,GAAU,MAAM,OAAO,CAAC,EAAQx0D,EAAI,CAAC68C,GAAM,IAAI,GAAGyd,GAA6Bzd,CAAI,EAAEr8C,CAAK,CAAC,CAAC,KAAK,GAAG,EAAE,GAAGuyD,EAAuB,IAAI/yD,CAAG,EAAG,OAAO+yD,EAAuB,IAAI/yD,CAAG,EAAG,IAAMlG,EAAImoD,GAA0BpF,GAAM,OAAO,CAAC,EAAEr8C,CAAK,EAAsC,GAApCuyD,EAAuB,IAAI/yD,EAAIlG,CAAG,EAAKi5D,EAAuB,KAAK,IAAI,CAAC,IAAMyH,EAASzH,EAAuB,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAMA,EAAuB,OAAOyH,CAAQ,CAAE,CAAC,OAAO1gE,CAAI,EAAQ2gE,GAA0B,EAAK,EAAK,IAAgBrgE,GAA8E,CAAC,GAA/CsvB,GAAkCtvB,CAAuB,EAAE,cAAcyiD,GAAM,IAAI,GAAG,iBAAiBA,GAAM,OAAO,CAAC,EAAE,uBAAuBA,GAAM,iBAAiBA,GAAM,OAAO,2BAA2B,KAAK,gBAAgB2X,GAAU,KAAK,kBAAkB+F,GAAyB1d,EAAK2X,CAAQ,CAAC,EAAUkG,GAAsB,EAAK,IAAW,CAAC,IAAMtjE,EAAMylD,GAAM,OAAO,CAAC,EAAQ8d,EAAM5Z,GAAgC3pD,EAAM,WAAW,CAAC,EAAEo9D,GAAU,MAAM,OAAO,CAAC,EAAQlL,EAAQzM,GAAM,iBAAiBzlD,EAAM,2BAA2B,KAAWu1B,EAAG28B,EAAQ,CAAC,MAAMA,EAAQ,YAAYqR,EAAM,MAAM,KAAKrR,EAAQ,cAAcqR,EAAM,KAAK,KAAKrR,EAAQ,cAAcqR,EAAM,KAAK,KAAKrR,EAAQ,cAAcqR,EAAM,KAAK,KAAKrR,EAAQ,gBAAgBqR,EAAM,KAAK,KAAKrR,EAAQ,gBAAgBqR,EAAM,KAAK,KAAKrR,EAAQ,gBAAgBqR,EAAM,IAAI,EAAEA,EAAY/rD,EAAOxX,EAAM,aAAa,MAAY61B,EAASre,IAAS,OAAOxX,EAAM,WAAWA,EAAM,UAAU,GAAGA,EAAM,UAAUA,EAAM,cAAcA,EAAM,WAAW,GAA+C,OAAxC,OAAO61B,GAAU,EAAE,CAAC,CAAC,KAAK,EAAqBwtC,EAAyB,CAAC,YAAY7rD,EAAO,WAAS,UAAUxX,EAAM,WAAW,GAAG,QAAQ,GAAK,aAAa,GAAM,kBAAkB,GAAK,MAAMu1B,EAAG,OAAO,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,KAAKA,EAAG,MAAM,EAAE,aAAa,EAAK,EAAEkwB,EAAK2X,CAAQ,EAA1S,IAA4S,EAAQoG,EAAmB,GAAS,CAAC,IAAMC,EAAMC,EAAQ,IAAI,GAAGrjE,EAAE,UAAU,IAAI,CAAC,CAAC,OAAO,OAAO,EAAQsjE,EAAWD,EAAQ,IAAI,GAAGrjE,EAAE,UAAU,SAAS,CAAC,CAAC,OAAO,OAAO,EAAQujE,EAAM,GAAO,CAAC,IAAMh7C,EAAK,KAAK,IAAI,GAAGkL,EAAM,IAAI,GAAGuZ,EAAE,IAAI,CAAC,EAAQ1pB,EAAI,KAAK,IAAI,GAAGmQ,EAAM,IAAI,GAAGuZ,EAAE,GAAG,CAAC,EAAQxkB,EAAM,KAAK,IAAI,GAAGiL,EAAM,IAAI,GAAGuZ,EAAE,KAAK,CAAC,EAAQvkB,EAAO,KAAK,IAAI,GAAGgL,EAAM,IAAI,GAAGuZ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAK,MAAI,QAAM,SAAO,MAAMxkB,EAAMD,EAAK,OAAOE,EAAOnF,CAAG,CAAE,EAAE,MAAM,CAAC,KAAKigD,EAAMH,CAAK,EAAE,UAAUG,EAAMD,CAAU,CAAC,CAAE,EAAQE,IAAyB,EAAM,IAAgB/vC,EAAM,IAAI,GAAM,CAAC,GAAG,CAAC9wB,GAAM,kBAAkB,OAAOA,EAAK,IAAM8gE,EAAU9gE,EAAK,iBAAiB,KAAW+gE,EAAUC,GAAe,KAAK,GAAG,CAACF,GAAW,CAACC,EAAU,OAAO/gE,EAAK,IAAMihE,EAAaH,EAAU,KAAKA,EAAU,MAAM,EAAQI,EAAaJ,EAAU,IAAIA,EAAU,OAAO,EAAQK,EAAaJ,EAAU,KAAKA,EAAU,MAAM,EAAQK,EAAaL,EAAU,IAAIA,EAAU,OAAO,EAAE,MAAM,CAAC,GAAG/gE,EAAK,gBAAgB,CAAC,EAAEihE,EAAaE,EAAa,EAAED,EAAaE,CAAY,CAAC,CAAE,CAAC,EAAQlG,GAAuB,GAAc,CAAC,IAAMb,EAAIgH,EAAa,IAAI,GAAU,CAAC,IAAM5e,EAAKv2C,EAAO,OAAO,MAAMkuD,EAAS,EAAE,EAAQkH,EAASjC,GAAgB5c,CAAI,EAAQ74C,EAAKwwD,GAAU,MAAM,CAAC,EAAQ4B,EAAU5B,GAAU,WAAW,CAAC,EAAE,MAAM,CAACA,GAAU,IAAI,GAAG3X,GAAM,WAAW,EAAEyd,GAA6Bzd,CAAI,EAAE6e,EAAS,KAAK,MAAM13D,EAAK,MAAM,CAAC,EAAE,KAAK,MAAMA,EAAK,KAAK,CAAC,EAAE,KAAK,MAAMA,EAAK,OAAO,CAAC,EAAE,KAAK,MAAMA,EAAK,QAAQ,CAAC,EAAE,KAAK,MAAMoyD,EAAU,MAAM,CAAC,EAAE,KAAK,MAAMA,EAAU,KAAK,CAAC,EAAE,KAAK,MAAMA,EAAU,OAAO,CAAC,EAAE,KAAK,MAAMA,EAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG3B,IAAMzB,GAAuB,OAAOC,EAAyB,IAAM0I,EAAM,CAAC,EAAQC,kBAAO,IAAI,IAAI,IAAI,IAAMpH,KAAYiH,EAAa,CAAC,IAAM5e,EAAKv2C,EAAO,OAAO,MAAMkuD,EAAS,EAAE,EAAQkH,EAASjC,GAAgB5c,CAAI,EAAM6e,GAAoDE,EAAO,IAAIF,CAAQ,GAAEE,EAAO,IAAIF,EAAS,CAAC,CAAC,EAAEE,EAAO,IAAIF,CAAQ,CAAC,CAAC,KAAK,CAAC,WAAS,MAAI,CAAC,GAAhIC,EAAM,KAAK,CAAC,WAAS,MAAI,CAAC,CAAwG,CAAC,IAAI,GAAK,CAACD,EAASZ,KAAWc,EAAO,CAAC,GAAGd,EAAQ,QAAQ,EAAE,CAACa,EAAM,KAAKb,EAAQ,EAAE,EAAE,QAAS,CAAC,IAAMe,EAAOf,EAAQ,KAAK,GAAG,CAAC,CAACpe,EAAuBjlD,EAAE,MAAM,KAAK,CAAC,GAAGqjE,EAAQ,GAASgB,EAAOhB,EAAQ,IAAI,GAAGJ,EAAqBjjE,EAAE,KAAKA,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,IAAI,IAAMskE,KAAUjB,EAAQ,CAAC,IAAMkB,EAAiB5Z,GAA0B2Z,EAAO,MAAM,MAAMA,EAAO,MAAM,iBAAiBA,EAAO,MAAM,OAAO,yBAAyB,EAAED,EAAO,KAAK,GAAGE,EAAiB,IAAI,GAAMvB,EAAyBrgE,EAAK2hE,EAAO,KAAKA,EAAO,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAME,EAAenB,EAAQ,QAAQ,GAAQ,CAAC,GAAGiB,EAAO,MAAM,OAAO,gBAAgB,CAAC,EAAE,GAAG9wC,GAA6B8wC,EAAO,MAAM,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAQG,EAAiBpB,EAAQ,QAAQ,GAAQiB,EAAO,MAAM,OAAO,kBAAkB,CAAC,CAAC,EAAQlB,EAAMD,EAAmBE,CAAO,EAAQqB,EAAU3C,GAAiBqC,EAAO,IAAI,GAAGH,EAAelH,EAAS,CAAC,GAAGqH,EAAO,SAAS,GAAG,SAASH,IAAW,KAAKb,EAAM,KAAK,UAAUA,EAAM,UAAU,QAAQ,GAAK,WAAW,KAAK,IAAI,GAAGC,EAAQ,IAAI,GAAGrjE,EAAE,UAAU,YAAY,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,GAAGqjE,EAAQ,IAAI,GAAGrjE,EAAE,UAAU,YAAY,CAAC,CAAC,CAAC,EAAQ2kE,EAAenB,GAAwBa,EAAOtH,CAAQ,EAAQ3X,EAAK,CAAC,GAAGgf,EAAO,KAAK,GAAG,SAASH,IAAW,MAAM,CAAC,GAAGG,EAAO,KAAK,MAAM,YAAU,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,OAAOO,EAAe,iBAAe,kBAAgB,EAAE,QAAQP,EAAO,KAAK,QAAQ,gBAAgBA,EAAO,KAAK,gBAAgB,gBAAgBA,EAAO,KAAK,eAAe,EAAEF,EAAM,KAAK,CAAC,WAAS,MAAI,CAAC,CAAE,CAAqH,MAApH,IAAsBlH,EAAI,EAAwBkH,EAAM,MAAM,EAAE,IAAI9a,GAAwBn6C,EAAE,SAASD,EAAE,QAAQ,CAAC,EAASwsD,CAAwB,EAAQ7iC,OAAS,CAAC,GAAG,CAAC,IAAMrS,EAAMzX,EAAO,cAAyC,GAA3BizD,GAAoBx7C,CAAK,EAAKA,EAAM,CAACwyB,GAAOxyB,CAAK,EAAEjb,EAAS,eAAe,EAAI,EAAE,IAAM+D,EAAO,OAAOP,EAAO,eAAgB,UAAUA,EAAO,cAAc,EAAEA,EAAO,cAAc,IAA+Bm1D,GAAc19C,GAAO,OAAO,CAAC,EAAA,CAAG,OAAO,GAAM8+B,EAAK,OAAO,CAAC,CAAC,KAAKgE,EAAuB,CAAC,CAAC,MAAM,EAAEh6C,CAAM,EAAQw1D,EAAY/G,GAAuBmG,CAAY,EAAE,EAAM,aAAaY,EAAY,EAAM,kBAAkBA,EAAY,OAAO,IAAMC,EAAqBD,EAAY,IAAI,GAAM1C,GAAkBpE,EAAKx3C,CAAK,CAAC,CAAC,CAAC,OAAO,OAAO,EAAQw+C,EAAgB,IAAI,IAAID,EAAqB,IAAI,GAAMt4D,EAAK,GAAG,CAAC,EAGvnvB,IAAI,IAAMw4D,KAAYhK,EAA4B+J,EAAgB,IAAIC,EAAS,GAAG,GAAG5C,GAAqB4C,CAAQ,EAAI,IAAI,IAAMjH,KAAQ8G,EAAa,GAAG,CAAC1H,GAAiCY,EAAK,KAAKA,EAAK,QAAQ,CAAE,OAAOh1C,EAAM,CAAC,QAAQ,KAAK,iDAAiDA,CAAK,CAAE,CAAE,IAAI,IAAMi0C,KAAYz2C,GAAO,cAAc,CAAC,EAAE,CAAC,IAAM8+B,EAAKv2C,EAAO,OAAO,MAAMkuD,EAAS,EAAE,EAAE,GAAI3X,EAAc,GAAG,CAAC,IAAMl/B,EAAO22C,GAA0BzX,EAAK2X,EAAS,IAAI,EAAQztD,EAAI,YAAY,IAAI,EAAK4W,GAAQ5W,EAAIwrD,EAAc,KAAKgC,GAA2B1X,EAAK2X,EAAS72C,CAAM,IAAG,EAAc5W,EAAK,OAAOwZ,EAAM,CAAC,QAAQ,KAAK,qDAAqDA,CAAK,CAAE,CAAC,CAAC,IAAMk8C,kBAAmB,IAAI,IAAUC,kBAAe,IAAI,IAAI,IAAI,IAAMnH,KAAQ8G,EAAY,CAAC,GAAK,CAAC,WAAS,QAAM9G,EAAQ1Y,GAAM,IAAG6f,EAAe,IAAI7f,EAAK,EAAE,EAAE,IAAMoX,EAAUnX,EAAsBD,CAAI,EAAKoX,GAAUwI,EAAmB,IAAIxI,CAAS,CAAE,CAAC,IAAI,GAAK,CAACA,EAAUt2C,KAAU80C,EAAS,GAAG,CAACgK,EAAmB,IAAIxI,CAAS,EAAE,CAAC,GAAGyI,EAAe,IAAI/+C,EAAO,MAAM,EAAE,CAACo3C,GAA2Bp3C,EAAOrX,EAAO,OAAO,MAAMqX,EAAO,MAAM,EAAE,CAAC,QAAQ,EAAI,CAAC,EAAE80C,EAAQ,OAAOwB,CAAS,EAAE,QAAS,CAACc,GAA2Bp3C,EAAOrX,EAAO,OAAO,MAAMqX,EAAO,MAAM,CAAC,CAAE,CAAE,IAAM06C,EAAqBgE,EAAY,SAAS,EAI5wCM,EAAc,GAAM,IAAI,IAAMpH,KAAQ8G,EAAY,CAAC,GAAK,CAAC,WAAS,QAAM9G,EAAK,GAAG,CAAC,IAAMz7D,EAAI+iD,GAAM,MAAMoF,GAA0BpF,EAAK,MAAM2X,EAAS,MAAM,OAAO,CAAC,EAAE,KAAQ16D,GAAK,mBAAiB,EAAc,IAAK,IAAM6jB,EAAOo6C,GAAwBlb,EAAK2X,EAASz2C,EAAMs6C,GAAsB,CAACv+D,GAAK,eAAe,EAAE,GAAGugE,GAAuB9E,EAAK53C,EAAO7jB,EAAIikB,CAAK,EAAE,CAEjX,IAAMwzB,EAAaz3C,GAAK,iBAAiB4nB,GAAkB/D,EAAO7jB,EAAI+iD,GAAM,OAAO,GAAGr7B,GAAoB7D,CAAM,EAAE,MAAM4zB,GAAc,QAAQ,EAAE4kB,GAA0Bx4C,EAAO62C,EAASz2C,CAAK,EAAEwzB,GAAc,MAAM,CAAE,CAAC,MAAM,CAC9N,CAAC,CAAsF,GAArF,EAAuB+qB,EAAqB5E,GAAsB35C,EAAMs+C,CAAW,EAAKA,EAAY,OAAO,CAAC,IAAMt1D,EAAI,YAAY,IAAI,EAAK41D,GAAe51D,EAAIurD,EAAgB,MAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,OAAOxvD,EAAS,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQA,EAAS,WAAW,OAAO,IAAIA,EAAS,WAAW,QAAQ,GAAG,KAAK,GAAGA,EAAS,WAAW,OAAO,EAAE,GAAGA,EAAS,WAAW,QAAQ,IAAI,UAAUu5D,EAAY,OAAO,MAAMv5D,EAAS,KAAK,OAAO,MAAM,UAAUA,EAAS,KAAK,OAAO,UAAU,WAAWA,EAAS,KAAK,OAAO,WAAW,SAASA,EAAS,KAAK,OAAO,QAAQ,CAAC,EAAE,EAAgBiE,EAAK,CAAC,IAAM61D,EAAevE,EAAqBgE,EAAY,EAAE,EAAE,SAAS,KAAW1K,EAAW0G,EAAqBgE,EAAY,EAAE,EAAE,KAAK,KAAWQ,EAAgBlL,EAAW7U,EAAsB6U,CAAU,EAAE,GAASmL,EAAaD,EAAgBpK,EAAQ,IAAIoK,CAAe,EAAE,KAAWz2B,EAAUurB,GAAY,MAAM1P,GAA0B0P,EAAW,MAAMiL,GAAgB,MAAM,OAAO,CAAC,EAAE,KAAKzW,GAA2Bx2C,EAAOmtD,EAAazE,GAAsB,CAACjyB,GAAW,eAAe,CAAE,MAAMmxB,GAAwB,IAAI,CAAG,OAAOh3C,EAAM,CAAC,QAAQ,KAAK,oEAAoEA,CAAK,CAAE,CAAC,EAAMhwB,EAAO,sBAAsB6/B,EAAI,CAAE,EAAS,OAAPA,GAAK,MAAY,CAAC,GAAS,GAAQ+/B,GAAM5/D,EAAO,qBAAqB4/D,CAAK,EAAE5/D,EAAO,oBAAoB,cAAc4kE,EAAiB,EAAE5kE,EAAO,oBAAoB,cAAcklE,EAAiB,EAAEllE,EAAO,oBAAoB,YAAYmlE,EAAe,EAAEnlE,EAAO,oBAAoB,gBAAgBmlE,EAAe,EAAE/lD,EAAO,oBAAoB,QAAQumD,EAAiB,EAAE,SAAS,oBAAoB,mBAAmBtD,CAAsB,EAAE,IAAI,IAAM3wB,KAAY4wB,EAAoB,OAAO,EAAG5wB,EAAS,WAAW,EAAG4wB,EAAoB,MAAM,EAAKljD,EAAO,eAAeA,EAAO,cAAc,YAAYA,CAAM,EAAMyjD,GAAuB,eAAeA,EAAsB,cAAc,YAAYA,CAAqB,EAAG,EAAsB,KAAKG,GAAmB,EAAE,GAAc,QAAQ,KAAKzwD,EAAS,eAAe,EAAK,EAAE,IAAI,GAAK,EAAE6a,KAAU80C,EAASsC,GAA2Bp3C,EAAOrX,EAAO,OAAO,MAAMqX,EAAO,MAAM,EAAE,CAAC,QAAQ,EAAI,CAAC,EAAG80C,EAAQ,MAAM,EAAExxC,GAA4B,UAAU,CAAC,KAAK,OAAO,QAAQ+wC,EAAY,SAAO,OAAO,+BAA+B,WAAW5xC,GAAwB,CAAC,CAAC,WAAW,aAAa9uB,EAAa,QAAQ,EAAE,UAAU8uB,GAAwB,CAAC,CAAC,WAAW,EAAE,UAAUA,GAAwB,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,CAAC6vC,CAAK,CAAC,EAAEntD,EAAS,QAAQ,CAAE,CAAE,EAAE,CAAC5F,EAAKyyD,EAAcC,EAAapkC,EAAiBymC,EAAaC,EAAgBzoD,EAAgB,CAAC,EAAEvY,MAAoB,CAAC,IAAM8wC,MAAS,CAACktB,GAAczuC,GAAwB,CAAC,CAAE,EAAS,OAAPuhB,EAAK,EAASxhB,GAAyBwhB,CAAI,CAAE,EAAE,CAAC,CAAC,EAAsB,gBAAM,MAAM,CAAC,MAAM,CAAC,MAAMiuB,EAAM,OAAO,EAAE,OAAOA,EAAM,OAAO,EAAE,GAAGv2D,GAAU,gBAAgB,GAAG4K,CAAK,EAAE,SAAS,CAAC2rD,GAAoB,gBAAM,MAAM,CAAC,MAAM,CAAC,GAAGv2D,GAAU,aAAa,WAAW,IAAI,eAAe,YAAY,EAAE,SAAS,CAAc,gBAAK,MAAM,CAAC,MAAMA,GAAU,WAAW,SAAS,kBAAkB,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,UAAuB,gBAAK,IAAI,CAAC,SAASu1D,EAAW,SAAS,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,UAAuB,gBAAK,IAAI,CAAC,SAASA,EAAW,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,iBAAiB,IAAiB,gBAAK,IAAI,CAAC,SAASA,EAAW,eAAe,eAAe,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,SAAsB,gBAAK,IAAI,CAAC,SAASA,EAAW,UAAU,CAAC,CAAC,CAAC,CAAC,EAAEA,EAAW,eAA4B,gBAAMx/D,EAAU,CAAC,SAAS,CAAc,gBAAM,MAAM,CAAC,SAAS,CAAC,eAAe,IAAiB,gBAAK,IAAI,CAAC,SAASw/D,EAAW,cAAc,cAAc,MAAM,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,YAAY,IAAiB,gBAAK,IAAI,CAAC,SAASA,EAAW,cAAc,eAAe,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,YAAyB,gBAAK,IAAI,CAAC,SAASA,EAAW,WAAW,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,OAAO,IAAiB,gBAAM,IAAI,CAAC,SAAS,CAACA,EAAW,eAAe,OAAO,KAAK,IAAIA,EAAW,cAAc,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,SAAS,IAAiB,gBAAM,IAAI,CAAC,SAAS,CAACA,EAAW,YAAY,SAAS,IAAI,KAAQ,IAAIA,EAAW,eAAe,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,SAAS,CAAC,WAAW,IAAiB,gBAAK,IAAI,CAAC,SAASA,EAAW,iBAAiB,GAAG,KAAK,OAAOA,EAAW,gBAAgB,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,EAAE,SAASA,EAAW,aAAa,WAAW,oBAAoBA,EAAW,eAAe,mBAAmB,EAAE,aAAa,oCAAuC,CAAC,EAAEA,EAAW,eAAe,YAAY,OAAoB,gBAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,+BAA+B,QAAQ,IAAI,SAAS,EAAE,SAAS,GAAG,EAAE,SAASA,EAAW,cAAc,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,GAAmB,gBAAM,MAAM,CAAC,SAAS,CAACpS,EAAK,WAAW,MAAM,MAAM,KAAQ,IAAIA,EAAK,OAAO,OAAO,UAAU,KAAQ,IAAIA,EAAK,UAAU,OAAO,OAAO,KAAQ,IAAIA,EAAK,UAAU,IAAI,KAAQ,IAAIA,EAAK,UAAU,GAAG,CAAC,EAAEA,EAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAEsS,EAAW,SAAsB,gBAAK,MAAM,CAAC,MAAM,CAAC,SAAS,QAAQ,KAAK,KAAK,KAAKA,EAAW,QAAQ,SAAS,GAAG,IAAW5+D,IAAS,OAA8B,IAAlBA,EAAO,YAAgB,GAAG,EAAE,IAAI,KAAK,KAAK4+D,EAAW,QAAQ,SAAS,GAAG,GAAG,CAAC,EAAE,cAAc,OAAO,QAAQ8C,GAAc,IAAI,GAAG,EAAE,SAAsB,gBAAM,MAAM,CAAC,MAAM,CAAC,WAAW,mBAAmB,OAAO,mCAAmC,aAAa,EAAE,QAAQ,WAAW,eAAe,aAAa,SAAS,IAAI,SAAS,IAAI,UAAU,6BAA6B,EAAE,SAAS,CAAc,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,WAAW,SAAS,IAAI,EAAE,aAAa,CAAC,EAAE,SAAS,CAAc,gBAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW9C,EAAW,QAAQ,OAAO,cAAc,UAAU,SAAS,CAAC,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,WAAW,IAAI,SAAS,GAAG,cAAc,SAAS,EAAE,SAASA,EAAW,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,SAAS,OAAO,IAAI,UAAU,EAAE,SAAS,CAAc,gBAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,UAAU,aAAa,EAAE,SAAS,EAAE,WAAWA,EAAW,QAAQ,OAAO,cAAc,wBAAwB,wBAAwB,MAAMA,EAAW,QAAQ,OAAO,cAAc,UAAU,SAAS,EAAE,SAASA,EAAW,QAAQ,IAAI,CAAC,EAAe,gBAAM,OAAO,CAAC,MAAM,CAAC,MAAM,yBAAyB,SAAS,EAAE,EAAE,SAAS,CAACA,EAAW,QAAQ,MAAM,eAAe,EAAE,IAAI,OAAO,CAAC,CAAC,EAAEA,EAAW,QAAQ,KAAkB,gBAAK,OAAO,CAAC,MAAM,CAAC,MAAM,yBAAyB,SAAS,EAAE,EAAE,SAASA,EAAW,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAe,gBAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,yBAAyB,SAAS,EAAE,UAAU,WAAW,EAAE,SAASA,EAAW,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGc,GAAO9uB,KAAiBguB,EAAW,MAAM,OAAO,GAAgB,gBAAM,MAAM,CAAC,MAAM,CAAC,GAAGz1D,GAAU,aAAa,QAAQu4D,GAAc,IAAI,GAAG,EAAE,SAAS,CAAc,gBAAM,MAAM,CAAC,MAAMv4D,GAAU,YAAY,SAAS,CAAc,gBAAK,OAAO,CAAC,MAAMA,GAAU,eAAe,SAAS,iBAAiB,CAAC,EAAe,gBAAM,OAAO,CAAC,MAAMA,GAAU,WAAW,SAAS,CAACy1D,EAAW,UAAU,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,EAAW,KAAK,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAK,IAAI,CAAC,IAAM7T,EAAO,KAAK,IAAI,IAAIlhD,EAAK,OAAO,GAAG,EAAE,EAAQswD,EAAQyE,EAAW,SAAS,MAAMA,EAAW,QAAQ,OAAO/0D,EAAK,KAAK,MAAoB,gBAAM,MAAM,CAAC,MAAM,CAAC,GAAGV,GAAU,UAAU,QAAQ,gBAAgB,GAAG4hD,EAAO,IAAI,MAAMlhD,EAAK,QAAQ,UAAUswD,EAAQ,UAAU,yBAAyB,WAAWA,EAAQ,uBAAuB,aAAa,EAAE,SAAS,CAAc,gBAAK,OAAO,CAAC,MAAM,CAAC,GAAGhxD,GAAU,SAAS,aAAaU,EAAK,QAAQ,EAAE,MAAM,WAAWA,EAAK,QAAQ,UAAUswD,EAAQ,UAAU,wBAAwB,CAAC,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAMhxD,GAAU,cAAc,SAASU,EAAK,IAAI,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,WAAW,OAAO,WAAW,EAAE,SAAS,EAAE,MAAMA,EAAK,QAAQ,uBAAuBA,EAAK,OAAO,cAAc,UAAU,SAAS,EAAE,SAASA,EAAK,QAAQA,EAAK,eAAeA,EAAK,OAAO,cAAc,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,GAAGA,EAAK,QAAQ,IAAI,IAAI,GAAG6M,EAAE,GAAG7M,EAAK,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAA6rE,MAA5rE,IAAsB,aAAa,CAAC,KAAK,cAAc,aAAa,EAAE,YAAY,EAAE,iBAAiB,IAAI,YAAY,WAAW,cAAc,IAAI,aAAa,IAAI,YAAY,GAAK,eAAe,GAAK,iBAAiB,GAAM,eAAe,IAAI,aAAa,GAAG,gBAAgB,GAAM,MAAM,EAAK,EAA+5D,CAAC,UAAU00D,GAAsB,SAAS,CAAz6D,KAAK,CAAC,KAAKv9D,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,cAAc,UAAU,EAAE,aAAa,CAAC,cAAc,iBAAiB,EAAE,aAAa,aAAa,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,MAAM,gBAAgB,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAI,EAAE,YAAY,CAAC,KAAKA,EAAY,OAAO,MAAM,eAAe,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAI,EAAE,iBAAiB,CAAC,KAAKA,EAAY,OAAO,MAAM,YAAY,aAAa,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,eAAe,EAAI,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,aAAa,GAAG,IAAI,KAAK,IAAI,KAAK,KAAK,EAAE,eAAe,GAAK,OAAO,GAAGT,EAAE,OAAO,UAAU,EAAE,gBAAgB,CAAC,KAAKS,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,OAAO,GAAGT,EAAE,OAAO,WAAW,YAAY,qBAAqB,EAAE,YAAY,CAAC,KAAKS,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,cAAc,WAAW,SAAS,EAAE,aAAa,CAAC,cAAc,WAAW,SAAS,EAAE,aAAa,UAAU,EAAE,cAAc,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,eAAe,EAAI,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,eAAe,EAAI,EAAE,YAAY,CAAC,KAAKA,EAAY,QAAQ,MAAM,eAAe,aAAa,GAAK,aAAa,MAAM,cAAc,IAAI,EAAE,eAAe,CAAC,KAAKA,EAAY,QAAQ,MAAM,kBAAkB,aAAa,GAAK,aAAa,MAAM,cAAc,IAAI,EAAE,iBAAiB,CAAC,KAAKA,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,eAAe,CAAC,KAAKA,EAAY,OAAO,MAAM,gBAAgB,aAAa,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,eAAe,GAAK,KAAK,KAAK,OAAO,GAAO,CAAC6F,EAAM,gBAAgB,EAAE,MAAM,CAAC,KAAK7F,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAM,aAAa,OAAO,cAAc,OAAO,YAAY,wBAAwB,CAAwE,CAAC,CAAE,EAAA,CAAG,C,OC/FvjT,SAASwrE,GAAgB,CAAC,OAAK,QAAM,OAAK,cAAY,UAAQ,QAAM,OAAK,SAAO,SAAO,YAAU,WAAS,CAAC,IAAMx5D,EAAK7T,EAAa,IAAI,EAA8R,OAA5RQ,MAA0B,CAAC,IAAM4tB,EAAQva,EAAK,QAAQ,GAAG,CAACua,EAAQ,OAAO,IAAMk/C,MAAYC,EAAUh/C,EAAK,IAAIH,EAAQ,sBAAsB,CAAC,CAAC,KAAK,EAAEk/C,EAAQ,EAAE,IAAM/6B,EAAS,IAAI,eAAe+6B,CAAO,EAA4B,OAA1B/6B,EAAS,QAAQnkB,CAAO,MAAYmkB,EAAS,WAAW,CAAE,EAAE,CAAChkB,EAAK,IAAIg/C,CAAS,CAAC,EAAsB,gBAAM,SAAS,CAAC,IAAI15D,EAAK,UAAU,sBAAsB,cAAc,CAAC2D,EAAQ,SAASA,EAAQ,EAAE,GAAG,mBAAmBg2D,EAAQj/C,EAAK,GAAG,EAAE,mBAAmBi/C,EAAQ,IAAI,EAAE,YAAYA,EAAQj/C,EAAK,GAAG,EAAE,WAAWi/C,EAAQ,IAAI,EAAE,YAAYC,IAASl/C,EAAK,GAAG,EAAE,MAAM,CAAC,GAAGm/C,EAAY,SAAS,WAAW,IAAIjP,EAAM,IAAI,KAAKA,EAAM,KAAK,MAAM,cAAc,OAAO/vC,EAAO,GAAG,GAAG,QAAQ,OAAO,WAAW,SAAS,IAAIA,EAAO,EAAE,EAAEi/C,EAAK,cAAc,YAAY,cAAc,SAAS,QAAQ,KAAY,WAAW,WAAWn2D,EAAQ,IAAI,GAAG,IAAIo2D,IAAQ,cAAcp2D,EAAQ,OAAO,MAAM,EAAE,SAAS,CAAc,gBAAK,OAAO,CAAC,cAAc,OAAO,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,SAAS,KAAK,CAAC,EAAe,gBAAK,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,EAAE,SAAS26B,CAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,SAAS07B,GAAa,CAAC,KAAG,QAAM,YAAU,SAAO,cAAY,CAAC,GAAK,CAACC,EAAWC,GAAe9tE,EAAe,IAAI,EAAO,CAAC+tE,EAAYC,GAAgBhuE,EAAe,CAAC,CAAC,EAAQiuE,EAAahuE,GAAmB,EAAI,IAAQ,CAAC+tE,EAAe,GAAU,KAAK,KAAKtsC,EAASrxB,IAAM,GAAGQ,CAAK,EAAE,GAAG6wB,EAAS,CAAC,GAAGA,GAAUrxB,GAAKQ,CAAK,CAAC,CAAE,EAAE,CAAC,CAAC,EAAO,CAACq9D,EAAQC,GAAYnuE,EAAe,EAAK,EAAE,CAACouE,EAAMC,GAAUruE,EAAe,IAAI,EAAE,CAACsuE,EAAQC,GAAYvuE,EAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAA+qB,GAA7qBuB,MAAoB,CAAC4sE,EAAW,EAAI,EAAE,IAAMK,EAAQ,GAAG,CAAIjxD,EAAE,QAAQ,KAAK5F,GAAG02D,EAAS9wD,EAAE,MAAM,CAAE,EAAQkxD,EAAK,GAAGF,EAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAQG,EAAM,GAAG,CAAK,EAAE,eAAcH,EAAW,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAE,EAAyN,OAAvN3tE,EAAO,iBAAiB,6BAA6B4tE,CAAO,EAAE,SAAS,iBAAiB,cAAcC,EAAK,EAAI,EAAE,SAAS,iBAAiB,YAAYA,EAAK,EAAI,EAAE,SAAS,iBAAiB,eAAeC,EAAM,EAAI,MAAY,CAAC9tE,EAAO,oBAAoB,6BAA6B4tE,CAAO,EAAE,SAAS,oBAAoB,cAAcC,EAAK,EAAI,EAAE,SAAS,oBAAoB,YAAYA,EAAK,EAAI,EAAE,SAAS,oBAAoB,eAAeC,EAAM,EAAI,CAAE,CAAE,EAAE,CAAC/2D,EAAGg3D,CAAS,CAAC,EAAK,CAACT,GAAS,CAACE,GAAO,OAAO,SAAW,IAAY,OAAO,KAAK,IAAM/5D,EAAK+5D,EAAM,KAAK3/C,EAAO7tB,EAAO,WAAW,IAAIguE,EAAG,SAAS,gBAAgB,KAAK,WAAW,IAAI,EAAE,GAAG,CAACv6D,GAAMA,EAAK,QAAQ,GAAGA,EAAK,KAAKzT,EAAO,YAAY,OAAO,KAAK,IAAMiuE,EAAUT,EAAM,YAAY,KAAK,GAAQE,EAAQ,GAAGQ,EAAO,MAAMR,EAAQ,GAAGQ,EAAO,OAAOR,EAAQ,GAAGQ,EAAO,KAAKR,EAAQ,GAAGQ,EAAO,MAAM,EAAQC,EAAOC,GAAY,CAAC,EAAQz+D,GAAO,EAAO,IAAW,OAAOoe,GAAS,UAAU,OAAO,SAASA,CAAM,EAAEA,EAAO5a,EAAek7D,EAAcb,EAAM,SAAS79D,EAAMw+D,EAAO,OAAO,EAAE,EAAE,IAA4EG,GAAa,KAAK,IAAI,GAAG3+D,EAAMw+D,EAAO,aAAa,GAAG,CAAC,EAAQI,GAAUF,EAAc,KAAK,IAAI,EAAE1+D,EAAMw+D,EAAO,UAAU,GAAG,CAAC,EAAE,EAAQpB,EAAM,sCAA4CD,EAAK,KAAK,IAAIr5D,EAAK,MAAM,KAAKA,EAAK,OAAO,GAAG,EAAQ+6D,EAAU3gD,EAAO,KAAK,IAAI,EAAEle,EAAMw+D,EAAO,WAAW,CAAC,EAAE,KAAK,IAAI,EAAE16D,EAAK,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG9D,EAAMw+D,EAAO,SAAS,EAAE,EAAErB,CAAI,EAAQl4D,EAAM,CAAC,CAAC,IAAI,QAAQ,GAAG,kBAAkB,GAAG,UAAa,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,QAAQ,GAAG,mBAAmB,GAAG,cAAc,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,UAAU,GAAG,mBAAmB,GAAG,WAAW,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,WAAW,GAAG,WAAW,GAAG,eAAe,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,QAAQ,GAAG,YAAY,GAAG,gBAAmB,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,OAAO,GAAG,iBAAiB,GAAG,UAAU,KAAK,GAAG,IAAI,CAAC,CAAC,EACjgJ65D,EAAY,GAAM,CAAC,IAAMC,EAAOj7D,EAAK,OAAOoa,EAAO,KAAK,MAAY8gD,EAAOl7D,EAAK,OAAOoa,EAAO,IAAI,KAAWR,EAAMK,EAAK,KAAK,EAAEja,EAAK,KAAKi7D,EAAOC,EAAOl7D,EAAK,MAAMi7D,EAAOC,EAAaC,EAAczB,EAAYz/C,EAAK,MAAMihD,EAAal/C,EAAK/B,EAAK,KAAK,EAAEL,EAAMuhD,EAAcvhD,EAAY7C,EAAI/W,EAAK,IAAIA,EAAK,QAAQoa,EAAO,GAAGH,EAAK,IAAI,IAAI,IAAIA,EAAK,IAAI,KAAoC,MAAM,CAAC,OAAK,MAAI,SAAO,MAA1ClD,GAAKqD,EAAO,GAAG,IAAiC,OAAK,CAAE,EAAQghD,GAAO,CAAC,WAAW,OAAO,OAAO,EAAE,WAAW,OAAO,MAAM,UAAU,WAAW,mDAAmD,SAASL,EAAU,WAAW,IAAI,WAAW,OAAO,OAAO,UAAU,UAAU,OAAO,QAAQ,CAAC,EAAE,OAAOlvE,EAA0B,gBAAM,MAAM,CAAC,MAAM,CAAC,SAAS,QAAQ,MAAM,EAAE,OAAO,EAAE,cAAc,MAAM,EAAE,SAAS,CAAc,gBAAK,QAAQ,CAAC,SAAS,mGAAmG,CAAC,EAAe,gBAAK,MAAM,CAAC,cAAc,OAAO,MAAM,OAAO,OAAO,OAAO,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,EAAE,SAASsV,EAAM,IAAI,GAAM,CAAC,IAAMya,EAAMm+C,EAAM,OAAO,KAAK,GAAM3jE,EAAK,MAAM6jB,EAAK,GAAG,EAAQkwC,EAAM6Q,EAAY/gD,CAAI,EAAQohD,EAAMphD,EAAK,KAAK,EAAEkwC,EAAM,KAAKA,EAAM,MAAMuP,EAAYz/C,EAAK,MAAMkwC,EAAM,QAAuC,OAA3BvuC,GAAO,QAAwC,gBAAM,IAAI,CAAC,SAAS,CAAc,gBAAK,OAAO,CAAC,UAAU,sBAAsB,EAAE,IAAIA,EAAM,EAAE,GAAGA,EAAM,EAAE,IAAIuuC,EAAM,MAAM,GAAGA,EAAM,MAAM,IAAIkR,IAAQ,KAAK,OAAO,OAAO,UAAU,YAAY,GAAU,cAAc,GAAY,WAAW,IAAI,gBAAgB,MAAM,aAAa,qBAAqB,MAAM,CAAC,iBAAiB,IAAkB,WAAW,qBAAqBT,EAAcC,GAAa,GAAG,IAAIvB,EAAM,GAAGwB,GAAU,EAAE,CAAC,CAAC,EAAe,gBAAK,SAAS,CAAC,UAAU,sBAAsB,GAAGl/C,EAAM,EAAE,GAAGA,EAAM,EAAE,EAAE,MAAM,KAAK,UAAU,MAAM,CAAC,gBAAgB,GAAGA,EAAM,EAAE,KAAKA,EAAM,EAAE,IAAI,UAAU,SAAS,KAAkB,GAAG,WAAW,kBAAkB09C,GAAO,CAAC,CAAC,CAAC,CAAC,EAAEr/C,EAAK,GAAG,EAA3rB,IAA6rB,CAAC,CAAC,CAAC,EAAE9Y,EAAM,IAAI,GAAmB,gBAAK43D,GAAgB,CAAM,OAAK,MAAMiC,EAAY/gD,CAAI,EAAE,KAAKsgD,EAAGtgD,EAAK,GAAGA,EAAK,GAAG,YAAYmhD,GAAO,QAAQR,EAAoB,QAAW,OAAY,SAAc,SAAO,UAAUhB,EAAa,QAAQH,CAAa,EAAEx/C,EAAK,GAAG,CAAC,GAAGugD,GAAWz0C,GAAOg0C,EAAM,cAAcP,GAAYoB,IAA6B,gBAAM,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,SAAS,WAAW,KAAK,KAAK,IAAI,EAAE,KAAK,IAAIX,EAAQ,EAAE,GAAG1tE,EAAO,WAAW,GAAG,CAAC,EAAE,IAAI,KAAK,IAAI0tE,EAAQ,EAAE,GAAG1tE,EAAO,YAAY,EAAE,EAAE,WAAW,OAAO,MAAM,UAAU,aAAa,EAAE,QAAQ,WAAW,SAAS,EAAE,EAAE,SAAS,CAACguE,EAAG,WAAW,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,CAAE,CASpiF,SAAwBe,GAAgB,EAAM,CAAC,GAAK,CAAC,OAAK,QAAQloE,EAAYmoE,EAAazvE,EAAM,EAAO,CAAC0vE,EAAYC,GAAgB9vE,EAAe,EAAK,EAAiwB,OAA5vByH,EAAM,YAAYsoE,IAAO,OAA2B,gBAAM,MAAM,CAAC,mBAAmBH,EAAa,MAAM,CAAC,GAAGnoE,EAAM,MAAM,SAAS,WAAW,MAAM,OAAO,OAAO,MAAM,EAAE,SAAS,CAAc,gBAAKuoE,GAAuB,CAAC,GAAGvoE,EAAmB,eAAa,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,MAAM,OAAO,OAAO,MAAM,EAAE,kBAAkB,GAAO,CAACqoE,EAAe,EAAI,EAAEroE,EAAM,oBAAoBoE,CAAK,CAAE,EAAE,gBAAgB,GAAO,CAACikE,EAAe,EAAK,EAAEroE,EAAM,kBAAkBoE,CAAK,CAAE,EAAE,aAAapE,EAAM,aAAa,QAAQsoE,IAAO,SAAS,CAAC,CAACtoE,EAAM,OAAO,CAAC,EAAe,gBAAKmmE,GAAa,CAAC,WAAWnmE,EAAM,aAAa,GAAGmoE,EAAa,MAAMC,EAAY,WAAWpoE,EAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAKsoE,IAAO,OAA2B,gBAAKE,GAAuB,CAAC,GAAGxoE,CAAK,CAAC,EAAsB,gBAAKuoE,GAAuB,CAAC,GAAGvoE,EAAM,QAAQsoE,IAAO,SAAS,CAAC,CAACtoE,EAAM,OAAO,CAAC,CAAE,C,0FAT6iD,GAAmBokD,GAAK,UAAgB,GAAmBE,GAAK,UAAgB,GAA+BA,GAAK,SACxjF,GAA+B5+B,GAAuBrjB,GAA4B,GAAOrC,EAAM,OAAO,MAAM,EAAQ,GAAsB0lB,GAAuBijD,GAA+B,GAAO3oE,EAAM,OAAO,MAAM,EAAoFjG,EAAoBmuE,GAAgB,CAAC,WAAW,CAAC,KAAK/tE,EAAY,QAAQ,MAAM,oBAAoB,aAAa,EAAK,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,MAAM,gBAAgB,OAAO,GAAG,CAACT,EAAE,YAAYA,EAAE,OAAO,OAAO,YAAY,8GAA8G,SAAS,CAAC,MAAM,CAAC,KAAKS,EAAY,OAAO,MAAM,QAAQ,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,IAAI,EAAE,YAAY,CAAC,KAAKA,EAAY,OAAO,MAAM,eAAe,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,IAAI,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,EAAE,YAAY,CAAC,KAAKA,EAAY,OAAO,MAAM,eAAe,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,GAAG,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,GAAG,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,GAAG,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,GAAG,EAAE,SAAS,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,aAAa,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,KAAK,KAAK,EAAE,OAAO,CAAC,KAAKA,EAAY,OAAO,MAAM,SAAS,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,MAAM,gBAAgB,OAAO,GAAG,CAACT,EAAE,YAAYA,EAAE,OAAO,OAAO,YAAY,sHAAyH,SAAS,CAAC,SAAS,CAAC,KAAKS,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,IAAI,EAAE,WAAW,CAAC,KAAKA,EAAY,OAAO,MAAM,cAAc,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,IAAI,EAAE,OAAO,CAAC,KAAKA,EAAY,OAAO,MAAM,UAAU,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,GAAG,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,MAAM,gBAAgB,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAKA,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,OAAO,QAAQ,MAAM,EAAE,aAAa,CAAC,OAAO,QAAQ,MAAM,EAAE,aAAa,MAAM,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,aAAa,GAAG,YAAY,aAAa,OAAO,GAAGT,EAAE,OAAO,SAAS,CAACA,EAAE,OAAO,EAAE,GAAGkvE,GAA+B,GAAGC,EAAqB,CAAC,EAAQ,GAAuBlwE,EAAW+vE,EAAkB,EAAQ,GAAuB/vE,EAAW8vE,EAAkB,EAStyFtvE,IAAS,SAAa,EAAO,iBAAiBqgC,IAAoB,GAAgB,aAAa,CAAC,GAAGivC,GAAmB,aAAa,GAAGC,GAAmB,aAAa,KAAK,OAAO,QAAQ,GAAM,UAAU,EAAE,C"}